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 +15 -12
- data/lib/nytimes-style.rb +12 -11
- data/lib/nytimes-style/version.rb +1 -1
- data/test/test_nytimes_style.rb +15 -7
- metadata +4 -4
data/index.html
CHANGED
@@ -34,7 +34,7 @@
|
|
34
34
|
<a class="pilcrow" href="#section-2">¶</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
|
-
|
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>“In general, spell out the first nine cardinal and
|
51
51
|
ordinal numbers [but] spell any number that begins a sentence…”
|
52
|
-
|
52
|
+
Exceptions include “ages of people
|
53
53
|
and animals,” “sums of money,” “degrees of temperature” and “mentions of the Twelve
|
54
54
|
Apostles and the Ten Commandments.”</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"><</span> <span class="mi">10</span>
|
59
|
-
<span class="sx">%w(one two three four five six seven eight nine
|
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.”</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="
|
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">""</span>
|
79
|
+
<span class="n">str</span> <span class="o"><<</span> <span class="n">date</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'%A, '</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"><<</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"><<</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">"</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">&&</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.)”<
|
|
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">'nytimes-style/states.yml'</span><span class="p">)</span>
|
117
|
+
|
112
118
|
<span class="k">def</span> <span class="nf">states</span>
|
113
|
-
<span class="k">
|
114
|
-
<span class="
|
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">'nytimes-style/states.yml'</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">'postal_code'</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">'name'</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">'postal_code'</span><span class="o">]</span> <span class="o">=></span> <span class="n">state</span><span class="p">,</span> <span class="n">state</span><span class="o">[</span><span class="s1">'name'</span><span class="o">]</span> <span class="o">=></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
|
-
#
|
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
|
-
#
|
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
|
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 <<
|
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
|
-
|
56
|
-
|
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
|
data/test/test_nytimes_style.rb
CHANGED
@@ -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
|
9
|
-
assert_equal
|
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')
|
16
|
-
assert_equal nytimes_state_abbrev('New Hampshire'),
|
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)
|
22
|
-
assert_equal nytimes_number(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:
|
4
|
+
hash: 19
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
8
|
+
- 3
|
9
9
|
- 0
|
10
|
-
version: 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-
|
18
|
+
date: 2011-06-09 00:00:00 -04:00
|
19
19
|
default_executable:
|
20
20
|
dependencies: []
|
21
21
|
|