add fastdial html page
[cinan.git] / skripty / search.rb
bloba688c8775d752eab032f2de1e831e5cdf1c0193b
1 #1.4.7 Ruby verzia
2 #autor: cinan
3 #pri hladani vypise dvakrat to iste                       FIXED
4 class Trieda
5   @@path_zoznam_lst = `echo $HOME`.chomp+"/zoznam.lst"
6   @@farbaNula = "\x1B[0m"
7   @@farbaModra = "\033[94m"
8   @@farbaCervena= "\033[91m"
9   @@farbaZelena = "\033[92m"
10   @@podmienka_na_ukoncenie = false
12   def moznostiSkopirovat?
13     puts "\t-"+"="*51+"-\n"+"\t"+"#{@@farbaZelena}0#{@@farbaNula}"+". Spat" + " "*21 +"Skopirovat prikaz c. "+"#{@@farbaZelena}[1-#{@@i-1}]#{@@farbaNula}"
14     print "\t"+"Volba c. #{@@farbaZelena}0\b"
15     cislo = gets.chomp
16     puts @@farbaNula
17     if cislo.to_i >= 1
18       begin
19         system("echo \"#{@@zoznam[cislo.to_i-1][1]}\" | xsel --clipboard")
20       rescue
21         puts @@farbaCervena + "Zadal si nespravnu hodnotu!" + @@farbaNula
22         moznostiSkopirovat?
23       end
24     end
25   end
26   
27   def zobrazit_zoznam
28     if File.exist?(@@path_zoznam_lst)
29       subor = File.open(@@path_zoznam_lst,"r")     #vypis zoznamu
30       @@i = 1
31       @@zoznam=[]
32       for riadok in subor
33         riadok = riadok.split(".:.")
34         print @@farbaZelena + @@i.to_s + @@farbaNula + ".\t" + @@farbaModra + riadok[0] + @@farbaNula + "\n\t" + riadok[1].to_s
35         @@zoznam.push(riadok)
36         @@zoznam[@@i-1][1] = @@zoznam[@@i-1][1][0...-1]
37         @@i = @@i + 1
38       end
39       subor.close
40       moznostiSkopirovat?
41     else
42       puts @@farbaCervena + "Nie je vytvoreny zoznam!" + @@farbaNula
43     end
44     
45     podmienka_na_ukoncenie?
46     self.menu
47   end
48   
49   def vymazat_zoznam
50     if File.exist?(@@path_zoznam_lst) then
51       print "Naozaj chces vymazat zoznam a vytvorit novy? [Y/n] "
52       odpoved = gets.chomp
53       if odpoved == "Y" or odpoved == "y" or odpoved == ""
54         File.delete(@@path_zoznam_lst)
55         puts "Zoznam je vymazany!"
56       end
57     else
58       puts @@farbaCervena + "Nie je vytvoreny zoznam!" + @@farbaNula
59     end
60     
61     podmienka_na_ukoncenie?
62     gets.chomp
63     self.menu
64   end
65    
66   def vymazat_prikaz
67     if File.exist?(@@path_zoznam_lst) then
68       subor = File.open(@@path_zoznam_lst,"r")     #najprv nacitat zoznam zo suboru
69       i = 0
70       zoznam=[]
71       for riadok in subor
72         zoznam.push(riadok.split(".:. "))
73         zoznam[i][1] = zoznam[i][1][0..-1]
74         i = i + 1
75       end
76       subor.close
77       
78       print "Cisla prikazov na vymazanie oddelene ciarkou: "
79       cislo = gets.chomp
80       if cislo == ""
81         self.menu
82       end
83       cislo = cislo.split(",")
84       i = 0
85       for i in 0...cislo.length            #integer hodnoty v cislo2
86         cislo[i]=cislo[i].to_i
87       end
88       
89       i = 0
90       for f in cislo
91         if f == 0
92           puts @@farbaCervena + "Zadal si nespravne hodnoty:\nPrikaz c. " + f.to_s + " nemohol byt vymazany!\n" + @@farbaNula
93         else
94           begin
95             zoznam[f-1]=""
96             i = i + 1
97             puts "Prikaz c. " + f.to_s + " bol vymazany!"
98           rescue
99             puts @@farbaCervena + "Zadal si nespravne hodnoty:\nPrikaz c. " + f.to_s + " nemohol byt vymazany!\n" + @@farbaNula
100           end
101         end
102       end
103       x = 0
104       while x < i
105         zoznam.delete("")
106         x = x + 1
107       end
108       i = 0
109       subor = File.open(@@path_zoznam_lst,"w")     #zapisanie do zoznamu
110       while i < zoznam.length
111         subor.write(zoznam[i][0]+".:. "+zoznam[i][1][0..-2]+"\n")
112         i = i + 1
113       end
114       subor.close
115     else
116       puts @@farbaCervena + "Nie je vytvoreny zoznam!" + @@farbaNula
117     end
119     gets
120     self.menu
121   end
122   
123   def hladat
124     if File.exists?(@@path_zoznam_lst)
125       subor = File.open(@@path_zoznam_lst,"r")     #najprv nacitat zoznam zo suboru
126       i = 0
127       zoznam=[]
128       for riadok in subor
129         zoznam.push(riadok.split(".:. "))
130         zoznam[i][1] = zoznam[i][1][0...-1]
131         i = i + 1
132       end
133       subor.close
134     else
135       puts @@farbaCervena + "Nie je vytvoreny zoznam!" + @@farbaNula
136       podmienka_na_ukoncenie?
137       gets
138       self.menu
139     end
140    
141     i = 0                                     #nazvy v zozname hodim do malych pismen#
142     zoznam_dalsi = []
143     zoznam_pri_vypise = zoznam.clone                #pri vysledkoch hladania vypisem originalnou velkostou
144     while i < zoznam.length
145       prve_slovo = zoznam[i][0].downcase
146       druhe_slovo = zoznam[i][1].downcase
147       zoznam_dalsi.push([prve_slovo,druhe_slovo])
148       i = i + 1
149     end
150     zoznam = zoznam_dalsi # :)
152     begin 
153       hladaj = @@hladaj.downcase #ak sme zadali hladaj cez parameter pred tym
154     rescue
155       print "Co chces hladat: "
156       hladaj = gets.chomp
157       if hladaj == ""
158         self.menu
159       end
160       hladaj = hladaj.downcase 
161     end
162     
163     vypis = []
164     a = 0
165     zoznam_poradie = []
166     for slovo1,slovo2 in zoznam
167       if /#{hladaj}/ =~ slovo1[0..-1] or /#{hladaj}/ =~ slovo2[0..-1]
168         #if not zoznam_pri_vypise[a][0] == vypis[-1]
169           vypis.push(zoznam_pri_vypise[a])
170           zoznam_poradie.push(a+1)
171         #end
172       end
173       a = a + 1
174     end
175     
176     puts "Cislo | V zozname |               Nazov / Prikaz"
177     puts "-------------------------------------------------------------"
178     @@i = 1
179     for dve_slova in vypis
180         puts @@farbaZelena + @@i.to_s + "#{@@farbaNula}.\t  #{zoznam_poradie[0]}"  + @@farbaNula + "." + @@farbaModra + "\t    " + dve_slova[0].to_s + @@farbaNula+"\n\t\t   " + dve_slova[1].to_s
181         @@i = @@i + 1
182         zoznam_poradie.delete_at(0)
183     end
184     @@zoznam = vypis.clone
185     moznostiSkopirovat?
186     podmienka_na_ukoncenie?
187     self.menu
188   end
189   
190   def pridat
191     if File.exist?(@@path_zoznam_lst)
192       subor = File.open(@@path_zoznam_lst,"r")
193       puts @@farbaModra + "Pre ukoncenie pridavania stlac \"Enter\" v poli nazov" + @@farbaNula
194       zoznam_original = []
195                  
196       i = 0
197       zoznam=[]
198       for riadok in subor
199         zoznam.push(riadok.split(".:. "))
200         zoznam[i][1] = zoznam[i][1][0..-1]
201         i = i + 1
202       end
203       
204       a = 0
205       while (a == 0)
206         print "Zadaj nazov: "
207         meno = gets.chomp
208         if meno != ""
209           pis = true
210           print "Napis prikaz: "
211           prikaz = gets
212           for prvok in zoznam
213             if prvok[1] == prikaz
214               puts @@farbaCervena + "Taky prikaz uz v zozname existuje a preto nebude duplikovany." + @@farbaNula
215               pis = false
216             end
217           end
218           for prvok in zoznam_original
219             if prvok[1] == prikaz
220               puts @@farbaCervena + "Taky prikaz uz v zozname existuje a preto nebude duplikovany." + @@farbaNula
221               pis = false
222             end
223           end
224           
225           if pis == true
226             zoznam_original.push([meno,prikaz])
227           end
228         else
229           a = 1
230         end
231       end
232       subor.close
233      
234       zoznam_konecny = zoznam + zoznam_original
235       zoznam_konecny.sort!
236       
237       i = 0
238       subor = File.open(@@path_zoznam_lst,"w")     #dopisanie zoznamu
239       while i < zoznam_konecny.length
240         subor.write(zoznam_konecny[i][0]+".:. "+zoznam_konecny[i][1][0..-2]+"\n")
241         i = i + 1
242       end
243       subor.close
244       podmienka_na_ukoncenie?
245       self.menu
246     else
247       puts @@farbaCervena + "Nie je vytvoreny zoznam!" + @@farbaNula
248       podmienka_na_ukoncenie?
249       self.menu
250     end
251     
252   end
253   
254   def prepisat
255     print "Naozaj chces vymazat zoznam a vytvorit novy? [Y/n] "
256     odpoved = gets.chomp
257     if odpoved == "Y" or odpoved == "y" or odpoved == ""
258       subor = File.open(@@path_zoznam_lst,"w")
259       subor.close
260       self.pridat
261     end
262     podmienka_na_ukoncenie?
263     self.menu
264   end
265    
266   def about
267     logo
268     puts "\t\|autor:    cinan                    verzia: 1.4.7 Ruby  \|"
269     puts "\t\|" + " "*53 + "\|"
270     puts "\t\|                        Naco sluzi tento program?    \|"
271     puts "\t\|Autor vytvoril tento program na zaznamenavanie       \|"
272     puts "\t\|prikazov v GNU/Linuxe, ktore malo pouziva.           \|"
273     puts "\t\|Neskor bolo pridanych niekolko zbytocnych funkcii    \|"
274     puts "\t\|pre srandu kralikov.                                 \|"
275     podmienka_na_ukoncenie?
276     gets
277     self.menu
278   end
279    
280   def menu
281     puts "\t-"+"="*53+"-"
282     puts "\t\|"+"\t\t#{@@farbaZelena}1#{@@farbaNula}"+". Zobrazit zoznam                    \|"
283     puts "\t\|"+"\t\t#{@@farbaZelena}2#{@@farbaNula}"+". Hladat v zozname                   \|"
284     puts "\t\|"+"\t\t#{@@farbaZelena}3#{@@farbaNula}"+". Pridat udaje                       \|"
285     puts "\t\|"+"\t\t#{@@farbaZelena}4#{@@farbaNula}"+". Vymazat udaje                      \|"
286     puts "\t\|"+" "*53+"\|"
287     puts "\t\|"+"\t\t#{@@farbaZelena}5#{@@farbaNula}"+". Prepisat do noveho zoznamu         \|"
288     puts "\t\|  " + "#{@@farbaZelena}q#{@@farbaNula}" + ". Ukoncit" + " "*27 + "#{@@farbaZelena}6#{@@farbaNula}"+". O programe \|"
289     puts "\t-"+"="*53+"-"
290     print "Moznost c.: "
291     print @@farbaZelena
292     moznost = gets.chomp.to_s
293     puts @@farbaNula
294    
295     if moznost == "1"
296       self.zobrazit_zoznam
297     elsif moznost == "2"
298       self.hladat
299     elsif moznost == "3"
300       self.pridat
301     elsif moznost == "4"
302       self.vymazat_prikaz
303     elsif moznost == "5"
304       self.prepisat
305     elsif moznost == "q"
306       exit
307     elsif moznost == "6"
308       self.about
309     else
310       puts @@farbaCervena + "Zadana moznost neexistuje!" + @@farbaNula
311       self.menu
312     end
313   end
314   
315   def logo    
316     puts "\t-" + "="*53 + "-"
317     puts "\t\|#{@@farbaModra}                               _               _     #{@@farbaNula}\|"
318     puts "\t\|#{@@farbaModra}  ___   ___   __ _  _ __  ___ | |__      _ __ | |__  #{@@farbaNula}\|"
319     puts "\t\|#{@@farbaModra} \/ __| / _ \\ \/ _` || '__|\/ __|| '_ \\    | '__|| '_ \\ #{@@farbaNula}\|"
320     puts "\t\|#{@@farbaModra} \\__ \\|  __\/| (_| || |  | (__ | | | | _ | |   | |_) |#{@@farbaNula}\|"
321     puts "\t\|#{@@farbaModra} |___\/ \\___| \\__,_||_|   \\___||_| |_|(_)|_|   |_.__\/ #{@@farbaNula}\|"
322   end
323   
324   def podmienka_na_ukoncenie?
325     if @@podmienka_na_ukoncenie == true
326       exit
327     end
328   end
329   
330   def initialize
331     if ARGV.size > 0
332       @@podmienka_na_ukoncenie = true
333         case ARGV[0]
334           when "--help", "-h"
335             puts "Pouzitie: 
336              --help, -h \t\t\t Tato pomoc
337              --show-list, -l \t\t Zobrazit zoznam
338              --search=SEARCH, -s=SEARCH \t Hladat 
339              --search, -s \t\t Hladat
340              --add, -a \t\t\t Pridat
341              --create, -c \t\t Vytvorit novy zoznam
342              --about   \t\t\t O programe"
343             exit
344         when "--show-list", "-l"
345           $*.clear
346           self.zobrazit_zoznam
347         when /^--search=([^ ]+)/, /^-s=([^ ]+)/
348           $*.clear
349           @@hladaj =  $1.to_s
350           self.hladat
351         when "-s", "--search"
352           $*.clear
353           self.hladat
354         when "--add", "-a"
355           $*.clear
356           self.pridat
357         when "--about"
358           $*.clear
359           self.about
360         when "--create", "-c"
361           $*.clear
362           self.prepisat
363         else
364           @@hladaj = ARGV.join(" ")
365           $*.clear
366           self.hladat
367         end
368     end
369   end
372 praca = Trieda.new
373 praca.logo
374 praca.menu