calendar_helper 0.2.2 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
data/History.txt CHANGED
@@ -1,3 +1,10 @@
1
+ === 2.2.3 / 2010-05-21
2
+
3
+ * Don't crash if time zone is nil
4
+ * Upgrade to latest Hoe
5
+ * Added support to remove the month row on the table
6
+ * Fixed bug where passed ID for day cell would throw error on missing class name.
7
+
1
8
  === 0.2.2 / 2007-08-29
2
9
 
3
10
  * Fixed missing tr tag in thead section. [Ian Struble]
data/README.txt CHANGED
@@ -1,27 +1,61 @@
1
- CalendarHelper
2
- ==============
1
+ = CalendarHelper
3
2
 
4
- A simple helper for creating an HTML calendar. The "calendar" method will be automatically available to your view templates.
3
+ == DESCRIPTION:
4
+
5
+ A simple helper for creating an HTML calendar. The "calendar" method will be automatically available to your Rails view templates, or can be used with Sinatra or other webapps.
5
6
 
6
7
  There is also a Rails generator that copies some stylesheets for use alone or alongside existing stylesheets.
7
8
 
8
- Authors
9
- =======
9
+ == SYNOPSIS:
10
+
11
+ # Simple
12
+ calendar(:year => 2005, :month => 6)
13
+
14
+ # Set table class
15
+ calendar({:year => 2005, :month => 6, :table_class => "calendar_helper"})
16
+
17
+ # Full featured
18
+ calendar(:year => 2005, :month => 5) do |d| # This generates a simple calendar, but gives special days
19
+ if listOfSpecialDays.include?(d) # (days that are in the array listOfSpecialDays) one CSS class,
20
+ [d.mday, {:class => "specialDay"}] # "specialDay", and gives the rest of the days another CSS class,
21
+ else # "normalDay". You can also use this highlight today differently
22
+ [d.mday, {:class => "normalDay"}] # from the rest of the days, etc.
23
+ end
24
+ end
25
+
26
+ If using with ERb (Rails), put in a printing tag.
27
+
28
+ <%= calendar(:year => @year, :month => @month, :first_day_of_week => 1) do |d|
29
+ render_calendar_cell(d)
30
+ end
31
+ %>
32
+
33
+ With Haml, use a helper to set options for each cell.
34
+
35
+ = calendar(:year => @year, :month => @month, :first_day_of_week => 1) do |d|
36
+ - render_calendar_cell(d)
37
+
38
+ In Sinatra, include the CalendarHelper module in your helpers:
39
+
40
+ helpers do
41
+ include CalendarHelper
42
+ end
43
+
44
+ == AUTHORS:
10
45
 
11
46
  Jeremy Voorhis -- http://jvoorhis.com
12
47
  Original implementation
13
48
 
14
- Jarkko Laine -- http://jlaine.net/
15
- Dynamic enhancements for starting week on Monday and highlighting weekends
16
-
17
49
  Geoffrey Grosenbach -- http://nubyonrails.com
18
50
  Test suite and conversion to a Rails plugin
19
51
 
20
- Tom Armitage -- http://infovore.org
21
- Improvements to markup (abbreviations on day-headings, <caption>); introduction of :accessible option.
52
+ == Contributors:
53
+
54
+ * Jarkko Laine http://jlaine.net/
55
+ * Tom Armitage http://infovore.org
56
+ * Bryan Larsen http://larsen.st
22
57
 
23
- Usage
24
- =====
58
+ == USAGE:
25
59
 
26
60
  See the RDoc (or use "rake rdoc").
27
61
 
data/Rakefile CHANGED
@@ -4,17 +4,24 @@ require 'rake/rdoctask'
4
4
  require 'hoe'
5
5
  require './lib/calendar_helper.rb'
6
6
 
