reverse_markdown 0.4.7 → 0.5.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.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.travis.yml +2 -3
  4. data/LICENSE +13 -0
  5. data/README.md +69 -30
  6. data/bin/reverse_markdown +1 -1
  7. data/lib/reverse_markdown/cleaner.rb +66 -0
  8. data/lib/reverse_markdown/config.rb +20 -0
  9. data/lib/reverse_markdown/converters/a.rb +19 -0
  10. data/lib/reverse_markdown/converters/base.rb +24 -0
  11. data/lib/reverse_markdown/converters/blockquote.rb +13 -0
  12. data/lib/reverse_markdown/converters/br.rb +11 -0
  13. data/lib/reverse_markdown/converters/code.rb +11 -0
  14. data/lib/reverse_markdown/converters/div.rb +11 -0
  15. data/lib/reverse_markdown/converters/dump.rb +9 -0
  16. data/lib/reverse_markdown/converters/em.rb +21 -0
  17. data/lib/reverse_markdown/converters/h.rb +17 -0
  18. data/lib/reverse_markdown/converters/hr.rb +11 -0
  19. data/lib/reverse_markdown/converters/img.rb +14 -0
  20. data/lib/reverse_markdown/converters/li.rb +28 -0
  21. data/lib/reverse_markdown/converters/ol.rb +12 -0
  22. data/lib/reverse_markdown/converters/p.rb +11 -0
  23. data/lib/reverse_markdown/converters/pass_through.rb +14 -0
  24. data/lib/reverse_markdown/converters/pre.rb +17 -0
  25. data/lib/reverse_markdown/converters/strong.rb +21 -0
  26. data/lib/reverse_markdown/converters/table.rb +11 -0
  27. data/lib/reverse_markdown/converters/td.rb +13 -0
  28. data/lib/reverse_markdown/converters/text.rb +30 -0
  29. data/lib/reverse_markdown/converters/tr.rb +21 -0
  30. data/lib/reverse_markdown/converters.rb +22 -0
  31. data/lib/reverse_markdown/errors.rb +6 -2
  32. data/lib/reverse_markdown/version.rb +1 -1
  33. data/lib/reverse_markdown.rb +40 -8
  34. data/reverse_markdown.gemspec +3 -1
  35. data/spec/assets/lists.html +24 -0
  36. data/spec/assets/unknown_tags.html +9 -0
  37. data/spec/components/anchors_spec.rb +5 -5
  38. data/spec/components/basic_spec.rb +5 -5
  39. data/spec/components/code_spec.rb +5 -5
  40. data/spec/components/escapables_spec.rb +3 -3
  41. data/spec/components/from_the_wild_spec.rb +5 -5
  42. data/spec/components/html_fragment_spec.rb +2 -2
  43. data/spec/components/lists_spec.rb +18 -7
  44. data/spec/components/paragraphs_spec.rb +2 -2
  45. data/spec/components/quotation_spec.rb +5 -5
  46. data/spec/components/tables_spec.rb +2 -2
  47. data/spec/components/unknown_tags_spec.rb +21 -0
  48. data/spec/html_to_markdown_to_html_spec.rb +1 -2
  49. data/spec/lib/reverse_markdown/cleaner_spec.rb +76 -0
  50. data/spec/lib/reverse_markdown/converters/blockquote_spec.rb +18 -0
  51. data/spec/lib/reverse_markdown/converters/br_spec.rb +9 -0
  52. data/spec/lib/reverse_markdown_spec.rb +37 -0
  53. data/spec/spec_helper.rb +9 -1
  54. metadata +83 -24
  55. data/License-MIT +0 -7
  56. data/lib/reverse_markdown/mapper.rb +0 -241
  57. data/spec/mapper_spec.rb +0 -63
  58. data/spec/reverse_markdown_spec.rb +0 -18
metadata CHANGED
@@ -1,83 +1,111 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: reverse_markdown
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.7
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Johannes Opper
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-12-01 00:00:00.000000000 Z
11
+ date: 2014-04-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rspec
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: simplecov
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rake
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '>='
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - '>='
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: redcarpet
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - '>='
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - '>='
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: byebug
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: codeclimate-test-reporter
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
81
109
  - !ruby/object:Gem::Version
