typohero 0.0.2 → 0.0.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.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.travis.yml +1 -0
- data/README.md +36 -11
- data/latex.pl +11 -4
- data/lib/typohero/latex.rb +538 -533
- data/lib/typohero/version.rb +1 -1
- data/lib/typohero.rb +180 -64
- data/test/typohero_test.rb +171 -128
- data/typohero.gemspec +1 -1
- metadata +2 -3
- data/bench/bench.txt +0 -16413
data/test/typohero_test.rb
CHANGED
@@ -1,8 +1,9 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
1
2
|
require 'minitest/autorun'
|
2
3
|
require 'typohero'
|
3
4
|
|
4
5
|
class TypoHeroTest < Minitest::Test
|
5
|
-
def
|
6
|
+
def assert_enhance(str, orig)
|
6
7
|
# todo test recursive
|
7
8
|
a = TypoHero.enhance(str)
|
8
9
|
#b = TypoHero.enhance(a)
|
@@ -20,10 +21,10 @@ class TypoHeroTest < Minitest::Test
|
|
20
21
|
end
|
21
22
|
|
22
23
|
def test_verbatim
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
24
|
+
assert_enhance "foo!", "foo!"
|
25
|
+
assert_enhance "<div>This is html</div>", "<div>This is html</div>"
|
26
|
+
assert_enhance "<div>This is html with <crap </div> tags>", "<div>This is html with <crap </div> tags>"
|
27
|
+
assert_enhance %q{
|
27
28
|
multiline
|
28
29
|
|
29
30
|
<b>html</b>
|
@@ -38,172 +39,182 @@ multiline
|
|
38
39
|
}
|
39
40
|
end
|
40
41
|
|
42
|
+
def test_excluded
|
43
|
+
assert_enhance "<script>'hello'</script>", "<script>'hello'</script>"
|
44
|
+
assert_enhance "<!-- <a>'hello'</a> -->", "<!-- <a>'hello'</a> -->"
|
45
|
+
assert_enhance "<![CDATA[<a>'hello'</a>]]>", "<![CDATA[<a>'hello'</a>]]>"
|
46
|
+
end
|
47
|
+
|
41
48
|
def test_quotes
|
42
|
-
|
43
|
-
|
49
|
+
assert_enhance '"A first example"', '<span class="dquo">“</span>A first example”'
|
50
|
+
assert_enhance '"A first "nested" example"',
|
44
51
|
'<span class="dquo">“</span>A first “nested” example”'
|
45
52
|
|
46
|
-
|
47
|
-
|
53
|
+
assert_enhance '".', '”.'
|
54
|
+
assert_enhance '"a', '<span class="dquo">“</span>a'
|
48
55
|
|
49
|
-
|
50
|
-
|
56
|
+
assert_enhance "'.", '’.'
|
57
|
+
assert_enhance "'a", '<span class="quo">‘</span>a'
|
51
58
|
|
52
|
-
|
59
|
+
assert_enhance %{<p>He said, "'Quoted' words in a larger quote."</p>},
|
53
60
|
'<p>He said, “‘Quoted’ words in a larger quote.”</p>'
|
54
61
|
|
55
|
-
|
56
|
-
|
57
|
-
|
62
|
+
assert_enhance %{"I like the 70's"}, '<span class="dquo">“</span>I like the 70’s”'
|
63
|
+
assert_enhance %{"I like the '70s"}, '<span class="dquo">“</span>I like the ’70s”'
|
64
|
+
assert_enhance %{"I like the '70!"}, '<span class="dquo">“</span>I like the ‘70!”'
|
58
65
|
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
66
|
+
assert_enhance 'pre"post', 'pre”post'
|
67
|
+
assert_enhance 'pre "post', 'pre “post'
|
68
|
+
assert_enhance 'pre "post', 'pre “post'
|
69
|
+
assert_enhance 'pre--"post', 'pre – “post'
|
70
|
+
assert_enhance 'pre--"!', 'pre – ”!'
|
64
71
|
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
72
|
+
assert_enhance "pre'post", 'pre’post'
|
73
|
+
assert_enhance "pre 'post", 'pre ‘post'
|
74
|
+
assert_enhance "pre 'post", 'pre ‘post'
|
75
|
+
assert_enhance "pre--'post", 'pre – ‘post'
|
76
|
+
assert_enhance "pre--'!", 'pre – ’!'
|
70
77
|
|
71
|
-
|
72
|
-
|
78
|
+
assert_enhance "<b>'</b>", '<b><span class="quo">‘</span></b>'
|
79
|
+
assert_enhance "foo<b>'</b>", "foo<b>’</b>"
|
73
80
|
|
74
|
-
|
75
|
-
|
81
|
+
assert_enhance '<b>"</b>', '<b><span class="dquo">“</span></b>'
|
82
|
+
assert_enhance 'foo<b>"</b>', "foo<b>”</b>"
|
76
83
|
end
|
77
84
|
|
78
85
|
def test_dashes
|
79
|
-
|
80
|
-
|
86
|
+
assert_enhance "foo--bar", 'foo – bar'
|
87
|
+
assert_enhance "foo - bar", 'foo – bar'
|
88
|
+
assert_enhance "foo---bar", "foo\u202F\u2014\u202Fbar"
|
81
89
|
end
|
82
90
|
|
83
91
|
def test_ellipses
|
84
|
-
|
85
|
-
|
86
|
-
|
92
|
+
assert_enhance "foo..bar", 'foo..bar'
|
93
|
+
assert_enhance "foo...bar", 'foo…bar'
|
94
|
+
assert_enhance "foo....bar", 'foo….bar'
|
87
95
|
|
88
|
-
|
89
|
-
|
90
|
-
|
96
|
+
assert_enhance "foo. . ..bar", 'foo….bar'
|
97
|
+
assert_enhance "foo. . ...bar", 'foo…..bar'
|
98
|
+
assert_enhance "foo. . ....bar", 'foo……bar'
|
91
99
|
end
|
92
100
|
|
93
101
|
def test_backticks
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
102
|
+
assert_enhance "pre``post", 'pre“post'
|
103
|
+
assert_enhance "pre ``post", 'pre “post'
|
104
|
+
assert_enhance "pre ``post", 'pre “post'
|
105
|
+
assert_enhance "pre--``post", 'pre – “post'
|
106
|
+
assert_enhance "pre--``!", 'pre – “!'
|
107
|
+
|
108
|
+
assert_enhance "pre''post", 'pre”post'
|
109
|
+
assert_enhance "pre ''post", 'pre ”post'
|
110
|
+
assert_enhance "pre ''post", 'pre ”post'
|
111
|
+
assert_enhance "pre--''post", 'pre – ”post'
|
112
|
+
assert_enhance "pre--''!", 'pre – ”!'
|
105
113
|
end
|
106
114
|
|
107
115
|
def test_single_backticks
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
116
|
+
assert_enhance "`foo'", '<span class="quo">‘</span>foo’'
|
117
|
+
|
118
|
+
assert_enhance "pre`post", 'pre‘post'
|
119
|
+
assert_enhance "pre `post", 'pre ‘post'
|
120
|
+
assert_enhance "pre `post", 'pre ‘post'
|
121
|
+
assert_enhance "pre--`post", 'pre – ‘post'
|
122
|
+
assert_enhance "pre--`!", 'pre – ‘!'
|
123
|
+
|
124
|
+
assert_enhance "pre'post", 'pre’post'
|
125
|
+
assert_enhance "pre 'post", 'pre ‘post'
|
126
|
+
assert_enhance "pre 'post", 'pre ‘post'
|
127
|
+
assert_enhance "pre--'post", 'pre – ‘post'
|
128
|
+
assert_enhance "pre--'!", 'pre – ’!'
|
121
129
|
end
|
122
130
|
|
123
131
|
def test_process_escapes
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
132
|
+
assert_enhance %q{foo\bar}, "foo\\bar"
|
133
|
+
assert_enhance %q{foo\\\bar}, "foo\\bar"
|
134
|
+
assert_enhance %q{foo\\\\\bar}, "foo\\\\bar"
|
135
|
+
assert_enhance %q{foo\...bar}, "foo...bar"
|
136
|
+
assert_enhance %q{foo\.\.\.bar}, "foo...bar"
|
137
|
+
|
138
|
+
assert_enhance %q{foo\'bar}, "foo'bar"
|
139
|
+
assert_enhance %q{foo\"bar}, "foo\"bar"
|
140
|
+
assert_enhance %q{foo\-bar}, "foo-bar"
|
141
|
+
assert_enhance %q{foo\`bar}, "foo`bar"
|
142
|
+
assert_enhance %q{foo\,,}, "foo,,"
|
143
|
+
|
144
|
+
assert_enhance %q{foo\#bar}, "foo\\#bar"
|
145
|
+
assert_enhance %q{foo\*bar}, "foo\\*bar"
|
146
|
+
assert_enhance %q{foo\&bar}, "foo\\&bar"
|
147
|
+
assert_enhance %q{foo\\\theta}, "foo\\theta"
|
138
148
|
end
|
139
149
|
|
140
150
|
def test_should_replace_amps
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
151
|
+
assert_enhance 'One & two', 'One <span class="amp">&</span> two'
|
152
|
+
assert_enhance 'One & two', 'One <span class="amp">&</span> two'
|
153
|
+
assert_enhance 'One & two', 'One <span class="amp">&</span> two'
|
154
|
+
assert_enhance 'One & two', 'One <span class="amp">&</span> two'
|
145
155
|
end
|
146
156
|
|
147
157
|
def test_should_ignore_special_amps
|
148
|
-
|
149
|
-
|
158
|
+
assert_enhance 'One <span class="amp">&</span> two', 'One <span class="amp">&</span> two'
|
159
|
+
assert_enhance '“this” & <a href="/?that&test">that</a>', '<span class="dquo">“</span>this” <span class="amp">&</span> <a href="/?that&test">that</a>'
|
150
160
|
end
|
151
161
|
|
152
162
|
def test_should_replace_caps
|
153
|
-
|
154
|
-
|
155
|
-
|
163
|
+
assert_enhance "A message from KU", 'A message from <span class="caps">KU</span>'
|
164
|
+
assert_enhance 'Replace text <a href=".">IN</a> tags', 'Replace text <a href="."><span class="caps">IN</span></a> tags'
|
165
|
+
assert_enhance 'Replace text <i>IN</i> tags', 'Replace text <i><span class="caps">IN</span></i> tags'
|
166
|
+
assert_enhance 'AB, CD, EF', '<span class="caps">AB</span>, <span class="caps">CD</span>, <span class="caps">EF</span>'
|
156
167
|
end
|
157
168
|
|
158
169
|
def test_should_ignore_special_case_caps
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
170
|
+
assert_enhance 'It should ignore just numbers like 1234.', 'It should ignore just numbers like 1234.'
|
171
|
+
assert_enhance "<pre>CAPS</pre> more CAPS", '<pre>CAPS</pre> more <span class="caps">CAPS</span>'
|
172
|
+
assert_enhance "<Pre>CAPS</PRE> with odd tag names CAPS", '<Pre>CAPS</PRE> with odd tag names <span class="caps">CAPS</span>'
|
173
|
+
assert_enhance "A message from 2KU2 with digits", 'A message from <span class="caps">2KU2</span> with digits'
|
174
|
+
assert_enhance "Dotted caps followed by spaces should never include them in the wrap D.O.T. like so.", 'Dotted caps followed by spaces should never include them in the wrap <span class="caps">D.O.T.</span> like so.'
|
175
|
+
assert_enhance 'Caps in attributes (<span title="Example CAPS">example</span>) should be ignored', 'Caps in attributes (<span title="Example CAPS">example</span>) should be ignored'
|
176
|
+
assert_enhance '<head><title>CAPS Example</title></head>', '<head><title>CAPS Example</title></head>'
|
166
177
|
end
|
167
178
|
|
168
179
|
def test_should_not_break_caps_with_apostrophes
|
169
|
-
|
170
|
-
|
180
|
+
assert_enhance "JIMMY'S", '<span class="caps">JIMMY’S</span>'
|
181
|
+
assert_enhance "<i>D.O.T.</i>HE34T<b>RFID</b>", '<i><span class="caps">D.O.T.</span></i><span class="caps">HE34T</span><b><span class="caps">RFID</span></b>'
|
171
182
|
end
|
172
183
|
|
173
184
|
def test_should_not_break_caps_with_ampersands
|
174
|
-
|
175
|
-
|
176
|
-
|
185
|
+
assert_enhance "AT&T", '<span class="caps">AT&T</span>'
|
186
|
+
assert_enhance "AT&T", '<span class="caps">AT&T</span>'
|
187
|
+
assert_enhance "AT&T", '<span class="caps">AT&T</span>'
|
177
188
|
end
|
178
189
|
|
179
190
|
def test_should_prevent_widows
|
180
|
-
|
191
|
+
assert_enhance 'A very simple test', 'A very simple test'
|
181
192
|
end
|
182
193
|
|
183
194
|
def test_should_not_change_single_word_items
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
195
|
+
assert_enhance 'Test', 'Test'
|
196
|
+
assert_enhance ' Test', ' Test'
|
197
|
+
assert_enhance '<ul><li>Test</p></li><ul>', '<ul><li>Test</p></li><ul>'
|
198
|
+
assert_enhance '<ul><li> Test</p></li><ul>', '<ul><li> Test</p></li><ul>'
|
199
|
+
assert_enhance '<p>In a couple of paragraphs</p><p>paragraph two</p>', '<p>In a couple of paragraphs</p><p>paragraph two</p>'
|
200
|
+
assert_enhance '<h1><a href="#">In a link inside a heading</i> </a></h1>', '<h1><a href="#">In a link inside a heading</i> </a></h1>'
|
201
|
+
assert_enhance '<h1><a href="#">In a link</a> followed by other text</h1>', '<h1><a href="#">In a link</a> followed by other text</h1>'
|
191
202
|
end
|
192
203
|
|
193
204
|
def test_should_not_add_nbsp_before_another
|
194
|
-
|
205
|
+
assert_enhance 'Sentence with one nbsp', 'Sentence with one nbsp'
|
195
206
|
end
|
196
207
|
|
197
208
|
def test_should_not_error_on_empty_html
|
198
|
-
|
209
|
+
assert_enhance '<h1><a href="#"></a></h1>', '<h1><a href="#"></a></h1>'
|
199
210
|
end
|
200
211
|
|
201
212
|
def test_should_ignore_widows_in_special_tags
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
213
|
+
assert_enhance '<div>Divs get love!</div>', '<div>Divs get love!</div>'
|
214
|
+
assert_enhance '<pre>Neither do PREs</pre>', '<pre>Neither do PREs</pre>'
|
215
|
+
assert_enhance '<textarea>nor text in textarea</textarea>', '<textarea>nor text in textarea</textarea>'
|
216
|
+
assert_enhance "<script>\nreturn window;\n</script>", "<script>\nreturn window;\n</script>"
|
217
|
+
assert_enhance '<div><p>But divs with paragraphs do!</p></div>', '<div><p>But divs with paragraphs do!</p></div>'
|
207
218
|
end
|
208
219
|
|
209
220
|
def test_widont
|
@@ -213,43 +224,75 @@ multiline
|
|
213
224
|
<a href="/contact/">Contact</a>
|
214
225
|
</li>
|
215
226
|
</ul>}
|
216
|
-
|
227
|
+
assert_enhance code, code
|
217
228
|
end
|
218
229
|
|
219
230
|
def test_should_replace_quotes
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
231
|
+
assert_enhance '"With primes"', '<span class="dquo">“</span>With primes”'
|
232
|
+
assert_enhance "'With single primes'", '<span class="quo">‘</span>With single primes’'
|
233
|
+
assert_enhance '<a href="#">"With primes and a link"</a>', '<a href="#"><span class="dquo">“</span>With primes and a link”</a>'
|
234
|
+
assert_enhance '“With smartypanted quotes”', '<span class="dquo">“</span>With smartypanted quotes”'
|
235
|
+
assert_enhance '‘With manual quotes’', '<span class="quo">‘</span>With manual quotes’'
|
225
236
|
end
|
226
237
|
|
227
238
|
def test_should_apply_all_filters
|
228
|
-
|
239
|
+
assert_enhance '<h2>"Jayhawks" & KU fans act extremely obnoxiously</h2>', '<h2><span class="dquo">“</span>Jayhawks” <span class="amp">&</span> <span class="caps">KU</span> fans act extremely obnoxiously</h2>'
|
229
240
|
end
|
230
241
|
|
231
242
|
def test_other_special
|
232
|
-
|
233
|
-
|
243
|
+
assert_enhance ',,hello\'\'', "<span class=\"bdquo\">\u201E</span>hello”"
|
244
|
+
assert_enhance '(tm)', "\u2122"
|
234
245
|
end
|
235
246
|
|
236
247
|
def test_primes
|
237
|
-
|
248
|
+
assert_enhance "She's 6'2''", "She’s 6\u20322\u2033"
|
249
|
+
assert_enhance %{He said "Oslo coordinates are: 59°57'N 10°45'E" and there it is.}, "He said “Oslo coordinates are: 59°57\u2032N 10°45\u2032E” and there it is."
|
238
250
|
end
|
239
251
|
|
240
252
|
def test_ordinals
|
241
|
-
|
253
|
+
assert_enhance 'I am the 1st', 'I am the 1<span class="ord">st</span>'
|
242
254
|
end
|
243
255
|
|
244
256
|
def test_latex
|
245
|
-
|
257
|
+
assert_enhance '\\textbackslash', '\\'
|
258
|
+
end
|
259
|
+
|
260
|
+
def test_nobr
|
261
|
+
assert_enhance 'T-shirt', '<span class="nobr">T-shirt</span>'
|
262
|
+
assert_enhance '2014-01-01', '<span class="nobr">2014-01-01</span>'
|
246
263
|
end
|
247
264
|
|
248
265
|
def test_ignore_mathjax
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
266
|
+
assert_enhance '$$\\approx$$ outside \\approx', "$$\\approx$$ outside \u2248"
|
267
|
+
assert_enhance '\) $$\\approx$$ outside \\approx', "\\) $$\\approx$$ outside \u2248"
|
268
|
+
assert_enhance '\] $$\\approx$$ outside \\approx', "\\] $$\\approx$$ outside \u2248"
|
269
|
+
assert_enhance '\\(\\approx\\) outside \\approx', "\\(\\approx\\) outside \u2248"
|
270
|
+
assert_enhance '\\[\\approx\\] outside \\approx', "\\[\\approx\\] outside \u2248"
|
271
|
+
assert_enhance '<span>$</span>', '<span>$</span>'
|
272
|
+
assert_enhance '<span>\\</span>', '<span>\\</span>'
|
273
|
+
end
|
274
|
+
|
275
|
+
def test_truncate
|
276
|
+
assert_equal "<a>a <span>b\u2026</span></a>", TypoHero.truncate('<a>a <span>b c d</span> c</a>', 2)
|
277
|
+
assert_equal "<a>a <span>b\u2026</span></a>", TypoHero.truncate('<a>a <span>b!?! c d</span> c</a>', 2)
|
278
|
+
assert_equal "<a>a <!--comment--><span>b\u2026</span></a>", TypoHero.truncate('<a>a <!--comment--><span>b </span> c</a>', 2)
|
279
|
+
assert_equal "<a>a <!--comment--><span>b\u2026</span></a>", TypoHero.truncate('<a>a <!--comment--><span>b!!! </span> c</a>', 2)
|
280
|
+
assert_equal "<!--comment-->a <span>b\u2026</span>", TypoHero.truncate('<!--comment-->a <span>b </span>c', 2)
|
281
|
+
assert_equal "<a>a <span><script>b</script> c\u2026</span></a>", TypoHero.truncate('<a>a <span><script>b</script> c d</span> c</a>', 2)
|
282
|
+
assert_equal "<p>Lorem ipsum dolor sit amet.</p>", TypoHero.truncate("<p>Lorem ipsum dolor sit amet.</p>", 5)
|
283
|
+
assert_equal "<p>Lorem ipsum\u2026</p>", TypoHero.truncate("<p>Lorem ipsum dolor sit amet.</p>", 5, 'dolor')
|
284
|
+
assert_equal "<p>Lorem ipsum dolor\u2026</p>", TypoHero.truncate("<p>Lorem ipsum dolor<!--more--> sit amet.</p>", 5, 'more')
|
285
|
+
assert_equal "<p>Lorem ipsum dolor\u2026</p>", TypoHero.truncate("<p>Lorem ipsum dolor<!--more--> sit amet.</p>", 5, '<!--more-->')
|
286
|
+
assert_equal "<p>Lorem ipsum dolor\u2026</p>", TypoHero.truncate("<p>Lorem ipsum dolor<!--more--> sit amet.</p>", 5, /more/)
|
287
|
+
assert_equal "<p><span>Lorem ipsum dolor\u2026</span></p>", TypoHero.truncate("<p><span>Lorem ipsum dolor</span> sit amet.</p>", 5, '</span>')
|
288
|
+
assert_equal "<p>Lorem ipsum dolor\u2026</p>", TypoHero.truncate("<p>Lorem ipsum dolor<span class=\"more\"> sit amet.</span></p>", 5, 'more')
|
289
|
+
assert_equal "<p>Lorem ipsum dolor\u2026</p>", TypoHero.truncate("<p>Lorem ipsum dolor<span class=\"more\"> sit amet.</span></p>", 'more', 10)
|
290
|
+
assert_equal "<p>Lorem ipsum\u2026</p>", TypoHero.truncate("<p>Lorem ipsum dolor<span class=\"more\"> sit amet.</span></p>", 'more', 2)
|
291
|
+
end
|
292
|
+
|
293
|
+
def test_strip_tags
|
294
|
+
assert_equal 'a b c d e', TypoHero.strip_tags('<a>a <span>b c d</span> e</a>')
|
295
|
+
assert_equal 'a c d e', TypoHero.strip_tags('<a>a <span><script>b</script> c d</span> e</a>')
|
296
|
+
assert_equal 'a \(latex\) text', TypoHero.strip_tags('a <script>\(a b c\)</script><a> <test> \(latex\) text')
|
254
297
|
end
|
255
298
|
end
|
data/typohero.gemspec
CHANGED
@@ -13,7 +13,7 @@ Gem::Specification.new do |s|
|
|
13
13
|
s.homepage = 'https://github.com/minad/typohero/'
|
14
14
|
s.license = 'MIT'
|
15
15
|
|
16
|
-
s.files = `git ls-files`.split("\n")
|
16
|
+
s.files = `git ls-files | grep -v bench/*.txt`.split("\n")
|
17
17
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
18
18
|
s.require_paths = %w(lib)
|
19
19
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: typohero
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel Mendler
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-09-
|
11
|
+
date: 2014-09-09 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: TypoHero improves web typography by applying various filters (similar
|
14
14
|
to rubypants, typogruby, typogrify).
|
@@ -24,7 +24,6 @@ files:
|
|
24
24
|
- README.md
|
25
25
|
- Rakefile
|
26
26
|
- bench/bench.rb
|
27
|
-
- bench/bench.txt
|
28
27
|
- bench/profile.rb
|
29
28
|
- hero.jpg
|
30
29
|
- latex.pl
|