7
- Hoe.new('calendar_helper', CalendarHelper::VERSION) do |p|
8
- p.rubyforge_name = 'seattlerb'
9
- p.author = 'Geoffrey Grosenbach'
10
- p.email = 'boss AT topfunky.com'
11
- p.summary = 'Generates a configurable, CSS-tagged HTML calendar.'
12
- p.description = "A simple method to create an HTML calendar for a single month. Can be styled with CSS. Usable with Ruby on Rails."
13
- p.url = "http://rubyforge.org/projects/seattlerb"
14
- p.changes = p.paragraphs_of('History.txt', 0..1).join("\n\n")
15
- p.clean_globs = ['test/output']
7
+ Hoe.spec 'calendar_helper' do
8
+ developer('Geoffrey Grosenbach', 'boss@topfunky.com')
9
+
10
+ extra_deps << ['open4']
11
+
12
+ # self.rubyforge_name = 'osxscreenshotx' # if different than 'osxscreenshot'
16
13
  end
17
14
 
15
+
16
+ # Hoe.new('calendar_helper', CalendarHelper::VERSION) do |p|
17
+ # p.rubyforge_name = 'seattlerb'
18
+ # p.summary = 'Generates a configurable, CSS-tagged HTML calendar.'
19
+ # p.description = "A simple method to create an HTML calendar for a single month. Can be styled with CSS. Usable with Ruby on Rails."
20
+ # p.url = "http://rubyforge.org/projects/seattlerb"
21
+ # p.changes = p.paragraphs_of('History.txt', 0..1).join("\n\n")
22
+ # p.clean_globs = ['test/output']
23
+ # end
24
+
18
25
  # desc "Test task (actually runs specs)"
19
26
  # task "test" do
20
27
  # system "spec --format specdoc --color spec/*_spec.rb"
@@ -27,6 +34,6 @@ Rake::RDocTask.new(:rdoc) do |rdoc|
27
34
  rdoc.rdoc_dir = 'rdoc'
28
35
  rdoc.title = 'CalendarHelper'
29
36
  rdoc.options << '--line-numbers' << '--inline-source'
30
- rdoc.rdoc_files.include('README')
37
+ rdoc.rdoc_files.include('README.txt')
31
38
  rdoc.rdoc_files.include('lib/**/*.rb')
32
39
  end
@@ -18,6 +18,10 @@
18
18
  text-align: center;
19
19
  }
20
20
 
21
+ thead tr {
22
+ color: black;
23
+ }
24
+
21
25
  .monthName th {
22
26
  font-weight: normal;
23
27
  text-align: right;
@@ -3,7 +3,7 @@ require 'date'
3
3
  # CalendarHelper allows you to draw a databound calendar with fine-grained CSS formatting
4
4
  module CalendarHelper
5
5
 
6
- VERSION = '0.2.2'
6
+ VERSION = '0.2.3'
7
7
 
8
8
  # Returns an HTML calendar. In its simplest form, this method generates a plain
9
9
  # calendar (which can then be customized using CSS) for a given month and year.
@@ -34,6 +34,9 @@ module CalendarHelper
34
34
  #
35
35
  # :show_today => false # Highlights today on the calendar using the CSS class 'today'.
36
36
  # # Defaults to true.
37
+ # :previous_month_text => nil # Displayed left of the month name if set
38
+ # :next_month_text => nil # Displayed right of the month name if set
39
+ # :month_header => false # If you use false, the current month header will disappear.
37
40
  #
38
41
  # For more customization, you can pass a code block to this method, that will get one argument, a Date object,
39
42
  # and return a values for the individual table cells. The block can return an array, [cell_text, cell_attrs],
@@ -77,7 +80,10 @@ module CalendarHelper
77
80
  :abbrev => (0..2),
78
81
  :first_day_of_week => 0,
79
82
  :accessible => false,
80
- :show_today => true
83
+ :show_today => true,
84
+ :previous_month_text => nil,
85
+ :next_month_text => nil,
86
+ :month_header => true
81
87
  }
82
88
  options = defaults.merge options
83
89
 
