Spis treści
Wikipedia:Tworzenie szablonu dekady
Na tej stronie znajduje się kod skryptu użytkowego Wikipedii napisanego w języku programowania Ruby, który wypisuje na standardowe wyjście szablon dekady czyli dziesięciolecia np. Lata 50. XV wieku = 1450-1459 itd
Zobacz też: Tworzenie szablonu roku
Działanie
[edytuj | edytuj kod]Jako argument w linii komend podaje się liczbę będącą rokiem, należącym
do dekady, której szablon chcemy uzyskać.
Lepiej nie generować lat poniżej 50 roku n.e
[kpjas@moochca kpjas] $ ruby dekada.rb 1450
Jeśli chcemy zapisać szblon do pliku
[kpjas@moochca kpjas] $ ruby dekada.rb 1450 >Lata_50._XV_wieku.txt
#!/usr/bin/ruby class Decade def initialize(year) @given_year=year @start_year,@end_year=calc_start_end_year(year) @century=calculate_century(year) generate_year_array() generate_century_str() end def generate_decade_str(yy) arr = ["I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X", "XI", "XII", "XIII", "XIV", "XV", "XVI", "XVII", "XVIII", "XIX", "XX", "XXI", "XXII", "XXIII "] ss_year = @start_year.dup; ee_year = @end_year.dup tmpval = ss_year%100 if(tmpval < 20 ) "Lata #{ss_year}-#{ee_year}" else "Lata #{tmpval}-te #{arr[@century]} wieku" end end def gen_decade_list(yy) cent = ["I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X", "XI", "XII", "XIII", "XIV", "XV", "XVI", "XVII", "XVIII", "XIX", "XX", "XXI", "XXII", "XXIII "] arr = ["dummy0", "dummy1", "Lata 20.","Lata 30.","Lata 40.","Lata 50.","Lata 60.","Lata 70.","Lata 80.","Lata 90."] ss_year,ee_year = calc_start_end_year(yy) print "Dziesięciolecia : " -50.step(-10,10) { |f| tmpval = (ss_year + f)%100 if(tmpval < 20 ) sss = "[[Lata #{ss_year + f }-#{ee_year + f }|#{ss_year + f}-#{ee_year+f}]]" else if( (ss_year%100) + f < 0 ) ccc = @century - 1 else ccc = @century end sss = "[[Lata #{tmpval}-te #{cent[ccc]} wieku|#{ss_year + f}-#{ee_year+f}]]" end print sss, "\n" } print "'''#{@start_year}-#{@end_year}'''\n" 10.step(50,10) { |f| tmpval = (ss_year + f)%100 if(tmpval < 20 ) sss = "[[Lata #{ss_year + f }-#{ee_year + f }|#{ss_year + f}-#{ee_year+f}]]" else if( (ss_year%100)+f > 100 ) ccc = @century + 1 else ccc = @century end sss = "[[Lata #{tmpval}-te #{cent[ccc]} wieku|#{ss_year + f}-#{ee_year+f}]]" end puts sss } end def generate_year_array() @years_arr = [] @years_arr[0] = "[[#{@start_year}]], " @years_arr[1] = "[[#{@start_year+ 1}]], " @years_arr[2] = "[[#{@start_year+ 2}]], " @years_arr[3] = "[[#{@start_year+ 3}]], " @years_arr[4] = "[[#{@start_year+ 4}]], " @years_arr[5] = "[[#{@start_year+ 5}]], " @years_arr[6] = "[[#{@start_year+ 6}]], " @years_arr[7] = "[[#{@start_year+ 7}]], " @years_arr[8] = "[[#{@start_year+ 8}]], " @years_arr[9] = "[[#{@start_year+ 9}]]" end def generate_century_str() arr = ["I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X", "XI", "XII", "XIII", "XIV", "XV", "XVI", "XVII", "XVIII", "XIX", "XX", "XXI", "XXII", "XXIII "] pre = @century - 1 the_one = @century post = @century + 1 if(pre >= 0 && pre < 4) pre1 = "[[#{arr[pre]} wiek n.e]]" else pre1 = "[[#{arr[pre]} wiek]]" end if(post >= 0 && post < 4) post1 = "[[#{arr[post]} wiek n.e]]" else post1 = "[[#{arr[post]} wiek]]" end if(the_one >= 0 && the_one < 4) the_one1 = "[[#{arr[the_one]} wiek n.e]]" else the_one1 = "[[#{arr[the_one]} wiek]]" end if(@century > 1) @centuries_string="<center>Stulecia : #{pre1} - #{the_one1} - #{post1}</center>" elsif( @century == 0) @centuries_string="<center>Stulecia : [[I wiek p.n.e]] - '''#{the_one1}''' - #{post1}</center>" else @centuries_string="Błąd : nie obsługuje lat przed naszą erą" end end def calculate_century(y) var1 = y/100 end def calc_start_end_year(y) var1 = y%10 s_year=y - var1 e_year=y + (9 - var1) [s_year,e_year] end def print_all #print @start_year, "-", @end_year, "\n" print "<center>'''", generate_decade_str(@start_year), "'''</center>\n\n" puts generate_century_str(); print "\n" print "<center>"; gen_decade_list(@given_year); print "</center>\n\n" print "Lata : " @years_arr.each {|x| print x} print "\n\n----\n" end end if(ARGV[0]) yy = ARGV[0].to_i else puts "Trzeba podać jeden argument - rok np. 1921" exit 1 end dekada = Decade.new(yy) dekada.print_all()