Wikipedia:Tworzenie szablonu dnia
Z Wikipedii
Poniższy kod tworzy szablon dnia w wersji używanej wcześniej na wikipedii. Obecną wersję szablonów lat utworzył bot napisany w języku Java, którego kod umieszczony jest tutaj.
#!/usr/bin/ruby month,day = ARGV unless month and day print "Użycie: #{$0} <numer miesiąca> <numer dnia>\n" exit end month = month.to_i day = day.to_i $month_size = [ 0, 31,28,31,30, 31,30,31,31, 30,31,30,31 ] $month_names = [ 'X', 'stycznia', 'lutego', 'marca', 'kwietnia', 'maja', 'czerwca', 'lipca', 'sierpnia', 'września', 'października', 'listopada', 'grudnia' ] if month < 1 or month > 12 print "Nie ma takiego miesiąca: numer #{month}\n" exit end if month == 2 if (day < 1 or day > 29) and month == 2 print "Nie ma takiego dnia: #{day} #{$month_names[month]}\n" exit end else if day < 1 or day > $month_size[month] print "Nie ma takiego dnia: #{day} #{$month_names[month]}\n" exit end end $month_startday = [ 0, 0,31,59, 90,120,151, 181,212,243, 273,304,334 ] def ordnumgenetiv(num) ordnumgenetiv_ends = [ "tym", "wszym", "gim", "cim", "tym", "tym", "tym", "mym", "mym", "tym" ] if num == 0 raise "wrong number: 0" elsif num % 100 == 0 "#{num}nym" elsif num >= 9 and num <= 20 "#{num}tym" end "#{num}#{ordnumgenetiv_ends[num%10]}" end def dayno(day,month) nr = $month_startday[month] + day if month > 2 return "#{ordnumgenetiv(nr)} (w latach przestępnych #{ordnumgenetiv(nr+1)})" else return ordnumgenetiv(nr).to_s end end def dayleft(day,month) nr = $month_startday[month] + day if month > 2 return (365-nr).to_s elsif month == 2 and day == 29 return (366-nr).to_s else return "#{365-nr} (w latach przestępnych #{366-nr})" end end def special(day,month) if day==29 and month == 2 return "Występuje tylko w latach przestępnych." else return "" end end def prevday(day,month) if day-1 > 0 return "[[#{day-1} #{$month_names[month]}|Poprzedni dzień]]" elsif month == 1 return "[[31 grudnia|Poprzedni dzień]]" elsif month == 3 return "[[28 lutego|Poprzedni dzień w latach zwykłych]] [[29 lutego|Poprzedni dzień w latach przestępnych]]" else return "[[#{$month_size[month-1]} #{$month_names[month-1]}|Poprzedni dzień]]" end end def nextday(day,month) if day+1 <= $month_size[month] return "[[#{day+1} #{$month_names[month]}|Następny dzień]]" elsif month == 12 return "[[1 stycznia|Następny dzień]]" elsif month == 2 return "[[29 lutego|Następny dzień w latach przestępnych]] [[1 marca|Następny dzień w latach zwykłych]]" else return "[[1 #{$month_names[month+1]}|Następny dzień]]" end end print <<EOF #{day} #{$month_names[month]} jest #{dayno(day,month)} dniem w [[kalendarz gregoriański|kalendarzu gregoriańskim]], do końca [[rok|roku]] pozostało #{dayleft(day,month)} dni. #{special(day,month)} '''Święta''' * '''Urodzili się:''' * '''Zmarli:''' * '''Wydarzenia:''' * w Polsce ** * na Świecie ** [[styczeń]] - [[luty]] - [[marzec]] - [[kwiecień]] - [[maj]] - [[czerwiec]] - [[lipiec]] - [[sierpień]] - [[wrzesień]] - [[październik]] - [[listopad]] - [[grudzień]] [[Kalendarium dzień po dniu]] #{prevday(day,month)} #{nextday(day,month)} EOF