remark 0.3.1 → 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -3,6 +3,8 @@ Remark — HTML→Markdown tool
3
3
 
4
4
  <i>Remark</i> parses HTML and delivers proper Markdown.
5
5
 
6
+ $ [sudo] gem install remark
7
+
6
8
  Usage
7
9
  -----
8
10
 
data/Rakefile CHANGED
@@ -2,30 +2,3 @@ desc "renders the spec/sample.html to Markdown"
2
2
  task :sample do
3
3
  system %(ruby -Ilib -rubygems bin/remark spec/sample.html)
4
4
  end
5
-
6
- desc "generates .gemspec file"
7
- task :gemspec do
8
- spec = Gem::Specification.new do |gem|
9
- gem.name = "remark"
10
- gem.version = '0.3.0'
11
-
12
- gem.summary = "HTML to Markdown converter"
13
- gem.email = "mislav.marohnic@gmail.com"
14
- gem.homepage = "http://github.com/mislav/remark"
15
- gem.authors = ["Mislav Marohnić"]
16
- gem.has_rdoc = false
17
-
18
- gem.files = FileList['Rakefile', '{bin,lib,rails,spec}/**/*', 'README*', 'LICENSE*'] & `git ls-files`.split("\n")
19
- gem.executables = Dir['bin/*'].map { |f| File.basename(f) }
20
- end
21
-
22
- spec_string = spec.to_ruby
23
-
24
- begin
25
- Thread.new { eval("$SAFE = 3\n#{spec_string}", binding) }.join
26
- rescue
27
- abort "unsafe gemspec: #{$!}"
28
- else
29
- File.open("#{spec.name}.gemspec", 'w') { |file| file.write spec_string }
30
- end
31
- end
@@ -51,9 +51,9 @@ Hpricot::Container.module_eval do
51
51
  end
52
52
 
53
53
  all << child_content
54
+ previous_was_block = current_is_block
54
55
  end
55
56
 
56
- previous_was_block = current_is_block
57
57
  all
58
58
  end
59
59
 
@@ -83,7 +83,7 @@ Hpricot::Elem.module_eval do
83
83
  return to_s unless markdown_supported_attributes?
84
84
 
85
85
  case name
86
- when 'div', 'noscript'
86
+ when 'div', 'noscript', 'body'
87
87
  super
88
88
  when 'p'
89
89
  super
@@ -105,13 +105,21 @@ Hpricot::Elem.module_eval do
105
105
  code = inner_text
106
106
  code.index('`') ? "`` #{code} ``" : "`#{code}`"
107
107
  when 'a'
