nytimes-style 0.2.0 → 0.3.0

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/index.html CHANGED
@@ -34,7 +34,7 @@
34
34
  <a class="pilcrow" href="#section-2">&#182;</a>
35
35
  </div>
36
36
  <p>A small set of helper methods for generating text that conforms to <em>The New York Times Manual of Style and Usage</em>,
37
- written by <a href="https://andreischeinkman.com">Andrei Scheinkman</a> and hosted on <a href="https://github.com/ascheink/nytimes-style">Github</a>.</p>
37
+ hosted on <a href="https://github.com/ascheink/nytimes-style">Github</a>.</p>
38
38
  </td>
39
39
  <td class=code>
40
40
  <div class='highlight'><pre><span class="k">module</span> <span class="nn">Nytimes</span>
@@ -49,14 +49,14 @@ written by <a href="https://andreischeinkman.com">Andrei Scheinkman</a> and host
49
49
  </div>
50
50
  <blockquote><p>&ldquo;In general, spell out the first nine cardinal and
51
51
  ordinal numbers [but] spell any number that begins a sentence&hellip;&rdquo;
52
- There are many exceptions to this rule including &ldquo;ages of people
52
+ Exceptions include &ldquo;ages of people
53
53
  and animals,&rdquo; &ldquo;sums of money,&rdquo; &ldquo;degrees of temperature&rdquo; and &ldquo;mentions of the Twelve
54
54
  Apostles and the Ten Commandments.&rdquo;</p></blockquote>
55
55
  </td>
56
56
  <td class=code>
57
57
  <div class='highlight'><pre> <span class="k">def</span> <span class="nf">nytimes_number</span><span class="p">(</span><span class="n">n</span><span class="p">)</span>
58
58
  <span class="k">if</span> <span class="n">n</span> <span class="o">&lt;</span> <span class="mi">10</span>
59
- <span class="sx">%w(one two three four five six seven eight nine ten)</span><span class="o">[</span><span class="n">n</span> <span class="o">-</span> <span class="mi">1</span><span class="o">]</span>
59
+ <span class="sx">%w(one two three four five six seven eight nine)</span><span class="o">[</span><span class="n">n</span> <span class="o">-</span> <span class="mi">1</span><span class="o">]</span>
60
60
  <span class="k">else</span>
61
61
  <span class="n">n</span><span class="o">.</span><span class="n">to_s</span>
62
62
  <span class="k">end</span>
@@ -74,8 +74,12 @@ February in news copy when they are followed by numerals: Aug. 1; Sept.
74
74
  April, May, June and July except as a last resort in a chart or table.&rdquo;</p></blockquote>
75
75
  </td>
76
76
  <td class=code>
77
- <div class='highlight'><pre> <span class="k">def</span> <span class="nf">nytimes_date</span><span class="p">(</span><span class="n">date</span><span class="p">)</span>
78
- <span class="s2">&quot;</span><span class="si">#{</span><span class="n">nytimes_month_and_day</span> <span class="n">date</span><span class="si">}</span><span class="s2">, </span><span class="si">#{</span><span class="n">date</span><span class="o">.</span><span class="n">year</span><span class="si">}</span><span class="s2">&quot;</span>
77
+ <div class='highlight'><pre> <span class="k">def</span> <span class="nf">nytimes_date</span><span class="p">(</span><span class="n">date</span><span class="p">,</span> <span class="n">opts</span><span class="o">=</span><span class="p">{})</span>
78
+ <span class="n">str</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
79
+ <span class="n">str</span> <span class="o">&lt;&lt;</span> <span class="n">date</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">&#39;%A, &#39;</span><span class="p">)</span> <span class="k">if</span> <span class="n">opts</span><span class="o">[</span><span class="ss">:day_of_week</span><span class="o">]</span>
80
+ <span class="n">str</span> <span class="o">&lt;&lt;</span> <span class="n">nytimes_month_and_day</span><span class="p">(</span><span class="n">date</span><span class="p">)</span>
81
+ <span class="n">str</span> <span class="o">&lt;&lt;</span> <span class="s2">&quot;, </span><span class="si">#{</span><span class="n">date</span><span class="o">.</span><span class="n">year</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">unless</span> <span class="n">opts</span><span class="o">[</span><span class="ss">:hide_current_year</span><span class="o">]</span> <span class="o">&amp;&amp;</span> <span class="n">date</span><span class="o">.</span><span class="n">year</span> <span class="o">==</span> <span class="no">Date</span><span class="o">.</span><span class="n">today</span><span class="o">.</span><span class="n">year</span>
82
+ <span class="k">return</span> <span class="n">str</span>
79
83
  <span class="k">end</span>
