md2review 1.10.0 → 1.11.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +87 -0
- data/.travis.yml +5 -0
- data/Gemfile +1 -1
- data/README.md +42 -29
- data/Rakefile +6 -3
- data/lib/md2review/version.rb +1 -1
- data/lib/redcarpet/render/review.rb +7 -1
- data/md2review.gemspec +1 -0
- data/test/review_test.rb +29 -19
- metadata +16 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8c560a9be30a083529292ae26d7a45d9fced085d
|
4
|
+
data.tar.gz: 7ab713f3fda9726c9d138bfe418ef52c57ae2d56
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '00689ab7e51fca52eae36f9137fbed5fde4f90d142b6bdc0e241301023caafb31996441ec4caa7eca3b2ebabc6fa457ba8cafd9607d4bac0cad37f0c7a57b4dd'
|
7
|
+
data.tar.gz: 352be9cc2485f702ddfae7ebddaf941175e7e3f9e3aa93ab53bd3843111634eb9cd343ed953421e0482bdd0954b31f7d1758338c741c479cb23fc3fa13cd9517
|
data/.rubocop.yml
ADDED
@@ -0,0 +1,87 @@
|
|
1
|
+
AllCops:
|
2
|
+
TargetRubyVersion: 2.3
|
3
|
+
DisabledByDefault: true
|
4
|
+
|
5
|
+
Style/HashSyntax:
|
6
|
+
Enabled: true
|
7
|
+
|
8
|
+
Style/EmptyLines:
|
9
|
+
Enabled: true
|
10
|
+
|
11
|
+
Style/TrailingBlankLines:
|
12
|
+
Enabled: true
|
13
|
+
|
14
|
+
Style/TrailingWhitespace:
|
15
|
+
Enabled: true
|
16
|
+
|
17
|
+
Style/MethodDefParentheses:
|
18
|
+
Enabled: true
|
19
|
+
|
20
|
+
|
21
|
+
Style/BarePercentLiterals:
|
22
|
+
EnforcedStyle: percent_q
|
23
|
+
Enabled: true
|
24
|
+
|
25
|
+
# EnforcedStyle: empty_lines => 16 offenses
|
26
|
+
# EnforcedStyle: no_empty_lines => 0 offense
|
27
|
+
Style/EmptyLinesAroundBlockBody:
|
28
|
+
EnforcedStyle: no_empty_lines
|
29
|
+
Enabled: true
|
30
|
+
|
31
|
+
Style/MethodDefParentheses:
|
32
|
+
EnforcedStyle: require_parentheses
|
33
|
+
Enabled: true
|
34
|
+
|
35
|
+
Style/MethodName:
|
36
|
+
EnforcedStyle: snake_case
|
37
|
+
Enabled: true
|
38
|
+
|
39
|
+
Style/SpaceInsideHashLiteralBraces:
|
40
|
+
EnforcedStyle: no_space
|
41
|
+
EnforcedStyleForEmptyBraces: no_space
|
42
|
+
Enabled: true
|
43
|
+
|
44
|
+
Style/SpaceInsideStringInterpolation:
|
45
|
+
EnforcedStyle: no_space
|
46
|
+
Enabled: true
|
47
|
+
|
48
|
+
Style/VariableName:
|
49
|
+
EnforcedStyle: snake_case
|
50
|
+
Enabled: true
|
51
|
+
|
52
|
+
Style/MissingElse:
|
53
|
+
EnforcedStyle: case
|
54
|
+
Enabled: true
|
55
|
+
|
56
|
+
Lint/Debugger:
|
57
|
+
Enabled: true
|
58
|
+
|
59
|
+
Lint/DefEndAlignment:
|
60
|
+
Enabled: true
|
61
|
+
|
62
|
+
Lint/DeprecatedClassMethods:
|
63
|
+
Enabled: true
|
64
|
+
|
65
|
+
Lint/DuplicateCaseCondition:
|
66
|
+
Enabled: true
|
67
|
+
|
68
|
+
Lint/DuplicateMethods:
|
69
|
+
Enabled: true
|
70
|
+
|
71
|
+
Lint/DuplicatedKey:
|
72
|
+
Enabled: true
|
73
|
+
|
74
|
+
Lint/ElseLayout:
|
75
|
+
Enabled: true
|
76
|
+
|
77
|
+
Lint/EndInMethod:
|
78
|
+
Enabled: true
|
79
|
+
|
80
|
+
Lint/HandleExceptions:
|
81
|
+
Enabled: true
|
82
|
+
|
83
|
+
Lint/ImplicitStringConcatenation:
|
84
|
+
Enabled: true
|
85
|
+
|
86
|
+
Lint/MultipleCompare:
|
87
|
+
Enabled: true
|
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# md2review
|
2
2
|
|
3
|
-
[![
|
3
|
+
[![Gem Version](https://badge.fury.io/rb/md2review.svg)](https://badge.fury.io/rb/md2review)
|
4
|
+
[![Build Status](https://secure.travis-ci.org/takahashim/md2review.svg)](https://travis-ci.org/takahashim/md2review)
|
4
5
|
|
5
6
|
md2review is a CLI tool to convert from Markdown into Re:VIEW (http://reviewml.org/ ).
|
6
7
|
This command uses Redcarpet gem to parse markdown.
|
@@ -23,6 +24,7 @@ You can use the commmand md2review as:
|
|
23
24
|
* `--render-table-cation`: support table caption before table like `Table: some captions`
|
24
25
|
* `--parse-no-intra-emphasis`: do not parse emphasis inside of words.
|
25
26
|
* `--parse-autolink`: parse links even when they are not enclosed in `<>` characters.
|
27
|
+
* `--render-empty-image-caption`: use `//image` with caption and use `//indepimage` without caption
|
26
28
|
|
27
29
|
|
28
30
|
## Installation
|
@@ -41,34 +43,45 @@ Or install it yourself as:
|
|
41
43
|
|
42
44
|
## History
|
43
45
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
*
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
*
|
58
|
-
|
59
|
-
|
60
|
-
*
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
46
|
+
### v1.11.0
|
47
|
+
* add: option --empty-image-caption: switch to use `//image` or `//indepimage` with caption
|
48
|
+
|
49
|
+
### v1.10.0
|
50
|
+
* add: option --image-table to support `//imgtable` with `![Table:foo](...)`
|
51
|
+
* fix: olist before/after ulist
|
52
|
+
|
53
|
+
### v1.9.0
|
54
|
+
* fix: fix math support for complex cases
|
55
|
+
|
56
|
+
### v1.8.0
|
57
|
+
* add: option --version
|
58
|
+
* add: option --render-math to support `@<m>{...}` and `//texequation{\n...\n}\n`
|
59
|
+
* add: option --render-table-caption to support `Table: caption`
|
60
|
+
|
61
|
+
### v1.7.0
|
62
|
+
* fix: when href in emphasis (@hanachin)
|
63
|
+
* fix: spaces before image block (@hanachin)
|
64
|
+
* fix: remove inline markup in href content (@hanachin)
|
65
|
+
|
66
|
+
### v1.6.0
|
67
|
+
* special attribute in header need a separator(U+0020) to distinguish from Re:VIEW inline markup
|
68
|
+
(reported by @himajin315 and @yasulab)
|
69
|
+
|
70
|
+
### v1.5.0
|
71
|
+
* support language on code block
|
72
|
+
* add option --render-enable-cmd
|
73
|
+
|
74
|
+
### v1.4.0
|
75
|
+
* fix handling empty cell in `//table`
|
76
|
+
* support header attributes in PHP Markdown Extra
|
77
|
+
|
78
|
+
### v1.3.0
|
79
|
+
* allow images in list items (with `@<icon>`)
|
80
|
+
* add option --disable-image-caption
|
81
|
+
* allow 6th header level
|
82
|
+
* add option --render-link-in-footnote (by @masarakki)
|
83
|
+
* support inline markup in footnote (by @hamano)
|
84
|
+
|
72
85
|
|
73
86
|
## Contributing
|
74
87
|
|
data/Rakefile
CHANGED
@@ -1,10 +1,13 @@
|
|
1
1
|
require "bundler/gem_tasks"
|
2
|
-
|
3
2
|
require 'rake/testtask'
|
3
|
+
require 'rubocop/rake_task'
|
4
|
+
|
4
5
|
Rake::TestTask.new('test:unit') do |t|
|
5
6
|
t.test_files = FileList['test/*_test.rb']
|
6
7
|
end
|
7
8
|
|
8
|
-
|
9
|
+
RuboCop::RakeTask.new
|
10
|
+
|
11
|
+
task default: [:test, :rubocop]
|
9
12
|
|
10
|
-
task :
|
13
|
+
task test: ['test:unit']
|
data/lib/md2review/version.rb
CHANGED
@@ -11,6 +11,12 @@ module Redcarpet
|
|
11
11
|
@header_offset = 0
|
12
12
|
@link_in_footnote = render_extensions[:link_in_footnote]
|
13
13
|
@image_caption = !render_extensions[:disable_image_caption]
|
14
|
+
if render_extensions[:empty_image_caption]
|
15
|
+
@image_caption = false
|
16
|
+
@empty_image_caption = true
|
17
|
+
else
|
18
|
+
@empty_image_caption = false
|
19
|
+
end
|
14
20
|
@image_table = render_extensions[:image_table]
|
15
21
|
if render_extensions[:header_offset]
|
16
22
|
@header_offset = render_extensions[:header_offset]
|
@@ -165,7 +171,7 @@ module Redcarpet
|
|
165
171
|
if @image_table && alt_text =~ /\ATable:\s*(.*)/
|
166
172
|
caption = $1
|
167
173
|
"//imgtable[#{filename}][#{caption}]{\n//}\n"
|
168
|
-
elsif @image_caption
|
174
|
+
elsif @image_caption || (@empty_image_caption && alt_text.to_s.size > 0)
|
169
175
|
"//image[#{filename}][#{alt_text}]{\n//}\n"
|
170
176
|
else
|
171
177
|
"//indepimage[#{filename}]\n"
|
data/md2review.gemspec
CHANGED
data/test/review_test.rb
CHANGED
@@ -37,7 +37,7 @@ class ReVIEWTest < Test::Unit::TestCase
|
|
37
37
|
|
38
38
|
def test_href_in_footnote
|
39
39
|
text = %Q[aaa [foo](http://example.jp/foo), [bar](http://example.jp/bar), [foo2](http://example.jp/foo)]
|
40
|
-
rd = MD2ReVIEW::Markdown.new({:
|
40
|
+
rd = MD2ReVIEW::Markdown.new({link_in_footnote: true},{}).render(text)
|
41
41
|
assert_equal %Q|\n\naaa foo@<fn>{3ccd7167b80081c737b749ad1c27dcdc}, bar@<fn>{9dcab303478e38d32d83ae19daaea9f6}, foo2@<fn>{3ccd7167b80081c737b749ad1c27dcdc}\n\n\n//footnote[3ccd7167b80081c737b749ad1c27dcdc][http://example.jp/foo]\n\n//footnote[9dcab303478e38d32d83ae19daaea9f6][http://example.jp/bar]\n|, rd
|
42
42
|
end
|
43
43
|
|
@@ -88,12 +88,22 @@ class ReVIEWTest < Test::Unit::TestCase
|
|
88
88
|
end
|
89
89
|
|
90
90
|
def test_indepimage
|
91
|
-
rev = render_with({}, "![test](path/to/image.jpg)\n",{:
|
91
|
+
rev = render_with({}, "![test](path/to/image.jpg)\n", {disable_image_caption: true})
|
92
92
|
assert_equal "\n\n//indepimage[image]\n\n\n", rev
|
93
93
|
end
|
94
94
|
|
95
|
+
def test_indepimage_empty
|
96
|
+
rev = render_with({}, "![](path/to/image.jpg)\n", {empty_image_caption: true})
|
97
|
+
assert_equal "\n\n//indepimage[image]\n\n\n", rev
|
98
|
+
end
|
99
|
+
|
100
|
+
def test_indepimage_not_empty
|
101
|
+
rev = render_with({}, "![test](path/to/image.jpg)\n", {empty_image_caption: true})
|
102
|
+
assert_equal "\n\n//image[image][test]{\n//}\n\n\n", rev
|
103
|
+
end
|
104
|
+
|
95
105
|
def test_image_table
|
96
|
-
rev = render_with({}, "![Table:test](path/to/image.jpg)\n",{:
|
106
|
+
rev = render_with({}, "![Table:test](path/to/image.jpg)\n", {image_table: true})
|
97
107
|
assert_equal "\n\n//imgtable[image][test]{\n//}\n\n\n", rev
|
98
108
|
end
|
99
109
|
|
@@ -123,12 +133,12 @@ class ReVIEWTest < Test::Unit::TestCase
|
|
123
133
|
end
|
124
134
|
|
125
135
|
def test_table_with_empty_cell
|
126
|
-
rd = render_with({:
|
136
|
+
rd = render_with({tables: true}, %Q[\n\n| a | b | c |\n|----|----|----|\n| A | B | C |\n| | B | C |\n| .A | B | C |\n\n])
|
127
137
|
assert_equal "//table[tbl1][]{\na\tb\tc\n-----------------\nA\tB\tC\n.\tB\tC\n..A\tB\tC\n//}\n", rd
|
128
138
|
end
|
129
139
|
|
130
140
|
def test_table_with_caption
|
131
|
-
rd = render_with({:
|
141
|
+
rd = render_with({tables: true}, <<-EOB, {table_caption: true})
|
132
142
|
|
133
143
|
Table: caption test
|
134
144
|
|
@@ -150,7 +160,7 @@ EOB
|
|
150
160
|
end
|
151
161
|
|
152
162
|
def test_code_fence_with_caption
|
153
|
-
rd = render_with({:
|
163
|
+
rd = render_with({fenced_code_blocks: true}, %Q[~~~ {caption="test"}\ndef foo\n p "test"\nend\n~~~\n])
|
154
164
|
assert_equal %Q[\n//emlist[test]{\ndef foo\n p "test"\nend\n//}\n], rd
|
155
165
|
end
|
156
166
|
|
@@ -160,41 +170,41 @@ EOB
|
|
160
170
|
end
|
161
171
|
|
162
172
|
def test_code_fence_with_lang
|
163
|
-
rd = render_with({:
|
173
|
+
rd = render_with({fenced_code_blocks: true}, %Q[~~~ruby\ndef foo\n p "test"\nend\n~~~\n])
|
164
174
|
assert_equal %Q[\n//emlist[][ruby]{\ndef foo\n p "test"\nend\n//}\n], rd
|
165
175
|
end
|
166
176
|
|
167
177
|
def test_code_fence_with_console
|
168
|
-
rd = render_with({:
|
178
|
+
rd = render_with({fenced_code_blocks: true}, %Q[~~~console\ndef foo\n p "test"\nend\n~~~\n])
|
169
179
|
assert_equal %Q[\n//emlist[][console]{\ndef foo\n p "test"\nend\n//}\n], rd
|
170
|
-
rd = render_with({:
|
180
|
+
rd = render_with({fenced_code_blocks: true},
|
171
181
|
%Q[~~~console\ndef foo\n p "test"\nend\n~~~\n],
|
172
|
-
{:
|
182
|
+
{enable_cmd: true})
|
173
183
|
assert_equal %Q[\n//cmd{\ndef foo\n p "test"\nend\n//}\n], rd
|
174
184
|
end
|
175
185
|
|
176
186
|
def test_group_ruby
|
177
|
-
rd = render_with({:
|
187
|
+
rd = render_with({ruby: true}, "{電子出版|でんししゅっぱん}を手軽に\n")
|
178
188
|
assert_equal %Q[\n\n@<ruby>{電子出版,でんししゅっぱん}を手軽に\n\n], rd
|
179
189
|
end
|
180
190
|
|
181
191
|
def test_tcy
|
182
|
-
rd = render_with({:
|
192
|
+
rd = render_with({tcy: true}, "昭和^53^年\n")
|
183
193
|
assert_equal %Q[\n\n昭和@<tcy>{53}年\n\n], rd
|
184
194
|
end
|
185
195
|
|
186
196
|
def test_math
|
187
|
-
rd = render_with({}, "その結果、$$y=ax^2+bx+c$$の式が得られます。",{:
|
197
|
+
rd = render_with({}, "その結果、$$y=ax^2+bx+c$$の式が得られます。",{math: true})
|
188
198
|
assert_equal %Q[\n\nその結果、@<m>{y=ax^2+bx+c}の式が得られます。\n\n], rd
|
189
199
|
end
|
190
200
|
|
191
201
|
def test_multi_math
|
192
|
-
rd = render_with({}, "その結果、$$y=a_2x^2+b_2x+c_2$$の式が得られます。$$a_2$$は2次の係数、$$b_2$$は1次の係数、$$c_2$$は定数です。",{:
|
202
|
+
rd = render_with({}, "その結果、$$y=a_2x^2+b_2x+c_2$$の式が得られます。$$a_2$$は2次の係数、$$b_2$$は1次の係数、$$c_2$$は定数です。",{math: true})
|
193
203
|
assert_equal %Q[\n\nその結果、@<m>{y=a_2x^2+b_2x+c_2}の式が得られます。@<m>{a_2}は2次の係数、@<m>{b_2}は1次の係数、@<m>{c_2}は定数です。\n\n], rd
|
194
204
|
end
|
195
205
|
|
196
206
|
def test_math2
|
197
|
-
rd = render_with({}, <<-'EOB',{:
|
207
|
+
rd = render_with({}, <<-'EOB',{math: true})
|
198
208
|
$$X = \{ {x_1}, \cdots ,{x_n} \}$$、$$m$$、$${\mu _X}$$、$$\sigma _X^2$$、$$\{ {\hat x_1}, \cdots ,{\hat x_n} \}$$
|
199
209
|
|
200
210
|
$$\mathbf{W} = ({w_1}, \cdots ,{w_n})$$、$$\sqrt {w_1^2 + \cdots + w_n^2} $$、$$\left| {w_1^{}} \right| + \left| {w_2^{}} \right| + \cdots + \left| {w_n^{}} \right|$$。
|
@@ -212,12 +222,12 @@ EOB
|
|
212
222
|
end
|
213
223
|
|
214
224
|
def test_no_math
|
215
|
-
rd = render_with({}, "その結果、$$y=ax^2+bx+c$$の式が得られます。",{:
|
225
|
+
rd = render_with({}, "その結果、$$y=ax^2+bx+c$$の式が得られます。",{math: false})
|
216
226
|
assert_equal %Q[\n\nその結果、$$y=ax^2+bx+c$$の式が得られます。\n\n], rd
|
217
227
|
end
|
218
228
|
|
219
229
|
def test_math_block
|
220
|
-
rd = render_with({:
|
230
|
+
rd = render_with({fenced_code_blocks: true}, <<-EOB,{math: true})
|
221
231
|
求める式は以下のようになります。
|
222
232
|
|
223
233
|
```math
|
@@ -237,12 +247,12 @@ EOB
|
|
237
247
|
end
|
238
248
|
|
239
249
|
def test_footnote
|
240
|
-
rd = render_with({:
|
250
|
+
rd = render_with({footnotes: true}, "これは*脚注*付き[^1]の段落です。\n\n\n[^1]: そして、これが脚注です。\n")
|
241
251
|
assert_equal %Q|\n\nこれは@<b>{脚注}付き@<fn>{1}の段落です。\n\n\n//footnote[1][そして、これが脚注です。]\n|, rd
|
242
252
|
end
|
243
253
|
|
244
254
|
def test_autolink
|
245
|
-
rd = render_with({:
|
255
|
+
rd = render_with({autolink: true}, "リンクの[テスト](http://example.jp/test)です。\nhttp://example.jp/test2/\n")
|
246
256
|
assert_equal %Q[\n\nリンクの@<href>{http://example.jp/test,テスト}です。\n@<href>{http://example.jp/test2/}\n\n], rd
|
247
257
|
end
|
248
258
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: md2review
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.11.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- takahashim
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rubocop
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
55
69
|
description: a converter from Markdown to Re:VIEW. It uses redcarpet.
|
56
70
|
email:
|
57
71
|
- takahashimm@gmail.com
|
@@ -61,6 +75,7 @@ extensions: []
|
|
61
75
|
extra_rdoc_files: []
|
62
76
|
files:
|
63
77
|
- ".gitignore"
|
78
|
+
- ".rubocop.yml"
|
64
79
|
- ".travis.yml"
|
65
80
|
- Gemfile
|
66
81
|
- LICENSE.txt
|