suung-undress 0.2.5
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/.gitignore +3 -0
- data/CHANGELOG +23 -0
- data/LICENSE +22 -0
- data/README.rdoc +42 -0
- data/Rakefile +32 -0
- data/lib/core_ext/object.rb +6 -0
- data/lib/hpricot_ext.rb +88 -0
- data/lib/undress.rb +118 -0
- data/lib/undress/grammar.rb +188 -0
- data/lib/undress/greencloth.rb +142 -0
- data/lib/undress/textile.rb +126 -0
- data/test/test_grammar.rb +75 -0
- data/test/test_greencloth.rb +435 -0
- data/test/test_helper.rb +11 -0
- data/test/test_hpricot_ext.rb +57 -0
- data/test/test_textile.rb +313 -0
- data/undress.gemspec +45 -0
- metadata +125 -0
data/test/test_helper.rb
ADDED
@@ -0,0 +1,57 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + "/test_helper")
|
2
|
+
|
3
|
+
class HpricotExtensionsTest < Test::Unit::TestCase
|
4
|
+
GET_ELEM = lambda {|content| Hpricot(content).children[0]}
|
5
|
+
|
6
|
+
def setup_elements
|
7
|
+
@p_without_styles = GET_ELEM.call("<p>some text inside</p>")
|
8
|
+
@p_with_styles = GET_ELEM.call("<p style='font-weight:bold; color:#000; font-style: italic'>some text inside</p>")
|
9
|
+
@img_without_styles = GET_ELEM.call("<img src='some.jpg' />")
|
10
|
+
end
|
11
|
+
|
12
|
+
context "Hpricot::Styles extensions" do
|
13
|
+
setup do
|
14
|
+
setup_elements
|
15
|
+
end
|
16
|
+
|
17
|
+
test "delete an specific style from an element" do
|
18
|
+
@p_with_styles.del_style("font-weight")
|
19
|
+
assert_equal({"color" => "#000", "font-style" => "italic"}, @p_with_styles.styles.to_h)
|
20
|
+
end
|
21
|
+
|
22
|
+
test "get a hash of all styles from an element" do
|
23
|
+
assert_kind_of Hpricot::Styles, @p_with_styles.styles
|
24
|
+
end
|
25
|
+
|
26
|
+
test "add new style to an element trough Elem" do
|
27
|
+
@p_without_styles.set_style("color", "red")
|
28
|
+
assert_equal({"color" => "red"}, @p_without_styles.styles.to_h)
|
29
|
+
end
|
30
|
+
|
31
|
+
test "add new style to an element trough Styles" do
|
32
|
+
@p_without_styles.styles["color"] = "red"
|
33
|
+
assert_equal({"color" => "red"}, @p_without_styles.styles.to_h)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
context "Hpricot::Elem extensions" do
|
38
|
+
setup do
|
39
|
+
setup_elements
|
40
|
+
end
|
41
|
+
|
42
|
+
test "change an element tag name preserving attributes" do
|
43
|
+
@p_with_styles.change_tag! "span"
|
44
|
+
assert_equal "<span style=\"font-weight:bold; color:#000; font-style: italic\">some text inside</span>", @p_with_styles.to_s
|
45
|
+
end
|
46
|
+
|
47
|
+
test "change an element tag name not preserving attributes" do
|
48
|
+
@p_with_styles.change_tag! "span", false
|
49
|
+
assert_equal "<span>some text inside</span>", @p_with_styles.to_s
|
50
|
+
end
|
51
|
+
|
52
|
+
test "ignore self closed element tag name" do
|
53
|
+
@img_without_styles.change_tag! "hr"
|
54
|
+
assert_equal "<img src=\"some.jpg\" />", @img_without_styles.to_s
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
@@ -0,0 +1,313 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + "/test_helper")
|
2
|
+
|
3
|
+
module Undress
|
4
|
+
class TextileTest < Test::Unit::TestCase
|
5
|
+
def assert_renders_textile(textile, html)
|
6
|
+
assert_equal textile, Undress(html).to_textile
|
7
|
+
end
|
8
|
+
|
9
|
+
context "Converting HTML to textile" do
|
10
|
+
context "some troubles with empty tags" do
|
11
|
+
test "with pre" do
|
12
|
+
html = "<pre></pre>"
|
13
|
+
textile = "<pre></pre>"
|
14
|
+
assert_renders_textile textile, html
|
15
|
+
end
|
16
|
+
|
17
|
+
test "with p" do
|
18
|
+
html = "<p></p>"
|
19
|
+
textile = ""
|
20
|
+
assert_renders_textile textile, html
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
test "converts nested tags" do
|
25
|
+
assert_renders_textile "h2. _this is *very* important_\n", "<h2><em>this is <strong>very</strong> important</em></h2>"
|
26
|
+
end
|
27
|
+
|
28
|
+
context "some troubles" do
|
29
|
+
test "with sup" do
|
30
|
+
html = "<p>e = mc<sup>2</sup></p>"
|
31
|
+
textile = "e = mc[^2^]\n"
|
32
|
+
assert_renders_textile textile, html
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
context "convert enetities" do
|
37
|
+
test " " do
|
38
|
+
textile = "some word\n"
|
39
|
+
html = "<p>some word</p>"
|
40
|
+
assert_renders_textile textile, html
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
context "convert parts of a word" do
|
45
|
+
test "some" do
|
46
|
+
textile = "s[*o*]me\n"
|
47
|
+
html = "<p>s<span style='font-weight:bold;'>o</span>me</p>"
|
48
|
+
assert_renders_textile textile, html
|
49
|
+
end
|
50
|
+
|
51
|
+
test "at the end of the word" do
|
52
|
+
html = "<p>ds <u>underline</u>sds</p>"
|
53
|
+
textile = "ds [+underline+]sds\n"
|
54
|
+
assert_renders_textile textile, html
|
55
|
+
end
|
56
|
+
|
57
|
+
test "wihout a letter in headers" do
|
58
|
+
html = "<h1>a<em>bc</em></h1>"
|
59
|
+
textile = "h1. a[_bc_]\n"
|
60
|
+
assert_renders_textile textile, html
|
61
|
+
end
|
62
|
+
|
63
|
+
test "without a letter after the tag" do
|
64
|
+
textile = "x[*x xx*]"
|
65
|
+
html = "x<strong>x xx</strong>"
|
66
|
+
assert_renders_textile textile, html
|
67
|
+
end
|
68
|
+
|
69
|
+
test "italics" do
|
70
|
+
textile = "a perfect wo[_r_]ld\n"
|
71
|
+
html = "<p>a perfect wo<em>r</em>ld</p>"
|
72
|
+
assert_renders_textile textile, html
|
73
|
+
end
|
74
|
+
|
75
|
+
test "bolds" do
|
76
|
+
textile = "a perfect wo[*r*]ld\n"
|
77
|
+
html = "<p>a perfect wo<strong>r</strong>ld</p>"
|
78
|
+
assert_renders_textile textile, html
|
79
|
+
end
|
80
|
+
|
81
|
+
test "underlines" do
|
82
|
+
textile = "a perfect wo[+r+]ld\n"
|
83
|
+
html = "<p>a perfect wo<ins>r</ins>ld</p>"
|
84
|
+
assert_renders_textile textile, html
|
85
|
+
end
|
86
|
+
|
87
|
+
test "line through" do
|
88
|
+
textile = "a perfect wo[-r-]ld\n"
|
89
|
+
html = "<p>a perfect wo<del>r</del>ld</p>"
|
90
|
+
assert_renders_textile textile, html
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
context "inline elements" do
|
95
|
+
test "converts <strong> tags" do
|
96
|
+
assert_renders_textile "*foo bar*", "<strong>foo bar</strong>"
|
97
|
+
end
|
98
|
+
|
99
|
+
test "converts <em> tags" do
|
100
|
+
assert_renders_textile "_foo bar_", "<em>foo bar</em>"
|
101
|
+
end
|
102
|
+
|
103
|
+
test "converts <code> tags" do
|
104
|
+
assert_renders_textile "@foo bar@", "<code>foo bar</code>"
|
105
|
+
end
|
106
|
+
|
107
|
+
test "converts <cite> tags" do
|
108
|
+
assert_renders_textile "??foo bar??", "<cite>foo bar</cite>"
|
109
|
+
end
|
110
|
+
|
111
|
+
test "converts <sup> tags" do
|
112
|
+
assert_renders_textile "foo ^sup^ bar", "foo <sup>sup</sup> bar"
|
113
|
+
assert_renders_textile "foo[^sup^]bar", "foo<sup>sup</sup>bar"
|
114
|
+
end
|
115
|
+
|
116
|
+
test "converts <sub> tags" do
|
117
|
+
assert_renders_textile "foo ~sub~ bar", "foo <sub>sub</sub> bar"
|
118
|
+
assert_renders_textile "foo[~sub~]bar", "foo<sub>sub</sub>bar"
|
119
|
+
end
|
120
|
+
|
121
|
+
test "converts <ins> tags" do
|
122
|
+
assert_renders_textile "+foo bar+", "<ins>foo bar</ins>"
|
123
|
+
end
|
124
|
+
|
125
|
+
test "converts <del> tags" do
|
126
|
+
assert_renders_textile "-foo bar-", "<del>foo bar</del>"
|
127
|
+
end
|
128
|
+
|
129
|
+
test "converts <acronym> tags" do
|
130
|
+
assert_renders_textile "EPA(Environmental Protection Agency)", "<acronym title='Environmental Protection Agency'>EPA</acronym>"
|
131
|
+
assert_renders_textile "EPA", "<acronym>EPA</acronym>"
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
135
|
+
context "links" do
|
136
|
+
test "converts simple links (without title)" do
|
137
|
+
assert_renders_textile "[Foo Bar:/cuack]", "<a href='/cuack'>Foo Bar</a>"
|
138
|
+
end
|
139
|
+
|
140
|
+
test "converts links with titles" do
|
141
|
+
assert_renders_textile "[Foo Bar (You should see this):/cuack]", "<a href='/cuack' title='You should see this'>Foo Bar</a>"
|
142
|
+
end
|
143
|
+
end
|
144
|
+
|
145
|
+
context "images" do
|
146
|
+
test "converts images without alt attributes" do
|
147
|
+
assert_renders_textile "!http://example.com/image.png!", "<img src='http://example.com/image.png'/>"
|
148
|
+
end
|
149
|
+
|
150
|
+
test "converts images with alt attributes" do
|
151
|
+
assert_renders_textile "!http://example.com/image.png(Awesome Pic)!", "<img src='http://example.com/image.png' alt='Awesome Pic'/>"
|
152
|
+
end
|
153
|
+
end
|
154
|
+
|
155
|
+
context "text formatting" do
|
156
|
+
test "converts paragraphs" do
|
157
|
+
assert_renders_textile "foo\n\nbar\n", "<p>foo</p><p>bar</p>"
|
158
|
+
end
|
159
|
+
|
160
|
+
test "converts <pre> tags which only contain a <code> child" do
|
161
|
+
assert_renders_textile "pc. var foo = 1;\n", "<pre><code>var foo = 1;</code></pre>"
|
162
|
+
assert_renders_textile "pc. var foo = 1;\n", "<pre> <code>var foo = 1;</code> </pre>"
|
163
|
+
end
|
164
|
+
|
165
|
+
test "leaves <pre> tags which contain mixed content as HTML" do
|
166
|
+
assert_renders_textile "<pre> foo bar</pre>", "<pre> foo bar</pre>"
|
167
|
+
end
|
168
|
+
|
169
|
+
test "converts <br> into a new line" do
|
170
|
+
assert_renders_textile "Foo\nBar", "Foo<br/>Bar"
|
171
|
+
end
|
172
|
+
|
173
|
+
test "converts blockquotes" do
|
174
|
+
assert_renders_textile "bq. foo bar\n", "<blockquote><div>foo bar</div></blockquote>"
|
175
|
+
end
|
176
|
+
|
177
|
+
test "a p inside a blockquote" do
|
178
|
+
html = "<blockquote> <p>this text<br />becomes not blockquoted in round trip.</p> </blockquote>"
|
179
|
+
greencloth = "bq. this text\nbecomes not blockquoted in round trip.\n"
|
180
|
+
assert_renders_textile greencloth, html
|
181
|
+
end
|
182
|
+
|
183
|
+
end
|
184
|
+
|
185
|
+
context "headers" do
|
186
|
+
test "converts <h1> tags" do
|
187
|
+
assert_renders_textile "h1. foo bar\n", "<h1>foo bar</h1>"
|
188
|
+
end
|
189
|
+
|
190
|
+
test "converts <h2> tags" do
|
191
|
+
assert_renders_textile "h2. foo bar\n", "<h2>foo bar</h2>"
|
192
|
+
end
|
193
|
+
|
194
|
+
test "converts <h3> tags" do
|
195
|
+
assert_renders_textile "h3. foo bar\n", "<h3>foo bar</h3>"
|
196
|
+
end
|
197
|
+
|
198
|
+
test "converts <h4> tags" do
|
199
|
+
assert_renders_textile "h4. foo bar\n", "<h4>foo bar</h4>"
|
200
|
+
end
|
201
|
+
|
202
|
+
test "converts <h5> tags" do
|
203
|
+
assert_renders_textile "h5. foo bar\n", "<h5>foo bar</h5>"
|
204
|
+
end
|
205
|
+
|
206
|
+
test "converts <h6> tags" do
|
207
|
+
assert_renders_textile "h6. foo bar\n", "<h6>foo bar</h6>"
|
208
|
+
end
|
209
|
+
end
|
210
|
+
|
211
|
+
context "lists" do
|
212
|
+
test "converts bullet lists" do
|
213
|
+
assert_renders_textile "* foo\n* bar\n", "<ul><li>foo</li><li>bar</li></ul>"
|
214
|
+
end
|
215
|
+
|
216
|
+
test "converts numbered lists" do
|
217
|
+
assert_renders_textile "# foo\n# bar\n", "<ol><li>foo</li><li>bar</li></ol>"
|
218
|
+
end
|
219
|
+
|
220
|
+
test "converts nested bullet lists" do
|
221
|
+
assert_renders_textile "* foo\n** bar\n* baz\n", "<ul><li>foo<ul><li>bar</li></ul></li><li>baz</li></ul>"
|
222
|
+
end
|
223
|
+
|
224
|
+
test "converts nested numbered lists" do
|
225
|
+
assert_renders_textile "# foo\n## bar\n# baz\n", "<ol><li>foo<ol><li>bar</li></ol></li><li>baz</li></ol>"
|
226
|
+
end
|
227
|
+
|
228
|
+
test "converts nested mixed lists" do
|
229
|
+
assert_renders_textile "* foo\n## bar\n## baz\n*** quux\n* cuack\n",
|
230
|
+
"<ul><li>foo<ol><li>bar</li><li>baz<ul><li>quux</li></ul></li></ol></li><li>cuack</li></ul>"
|
231
|
+
end
|
232
|
+
|
233
|
+
test "converts a definition list" do
|
234
|
+
assert_renders_textile "- foo := defining foo =:\n- bar := defining bar =:\n",
|
235
|
+
"<dl><dt>foo</dt><dd>defining foo</dd><dt>bar</dt><dd>defining bar</dd></dl>"
|
236
|
+
end
|
237
|
+
end
|
238
|
+
|
239
|
+
context "tables" do
|
240
|
+
test "converts table with empty cell" do
|
241
|
+
html = "<table> <tbody> <tr> <td> a</td> <td> </td> </tr> <tr> <td> b</td> <td> c</td> </tr> </tbody> </table>"
|
242
|
+
textile = "|a||\n|b|c|\n"
|
243
|
+
assert_renders_textile textile, html
|
244
|
+
end
|
245
|
+
|
246
|
+
test "converts a simple table" do
|
247
|
+
assert_renders_textile "|foo|bar|baz|\n|1|2|3|\n",
|
248
|
+
"<table><tr><td>foo</td><td>bar</td><td>baz</td></tr><tr><td>1</td><td>2</td><td>3</td></tr></table>"
|
249
|
+
end
|
250
|
+
|
251
|
+
test "converts a table with headers" do
|
252
|
+
assert_renders_textile "|_. foo|_. bar|_. baz|\n|1|2|3|\n",
|
253
|
+
"<table><tr><th>foo</th><th>bar</th><th>baz</th></tr><tr><td>1</td><td>2</td><td>3</td></tr></table>"
|
254
|
+
end
|
255
|
+
|
256
|
+
test "converts a table with cells that span multiple columns" do
|
257
|
+
assert_renders_textile "|foo|bar|baz|\n|\\2. 1|2|\n",
|
258
|
+
"<table><tr><td>foo</td><td>bar</td><td>baz</td></tr><tr><td colspan='2'>1</td><td>2</td></tr></table>"
|
259
|
+
end
|
260
|
+
|
261
|
+
test "converts a table with cells that span multiple rows" do
|
262
|
+
assert_renders_textile "|/2. foo|bar|baz|\n|1|2|\n",
|
263
|
+
"<table><tr><td rowspan='2'>foo</td><td>bar</td><td>baz</td></tr><tr><td>1</td><td>2</td></tr></table>"
|
264
|
+
end
|
265
|
+
end
|
266
|
+
|
267
|
+
context "applying post processing rules" do
|
268
|
+
test "compresses newlines to a maximum of two consecutive newlines" do
|
269
|
+
assert_renders_textile "Foo\n\nBar\n\nBaz\n\n* Quux 1\n* Quux 2\n", "<p>Foo</p><p>Bar</p><p>Baz</p><ul><li>Quux 1</li><li>Quux 2</li></p>"
|
270
|
+
end
|
271
|
+
|
272
|
+
test "strips trailing newlines from the start and end of the output string" do
|
273
|
+
assert_renders_textile "Foo\n", "<p>Foo</p>"
|
274
|
+
end
|
275
|
+
|
276
|
+
test "converts all fancy characters introduced by textile back into their 'source code'" do
|
277
|
+
assert_renders_textile "What the ... hell?", "What the … hell?"
|
278
|
+
assert_renders_textile "It's mine", "It’s mine"
|
279
|
+
assert_renders_textile "\"Fancy quoting\"", "“Fancy quoting”"
|
280
|
+
assert_renders_textile "How dashing--right?", "How dashing—right?"
|
281
|
+
assert_renders_textile "How dashing - right?", "How dashing – right?"
|
282
|
+
assert_renders_textile "2 x 2 = 4", "2 × 2 = 4"
|
283
|
+
assert_renders_textile "2x2 = 4", "2×2 = 4"
|
284
|
+
assert_renders_textile "Registered(r)", "Registered®"
|
285
|
+
assert_renders_textile "Copyrighted(c)", "Copyrighted©"
|
286
|
+
assert_renders_textile "Trademarked(tm)", "Trademarked™"
|
287
|
+
end
|
288
|
+
end
|
289
|
+
|
290
|
+
context "handling nodes with attributes" do
|
291
|
+
test "converts 'lang' to [_]" do
|
292
|
+
assert_renders_textile "*[es]hola*", "<strong lang='es'>hola</strong>"
|
293
|
+
end
|
294
|
+
|
295
|
+
test "converts 'class' to (_)" do
|
296
|
+
assert_renders_textile "*(foo)hola*", "<strong class='foo'>hola</strong>"
|
297
|
+
end
|
298
|
+
|
299
|
+
test "converts 'id' to (#_)" do
|
300
|
+
assert_renders_textile "*(#bar)hola*", "<strong id='bar'>hola</strong>"
|
301
|
+
end
|
302
|
+
|
303
|
+
test "converts both 'class' and 'id' to (_#_)" do
|
304
|
+
assert_renders_textile "*(foo#bar)hola*", "<strong id='bar' class='foo'>hola</strong>"
|
305
|
+
end
|
306
|
+
|
307
|
+
test "converts 'style' into {_}" do
|
308
|
+
assert_renders_textile "*{color:blue;}hola*", "<strong style='color:blue;'>hola</strong>"
|
309
|
+
end
|
310
|
+
end
|
311
|
+
end
|
312
|
+
end
|
313
|
+
end
|
data/undress.gemspec
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
Gem::Specification.new do |s|
|
2
|
+
s.name = "suung-undress"
|
3
|
+
s.version = "0.2.5"
|
4
|
+
s.date = "2010-05-22"
|
5
|
+
|
6
|
+
s.description = "Simply translate HTML to Textile, Markdown, or whatever other markup format you need"
|
7
|
+
s.summary = "Convert HTML into other markup languages"
|
8
|
+
s.homepage = "http://undress.rubyforge.org"
|
9
|
+
|
10
|
+
s.authors = "Nicolás Sanguinetti"
|
11
|
+
s.email = "contacto@nicolassanguinetti.info"
|
12
|
+
|
13
|
+
s.require_paths = ["lib"]
|
14
|
+
s.rubyforge_project = "undress"
|
15
|
+
s.has_rdoc = true
|
16
|
+
s.rubygems_version = "1.3.1"
|
17
|
+
|
18
|
+
s.add_dependency "hpricot"
|
19
|
+
|
20
|
+
if s.respond_to?(:add_development_dependency)
|
21
|
+
s.add_development_dependency "sr-mg"
|
22
|
+
s.add_development_dependency "contest"
|
23
|
+
s.add_development_dependency "redgreen"
|
24
|
+
end
|
25
|
+
|
26
|
+
s.files = %w[
|
27
|
+
.gitignore
|
28
|
+
LICENSE
|
29
|
+
CHANGELOG
|
30
|
+
README.rdoc
|
31
|
+
Rakefile
|
32
|
+
undress.gemspec
|
33
|
+
lib/undress.rb
|
34
|
+
lib/hpricot_ext.rb
|
35
|
+
lib/undress/grammar.rb
|
36
|
+
lib/undress/textile.rb
|
37
|
+
lib/undress/greencloth.rb
|
38
|
+
lib/core_ext/object.rb
|
39
|
+
test/test_helper.rb
|
40
|
+
test/test_grammar.rb
|
41
|
+
test/test_textile.rb
|
42
|
+
test/test_greencloth.rb
|
43
|
+
test/test_hpricot_ext.rb
|
44
|
+
]
|
45
|
+
end
|
metadata
ADDED
@@ -0,0 +1,125 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: suung-undress
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 2
|
8
|
+
- 5
|
9
|
+
version: 0.2.5
|
10
|
+
platform: ruby
|
11
|
+
authors:
|
12
|
+
- "Nicol\xC3\xA1s Sanguinetti"
|
13
|
+
autorequire:
|
14
|
+
bindir: bin
|
15
|
+
cert_chain: []
|
16
|
+
|
17
|
+
date: 2010-05-22 00:00:00 +00:00
|
18
|
+
default_executable:
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
name: hpricot
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - ">="
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
segments:
|
28
|
+
- 0
|
29
|
+
version: "0"
|
30
|
+
type: :runtime
|
31
|
+
version_requirements: *id001
|
32
|
+
- !ruby/object:Gem::Dependency
|
33
|
+
name: sr-mg
|
34
|
+
prerelease: false
|
35
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - ">="
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
segments:
|
40
|
+
- 0
|
41
|
+
version: "0"
|
42
|
+
type: :development
|
43
|
+
version_requirements: *id002
|
44
|
+
- !ruby/object:Gem::Dependency
|
45
|
+
name: contest
|
46
|
+
prerelease: false
|
47
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
48
|
+
requirements:
|
49
|
+
- - ">="
|
50
|
+
- !ruby/object:Gem::Version
|
51
|
+
segments:
|
52
|
+
- 0
|
53
|
+
version: "0"
|
54
|
+
type: :development
|
55
|
+
version_requirements: *id003
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: redgreen
|
58
|
+
prerelease: false
|
59
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
60
|
+
requirements:
|
61
|
+
- - ">="
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
segments:
|
64
|
+
- 0
|
65
|
+
version: "0"
|
66
|
+
type: :development
|
67
|
+
version_requirements: *id004
|
68
|
+
description: Simply translate HTML to Textile, Markdown, or whatever other markup format you need
|
69
|
+
email: contacto@nicolassanguinetti.info
|
70
|
+
executables: []
|
71
|
+
|
72
|
+
extensions: []
|
73
|
+
|
74
|
+
extra_rdoc_files: []
|
75
|
+
|
76
|
+
files:
|
77
|
+
- .gitignore
|
78
|
+
- LICENSE
|
79
|
+
- CHANGELOG
|
80
|
+
- README.rdoc
|
81
|
+
- Rakefile
|
82
|
+
- undress.gemspec
|
83
|
+
- lib/undress.rb
|
84
|
+
- lib/hpricot_ext.rb
|
85
|
+
- lib/undress/grammar.rb
|
86
|
+
- lib/undress/textile.rb
|
87
|
+
- lib/undress/greencloth.rb
|
88
|
+
- lib/core_ext/object.rb
|
89
|
+
- test/test_helper.rb
|
90
|
+
- test/test_grammar.rb
|
91
|
+
- test/test_textile.rb
|
92
|
+
- test/test_greencloth.rb
|
93
|
+
- test/test_hpricot_ext.rb
|
94
|
+
has_rdoc: true
|
95
|
+
homepage: http://undress.rubyforge.org
|
96
|
+
licenses: []
|
97
|
+
|
98
|
+
post_install_message:
|
99
|
+
rdoc_options: []
|
100
|
+
|
101
|
+
require_paths:
|
102
|
+
- lib
|
103
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
104
|
+
requirements:
|
105
|
+
- - ">="
|
106
|
+
- !ruby/object:Gem::Version
|
107
|
+
segments:
|
108
|
+
- 0
|
109
|
+
version: "0"
|
110
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
111
|
+
requirements:
|
112
|
+
- - ">="
|
113
|
+
- !ruby/object:Gem::Version
|
114
|
+
segments:
|
115
|
+
- 0
|
116
|
+
version: "0"
|
117
|
+
requirements: []
|
118
|
+
|
119
|
+
rubyforge_project: undress
|
120
|
+
rubygems_version: 1.3.6
|
121
|
+
signing_key:
|
122
|
+
specification_version: 3
|
123
|
+
summary: Convert HTML into other markup languages
|
124
|
+
test_files: []
|
125
|
+
|