calendar_helper 0.2.2 → 0.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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