@@ -92,8 +98,25 @@ module CalendarHelper
92
98
  day_names.push(day_names.shift)
93
99
  end
94
100
 
95
- cal = %(<table class="#{options[:table_class]}" border="0" cellspacing="0" cellpadding="0">)
96
- cal << %(<caption class="#{options[:month_name_class]}"></caption><thead><tr><th colspan="7">#{Date::MONTHNAMES[options[:month]]}</th></tr><tr class="#{options[:day_name_class]}">)
101
+ # TODO Use some kind of builder instead of straight HTML
102
+ cal = %(<table class="#{options[:table_class]}" border="0" cellspacing="0" cellpadding="0">)
103
+ cal << %(<thead>)
104
+
105
+ if (options[:month_header])
106
+ cal << %(<tr>)
107
+ if options[:previous_month_text] or options[:next_month_text]
108
+ cal << %(<th colspan="2">#{options[:previous_month_text]}</th>)
109
+ colspan=3
110
+ else
111
+ colspan=7
112
+ end
113
+ cal << %(<th colspan="#{colspan}" class="#{options[:month_name_class]}">#{Date::MONTHNAMES[options[:month]]}</th>)
114
+ cal << %(<th colspan="2">#{options[:next_month_text]}</th>) if options[:next_month_text]
115
+ cal << %(</tr>)
116
+ end
117
+
118
+ cal << %(<tr class="#{options[:day_name_class]}">)
119
+
97
120
  day_names.each do |d|
98
121
  unless d[options[:abbrev]].eql? d
99
122
  cal << "<th scope='col'><abbr title='#{d}'>#{d[options[:abbrev]]}</abbr></th>"
@@ -114,9 +137,11 @@ module CalendarHelper
114
137
  first.upto(last) do |cur|
115
138
  cell_text, cell_attrs = block.call(cur)
116
139
  cell_text ||= cur.mday
117
- cell_attrs ||= {:class => options[:day_class]}
118
- cell_attrs[:class] += " weekendDay" if [0, 6].include?(cur.wday)
119
- cell_attrs[:class] += " today" if (cur == Date.today) and options[:show_today]
140
+ cell_attrs ||= {}
141
+ cell_attrs[:class] ||= options[:day_class]
142
+ cell_attrs[:class] += " weekendDay" if [0, 6].include?(cur.wday)
143
+ today = (Time.respond_to?(:zone) && !(zone = Time.zone).nil? ? zone.now.to_date : Date.today)
144
+ cell_attrs[:class] += " today" if (cur == today) and options[:show_today]
120
145
  cell_attrs = cell_attrs.map {|k, v| %(#{k}="#{v}") }.join(" ")
121
146
  cal << "<td #{cell_attrs}>#{cell_text}</td>"
122
147
  cal << "</tr><tr>" if cur.wday == last_weekday
@@ -14,11 +14,13 @@ class CalendarHelperTest < Test::Unit::TestCase
14
14
  # include Inflector
15
15
  # include ActionController::Assertions::SelectorAssertions
16
16
  include CalendarHelper
17
-
17
+
18
18
 
19
19
  def test_with_output
20
- output = "<h2>Past Month</h2>" + calendar_with_defaults
21
- output << "<h2>Current Month</h2>" + calendar_for_this_month
20
+ output = []
21
+ %w(calendar_with_defaults calendar_for_this_month calendar_with_next_and_previous).each do |methodname|
22
+ output << "<h2>#{methodname}</h2>\n" + send(methodname.to_sym) + "\n\n"
23
+ end
22
24
  write_sample "sample.html", output
23
25
  end
24
26
 
@@ -118,6 +120,13 @@ class CalendarHelperTest < Test::Unit::TestCase
118
120
  calendar options
119
121
  end
120
122
 
123
+ def calendar_with_next_and_previous
124
+ calendar_for_this_month({
125
+ :previous_month_text => "PREVIOUS",
126
+ :next_month_text => "NEXT"
127
+ })
128
+ end
129
+
121
130
  def write_sample(filename, content)
122
131
  FileUtils.mkdir_p "test/output"
123
132
  File.open("test/output/#{filename}", 'w') do |f|
metadata CHANGED
@@ -1,33 +1,71 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.9.0
3
- specification_version: 1
4
2
  name: calendar_helper
5
3
  version: !ruby/object:Gem::Version
6
- version: 0.2.2
7
- date: 2007-08-29 00:00:00 -07:00
8
- summary: Generates a configurable, CSS-tagged HTML calendar.
9
- require_paths:
10
- - lib
11
- email: boss AT topfunky.com
12
- homepage: http://rubyforge.org/projects/seattlerb
13
- rubyforge_project: seattlerb
14
- description: A simple method to create an HTML calendar for a single month. Can be styled with CSS. Usable with Ruby on Rails.
15
- autorequire:
16
- default_executable:
17
- bindir: bin
18
- has_rdoc: true
19
- required_ruby_version: !ruby/object:Gem::Version::Requirement
20
- requirements:
21
- - - ">"
22
- - !ruby/object:Gem::Version
23
- version: 0.0.0
24
- version:
4
+ version: 0.2.3
25
5
  platform: ruby
26
- signing_key:
27
- cert_chain:
28
- post_install_message:
29
6
  authors:
30
7
  - Geoffrey Grosenbach
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2010-05-21 00:00:00 -07:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: open4
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "0"
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: rubyforge
27
+ type: :development
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 2.0.3
34
+ version:
35
+ - !ruby/object:Gem::Dependency
36
+ name: gemcutter
37
+ type: :development
38
+ version_requirement:
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: 0.3.0
44
+ version:
45
+ - !ruby/object:Gem::Dependency
46
+ name: hoe
47
+ type: :development
48
+ version_requirement:
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: 2.5.0
54
+ version:
55
+ description: |-
56
+ A simple helper for creating an HTML calendar. The "calendar" method will be automatically available to your Rails view templates, or can be used with Sinatra or other webapps.
57
+
58
+ There is also a Rails generator that copies some stylesheets for use alone or alongside existing stylesheets.
59
+ email:
60
+ - boss@topfunky.com
61
+ executables: []
62
+
63
+ extensions: []
64
+
65
+ extra_rdoc_files:
66
+ - History.txt
67
+ - Manifest.txt
68
+ - README.txt
31
69
  files:
32
70
  - History.txt
33
71
  - MIT-LICENSE
@@ -41,28 +79,34 @@ files:
41
79
  - init.rb
42
80
  - lib/calendar_helper.rb
43
81
  - test/test_calendar_helper.rb
44
- test_files:
45
- - test/test_calendar_helper.rb
82
+ has_rdoc: true
83
+ homepage:
84
+ licenses: []
85
+
86
+ post_install_message:
46
87
  rdoc_options:
47
88
  - --main
48
89
  - README.txt
49
- extra_rdoc_files:
50
- - History.txt
51
- - Manifest.txt
52
- - README.txt
53
- executables: []
54
-
55
- extensions: []
56
-
90
+ require_paths:
91
+ - lib
92
+ required_ruby_version: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: "0"
97
+ version:
98
+ required_rubygems_version: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: "0"
103
+ version:
57
104
  requirements: []
58
105
 
59
- dependencies:
60
- - !ruby/object:Gem::Dependency
61
- name: hoe
62
- version_requirement:
63
- version_requirements: !ruby/object:Gem::Version::Requirement
64
- requirements:
65
- - - ">="
66
- - !ruby/object:Gem::Version
67
- version: 1.3.0
68
- version:
106
+ rubyforge_project: calendar_helper
107
+ rubygems_version: 1.3.5
108
+ signing_key:
109
+ specification_version: 3
110
+ summary: A simple helper for creating an HTML calendar
111
+ test_files:
112
+ - test/test_calendar_helper.rb