108
- remark_link(super, self['href'], self['title'], options)
108
+ if self['name']
109
+ text = super
110
+ text = '' if text.blank?
111
+ %(<a name="#{self['name']}">#{text}</a>)
112
+ else
113
+ remark_link(super, self['href'], self['title'], options)
114
+ end
109
115
  when 'img'
110
116
  '!' + remark_link(self['alt'], self['src'], self['title'], :reference_links => false)
111
117
  when 'blockquote'
112
118
  super.indent('> ')
113
119
  when 'br'
114
120
  " \n" + inner_html
121
+ when 'hr'
122
+ '* * *'
115
123
  else
116
124
  to_s
117
125
  end
@@ -158,12 +166,13 @@ Hpricot::Elem.module_eval do
158
166
 
159
167
  def markdown_supported_attributes?
160
168
  case name
161
- when 'div'
169
+ when 'div', 'body'
162
170
  true
163
171
  when 'a'
164
- attribute_names_match?('href', 'title')
172
+ attribute_names_match?('href', 'title') or
173
+ attribute_names_match?('name')
165
174
  when 'img'
166
- attribute_names_match?(%w(alt src), 'title')
175
+ attribute_names_match?('src', %w(alt title))
167
176
  when 'ol', 'ul'
168
177
  attributes.empty? and children.all? do |item|
169
178
  not item.elem? or (item.name == 'li' and item.attributes.empty?)
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+ require 'rspec'
1
3
  require 'remark/hpricot_ext'
2
4
 
3
5
  describe Hpricot, "remark extensions" do
@@ -39,6 +41,7 @@ describe Hpricot, "remark extensions" do
39
41
  end
40
42
  </pre>
41
43
  </div>
44
+ <img src='moo.jpg'>
42
45
  <img src='moo.jpg' alt='cow'>
43
46
  <img src='moo.jpg' alt='cow' width='16'>
44
47
 
@@ -50,7 +53,9 @@ end
50
53
  bar <code>baz</code></p>
51
54
  <p>Foo</p><br><br><p>Bar</p><br>
52
55
  </div>
53
-
56
+
57
+ <hr>
58
+
54
59
  <ul>
55
60
  <li>First</li>
56
61
  <li>Second</li>
@@ -113,6 +118,7 @@ end
113
118
  end
114
119
 
115
120
  it "should support image tags" do
121
+ remark('img').should == '![](moo.jpg)'
116
122
  remark('img[@alt]').should == '![cow](moo.jpg)'
117
123
  remark('img[@width]').should == '<img src="moo.jpg" alt="cow" width="16" />'
118
124
  end
@@ -134,5 +140,9 @@ end
134
140
  it "should support ordered list" do
135
141
  remark('ol').should == "1. First\n2. Second"
136
142
  end
143
+
144
+ it "renders horizontal rule" do
145
+ remark('hr').should == "* * *"
146
+ end
137
147
  end
138
148
 
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+ require 'rspec'
1
3
  require 'remark'
2
4
 
3
5
  describe Remark do
@@ -154,4 +156,23 @@ describe Remark do
154
156
  remark(@html, :scope => '#div2').should == "Only 2 paragraphs\n\nHow disappointing"
155
157
  end
156
158
  end
159
+
160
+ it "handles direct children of BODY and anchors" do
161
+ html = <<-HTML
162
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
163
+ <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
164
+ <head>
165
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
166
+ <title>Sectioned</title>
167
+ </head>
168
+ <body class="chapter">
169
+ <p>Just my luck.</p>
170
+
171
+ <a name="section3" />
172
+ <h2>3. The Red Sun Rises</h2>
173
+ </body>
174
+ </html>
175
+ HTML
176
+ remark(html).should == "Just my luck.\n\n<a name=\"section3\"></a>\n\n## 3. The Red Sun Rises"
177
+ end
157
178
  end
metadata CHANGED
@@ -1,46 +1,55 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: remark
3
- version: !ruby/object:Gem::Version
4
- version: 0.3.1
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.2
5
+ prerelease:
5
6
  platform: ruby
6
- authors:
7
- - "Mislav Marohni\xC4\x87"
7
+ authors:
8
+ - Mislav Marohnić
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
-
12
- date: 2009-11-25 00:00:00 +01:00
13
- default_executable:
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
12
+ date: 2012-11-27 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
16
15
  name: hpricot
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 0.8.2
17
22
  type: :runtime
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
20
- requirements:
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
21
27
  - - ~>
22
- - !ruby/object:Gem::Version
28
+ - !ruby/object:Gem::Version
23
29
  version: 0.8.2
24
- version:
25
- - !ruby/object:Gem::Dependency
30
+ - !ruby/object:Gem::Dependency
26
31
  name: rspec
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: '2.9'
27
38
  type: :development
28
- version_requirement:
29
- version_requirements: !ruby/object:Gem::Requirement
30
- requirements:
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
31
43
  - - ~>
32
- - !ruby/object:Gem::Version
33
- version: 1.2.9
34
- version:
35
- description: Remark turns simple HTML documents or content in web pages to Markdown source.
44
+ - !ruby/object:Gem::Version
45
+ version: '2.9'
46
+ description: Remark turns simple HTML documents or content in web pages to Markdown
47
+ source.
36
48
  email: mislav.marohnic@gmail.com
37
49
  executables: []
38
-
39
50
  extensions: []
40
-
41
51
  extra_rdoc_files: []
42
-
43
- files:
52
+ files:
44
53
  - Rakefile
45
54
  - bin/remark
46
55
  - lib/remark/core_ext.rb
@@ -51,33 +60,29 @@ files:
51
60
  - spec/sample.html
52
61
  - README.markdown
53
62
  - LICENSE
54
- has_rdoc: false
55
- homepage: http://github.com/mislav/remark
63
+ homepage: https://github.com/mislav/remark
56
64
  licenses: []
57
-
58
65
  post_install_message:
59
66
  rdoc_options: []
60
-
61
- require_paths:
67
+ require_paths:
62
68
  - lib
63
- required_ruby_version: !ruby/object:Gem::Requirement
64
- requirements:
65
- - - ">="
66
- - !ruby/object:Gem::Version
67
- version: "0"
68
- version:
69
- required_rubygems_version: !ruby/object:Gem::Requirement
70
- requirements:
71
- - - ">="
72
- - !ruby/object:Gem::Version
73
- version: "0"
74
- version:
69
+ required_ruby_version: !ruby/object:Gem::Requirement
70
+ none: false
71
+ requirements:
72
+ - - ! '>='
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ required_rubygems_version: !ruby/object:Gem::Requirement
76
+ none: false
77
+ requirements:
78
+ - - ! '>='
79
+ - !ruby/object:Gem::Version
80
+ version: '0'
75
81
  requirements: []
76
-
77
82
  rubyforge_project:
78
- rubygems_version: 1.3.5
83
+ rubygems_version: 1.8.23
79
84
  signing_key:
80
85
  specification_version: 3
81
86
  summary: HTML to Markdown converter
82
87
  test_files: []
83
-
88
+ has_rdoc: