nytimes-style 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
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