remark 0.3.1 → 0.3.2
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/README.markdown +2 -0
- data/Rakefile +0 -27
- data/lib/remark/hpricot_ext.rb +15 -6
- data/spec/hpricot_ext_spec.rb +11 -1
- data/spec/remark_spec.rb +21 -0
- metadata +52 -47
data/README.markdown
CHANGED
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
|
data/lib/remark/hpricot_ext.rb
CHANGED
@@ -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
|
-
|
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
|
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?)
|
data/spec/hpricot_ext_spec.rb
CHANGED
@@ -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 == ''
|
116
122
|
remark('img[@alt]').should == ''
|
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
|
|
data/spec/remark_spec.rb
CHANGED
@@ -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.
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.3.2
|
5
|
+
prerelease:
|
5
6
|
platform: ruby
|
6
|
-
authors:
|
7
|
-
-
|
7
|
+
authors:
|
8
|
+
- Mislav Marohnić
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
|
12
|
-
|
13
|
-
|
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
|
-
|
19
|
-
version_requirements: !ruby/object:Gem::Requirement
|
20
|
-
|
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
|
-
|
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
|
-
|
29
|
-
version_requirements: !ruby/object:Gem::Requirement
|
30
|
-
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
31
43
|
- - ~>
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version:
|
34
|
-
|
35
|
-
|
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
|
-
|
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
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
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.
|
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:
|