A low level calendar engine.
Add this line to your application's Gemfile:
gem 'cal'
And then execute:
$ bundle
Or install it yourself as:
$ gem install cal
Cal is a simple calendar structure. It does not render a calendar. It does not handle events.
See the Rails app https://github.com/austinthecoder/cal-app for an example.
calendar = Cal.new_monthly_calendar 2012, 11, :start_week_on => :monday
calendar.month # a Cal::Month
calendar.first_day # a Cal::Day representing the first day on the calendar, might be in the previous month
calendar.last_day # a Cal::Day representing the last day on the calendar, might be in the next month
calendar.days # a Range of Cal::Day's from the first day to the last
calendar.weeks # an Array of Cal::Day Arrays
calendar.previous # the calendar for the previous month
calendar.next # the calendar for the next month
calendar.day_names # an Array of the day names, e.g. [:sunday, :monday, ...], depends on the `:start_week_on` option
# routes
root :to => redirect("/calendars/#{Date.today.year}-#{Date.today.month}")
resources :calendars, :only => :show
# controller
@calendar = Cal.new_monthly_calendar *params[:id].split('-')
# view
%h3
= link_to 'Previous month', calendar_path(@calendar.previous.month)
|
= "#{@calendar.month.to_s "%B"} #{@calendar.year}"
|
= link_to 'Next month', calendar_path(@calendar.next.month)
%table
%thead
%tr
- @calendar.day_names.each do |name|
%th= name
%tbody
- @calendar.weeks.each do |week|
%tr
- week.each do |day|
%td{:class => ('today' if day.today?)}
= day.number
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Added some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request