Gå til innhold

Anbefalte innlegg

Siden vi ikke har et Ruby forum her ( :( ) så poster jeg det under Python, ettersom det er det ligner mest på :)

 

Jeg har laget en Ruby klasse for generering av kalender. Faktisk har jeg bare gjort om et PHP-script til Ruby :)

 

Koden:

class Calendar
def initialize(year = Time.now.year, month = Time.now.month)
 # Variables
 @month = month.to_i
 @year = year.to_i
 
 @big_month = [1, 3, 5, 7, 8, 10, 12]
 @small_month = [4, 6, 9, 11]
 @special_month = [2]
end

def change_month(year, month)
 @year = year
 @month = month
end

def start_week
 return Time.mktime(@year, @month, 1, 0, 0, 0, 0).strftime("%W").to_i
end

def end_week
 return Time.mktime(@year, @month, length_of_month, 0, 0, 0, 0).strftime("%W").to_i
end

def start_day
 return Time.mktime(@year, @month, 1, 0, 0, 0, 0).strftime("%w").to_i
end

def get_month(month)
 return Time.mktime(2000, month, 1, 0, 0, 0, 0).strftime("%A")
end

def length_of_month
 if @big_month.include?(@month)
 	return 31
 elsif @small_month.include?(@month)
 	return 30
 elsif @special_month.include?(@month)
 	return 29 if @year % 4 == 0
 	return 28
 end
end

def calendar
 result = []
 date = 1
 first_line = true
 weeks = end_week - start_week + 1
 
 weeks.times do |t|
 	week = {:week => start_week + t}
 	days = []
 	
 	0.upto(6) do |day|
   if (day < start_day and first_line == true) or (date > length_of_month)
   	days << ""
   else
   	days << date
   	date = date + 1
   end
   
   week[:days] = days
 	end
 	first_line = false
 	result << week
 end
 return result
end

# Sample html-table
def html(id = nil)
 result = "<table id=\"" + id.to_s + "\">\n"
 result = "<table>\n" if id == nil
 
 result << "<tr>\n<td>Week</td>\n\n<th>Sunday</th>\n<th>Monday</th>\n<th>Tuesday</th>\n<th>Wednesday</th>\n<th>Thursday</th>\n<th>Friday</th>\n<th>Saturday</th>\n</tr>\n"
 cal = calendar
 
 cal.each do |week|
 	result << "<tr>\n<th>" + week[:week].to_s + "</th>\n\n"
 	
 	week[:days].each do |day|
   result << "<td>" + day.to_s + "</td>\n"
 	end
 	
 	result << "</tr>\n"
 end
 
 result << "</table>"
 return result
end
end

 

Jeg skal prøve å gjøre så godt jeg kan å forklare hvordan du bruker koden.

require 'calendar.rb' # Inkluderer klassen vår (ligger i calendar.rb)
cal = Calendar.new # Starter klassen. Tar to parameter: year og month. Hvis du ikke velger noen tar den måneden vi er i
days = cal.calendar # Putter kalenderen vår i variablen "days"
print cal.html # Eksempel funksjon på kalender

 

Her vil "days" inneholde:

[
{ :week => 22, :days => ["", "", "", "", 1, 2, 3]},
{ :week => 23, :days => [4, 5, 6, 7, 8,  9, 10]},
{ :week => 24, :days => [11, 12, 13, 14, 15, 16, 17]},
{ :week => 25, :days => [18, 19, 20, 21, 22, 23, 24]},
{ :week => 26, :days => [25, 26, 27, 28, 29, 30, ""]}
]

 

Hva syns dere?

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...