modified: README.md
new file: c/CtrlCheckLinks.rb new file: c/Main.rb deleted: c/main.rb new file: fichier/dir/aa modified: m/ReadFile.rb modified: m/ReadFolder.rb modified: v/Vue1.rb deleted: v/VueError.rb new file: v/VueResult.rb
This commit is contained in:
parent
c01d230914
commit
03c8e5c2ca
@ -11,4 +11,8 @@ Requiert :
|
|||||||
|
|
||||||
==========================================================================
|
==========================================================================
|
||||||
Lancement application :
|
Lancement application :
|
||||||
ruby c/main.rb
|
ruby c/Main.rb
|
||||||
|
|
||||||
|
Emplacement fichiers :
|
||||||
|
actuellement les fichiers que l'on souhaitent traiter doivent se trouver dans
|
||||||
|
le dossier fichier/ (txt ou html)
|
||||||
|
50
c/CtrlCheckLinks.rb
Normal file
50
c/CtrlCheckLinks.rb
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
class CtrlCheckLinks
|
||||||
|
def saisie
|
||||||
|
liste_dir = "../fichier/".liste_rep
|
||||||
|
#Va checher les fichiers et arborecenses dans le dossier fichier (Méthode dans ReadFolder)
|
||||||
|
|
||||||
|
Gtk.init
|
||||||
|
@v1 = Vue1.new(liste_dir, self)
|
||||||
|
|
||||||
|
@v1.getWindow.show_all
|
||||||
|
Gtk.main
|
||||||
|
|
||||||
|
return @urls
|
||||||
|
end
|
||||||
|
|
||||||
|
def recupUrls(str)
|
||||||
|
f = ReadFile.new(str)
|
||||||
|
@urls = f.getUrls
|
||||||
|
self.destructionFen
|
||||||
|
end
|
||||||
|
|
||||||
|
def destructionFen
|
||||||
|
@v1.getWindow.destroy
|
||||||
|
Gtk.main_quit
|
||||||
|
end
|
||||||
|
|
||||||
|
def verifLiens(urls)
|
||||||
|
|
||||||
|
resultats = ""
|
||||||
|
urls.each { |n|
|
||||||
|
p = Net::Ping::HTTP.new n , 80
|
||||||
|
if p.ping?
|
||||||
|
resultats += "#{n} est vivant\n"
|
||||||
|
else
|
||||||
|
resultats += "#{n} est mort\n"
|
||||||
|
end
|
||||||
|
}
|
||||||
|
return resultats
|
||||||
|
end
|
||||||
|
|
||||||
|
def vueResult(resultats)
|
||||||
|
v = VueResult.new(resultats)
|
||||||
|
v.getWindow.show_all
|
||||||
|
Gtk.main
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
end
|
24
c/Main.rb
Executable file
24
c/Main.rb
Executable file
@ -0,0 +1,24 @@
|
|||||||
|
#! /usr/bin/ruby
|
||||||
|
|
||||||
|
#lib
|
||||||
|
require 'gtk2' # lib graphique
|
||||||
|
require 'net/ping' #lib netwotk
|
||||||
|
|
||||||
|
#include
|
||||||
|
require './CtrlCheckLinks'
|
||||||
|
require '../m/ReadFile'
|
||||||
|
require '../m/ReadFolder'
|
||||||
|
require '../v/Vue1'
|
||||||
|
require '../v/VueResult'
|
||||||
|
|
||||||
|
while 1
|
||||||
|
c = CtrlCheckLinks.new
|
||||||
|
urls = c.saisie
|
||||||
|
if(urls !=nil)
|
||||||
|
resultats = c.verifLiens(urls)
|
||||||
|
c.vueResult(resultats)
|
||||||
|
else
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
print "Termine\n"
|
50
c/main.rb
50
c/main.rb
@ -1,50 +0,0 @@
|
|||||||
#! /usr/bin/ruby
|
|
||||||
|
|
||||||
#lib
|
|
||||||
require 'gtk2' # lib graphique
|
|
||||||
require 'net/ping' #lib netwotk
|
|
||||||
|
|
||||||
#include
|
|
||||||
require '../m/ReadFile'
|
|
||||||
require '../m/ReadFolder'
|
|
||||||
require '../v/Vue1'
|
|
||||||
require '../v/VueError'
|
|
||||||
|
|
||||||
"../fichier/".liste_rep #à ajouter à vue 1
|
|
||||||
|
|
||||||
Gtk.init
|
|
||||||
v1 = Vue1.new
|
|
||||||
|
|
||||||
v1.listenerBouton
|
|
||||||
v1.listenerDestroy
|
|
||||||
|
|
||||||
v1.getWindow.show_all
|
|
||||||
Gtk.main
|
|
||||||
str = v1.getEntry
|
|
||||||
str = "../fichier/" + str
|
|
||||||
|
|
||||||
if(File.exist?(str))
|
|
||||||
f = ReadFile.new(str)
|
|
||||||
url = f.getUrls
|
|
||||||
else
|
|
||||||
vd = VueError.new("Fichier inexistant")
|
|
||||||
vd.getDialog.run
|
|
||||||
vd.getDialog.destroy
|
|
||||||
end
|
|
||||||
|
|
||||||
url.each { |n| # faire une vue affichage
|
|
||||||
p = Net::Ping::HTTP.new n , 80
|
|
||||||
if p.ping?
|
|
||||||
puts n + " est vivant"
|
|
||||||
else
|
|
||||||
puts n + " est mort"
|
|
||||||
end
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
print "Termine\n"
|
|
1
fichier/dir/aa
Normal file
1
fichier/dir/aa
Normal file
@ -0,0 +1 @@
|
|||||||
|
daddad
|
@ -3,16 +3,14 @@ class ReadFile
|
|||||||
@fic = File.open(pFic, "r")
|
@fic = File.open(pFic, "r")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def getALL #revoit tout le contenu d'un fichier sous forme d'une chaine de caractere
|
||||||
|
|
||||||
def getALL
|
|
||||||
all = @fic.read
|
all = @fic.read
|
||||||
return all
|
return all
|
||||||
end
|
end
|
||||||
|
|
||||||
def getUrls
|
def getUrls #sort les URLs d'un fichier
|
||||||
txt = self.getALL
|
txt = self.getALL
|
||||||
url = txt.scan(/http[^\s]*/)
|
url = txt.scan(/http[^\s]*/)
|
||||||
return url
|
return url
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,21 +1,33 @@
|
|||||||
class String
|
class String #ajout de la méthode à la classe String
|
||||||
def liste_rep(espacement = "")
|
def liste_rep(espacement = "")
|
||||||
|
#initialisation
|
||||||
|
i=0
|
||||||
|
fich_dir = [""]
|
||||||
|
all_dir = ""
|
||||||
liste_exclus = [".", ".."]
|
liste_exclus = [".", ".."]
|
||||||
d = Dir.open(self)
|
d = Dir.open(self)
|
||||||
|
|
||||||
|
#sort les fichiers sans . et .. qui nous interresse pas
|
||||||
liste_dir = d.sort - liste_exclus
|
liste_dir = d.sort - liste_exclus
|
||||||
|
|
||||||
liste_dir.each { |fichier|
|
liste_dir.each { |fichier| #pour chaque fichier touvé
|
||||||
case File.ftype(self+fichier)
|
case File.ftype(self+fichier)
|
||||||
when "directory"
|
when "directory" #si on trouve un dossier on l'ajoute et on cherche son contenu avec un apelle recursif
|
||||||
puts "#{espacement} + #{fichier}/"
|
fich_dir[i] = "#{espacement} + #{fichier}/ \n"
|
||||||
espacement += " "
|
espacement += " "
|
||||||
(self + fichier + "/").liste_rep(espacement)
|
fich_dir[i+1] = (self + fichier + "/").liste_rep(espacement)
|
||||||
espacement = espacement[0, espacement.length-4]
|
espacement = espacement[0, espacement.length-4]
|
||||||
when "file"
|
i+=2
|
||||||
puts "#{espacement} - #{fichier}"
|
when "file" # si c'est un fichier on l'ajoute simplement
|
||||||
|
fich_dir[i] = "#{espacement} - #{fichier} \n"
|
||||||
|
i+=1
|
||||||
end
|
end
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fich_dir.each { |n|
|
||||||
|
all_dir += n
|
||||||
|
}
|
||||||
|
return all_dir; #return l'arboressence des fichiers sous forme d'une chaine de caractere
|
||||||
end
|
end
|
||||||
end
|
end
|
64
v/Vue1.rb
64
v/Vue1.rb
@ -1,18 +1,46 @@
|
|||||||
|
|
||||||
class Vue1
|
class Vue1
|
||||||
def initialize()
|
def initialize(liste_dir, ctrl)
|
||||||
|
@ctrl = ctrl
|
||||||
|
#fenenetre generale
|
||||||
@window = Gtk::Window.new
|
@window = Gtk::Window.new
|
||||||
@window.set_title('Saisie nom fichier')
|
@window.set_title('Saisie nom fichier')
|
||||||
|
|
||||||
|
#declaration des differents widgets
|
||||||
vb = Gtk::VBox.new(true, 6)
|
vb = Gtk::VBox.new(true, 6)
|
||||||
hb = Gtk::HBox.new(false, 6)
|
top = Gtk::HBox.new(false, 6)
|
||||||
val = Gtk::Label.new('Nom');
|
bot = Gtk::HBox.new(false, 6)
|
||||||
hb.pack_start(val, false, true, 6)
|
|
||||||
|
###Partie supérieur fenetre###
|
||||||
|
|
||||||
|
#Creation du label de l'arbo
|
||||||
|
dir = Gtk::Label.new(liste_dir)
|
||||||
|
top.pack_start(dir, false, true, 6)
|
||||||
|
vb.pack_start(top)
|
||||||
|
##############################
|
||||||
|
|
||||||
|
|
||||||
|
###Partie Inferieur fenetre###
|
||||||
|
|
||||||
|
#creation label pour la saisie
|
||||||
|
lab = Gtk::Label.new('Chemin')
|
||||||
|
bot.pack_start(lab, false, true, 6)
|
||||||
|
|
||||||
|
#creation champ de saisie
|
||||||
@nom = Gtk::Entry.new
|
@nom = Gtk::Entry.new
|
||||||
hb.pack_start(@nom, true, true)
|
bot.pack_start(@nom, true, true)
|
||||||
|
|
||||||
|
#creation bouton de validation
|
||||||
@b = Gtk::Button.new('OK')
|
@b = Gtk::Button.new('OK')
|
||||||
hb.pack_start(@b)
|
bot.pack_start(@b)
|
||||||
vb.pack_start(hb)
|
vb.pack_start(bot)
|
||||||
|
##############################
|
||||||
|
|
||||||
@window.add(vb)
|
@window.add(vb)
|
||||||
|
|
||||||
|
# Abbonement fenetre au Listener
|
||||||
|
self.listenerBouton
|
||||||
|
self.listenerDestroy
|
||||||
end
|
end
|
||||||
|
|
||||||
def getWindow
|
def getWindow
|
||||||
@ -23,19 +51,27 @@ class Vue1
|
|||||||
return @chaine
|
return @chaine
|
||||||
end
|
end
|
||||||
|
|
||||||
def listenerDestroy
|
def listenerDestroy # Listener fermeture fenetre
|
||||||
@window.signal_connect('destroy') {
|
@window.signal_connect('delete_event') {
|
||||||
@window.destroy
|
@ctrl.destructionFen
|
||||||
Gtk.main_quit
|
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
def listenerBouton
|
def listenerBouton #listener appuie validation
|
||||||
@chaine = " "
|
@chaine = " "
|
||||||
@b.signal_connect('clicked'){
|
@b.signal_connect('clicked'){
|
||||||
@chaine = @nom.text.to_s
|
@chaine = @nom.text.to_s
|
||||||
@window.destroy
|
@chaine = "../fichier/" + @chaine
|
||||||
Gtk.main_quit
|
if(File.exist?(@chaine))
|
||||||
|
@ctrl.recupUrls(@chaine)
|
||||||
|
else
|
||||||
|
d = Gtk::MessageDialog.new(Gtk::Window.new, Gtk::Dialog::DESTROY_WITH_PARENT,
|
||||||
|
Gtk::MessageDialog::ERROR,
|
||||||
|
Gtk::MessageDialog::BUTTONS_CLOSE,
|
||||||
|
"Erreur : Fichier inexistant")
|
||||||
|
d.run
|
||||||
|
d.destroy
|
||||||
|
end
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
end
|
end
|
@ -1,12 +0,0 @@
|
|||||||
class VueError
|
|
||||||
def initialize(pMsgErr)
|
|
||||||
@d = Gtk::MessageDialog.new(Gtk::Window.new, Gtk::Dialog::DESTROY_WITH_PARENT,
|
|
||||||
Gtk::MessageDialog::ERROR,
|
|
||||||
Gtk::MessageDialog::BUTTONS_CLOSE,
|
|
||||||
"Erreur : #{pMsgErr}")
|
|
||||||
end
|
|
||||||
|
|
||||||
def getDialog
|
|
||||||
return @d
|
|
||||||
end
|
|
||||||
end
|
|
31
v/VueResult.rb
Normal file
31
v/VueResult.rb
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
class VueResult
|
||||||
|
def initialize(liste_result)
|
||||||
|
@window = Gtk::Window.new
|
||||||
|
@window.set_title('Resultats')
|
||||||
|
|
||||||
|
vb = Gtk::VBox.new(true, 6)
|
||||||
|
vh = Gtk::HBox.new(false, 6)
|
||||||
|
|
||||||
|
if(liste_result != "")
|
||||||
|
res = Gtk::Label.new(liste_result)
|
||||||
|
else
|
||||||
|
res = Gtk::Label.new("Pas de liens trouves")
|
||||||
|
end
|
||||||
|
vh.pack_start(res, false, true, 6)
|
||||||
|
vb.pack_start(vh)
|
||||||
|
|
||||||
|
@window.add(vb)
|
||||||
|
|
||||||
|
self.listenerDestroy
|
||||||
|
end
|
||||||
|
|
||||||
|
def getWindow
|
||||||
|
return @window
|
||||||
|
end
|
||||||
|
def listenerDestroy
|
||||||
|
@window.signal_connect('destroy') {
|
||||||
|
@window.destroy
|
||||||
|
Gtk.main_quit
|
||||||
|
}
|
||||||
|
end
|
||||||
|
end
|
Reference in New Issue
Block a user