rubypants 0.2.0 → 0.7.1

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.
@@ -0,0 +1,271 @@
1
+ require_relative 'helper'
2
+
3
+ require 'minitest/autorun'
4
+ require_relative '../lib/rubypants'
5
+
6
+ # Test EVERYTHING against SmartyPants.pl output!
7
+
8
+
9
+ class RubyPantsTest < Minitest::Test
10
+ def assert_rp_equal(str, orig, options=[2], entities = {})
11
+ assert_equal orig, RubyPants.new(str, options, entities).to_html
12
+ end
13
+
14
+ def refute_rp_equal(str, orig, options=[2], entities = {})
15
+ refute_equal orig, RubyPants.new(str, options, entities).to_html
16
+ end
17
+
18
+ def assert_verbatim(str)
19
+ assert_rp_equal str, str
20
+ end
21
+
22
+ def test_verbatim
23
+ assert_verbatim "foo!"
24
+ assert_verbatim "<div>This is HTML</div>"
25
+ assert_verbatim "<div>This is HTML with <crap </div> tags>"
26
+ assert_verbatim <<EOF
27
+ multiline
28
+
29
+ <b>html</b>
30
+
31
+ code
32
+
33
+ EOF
34
+ end
35
+
36
+ def test_quotes
37
+ assert_rp_equal '"A first example"', '&#8220;A first example&#8221;'
38
+ assert_rp_equal '"A first "nested" example"',
39
+ '&#8220;A first &#8220;nested&#8221; example&#8221;'
40
+
41
+ assert_rp_equal '".', '&#8221;.'
42
+ assert_rp_equal '"a', '&#8220;a'
43
+
44
+ assert_rp_equal "'.", '&#8217;.'
45
+ assert_rp_equal "'a", '&#8216;a'
46
+
47
+ assert_rp_equal %{<p>He said, "'Quoted' words in a larger quote."</p>},
48
+ "<p>He said, &#8220;&#8216;Quoted&#8217; words in a larger quote.&#8221;</p>"
49
+
50
+ assert_rp_equal %{"I like the 70's"}, '&#8220;I like the 70&#8217;s&#8221;'
51
+ assert_rp_equal %{"I like the '70s"}, '&#8220;I like the &#8217;70s&#8221;'
52
+ assert_rp_equal %{"I like the '70!"}, '&#8220;I like the &#8216;70!&#8221;'
53
+
54
+ assert_rp_equal 'pre"post', 'pre&#8221;post'
55
+ assert_rp_equal 'pre "post', 'pre &#8220;post'
56
+ assert_rp_equal 'pre&nbsp;"post', 'pre&nbsp;&#8220;post'
57
+ assert_rp_equal 'pre--"post', 'pre&#8211;&#8220;post'
58
+ assert_rp_equal 'pre--"!', 'pre&#8211;&#8221;!'
59
+
60
+ assert_rp_equal "pre'post", 'pre&#8217;post'
61
+ assert_rp_equal "pre 'post", 'pre &#8216;post'
62
+ assert_rp_equal "pre&nbsp;'post", 'pre&nbsp;&#8216;post'
63
+ assert_rp_equal "pre--'post", 'pre&#8211;&#8216;post'
64
+ assert_rp_equal "pre--'!", 'pre&#8211;&#8217;!'
65
+
66
+ assert_rp_equal "<b>'</b>", "<b>&#8216;</b>"
67
+ assert_rp_equal "foo<b>'</b>", "foo<b>&#8217;</b>"
68
+
69
+ assert_rp_equal '<b>"</b>', "<b>&#8220;</b>"
70
+ assert_rp_equal 'foo<b>"</b>', "foo<b>&#8221;</b>"
71
+
72
+ assert_rp_equal "foo\u00a0\"bar\"", "foo\u00a0&#8220;bar&#8221;"
73
+ assert_rp_equal "foo\u00a0'bar'", "foo\u00a0&#8216;bar&#8217;"
74
+ end
75
+
76
+ def test_dashes
77
+ assert_rp_equal "foo--bar", 'foo&#8212;bar', 1
78
+ assert_rp_equal "foo---bar", 'foo---bar', 1
79
+ assert_rp_equal "foo----bar", 'foo----bar', 1
80
+ assert_rp_equal "--foo--bar--quux--",
81
+ '&#8212;foo&#8212;bar&#8212;quux&#8212;', 1
82
+
83
+ assert_rp_equal "foo--bar", 'foo&#8288;&#8212;bar', [1, :prevent_breaks]
84
+ assert_rp_equal "foo --bar", 'foo &#8212;bar', 1
85
+ assert_rp_equal "foo --bar", 'foo&nbsp;&#8212;bar', [1, :prevent_breaks]
86
+ assert_rp_equal "foo -- bar", 'foo&nbsp;&#8212; bar', [1, :prevent_breaks]
87
+ assert_rp_equal "foo --bar", 'foo&nbsp;&#8212;bar', [1, :prevent_breaks]
88
+
89
+ assert_rp_equal "foo--bar", 'foo&#8211;bar', 2
90
+ assert_rp_equal "foo---bar", 'foo&#8212;bar', 2
91
+ assert_rp_equal "foo----bar", 'foo----bar', 2
92
+ assert_rp_equal "--foo--bar--quux--",
93
+ '&#8211;foo&#8211;bar&#8211;quux&#8211;', 2
94
+
95
+ assert_rp_equal "foo--bar", 'foo&#8288;&#8211;bar', [2, :prevent_breaks]
96
+ assert_rp_equal "foo --bar", 'foo &#8211;bar', 2
97
+ assert_rp_equal "foo --bar", 'foo&nbsp;&#8211;bar', [2, :prevent_breaks]
98
+ assert_rp_equal "foo -- bar", 'foo&nbsp;&#8211; bar', [2, :prevent_breaks]
99
+ assert_rp_equal "foo --bar", 'foo&nbsp;&#8211;bar', [2, :prevent_breaks]
100
+
101
+ assert_rp_equal "foo---bar", 'foo&#8288;&#8212;bar', [2, :prevent_breaks]
102
+ assert_rp_equal "foo ---bar", 'foo &#8212;bar', 2
103
+ assert_rp_equal "foo ---bar", 'foo&nbsp;&#8212;bar', [2, :prevent_breaks]
104
+ assert_rp_equal "foo --- bar", 'foo&nbsp;&#8212; bar', [2, :prevent_breaks]
105
+ assert_rp_equal "foo ---bar", 'foo&nbsp;&#8212;bar', [2, :prevent_breaks]
106
+
107
+ assert_rp_equal "foo--bar", 'foo&#8212;bar', 3
108
+ assert_rp_equal "foo---bar", 'foo&#8211;bar', 3
109
+ assert_rp_equal "foo----bar", 'foo----bar', 3
110
+ assert_rp_equal "--foo--bar--quux--",
111
+ '&#8212;foo&#8212;bar&#8212;quux&#8212;', 3
112
+
113
+ assert_rp_equal "foo--bar", 'foo&#8288;&#8212;bar', [3, :prevent_breaks]
114
+ assert_rp_equal "foo --bar", 'foo &#8212;bar', 3
115
+ assert_rp_equal "foo --bar", 'foo&nbsp;&#8212;bar', [3, :prevent_breaks]
116
+ assert_rp_equal "foo -- bar", 'foo&nbsp;&#8212; bar', [3, :prevent_breaks]
117
+ assert_rp_equal "foo --bar", 'foo&nbsp;&#8212;bar', [3, :prevent_breaks]
118
+
119
+ assert_rp_equal "foo---bar", 'foo&#8288;&#8211;bar', [3, :prevent_breaks]
120
+ assert_rp_equal "foo ---bar", 'foo &#8211;bar', 3
121
+ assert_rp_equal "foo ---bar", 'foo&nbsp;&#8211;bar', [3, :prevent_breaks]
122
+ assert_rp_equal "foo --- bar", 'foo&nbsp;&#8211; bar', [3, :prevent_breaks]
123
+ assert_rp_equal "foo ---bar", 'foo&nbsp;&#8211;bar', [3, :prevent_breaks]
124
+ end
125
+
126
+ def test_html_comments
127
+ assert_verbatim "<!-- comment -->"
128
+ assert_verbatim "<!-- <p>foo bar</p> -->"
129
+ assert_verbatim "<!-- <p>foo\nbar</p> -->"
130
+ assert_rp_equal "--<!-- -- -->--", '&#8211;<!-- -- -->&#8211;'
131
+ end
132
+
133
+ def test_pre_tags
134
+ assert_verbatim "<pre>--</pre>"
135
+ assert_verbatim "<pre><code>--</code>--</pre>"
136
+ assert_rp_equal "--<pre>--</pre>", '&#8211;<pre>--</pre>'
137
+ end
138
+
139
+ def test_ellipses
140
+ assert_rp_equal "foo..bar", 'foo..bar', [:ellipses]
141
+ assert_rp_equal "foo...bar", 'foo&#8230;bar', [:ellipses]
142
+ assert_rp_equal "foo....bar", 'foo....bar', [:ellipses]
143
+ # and with :prevent_breaks
144
+ assert_rp_equal "foo..bar", 'foo..bar', [:ellipses, :prevent_breaks]
145
+ assert_rp_equal "foo...bar", 'foo&#8288;&#8230;bar', [:ellipses, :prevent_breaks]
146
+ assert_rp_equal "foo....bar", 'foo....bar', [:ellipses, :prevent_breaks]
147
+
148
+ # dots and spaces
149
+ assert_rp_equal "foo. . .bar", 'foo&#8230;bar', [:ellipses]
150
+ assert_rp_equal "foo . . . bar", 'foo &#8230; bar', [:ellipses]
151
+ assert_rp_equal "foo. . . .bar", 'foo. . . .bar', [:ellipses]
152
+ assert_rp_equal "foo . . . . bar", 'foo . . . . bar', [:ellipses]
153
+ # and with :prevent_breaks
154
+ assert_rp_equal "foo. . .bar", 'foo&#8288;&#8230;bar', [:ellipses, :prevent_breaks]
155
+ assert_rp_equal "foo . . . bar", 'foo&nbsp;&#8230; bar', [:ellipses, :prevent_breaks]
156
+ assert_rp_equal "foo. . . .bar", 'foo. . . .bar', [:ellipses, :prevent_breaks]
157
+ assert_rp_equal "foo . . . . bar", 'foo . . . . bar', [:ellipses, :prevent_breaks]
158
+
159
+ # dots and tab-spaces
160
+ refute_rp_equal "foo. . .bar", 'foo&#8230;bar', [:ellipses]
161
+ refute_rp_equal "foo . . . bar", 'foo &#8230; bar', [:ellipses]
162
+ assert_rp_equal "foo. . . .bar", 'foo. . . .bar', [:ellipses]
163
+ assert_rp_equal "foo . . . . bar", 'foo . . . . bar', [:ellipses]
164
+ # and with :prevent_breaks
165
+ refute_rp_equal "foo. . .bar", 'foo&#8288;&#8230;bar', [:ellipses, :prevent_breaks]
166
+ refute_rp_equal "foo . . . bar", 'foo&nbsp;&#8230; bar', [:ellipses, :prevent_breaks]
167
+ assert_rp_equal "foo. . . .bar", 'foo. . . .bar', [:ellipses, :prevent_breaks]
168
+ assert_rp_equal "foo . . . . bar", 'foo . . . . bar', [:ellipses, :prevent_breaks]
169
+
170
+ # dots and line-breaks
171
+ refute_rp_equal "foo.\n.\n.bar", 'foo&#8230;bar', [:ellipses]
172
+ refute_rp_equal "foo\n.\n.\n.\nbar", "foo\n&#8230;\nbar", [:ellipses]
173
+ assert_rp_equal "foo.\n.\n.\n.bar", "foo.\n.\n.\n.bar", [:ellipses]
174
+ assert_rp_equal "foo\n.\n.\n.\n.\nbar", "foo\n.\n.\n.\n.\nbar", [:ellipses]
175
+ # and with :prevent_breaks
176
+ refute_rp_equal "foo.\n.\n.bar", "foo&#8288;&#8230;bar", [:ellipses, :prevent_breaks]
177
+ refute_rp_equal "foo\n.\n.\n.\nbar", "foo&nbsp;&#8230;\nbar", [:ellipses, :prevent_breaks]
178
+ assert_rp_equal "foo.\n.\n.\n.bar", "foo.\n.\n.\n.bar", [:ellipses, :prevent_breaks]
179
+ assert_rp_equal "foo\n.\n.\n.\n.\nbar", "foo\n.\n.\n.\n.\nbar", [:ellipses, :prevent_breaks]
180
+
181
+ # nasty ones
182
+ assert_rp_equal "foo. . ..bar", 'foo. . ..bar', [:ellipses]
183
+ assert_rp_equal "foo. . ...bar", 'foo. . &#8230;bar', [:ellipses]
184
+ assert_rp_equal "foo. . ....bar", 'foo. . ....bar', [:ellipses]
185
+ # and with :prevent_breaks
186
+ assert_rp_equal "foo. . ..bar", 'foo. . ..bar', [:ellipses, :prevent_breaks]
187
+ assert_rp_equal "foo. . ...bar", 'foo. .&nbsp;&#8230;bar', [:ellipses, :prevent_breaks]
188
+ assert_rp_equal "foo. . ....bar", 'foo. . ....bar', [:ellipses, :prevent_breaks]
189
+ end
190
+
191
+ def test_backticks
192
+ assert_rp_equal "pre``post", 'pre&#8220;post'
193
+ assert_rp_equal "pre ``post", 'pre &#8220;post'
194
+ assert_rp_equal "pre&nbsp;``post", 'pre&nbsp;&#8220;post'
195
+ assert_rp_equal "pre--``post", 'pre&#8211;&#8220;post'
196
+ assert_rp_equal "pre--``!", 'pre&#8211;&#8220;!'
197
+
198
+ assert_rp_equal "pre''post", 'pre&#8221;post'
199
+ assert_rp_equal "pre ''post", 'pre &#8221;post'
200
+ assert_rp_equal "pre&nbsp;''post", 'pre&nbsp;&#8221;post'
201
+ assert_rp_equal "pre--''post", 'pre&#8211;&#8221;post'
202
+ assert_rp_equal "pre--''!", 'pre&#8211;&#8221;!'
203
+ end
204
+
205
+ def test_single_backticks
206
+ o = [:oldschool, :allbackticks]
207
+
208
+ assert_rp_equal "`foo'", "&#8216;foo&#8217;", o
209
+
210
+ assert_rp_equal "pre`post", 'pre&#8216;post', o
211
+ assert_rp_equal "pre `post", 'pre &#8216;post', o
212
+ assert_rp_equal "pre&nbsp;`post", 'pre&nbsp;&#8216;post', o
213
+ assert_rp_equal "pre--`post", 'pre&#8211;&#8216;post', o
214
+ assert_rp_equal "pre--`!", 'pre&#8211;&#8216;!', o
215
+
216
+ assert_rp_equal "pre'post", 'pre&#8217;post', o
217
+ assert_rp_equal "pre 'post", 'pre &#8217;post', o
218
+ assert_rp_equal "pre&nbsp;'post", 'pre&nbsp;&#8217;post', o
219
+ assert_rp_equal "pre--'post", 'pre&#8211;&#8217;post', o
220
+ assert_rp_equal "pre--'!", 'pre&#8211;&#8217;!', o
221
+ end
222
+
223
+ def test_stupefy
224
+ o = [:stupefy]
225
+
226
+ assert_rp_equal "<p>He said, &#8220;&#8216;Quoted&#8217; words " +
227
+ "in a larger quote.&#8221;</p>",
228
+ %{<p>He said, "'Quoted' words in a larger quote."</p>}, o
229
+
230
+ assert_rp_equal "&#8211; &#8212; &#8216;&#8217; &#8220;&#8221; &#8230;",
231
+ %{- -- '' "" ...}, o
232
+
233
+ assert_rp_equal %{- -- '' "" ...}, %{- -- '' "" ...}, o
234
+ end
235
+
236
+ def test_process_escapes
237
+ assert_rp_equal %q{foo\bar}, "foo\\bar"
238
+ assert_rp_equal %q{foo\\\bar}, "foo&#92;bar"
239
+ assert_rp_equal %q{foo\\\\\bar}, "foo&#92;\\bar"
240
+ assert_rp_equal %q{foo\...bar}, "foo&#46;..bar"
241
+ assert_rp_equal %q{foo\.\.\.bar}, "foo&#46;&#46;&#46;bar"
242
+
243
+ assert_rp_equal %q{foo\'bar}, "foo&#39;bar"
244
+ assert_rp_equal %q{foo\"bar}, "foo&#34;bar"
245
+ assert_rp_equal %q{foo\-bar}, "foo&#45;bar"
246
+ assert_rp_equal %q{foo\`bar}, "foo&#96;bar"
247
+
248
+ assert_rp_equal %q{foo\#bar}, "foo\\#bar"
249
+ assert_rp_equal %q{foo\*bar}, "foo\\*bar"
250
+ assert_rp_equal %q{foo\&bar}, "foo\\&bar"
251
+ end
252
+
253
+ def test_modified_entities
254
+ entities = {
255
+ :single_left_quote => 'SHAZAM',
256
+ :single_right_quote => 'POWZAP'
257
+ }
258
+ assert_rp_equal "Testing 'FOO!'", "Testing SHAZAMFOO!POWZAP", [2], entities
259
+ end
260
+
261
+ def test_named_entities
262
+ assert_rp_equal "Testing 'FOO!'", "Testing &lsquo;FOO!&rsquo;", [2, :named_entities]
263
+ end
264
+
265
+ def test_character_entities
266
+ assert_rp_equal "Testing 'FOO!'", "Testing ‘FOO!’", [2, :character_entities]
267
+ assert_rp_equal "foo---bar", "foo&#8288;—bar", [2, :character_entities, :prevent_breaks]
268
+ assert_rp_equal "foo ---bar", "foo&nbsp;—bar", [2, :character_entities, :prevent_breaks]
269
+ assert_rp_equal "foo ---bar", "foo\u00A0—bar", [2, :character_entities, :character_spaces, :prevent_breaks]
270
+ end
271
+ end
metadata CHANGED
@@ -1,52 +1,77 @@
1
- --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.8.1
3
- specification_version: 1
1
+ --- !ruby/object:Gem::Specification
4
2
  name: rubypants
5
- version: !ruby/object:Gem::Version
6
- version: 0.2.0
7
- date: 2004-11-15
8
- summary: RubyPants is a Ruby port of the smart-quotes library SmartyPants.
9
- require_paths:
10
- - "."
11
- author: Christian Neukirchen
12
- email: chneukirchen@gmail.com
13
- homepage: http://www.kronavita.de/chris/blog/projects/rubypants.html
14
- rubyforge_project:
15
- description: "RubyPants is a Ruby port of the smart-quotes library SmartyPants. The original
16
- \"SmartyPants\" is a free web publishing plug-in for Movable Type, Blosxom, and
17
- BBEdit that easily translates plain ASCII punctuation characters into \"smart\"
18
- typographic punctuation HTML entities."
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.7.1
5
+ platform: ruby
6
+ authors:
7
+ - John Gruber
8
+ - Chad Miller
9
+ - Christian Neukirchen
10
+ - Jeremy McNevin
11
+ - Aron Griffis
19
12
  autorequire:
20
- default_executable:
21
13
  bindir: bin
22
- has_rdoc: false
23
- required_ruby_version: !ruby/object:Gem::Version::Requirement
24
- requirements:
25
- -
26
- - ">"
27
- - !ruby/object:Gem::Version
28
- version: 0.0.0
29
- version:
30
- platform: ruby
31
- files:
32
- - install.rb
33
- - rubypants.rb
34
- - test_rubypants.rb
35
- - README
36
- - Rakefile
37
- test_files:
38
- - test_rubypants.rb
39
- rdoc_options:
40
- - "--main"
41
- - README
42
- - "--line-numbers"
43
- - "--inline-source"
44
- - "--all"
45
- - "--exclude"
46
- - test_rubypants.rb
47
- extra_rdoc_files:
48
- - README
14
+ cert_chain: []
15
+ date: 2019-12-30 00:00:00.000000000 Z
16
+ dependencies:
17
+ - !ruby/object:Gem::Dependency
18
+ name: minitest
19
+ requirement: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: '0'
24
+ type: :development
25
+ prerelease: false
26
+ version_requirements: !ruby/object:Gem::Requirement
27
+ requirements:
28
+ - - ">="
29
+ - !ruby/object:Gem::Version
30
+ version: '0'
31
+ description: |
32
+ The original "SmartyPants" is a free web publishing plug-in for
33
+ Movable Type, Blosxom, and BBEdit that easily translates plain ASCII
34
+ punctuation characters into "smart" typographic punctuation HTML
35
+ entities.
36
+ email: jeremy@spokoino.net
49
37
  executables: []
50
38
  extensions: []
39
+ extra_rdoc_files: []
40
+ files:
41
+ - ".gitignore"
42
+ - ".travis.yml"
43
+ - Gemfile
44
+ - LICENSE.rdoc
45
+ - README.rdoc
46
+ - Rakefile
47
+ - lib/rubypants.rb
48
+ - lib/version.rb
49
+ - rubypants.gemspec
50
+ - test/helper.rb
51
+ - test/rubypants_test.rb
52
+ homepage: https://github.com/jmcnevin/rubypants
53
+ licenses:
54
+ - MIT
55
+ metadata: {}
56
+ post_install_message:
57
+ rdoc_options: []
58
+ require_paths:
59
+ - lib
60
+ required_ruby_version: !ruby/object:Gem::Requirement
61
+ requirements:
62
+ - - ">="
63
+ - !ruby/object:Gem::Version
64
+ version: '0'
65
+ required_rubygems_version: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
51
70
  requirements: []
52
- dependencies: []
71
+ rubygems_version: 3.0.3
72
+ signing_key:
73
+ specification_version: 4
74
+ summary: RubyPants is a Ruby port of the smart-quotes library SmartyPants.
75
+ test_files:
76
+ - test/helper.rb
77
+ - test/rubypants_test.rb
data/install.rb DELETED
@@ -1,9 +0,0 @@
1
- # Install RubyPants.
2
-
3
- require "rbconfig"
4
- require "fileutils"
5
-
6
- source = "rubypants.rb"
7
- dest = File.join(Config::CONFIG["sitelibdir"], source)
8
-
9
- FileUtils.install(source, dest, :mode => 0644, :verbose => true)