82
110
  version: '0'
83
111
  description: Map simple html back into markdown, e.g. if you want to import existing
@@ -89,16 +117,39 @@ executables:
89
117
  extensions: []
90
118
  extra_rdoc_files: []
91
119
  files:
92
- - .gitignore
93
- - .travis.yml
120
+ - ".gitignore"
121
+ - ".travis.yml"
94
122
  - Gemfile
95
- - License-MIT
123
+ - LICENSE
96
124
  - README.md
97
125
  - Rakefile
98
126
  - bin/reverse_markdown
99
127
  - lib/reverse_markdown.rb
128
+ - lib/reverse_markdown/cleaner.rb
129
+ - lib/reverse_markdown/config.rb
130
+ - lib/reverse_markdown/converters.rb
131
+ - lib/reverse_markdown/converters/a.rb
132
+ - lib/reverse_markdown/converters/base.rb
133
+ - lib/reverse_markdown/converters/blockquote.rb
134
+ - lib/reverse_markdown/converters/br.rb
135
+ - lib/reverse_markdown/converters/code.rb
136
+ - lib/reverse_markdown/converters/div.rb
137
+ - lib/reverse_markdown/converters/dump.rb
138
+ - lib/reverse_markdown/converters/em.rb
139
+ - lib/reverse_markdown/converters/h.rb
140
+ - lib/reverse_markdown/converters/hr.rb
141
+ - lib/reverse_markdown/converters/img.rb
142
+ - lib/reverse_markdown/converters/li.rb
143
+ - lib/reverse_markdown/converters/ol.rb
144
+ - lib/reverse_markdown/converters/p.rb
145
+ - lib/reverse_markdown/converters/pass_through.rb
146
+ - lib/reverse_markdown/converters/pre.rb
147
+ - lib/reverse_markdown/converters/strong.rb
148
+ - lib/reverse_markdown/converters/table.rb
149
+ - lib/reverse_markdown/converters/td.rb
150
+ - lib/reverse_markdown/converters/text.rb
151
+ - lib/reverse_markdown/converters/tr.rb
100
152
  - lib/reverse_markdown/errors.rb
101
- - lib/reverse_markdown/mapper.rb
102
153
  - lib/reverse_markdown/version.rb
103
154
  - reverse_markdown.gemspec
104
155
  - spec/assets/anchors.html
@@ -113,6 +164,7 @@ files:
113
164
  - spec/assets/paragraphs.html
114
165
  - spec/assets/quotation.html
115
166
  - spec/assets/tables.html
167
+ - spec/assets/unknown_tags.html
116
168
  - spec/components/anchors_spec.rb
117
169
  - spec/components/basic_spec.rb
118
170
  - spec/components/code_spec.rb
@@ -123,9 +175,12 @@ files:
123
175
  - spec/components/paragraphs_spec.rb
124
176
  - spec/components/quotation_spec.rb
125
177
  - spec/components/tables_spec.rb
178
+ - spec/components/unknown_tags_spec.rb
126
179
  - spec/html_to_markdown_to_html_spec.rb
127
- - spec/mapper_spec.rb
128
- - spec/reverse_markdown_spec.rb
180
+ - spec/lib/reverse_markdown/cleaner_spec.rb
181
+ - spec/lib/reverse_markdown/converters/blockquote_spec.rb
182
+ - spec/lib/reverse_markdown/converters/br_spec.rb
183
+ - spec/lib/reverse_markdown_spec.rb
129
184
  - spec/spec_helper.rb
130
185
  homepage: http://github.com/xijo/reverse_markdown
131
186
  licenses: []
@@ -136,20 +191,20 @@ require_paths:
136
191
  - lib
137
192
  required_ruby_version: !ruby/object:Gem::Requirement
138
193
  requirements:
139
- - - '>='
194
+ - - ">="
140
195
  - !ruby/object:Gem::Version
141
196
  version: '0'
142
197
  required_rubygems_version: !ruby/object:Gem::Requirement
143
198
  requirements:
144
- - - '>='
199
+ - - ">="
145
200
  - !ruby/object:Gem::Version
