Wikipedia:Tworzenie szablonu roku
Z Wikipedii
Na tej stronie znajduje się kod skryptu użytkowego Wikipedii napisanego w języku programowania Ruby, który wypisuje na standardowe wyjście szablon roku np. 1410, 1411 itd
Zobacz także: Tworzenie szablonu dekady
[edytuj] Działanie
Jako argument w linii komend podaje się liczbę będącą rokiem, którego szablon chcemy uzyskać.
Lepiej nie generować lat poniżej 50 roku n.e
[kpjas@moochca kpjas] $ ruby rok.rb 1410
Jeśli chcemy zapisać szblon do pliku
[kpjas@moochca kpjas] $ ruby rok.rb 1410 >1410.txt
#!/usr/bin/ruby class Year 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_decades_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-te","Lata 30-te","Lata 40-te","Lata 50-te","Lata 60-te","Lata 70-te","Lata 80-te","Lata 90-te"] #ss_year,ee_year = calc_start_end_year(yy) ss_year = @start_year.dup; ee_year = @end_year.dup 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) # od wieku 1 do 4 naszej ery z suffiksem "n.e" 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 "<center><b>#{@given_year}</b></center>\n\n" puts generate_century_str(); print "\n" print "<center>"; generate_decades_list(@given_year); print "</center>\n\n" print "Lata : " pre = @given_year.to_i - 5 pre.upto(@given_year.to_i - 1 ) {|x| print "[[", x, "]] "} print "'''#{@given_year}''' " post = @given_year + 1 post.upto(@given_year.to_i + 5 ) {|x| print "[[", x, "]] "} print <<EOF; ---- '''Urodzili się :''' * '''Zmarli :''' * '''Wydarzenia :''' * w Polsce ** * na świecie ** EOF end end if(ARGV[0]) yy = ARGV[0].to_i else puts "4" exit 1 end year = Year.new(yy) year.print_all()