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 +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
|
|