146
201
  version: '0'
147
202
  requirements: []
148
203
  rubyforge_project: reverse_markdown
149
- rubygems_version: 2.0.3
204
+ rubygems_version: 2.2.2
150
205
  signing_key:
151
206
  specification_version: 4
152
- summary: Transform html code into markdown.
207
+ summary: Convert html code into markdown.
153
208
  test_files:
154
209
  - spec/assets/anchors.html
155
210
  - spec/assets/basic.html
@@ -163,6 +218,7 @@ test_files:
163
218
  - spec/assets/paragraphs.html
164
219
  - spec/assets/quotation.html
165
220
  - spec/assets/tables.html
221
+ - spec/assets/unknown_tags.html
166
222
  - spec/components/anchors_spec.rb
167
223
  - spec/components/basic_spec.rb
168
224
  - spec/components/code_spec.rb
@@ -173,7 +229,10 @@ test_files:
173
229
  - spec/components/paragraphs_spec.rb
174
230
  - spec/components/quotation_spec.rb
175
231
  - spec/components/tables_spec.rb
232
+ - spec/components/unknown_tags_spec.rb
176
233
  - spec/html_to_markdown_to_html_spec.rb
177
- - spec/mapper_spec.rb
178
- - spec/reverse_markdown_spec.rb
234
+ - spec/lib/reverse_markdown/cleaner_spec.rb
235
+ - spec/lib/reverse_markdown/converters/blockquote_spec.rb
236
+ - spec/lib/reverse_markdown/converters/br_spec.rb
237
+ - spec/lib/reverse_markdown_spec.rb
179
238
  - spec/spec_helper.rb