80
84
 
81
85
  <span class="k">def</span> <span class="nf">nytimes_month_and_day</span><span class="p">(</span><span class="n">date</span><span class="p">)</span>
@@ -108,16 +112,15 @@ two-letter abbreviations; some are hard to tell apart on quick reading.)&rdquo;<
108
112
  <span class="k">end</span>
109
113
 
110
114
  <span class="kp">private</span>
111
-
115
+
116
+ <span class="no">STATE_DATA_FILE</span> <span class="o">=</span> <span class="no">File</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="no">File</span><span class="o">.</span><span class="n">dirname</span><span class="p">(</span><span class="bp">__FILE__</span><span class="p">),</span> <span class="s1">&#39;nytimes-style/states.yml&#39;</span><span class="p">)</span>
117
+
112
118
  <span class="k">def</span> <span class="nf">states</span>
113
- <span class="k">unless</span> <span class="vi">@states</span>
114
- <span class="vi">@states</span> <span class="o">=</span> <span class="p">{}</span>
115
- <span class="no">YAML</span><span class="o">::</span><span class="nb">load</span><span class="p">(</span><span class="no">File</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="no">File</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="no">File</span><span class="o">.</span><span class="n">dirname</span><span class="p">(</span><span class="bp">__FILE__</span><span class="p">),</span> <span class="s1">&#39;nytimes-style/states.yml&#39;</span><span class="p">)))</span><span class="o">.</span><span class="n">each</span> <span class="k">do</span> <span class="o">|</span><span class="n">state</span><span class="o">|</span>
116
- <span class="vi">@states</span><span class="o">[</span><span class="n">state</span><span class="o">[</span><span class="s1">&#39;postal_code&#39;</span><span class="o">]]</span> <span class="o">=</span> <span class="vi">@states</span><span class="o">[</span><span class="n">state</span><span class="o">[</span><span class="s1">&#39;name&#39;</span><span class="o">]]</span> <span class="o">=</span> <span class="n">state</span>
117
- <span class="k">end</span>
119
+ <span class="vi">@states</span> <span class="o">||=</span> <span class="no">YAML</span><span class="o">::</span><span class="nb">load</span><span class="p">(</span><span class="no">File</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="no">STATE_DATA_FILE</span><span class="p">))</span><span class="o">.</span><span class="n">inject</span><span class="p">({})</span> <span class="k">do</span> <span class="o">|</span><span class="n">h</span><span class="p">,</span> <span class="n">state</span><span class="o">|</span>
120
+ <span class="n">h</span><span class="o">.</span><span class="n">merge</span><span class="p">({</span> <span class="n">state</span><span class="o">[</span><span class="s1">&#39;postal_code&#39;</span><span class="o">]</span> <span class="o">=&gt;</span> <span class="n">state</span><span class="p">,</span> <span class="n">state</span><span class="o">[</span><span class="s1">&#39;name&#39;</span><span class="o">]</span> <span class="o">=&gt;</span> <span class="n">state</span> <span class="p">})</span>
118
121
  <span class="k">end</span>
119
- <span class="k">return</span> <span class="vi">@states</span>
120
122
  <span class="k">end</span>
123
+
121
124
 
122
125
  <span class="k">end</span>
123
126
  <span class="k">end</span></pre></div>
data/lib/nytimes-style.rb CHANGED
@@ -2,18 +2,18 @@ require 'date'
2
2
  require 'yaml'
3
3
 
4
4
  # A small set of helper methods for generating text that conforms to _The New York Times Manual of Style and Usage_,
5
- # written by [Andrei Scheinkman](https://andreischeinkman.com) and hosted on [Github](https://github.com/ascheink/nytimes-style).
5
+ # hosted on [Github](https://github.com/ascheink/nytimes-style).
6
6
  module Nytimes
7
7
  module Style
8
8
 
9
9
  # > "In general, spell out the first nine cardinal and
10
10
  # > ordinal numbers [but] spell any number that begins a sentence..."
11
- # There are many exceptions to this rule including "ages of people
11
+ # Exceptions include "ages of people
12
12
  # and animals," "sums of money," "degrees of temperature" and "mentions of the Twelve
13
13
  # Apostles and the Ten Commandments."
14
14
  def nytimes_number(n)
15
15
  if n < 10
16
- %w(one two three four five six seven eight nine ten)[n - 1]
16
+ %w(one two three four five six seven eight nine)[n - 1]
17
17
  else
18
18
  n.to_s
19
19
  end
@@ -26,7 +26,9 @@ module Nytimes
26
26
  def nytimes_date(date, opts={})
27
27
  str = ""
28
28
  str << date.strftime('%A, ') if opts[:day_of_week]
29
- str << "#{nytimes_month_and_day date}, #{date.year}"
29
+ str << nytimes_month_and_day(date)
30
+ str << ", #{date.year}" unless opts[:hide_current_year] && date.year == Date.today.year
31
+ return str
30
32
  end
31
33
 
32
34
  def nytimes_month_and_day(date)
@@ -50,16 +52,15 @@ module Nytimes
50
52
  end
51
53
 
52
54
  private
53
-
55
+
56
+ STATE_DATA_FILE = File.join(File.dirname(__FILE__), 'nytimes-style/states.yml')
57
+
54
58
  def states
55
- unless @states
56
- @states = {}
57
- YAML::load(File.open(File.join(File.dirname(__FILE__), 'nytimes-style/states.yml'))).each do |state|
58
- @states[state['postal_code']] = @states[state['name']] = state
59
- end
59
+ @states ||= YAML::load(File.open(STATE_DATA_FILE)).inject({}) do |h, state|
60
+ h.merge({ state['postal_code'] => state, state['name'] => state })
60
61
  end
61
- return @states
62
62
  end
63
+
63
64
 
64
65
  end
65
66
  end
@@ -1,5 +1,5 @@
1
1
  module Nytimes
2
2
  module Style
3
- VERSION = "0.2.0"
3
+ VERSION = "0.3.0"
4
4
  end
5
5
  end
@@ -5,21 +5,29 @@ class NytimesStyleTest < Test::Unit::TestCase
5
5
 
6
6
  def test_dates
7
7
  date = Date.civil(2001, 9, 11)
8
- assert_equal nytimes_month_and_day(date), "Sept. 11"
9
- assert_equal nytimes_date(date), "Sept. 11, 2001"
10
- assert_equal nytimes_date(date, :day_of_week => true), "Tuesday, Sept. 11, 2001"
8
+ assert_equal "Sept. 11", nytimes_month_and_day(date)
9
+ assert_equal "Sept. 11, 2001", nytimes_date(date)
11
10
  assert_raise(ArgumentError) { nytimes_month(0) }
12
11
  end
13
12
 
13
+ def test_date_options
14
+ date = Date.civil(2001, 9, 11)
15
+ assert_equal "Tuesday, Sept. 11, 2001", nytimes_date(date, :day_of_week => true)
16
+ assert_equal "Sept. 11, 2001", nytimes_date(date, :hide_current_year => true)
17
+ this_year = Date.today.year
18
+ recent_date = Date.civil(this_year, 2, 12)
19
+ assert_equal "Feb. 12", nytimes_date(recent_date, :hide_current_year => true)
20
+ end
21
+
14
22
  def test_state_abbrevs
15
- assert_equal nytimes_state_abbrev('AZ'), 'Ariz.'
16
- assert_equal nytimes_state_abbrev('New Hampshire'), 'N.H.'
23
+ assert_equal 'Ariz.', nytimes_state_abbrev('AZ')
24
+ assert_equal 'N.H.', nytimes_state_abbrev('New Hampshire'),
17
25
  assert_raise(ArgumentError) { nytimes_state_abbrev('Canada') }
18
26
  end
19
27
 
20
28
  def test_numbers
21
- assert_equal nytimes_number(5), 'five'
22
- assert_equal nytimes_number(12), '12'
29
+ assert_equal 'five', nytimes_number(5)
30
+ assert_equal '12', nytimes_number(12)
23
31
  end
24
32
 
25
33
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nytimes-style
3
3
  version: !ruby/object:Gem::Version
4
- hash: 23
4
+ hash: 19
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 2
8
+ - 3
9
9
  - 0
10
- version: 0.2.0
10
+ version: 0.3.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Andrei Scheinkman
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-05-18 00:00:00 -04:00
18
+ date: 2011-06-09 00:00:00 -04:00
19
19
  default_executable:
20
20
  dependencies: []
21
21