data/License-MIT DELETED
@@ -1,7 +0,0 @@
1
- Copyright (c) 2012 Johannes Opper
2
-
3
- Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4
-
5
- The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6
-
7
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -1,241 +0,0 @@
1
- module ReverseMarkdown
2
- class Mapper
3
- attr_accessor :raise_errors
4
- attr_accessor :log_enabled, :log_level
5
- attr_accessor :li_counter
6
- attr_accessor :github_style_code_blocks
7
-
8
- def initialize(opts={})
9
- self.log_level = opts.fetch(:log_level) { :info }
10
- self.log_enabled = opts.fetch(:log_enabled) { true }
11
- self.li_counter = 0
12
- self.github_style_code_blocks = opts[:github_style_code_blocks] || false
13
- end
14
-
15
- def process_root(element)
16
- return '' if element.nil?
17
-
18
- markdown = process_element(element) # recursively process all elements to get full markdown
19
-
20
- # Extract github style code blocks
21
- extractions = {}
22
- markdown.gsub!(%r{```.*?```}m) do |match|
23
- md5 = Digest::MD5.hexdigest(match)
24
- extractions[md5] = match
25
- "{code-block-extraction-#{md5}}"
26
- end
27
-
28
- markdown = markdown.split("\n").map do |line|
29
- if line.match(/^( {4}|\t)/)
30
- line
31
- else
32
- "#{ ' ' if line.match(/^ {2,3}/) }" +
33
- normalize_whitespace(line).strip +
34
- "#{ ' ' if line.match(/ {2}$/) }"
35
- end
36
- end.join("\n")
37
-
38
- markdown.gsub!(/\n{3,}/, "\n\n")
39
-
40
- # Insert pre block extractions
41
- markdown.gsub!(/\{code-block-extraction-([0-9a-f]{32})\}/){ extractions[$1] }
42
-
43
- markdown
44
- end
45
-
46
- def process_element(element)
47
- output = ''
48
- if element.text?
49
- text = process_text(element)
50
- if output.end_with?(' ') && text.start_with?(' ')
51
- output << text.lstrip
52
- else
53
- output << text
54
- end
55
- else
56
- output << opening(element).to_s
57
-
58
- markdown_chunks = element.children.map { |child| process_element(child) }
59
- remove_adjacent_whitespace!(markdown_chunks)
60
- output << markdown_chunks.join
61
-
62
- output << ending(element).to_s
63
- end
64
- output
65
- end
66
-
67
- private
68
-
69
- # removes whitespace-only chunk if the previous chunk ends with whitespace
70
- def remove_adjacent_whitespace!(chunks)
71
- (chunks.size - 1).downto(1).each do |i|
72
- chunk = chunks[i]
73
- previous_chunk = chunks[i-1]
74
- chunks.delete_at(i) if chunk == ' ' && previous_chunk.end_with?(' ')
75
- end
76
- end
77
-
78
- def opening(element)
79
- parent = element.parent ? element.parent.name.to_sym : nil
80
- case element.name.to_sym
81
- when :html, :body
82
- ""
83
- when :li
84
- indent = ' ' * [(element.ancestors('ol').count + element.ancestors('ul').count - 1), 0].max
85
- if parent == :ol
86
- "#{indent}#{self.li_counter += 1}. "
87
- else
88
- "#{indent}- "
89
- end
90
- when :pre
91
- "\n"
92
- when :ol
93
- self.li_counter = 0
94
- "\n"
95
- when :ul, :root#, :p
96
- "\n"
97
- when :div
98
- "\n"
99
- when :p
100
- if element.ancestors.map(&:name).include?('blockquote')
101
- "\n\n> "
102
- elsif [nil, :body].include? parent
103
- is_first = true
104
- previous = element.previous
105
- while is_first == true and previous do
106
- is_first = false unless previous.content.strip == "" || previous.text?
107
- previous = previous.previous
108
- end
109
- is_first ? "" : "\n\n"
110
- else
111
- "\n\n"
112
- end
113
- when :h1, :h2, :h3, :h4, :h5, :h6 # /h(\d)/ for 1.9
114
- element.name =~ /h(\d)/
115
- "\n" + ('#' * $1.to_i) + ' '
116
- when :em, :i
117
- element.text.strip.empty? ? '' : '_' if (element.ancestors('em') + element.ancestors('i')).empty?
118
- when :strong, :b
119
- element.text.strip.empty? ? '' : '**' if (element.ancestors('strong') + element.ancestors('b')).empty?
120
- when :blockquote
121
- "> "
122
- when :code
123
- if parent == :pre
124
- self.github_style_code_blocks ? "\n```\n" : "\n "
125
- else
126
- " `"
127
- end
128
- when :a
129
- if (!element.text.strip.empty? || element.children.map(&:name).include?('img')) && element['href'] && !element['href'].start_with?('#')
130
- " ["
131
- else
132
- " "
133
- end
134
- when :img
135
- " !["
136
- when :hr
137
- "\n* * *\n"
138
- when :br
139
- " \n"
140
- when :table
141
- "\n\n"
142
- when :tr
143
- "|"
144
- when :th, :td
145
- if element == element.parent.first_element_child
146
- " "
147
- else
148
- "| "
149
- end
150
- else
151
- handle_error "unknown start tag: #{element.name.to_s}"
152
- ""
153
- end
154
- end
155
-
156
- def ending(element)
157
- parent = element.parent ? element.parent.name.to_sym : nil
158
- case element.name.to_sym
159
- when :html, :body, :pre, :hr
160
- ""
161
- when :p
162
- "\n\n"
163
- when :div
164
- "\n"
165
- when :h1, :h2, :h3, :h4, :h5, :h6 # /h(\d)/ for 1.9
166
- "\n"
167
- when :em, :i
168
- element.text.strip.empty? ? '' : '_' if (element.ancestors('em') + element.ancestors('i')).empty?
169
- when :strong, :b
170
- element.text.strip.empty? ? '' : '**' if (element.ancestors('strong') + element.ancestors('b')).empty?
171
- when :li, :blockquote, :root, :ol, :ul
172
- "\n"
173
- when :code
174
- if parent == :pre
175
- self.github_style_code_blocks ? "\n```" : "\n"
176
- else
177
- '` '
178
- end
179
- when :a
180
- if (!element.text.strip.empty? || element.children.map(&:name).include?('img')) && element['href'] && !element['href'].start_with?('#')
181
- "](#{element['href']}#{title_markdown(element)})"
182
- else
183
- ""
184
- end
185
- when :img
186
- "#{element['alt']}](#{element['src']}#{title_markdown(element)}) "
187
- when :table
188
- "\n"
189
- when :tr
190
- "|\n" + \
191
- if element.element_children.all? {|child| child.name.to_sym == :th}
192
- "| " + (['---'] * element.element_children.size).join(' | ') + " |\n"
193
- else
194
- ""
195
- end
196
- when :th, :td
197
- " "
198
- else
199
- handle_error "unknown end tag: #{element.name}"
200
- ""
201
- end
202
- end
203
-
204
- def title_markdown(element)
205
- title = element['title']
206
- title ? %[ "#{title}"] : ''
207
- end
208
-
209
- def process_text(element)
210
- parent = element.parent ? element.parent.name.to_sym : nil
211
- case
212
- when parent == :code
213
- if self.github_style_code_blocks
214
- element.text
215
- else
216
- element.text.strip.gsub(/\n/,"\n ")
217
- end
218
- else
219
- normalize_whitespace(escape_text(element.text))
220
- end
221
- end
222
-
223
- def normalize_whitespace(text)
224
- text.tr("\n\t", ' ').squeeze(' ')
225
- end
226
-
227
- def escape_text(text)
228
- text.
229
- gsub('*', '\*').
230
- gsub('_', '\_')
231
- end
232
-
233
- def handle_error(message)
234
- if raise_errors
235
- raise ReverseMarkdown::ParserError, message
236
- elsif log_enabled && defined?(Rails)
237
- Rails.logger.__send__(log_level, message)
238
- end
239
- end
240
- end
241
- end
data/spec/mapper_spec.rb DELETED
@@ -1,63 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe ReverseMarkdown::Mapper do
4
- let(:input) { File.read('spec/assets/minimum.html') }
5
- let(:document) { Nokogiri::HTML(input) }
6
- let(:mapper) { ReverseMarkdown::Mapper.new }
7
-
8
- it "behaves in a sane way when root element is nil" do
9
- mapper.process_root(nil).should == ''
10
- end
11
-
12
- describe "logging options" do
13
- it "has a default log level info" do
14
- mapper.log_level.should eq :info
15
- end
16
-
17
- it "overwrites log level if option is given" do
18
- mapper = ReverseMarkdown::Mapper.new(log_level: :error)
19
- mapper.log_level.should eq :error
20
- end
21
-
22
- it "enables logging by default" do
23
- mapper.log_enabled.should be_true
24
- end
25
-
26
- it "disables logging if told to" do
27
- mapper = ReverseMarkdown::Mapper.new(log_enabled: false)
28
- mapper.log_enabled.should be_false
29
- end
30
- end
31
-
32
- context "error handling" do
33
-
34
- let(:unknown_element) { Nokogiri::XML::Node.new('foo', document) }
35
-
36
- it "raises error if told so" do
37
- mapper.raise_errors = true
38
- expect {
39
- mapper.__send__(:opening, unknown_element)
40
- }.to raise_error(ReverseMarkdown::ParserError)
41
- end
42
-
43
- it "supresses errors if told so" do
44
- mapper.raise_errors = false
45
- expect {
46
- mapper.__send__(:opening, unknown_element)
47
- }.not_to raise_error
48
- end
49
-
50
- context "with Rails present" do
51
-
52
- module Rails # Fake Rails for specs
53
- def self.logger; @@logger ||= Logger.new; end
54
- class Logger; def info(message); end; end
55
- end
56
-
57
- it "logs with Rails.logger if present" do
58
- Rails.logger.should_receive(:info)
59
- mapper.__send__(:ending, unknown_element)
60
- end
61
- end
62
- end
63
- end
@@ -1,18 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe ReverseMarkdown do
4
- let(:input) { File.read('spec/assets/minimum.html') }
5
- let(:document) { Nokogiri::HTML(input) }
6
-
7
- it "parses nokogiri documents" do
8
- lambda { ReverseMarkdown.parse_element(document) }.should_not raise_error
9
- end
10
-
11
- it "parses nokogiri elements" do
12
- lambda { ReverseMarkdown.parse_element(document.root) }.should_not raise_error
13
- end
14
-
15
- it "parses string input" do
16
- lambda { ReverseMarkdown.parse_string(input) }.should_not raise_error
17
- end
18
- end