pandoc2review 1.5.0 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/lint.yml +14 -0
- data/.github/workflows/pandoc.yml +1 -1
- data/.rubocop.yml +305 -0
- data/Gemfile +0 -2
- data/README.md +10 -1
- data/Rakefile +13 -3
- data/exe/pandoc2review +1 -2
- data/lib/pandoc2review.rb +17 -10
- data/lua/filters.lua +32 -69
- data/lua/review.lua +301 -170
- data/pandoc2review.gemspec +23 -16
- data/stylua.toml +3 -0
- metadata +62 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5920e240b004f5ddbbdad1773109673183325ea838daf3a96dc140156c1995fa
|
4
|
+
data.tar.gz: c13ded6150f3a5f64fec9845cc3195c33b7601dd4326245195e66ff754959866
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 40d92ef8d7e3cf1534c579a1bfd783d4971af5ecc570644da20515a0117e1ae2ba1dd46cde9bf07e56adf30a512561fe9b888b47756f68babb3b13ecacc6ba87
|
7
|
+
data.tar.gz: 210316797f1fa487b619f42da293cda5a57129a04dacfee1d2b8b0d7695fa6818823f3fa481a1745b834bfaa78609e8cdb0b8129a8758f300b9881954138be14
|
data/.rubocop.yml
ADDED
@@ -0,0 +1,305 @@
|
|
1
|
+
AllCops:
|
2
|
+
Exclude:
|
3
|
+
- samples/**/*
|
4
|
+
DisplayCopNames: true
|
5
|
+
NewCops: enable
|
6
|
+
TargetRubyVersion: 2.7
|
7
|
+
|
8
|
+
require:
|
9
|
+
- rubocop-performance
|
10
|
+
- rubocop-rake
|
11
|
+
|
12
|
+
#### Lint
|
13
|
+
|
14
|
+
Lint/NestedMethodDefinition:
|
15
|
+
Exclude:
|
16
|
+
- 'test/*'
|
17
|
+
|
18
|
+
Lint/AssignmentInCondition:
|
19
|
+
Enabled: false
|
20
|
+
|
21
|
+
Lint/ErbNewArguments:
|
22
|
+
Enabled: false
|
23
|
+
|
24
|
+
# make it enable when supporting only Ruby 3.0 and higher.
|
25
|
+
Lint/RedundantDirGlobSort:
|
26
|
+
Enabled: false
|
27
|
+
|
28
|
+
#### Performance
|
29
|
+
|
30
|
+
Performance/DeletePrefix:
|
31
|
+
Enabled: false
|
32
|
+
|
33
|
+
Performance/StringInclude:
|
34
|
+
Enabled: false
|
35
|
+
|
36
|
+
Performance/CollectionLiteralInLoop:
|
37
|
+
Enabled: false
|
38
|
+
|
39
|
+
Performance/MapCompact:
|
40
|
+
Enabled: false
|
41
|
+
|
42
|
+
#### Style
|
43
|
+
|
44
|
+
Style/AsciiComments:
|
45
|
+
Enabled: false
|
46
|
+
|
47
|
+
# Use alias_method instead of alias.
|
48
|
+
Style/Alias:
|
49
|
+
EnforcedStyle: prefer_alias_method
|
50
|
+
Enabled: true
|
51
|
+
|
52
|
+
Style/BarePercentLiterals:
|
53
|
+
EnforcedStyle: percent_q
|
54
|
+
Enabled: true
|
55
|
+
|
56
|
+
Style/CommentedKeyword:
|
57
|
+
Enabled: false
|
58
|
+
|
59
|
+
Style/DocumentDynamicEvalDefinition:
|
60
|
+
Enabled: false
|
61
|
+
|
62
|
+
Style/Documentation:
|
63
|
+
Enabled: false
|
64
|
+
|
65
|
+
Style/FormatString:
|
66
|
+
EnforcedStyle: sprintf
|
67
|
+
Enabled: true
|
68
|
+
|
69
|
+
Style/FormatStringToken:
|
70
|
+
Enabled: false
|
71
|
+
|
72
|
+
Style/GuardClause:
|
73
|
+
Enabled: false
|
74
|
+
|
75
|
+
Style/IfUnlessModifier:
|
76
|
+
Enabled: false
|
77
|
+
|
78
|
+
Style/MutableConstant:
|
79
|
+
Enabled: false
|
80
|
+
|
81
|
+
Style/ZeroLengthPredicate:
|
82
|
+
Enabled: false
|
83
|
+
|
84
|
+
Style/NumericPredicate:
|
85
|
+
EnforcedStyle: comparison
|
86
|
+
Enabled: true
|
87
|
+
|
88
|
+
Style/TernaryParentheses:
|
89
|
+
Enabled: false
|
90
|
+
|
91
|
+
Style/FrozenStringLiteralComment:
|
92
|
+
EnforcedStyle: never
|
93
|
+
Enabled: true
|
94
|
+
|
95
|
+
Style/SafeNavigation:
|
96
|
+
Enabled: false
|
97
|
+
|
98
|
+
Style/EmptyMethod:
|
99
|
+
EnforcedStyle: expanded
|
100
|
+
Enabled: true
|
101
|
+
|
102
|
+
Style/RescueModifier:
|
103
|
+
Enabled: false
|
104
|
+
|
105
|
+
Style/ClassAndModuleChildren:
|
106
|
+
EnforcedStyle: nested
|
107
|
+
Enabled: true
|
108
|
+
|
109
|
+
Style/LineEndConcatenation:
|
110
|
+
Enabled: false
|
111
|
+
|
112
|
+
Style/MethodCallWithArgsParentheses:
|
113
|
+
AllowedPatterns:
|
114
|
+
- 'require'
|
115
|
+
- 'include'
|
116
|
+
- 'file'
|
117
|
+
- 'task'
|
118
|
+
- 'desc'
|
119
|
+
- 'info'
|
120
|
+
- 'gem'
|
121
|
+
- 'exit'
|
122
|
+
- 'print'
|
123
|
+
- 'puts'
|
124
|
+
- 'write'
|
125
|
+
- 'warn'
|
126
|
+
- 'error'
|
127
|
+
- 'error!'
|
128
|
+
- 'app_error'
|
129
|
+
- 'raise'
|
130
|
+
- 'yield'
|
131
|
+
- 'source'
|
132
|
+
- 'assert'
|
133
|
+
- 'assert_equal'
|
134
|
+
- 'assert_raise'
|
135
|
+
- 'assert_raises'
|
136
|
+
- 'assert_nothing_raised'
|
137
|
+
- 'sh'
|
138
|
+
- 'mv'
|
139
|
+
- 'rm_rf'
|
140
|
+
Enabled: true
|
141
|
+
|
142
|
+
Style/MixinUsage:
|
143
|
+
Enabled: false
|
144
|
+
|
145
|
+
Style/NumericLiterals:
|
146
|
+
MinDigits: 6
|
147
|
+
|
148
|
+
Style/PercentQLiterals:
|
149
|
+
EnforcedStyle: upper_case_q
|
150
|
+
Enabled: true
|
151
|
+
|
152
|
+
Style/PerlBackrefs:
|
153
|
+
Enabled: false
|
154
|
+
|
155
|
+
Style/RaiseArgs:
|
156
|
+
EnforcedStyle: exploded
|
157
|
+
Enabled: true
|
158
|
+
|
159
|
+
Style/RedundantBegin:
|
160
|
+
Enabled: false
|
161
|
+
|
162
|
+
Style/RedundantReturn:
|
163
|
+
Enabled: false
|
164
|
+
|
165
|
+
Style/RedundantSelf:
|
166
|
+
Enabled: false
|
167
|
+
|
168
|
+
Style/StderrPuts:
|
169
|
+
Enabled: false
|
170
|
+
|
171
|
+
Style/WordArray:
|
172
|
+
MinSize: 10
|
173
|
+
|
174
|
+
Style/RedundantPercentQ:
|
175
|
+
Enabled: false
|
176
|
+
|
177
|
+
Style/WhileUntilModifier:
|
178
|
+
Enabled: false
|
179
|
+
|
180
|
+
Style/SlicingWithRange:
|
181
|
+
Enabled: false
|
182
|
+
|
183
|
+
Style/AccessorGrouping:
|
184
|
+
Enabled: false
|
185
|
+
|
186
|
+
Style/CaseLikeIf:
|
187
|
+
Enabled: false
|
188
|
+
|
189
|
+
Style/StringConcatenation:
|
190
|
+
Enabled: false
|
191
|
+
|
192
|
+
Style/OptionalBooleanParameter:
|
193
|
+
Enabled: false
|
194
|
+
|
195
|
+
Style/CombinableLoops:
|
196
|
+
Enabled: false
|
197
|
+
|
198
|
+
Style/FetchEnvVar:
|
199
|
+
Enabled: false
|
200
|
+
|
201
|
+
### Layout
|
202
|
+
|
203
|
+
Layout/BlockAlignment:
|
204
|
+
Enabled: false
|
205
|
+
|
206
|
+
Layout/ClosingHeredocIndentation:
|
207
|
+
Enabled: false
|
208
|
+
|
209
|
+
Layout/DotPosition:
|
210
|
+
EnforcedStyle: trailing
|
211
|
+
Enabled: true
|
212
|
+
|
213
|
+
Layout/HeredocIndentation:
|
214
|
+
Enabled: false
|
215
|
+
|
216
|
+
Layout/SpaceAroundBlockParameters:
|
217
|
+
EnforcedStyleInsidePipes: no_space
|
218
|
+
Enabled: true
|
219
|
+
|
220
|
+
Layout/SpaceInsideStringInterpolation:
|
221
|
+
EnforcedStyle: no_space
|
222
|
+
Enabled: true
|
223
|
+
|
224
|
+
Layout/TrailingWhitespace:
|
225
|
+
Enabled: true
|
226
|
+
AllowInHeredoc: true
|
227
|
+
|
228
|
+
Layout/LineLength:
|
229
|
+
Max: 256
|
230
|
+
Exclude:
|
231
|
+
- "test/**/*"
|
232
|
+
|
233
|
+
#### Metrics
|
234
|
+
|
235
|
+
Metrics/BlockNesting:
|
236
|
+
Max: 4
|
237
|
+
|
238
|
+
Metrics/ModuleLength:
|
239
|
+
Max: 300
|
240
|
+
|
241
|
+
Metrics/ParameterLists:
|
242
|
+
Max: 8
|
243
|
+
|
244
|
+
Metrics/PerceivedComplexity:
|
245
|
+
Max: 28
|
246
|
+
|
247
|
+
Metrics/ClassLength:
|
248
|
+
Max: 1500
|
249
|
+
Exclude:
|
250
|
+
- 'test/*.rb'
|
251
|
+
|
252
|
+
### should be < 50
|
253
|
+
Metrics/MethodLength:
|
254
|
+
Max: 100
|
255
|
+
Exclude:
|
256
|
+
- "bin/review-*"
|
257
|
+
- "bin/review2*"
|
258
|
+
- "test/**/*"
|
259
|
+
|
260
|
+
### should be < 20
|
261
|
+
Metrics/CyclomaticComplexity:
|
262
|
+
Max: 25
|
263
|
+
|
264
|
+
### should be < 60
|
265
|
+
Metrics/AbcSize:
|
266
|
+
Max: 120
|
267
|
+
Exclude:
|
268
|
+
- "bin/review-*"
|
269
|
+
- "test/**/*"
|
270
|
+
|
271
|
+
### shoud be < 25
|
272
|
+
Metrics/BlockLength:
|
273
|
+
CountComments: false # count full line comments?
|
274
|
+
Max: 62
|
275
|
+
Exclude:
|
276
|
+
- 'Rakefile'
|
277
|
+
- '**/*.rake'
|
278
|
+
- 'test/**/*.rb'
|
279
|
+
|
280
|
+
## Naming
|
281
|
+
|
282
|
+
Naming/FileName:
|
283
|
+
Enabled: false
|
284
|
+
|
285
|
+
Naming/HeredocDelimiterNaming:
|
286
|
+
Enabled: false
|
287
|
+
|
288
|
+
Naming/MethodParameterName:
|
289
|
+
Enabled: false
|
290
|
+
|
291
|
+
Naming/VariableNumber:
|
292
|
+
EnforcedStyle: normalcase
|
293
|
+
Enabled: true
|
294
|
+
Exclude:
|
295
|
+
- test/*
|
296
|
+
|
297
|
+
#### Security
|
298
|
+
|
299
|
+
#### Gemspec
|
300
|
+
|
301
|
+
Gemspec/RequiredRubyVersion:
|
302
|
+
Enabled: false
|
303
|
+
|
304
|
+
Gemspec/DevelopmentDependencies:
|
305
|
+
EnforcedStyle: gemspec
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -47,7 +47,7 @@ pandoc2review file > file.re
|
|
47
47
|
|
48
48
|
## Copyright
|
49
49
|
|
50
|
-
Copyright 2020-2023 Kenshi Muto
|
50
|
+
Copyright 2020-2023 Kenshi Muto and atusy
|
51
51
|
|
52
52
|
GNU General Public License Version 2
|
53
53
|
|
@@ -57,6 +57,14 @@ GNU General Public License Version 2
|
|
57
57
|
- [@takahashim](https://github.com/takahashim)
|
58
58
|
|
59
59
|
## Changelog
|
60
|
+
### 2.0.0
|
61
|
+
- Full refactoring for Pandoc 3 model. Thanks atusy for your hard work!
|
62
|
+
- Introduce rubocop and regression tests.
|
63
|
+
|
64
|
+
### 1.6.0
|
65
|
+
- Fix inline raw.
|
66
|
+
- Refactoring.
|
67
|
+
|
60
68
|
### 1.5.0
|
61
69
|
- Support Pandoc 3.
|
62
70
|
|
@@ -119,6 +127,7 @@ pandoc2review ファイル名 > ファイル名.re
|
|
119
127
|
- `--shiftheading <数>`: 見出しレベルに <数> だけ加えます (pandoc >= 2.8)
|
120
128
|
- `--disable-eaw`: Ruby の EAW ライブラリを使った段落構築を使いません
|
121
129
|
- `--hideraw`: raw 判定されたインライン・ブロックを出力に含めません
|
130
|
+
- `--classic-writer`: Pandoc 3 で Pando 2 互換のクラシックカスタム Writer モードを使います
|
122
131
|
|
123
132
|
## 仕様など
|
124
133
|
- [pandoc2review における Markdown 形式処理の注意事項](markdown-format.ja.md)
|
data/Rakefile
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require 'bundler/gem_tasks'
|
2
|
+
require 'rake/testtask'
|
3
3
|
|
4
4
|
desc 'Run tests'
|
5
5
|
task :test, :target do |_, argv|
|
@@ -10,4 +10,14 @@ task :test, :target do |_, argv|
|
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|
13
|
-
|
13
|
+
desc 'Check with rubocop'
|
14
|
+
task :rubocop do
|
15
|
+
begin
|
16
|
+
require 'rubocop/rake_task'
|
17
|
+
RuboCop::RakeTask.new
|
18
|
+
rescue LoadError
|
19
|
+
$stderr.puts 'rubocop not found'
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
task default: %i[rubocop test]
|
data/exe/pandoc2review
CHANGED
data/lib/pandoc2review.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
1
|
# Copyright 2020-2023 Kenshi Muto
|
3
2
|
require 'optparse'
|
4
3
|
require 'unicode/eaw'
|
@@ -7,7 +6,7 @@ require 'open3'
|
|
7
6
|
|
8
7
|
class Pandoc2ReVIEW
|
9
8
|
def main
|
10
|
-
luadir = (
|
9
|
+
luadir = (Pathname.new(__FILE__).realpath.dirname + '../lua').realpath
|
11
10
|
parse_args
|
12
11
|
|
13
12
|
ARGV.each do |file|
|
@@ -17,20 +16,24 @@ class Pandoc2ReVIEW
|
|
17
16
|
end
|
18
17
|
args = ['pandoc', '-t', File.join(luadir, 'review.lua'), '--lua-filter', File.join(luadir, 'filters.lua')]
|
19
18
|
|
20
|
-
if file
|
19
|
+
if file.match?(/\.md$/i)
|
21
20
|
args += ['-f', 'markdown-auto_identifiers-smart+east_asian_line_breaks']
|
22
21
|
|
23
22
|
if @disableeaw
|
24
|
-
args += ['-M',
|
23
|
+
args += ['-M', 'softbreak:true']
|
25
24
|
end
|
26
25
|
|
27
26
|
if @hideraw
|
28
|
-
args += ['-M',
|
27
|
+
args += ['-M', 'hideraw:true']
|
29
28
|
end
|
30
29
|
end
|
31
30
|
|
32
31
|
if @stripemptydev
|
33
|
-
args += ['-M',
|
32
|
+
args += ['-M', 'stripemptydev:true']
|
33
|
+
end
|
34
|
+
|
35
|
+
if @classicwriter
|
36
|
+
args += ['-M', 'classicwriter:true']
|
34
37
|
end
|
35
38
|
|
36
39
|
if @heading
|
@@ -41,7 +44,7 @@ class Pandoc2ReVIEW
|
|
41
44
|
|
42
45
|
stdout, stderr, status = Open3.capture3(*args)
|
43
46
|
unless status.success?
|
44
|
-
|
47
|
+
$stderr.puts stderr
|
45
48
|
exit 1
|
46
49
|
end
|
47
50
|
print modify_result(stdout)
|
@@ -53,9 +56,10 @@ class Pandoc2ReVIEW
|
|
53
56
|
@disableeaw = nil
|
54
57
|
@hideraw = nil
|
55
58
|
@stripemptydev = nil
|
59
|
+
@classicwriter = nil
|
56
60
|
opts = OptionParser.new
|
57
61
|
opts.banner = 'Usage: pandoc2review [option] file [file ...]'
|
58
|
-
opts.version = '
|
62
|
+
opts.version = '2.0'
|
59
63
|
|
60
64
|
opts.on('--help', 'Prints this message and quit.') do
|
61
65
|
puts opts.help
|
@@ -67,12 +71,15 @@ class Pandoc2ReVIEW
|
|
67
71
|
opts.on('--disable-eaw', "Disable compositing a paragraph with Ruby's EAW library.") do
|
68
72
|
@disableeaw = true
|
69
73
|
end
|
70
|
-
opts.on('--hideraw',
|
74
|
+
opts.on('--hideraw', 'Hide raw inline/block with no review format specified.') do
|
71
75
|
@hideraw = true
|
72
76
|
end
|
73
|
-
opts.on('--strip-emptydev',
|
77
|
+
opts.on('--strip-emptydev', 'Strip <div> without any id or class') do
|
74
78
|
@stripemptydev = true
|
75
79
|
end
|
80
|
+
opts.on('--classic-writer', 'Prefer classic custom writer on Pandoc 3.x to be compatible with Pandoc 2.x') do
|
81
|
+
@classicwriter = true
|
82
|
+
end
|
76
83
|
|
77
84
|
begin
|
78
85
|
opts.parse!(ARGV)
|
data/lua/filters.lua
CHANGED
@@ -1,18 +1,14 @@
|
|
1
1
|
-- Copyright 2020-2023 atusy and Kenshi Muto
|
2
2
|
|
3
3
|
local function review_inline(x)
|
4
|
-
|
4
|
+
return pandoc.RawInline("review", x)
|
5
5
|
end
|
6
6
|
|
7
|
-
local beginchild = {pandoc.Plain(review_inline("//beginchild"))}
|
8
|
-
local endchild = {pandoc.Plain(review_inline("//endchild"))}
|
7
|
+
local beginchild = { pandoc.Plain(review_inline("//beginchild")) }
|
8
|
+
local endchild = { pandoc.Plain(review_inline("//endchild")) }
|
9
9
|
|
10
10
|
local function markdown(text)
|
11
|
-
return pandoc.read(
|
12
|
-
text,
|
13
|
-
"markdown-auto_identifiers-smart+east_asian_line_breaks",
|
14
|
-
PANDOC_READER_OPTIONS
|
15
|
-
).blocks[1].content
|
11
|
+
return pandoc.read(text, "markdown-auto_identifiers-smart+east_asian_line_breaks", PANDOC_READER_OPTIONS).blocks[1].content
|
16
12
|
end
|
17
13
|
|
18
14
|
local function support_blankline(constructor)
|
@@ -24,12 +20,12 @@ local function support_blankline(constructor)
|
|
24
20
|
]]
|
25
21
|
local construct = constructor or pandoc.Para
|
26
22
|
return function(x)
|
27
|
-
local blocks = {construct({})}
|
23
|
+
local blocks = { construct({}) }
|
28
24
|
local i = 1
|
29
25
|
local n_break = 0
|
30
26
|
local content = blocks[i].content
|
31
27
|
|
32
|
-
for
|
28
|
+
for _, elem in ipairs(x.content) do
|
33
29
|
if elem.tag == "LineBreak" then
|
34
30
|
-- Count the repeated number of LineBreak
|
35
31
|
n_break = n_break + 1
|
@@ -40,8 +36,8 @@ local function support_blankline(constructor)
|
|
40
36
|
n_break = 0
|
41
37
|
elseif n_break > 1 then
|
42
38
|
-- Convert LineBreak's into //blankline commands
|
43
|
-
table.insert(blocks, pandoc.Div({}, {blankline = n_break - 1}))
|
44
|
-
table.insert(blocks, construct({elem}))
|
39
|
+
table.insert(blocks, pandoc.Div({}, { blankline = n_break - 1 }))
|
40
|
+
table.insert(blocks, construct({ elem }))
|
45
41
|
i = i + 2
|
46
42
|
content = blocks[i].content
|
47
43
|
n_break = 0
|
@@ -68,7 +64,7 @@ local function nestablelist(elem)
|
|
68
64
|
elseif second.tag then
|
69
65
|
table.insert(block, 2, pandoc.BulletList(beginchild))
|
70
66
|
else
|
71
|
-
for _,definition in ipairs(second) do
|
67
|
+
for _, definition in ipairs(second) do
|
72
68
|
if definition[2] then
|
73
69
|
table.insert(definition, 2, pandoc.BulletList(beginchild))
|
74
70
|
table.insert(definition, pandoc.BulletList(endchild))
|
@@ -98,7 +94,7 @@ local function support_strong(child)
|
|
98
94
|
]]
|
99
95
|
return function(elem)
|
100
96
|
if (#elem.content == 1) and (elem.content[1].tag == child) then
|
101
|
-
return pandoc.Span(elem.content[1].content, {class =
|
97
|
+
return pandoc.Span(elem.content[1].content, { class = "strong" })
|
102
98
|
end
|
103
99
|
end
|
104
100
|
end
|
@@ -107,23 +103,21 @@ local function caption_div(div)
|
|
107
103
|
local class = div.classes[1]
|
108
104
|
local caption = div.attributes.caption
|
109
105
|
|
110
|
-
if
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
106
|
+
if
|
107
|
+
(#div.content == 1)
|
108
|
+
and div.content[1].content
|
109
|
+
and (#div.content[1].content == 1)
|
110
|
+
and (div.content[1].content[1].tag == "Math")
|
111
|
+
and div.identifier
|
112
|
+
then
|
115
113
|
class = "texequation[" .. div.identifier .. "]"
|
116
|
-
local math_text = (div.content[1].content[1].text
|
117
|
-
):gsub("^\n+", ""):gsub("\n+$", "")
|
114
|
+
local math_text = (div.content[1].content[1].text):gsub("^\n+", ""):gsub("\n+$", "")
|
118
115
|
|
119
116
|
if caption == nil then
|
120
|
-
return pandoc.RawBlock(
|
121
|
-
"review",
|
122
|
-
"//" .. class .. "{\n" .. math_text .. "\n//}"
|
123
|
-
)
|
117
|
+
return pandoc.RawBlock("review", "//" .. class .. "{\n" .. math_text .. "\n//}")
|
124
118
|
end
|
125
119
|
|
126
|
-
div.content = {pandoc.RawBlock("review", math_text)}
|
120
|
+
div.content = { pandoc.RawBlock("review", math_text) }
|
127
121
|
end
|
128
122
|
|
129
123
|
if class == nil then
|
@@ -136,17 +130,15 @@ local function caption_div(div)
|
|
136
130
|
table.insert(begin.content, review_inline("]{<P2RREMOVEBELOW/>"))
|
137
131
|
table.insert(div.content, 1, begin)
|
138
132
|
table.insert(div.content, pandoc.RawBlock("review", "<P2RREMOVEABOVE/>//}"))
|
139
|
-
div.classes = {"review-internal"}
|
133
|
+
div.classes = { "review-internal" }
|
140
134
|
return div
|
141
135
|
end
|
142
136
|
end
|
143
137
|
|
144
138
|
local function noindent(para)
|
145
|
-
first = para.content[1]
|
139
|
+
local first = para.content[1]
|
146
140
|
|
147
|
-
if
|
148
|
-
(first.format == "tex") and
|
149
|
-
(first.text:match("^\\noindent%s*"))) then
|
141
|
+
if first and (first.tag == "RawInline") and (first.format == "tex") and (first.text:match("^\\noindent%s*")) then
|
150
142
|
para.content[1] = review_inline("//noindent\n")
|
151
143
|
if para.content[2].tag == "SoftBreak" then
|
152
144
|
table.remove(para.content, 2)
|
@@ -156,44 +148,15 @@ local function noindent(para)
|
|
156
148
|
return para
|
157
149
|
end
|
158
150
|
|
159
|
-
local function figure(fig)
|
160
|
-
-- Pandoc 3.x adds pandoc.Figure
|
161
|
-
if #fig.content > 1 or #fig.content[1].content > 1 then
|
162
|
-
error("NotImplemented")
|
163
|
-
end
|
164
|
-
|
165
|
-
local base = fig.content[1].content[1]
|
166
|
-
|
167
|
-
local attr = {}
|
168
|
-
for k, v in pairs(base.attributes) do
|
169
|
-
attr[k] = v
|
170
|
-
end
|
171
|
-
local classes = {}
|
172
|
-
for _, v in pairs(base.classes) do
|
173
|
-
table.insert(classes, "." .. v)
|
174
|
-
end
|
175
|
-
attr.classes = table.concat(classes, " ")
|
176
|
-
attr.identifier = base.attr.identifier
|
177
|
-
attr.is_figure = "true"
|
178
|
-
|
179
|
-
return pandoc.Image(
|
180
|
-
base.title,
|
181
|
-
base.src,
|
182
|
-
pandoc.utils.stringify(fig.caption),
|
183
|
-
attr
|
184
|
-
)
|
185
|
-
end
|
186
|
-
|
187
151
|
return {
|
188
|
-
{Emph = support_strong("Strong")},
|
189
|
-
{Strong = support_strong("Emph")},
|
190
|
-
{Plain = support_blankline(pandoc.Plain)},
|
191
|
-
{Para = support_blankline(pandoc.Para)},
|
192
|
-
{Para = noindent},
|
152
|
+
{ Emph = support_strong("Strong") },
|
153
|
+
{ Strong = support_strong("Emph") },
|
154
|
+
{ Plain = support_blankline(pandoc.Plain) },
|
155
|
+
{ Para = support_blankline(pandoc.Para) },
|
156
|
+
{ Para = noindent },
|
193
157
|
-- blankline must be processed before lists
|
194
|
-
{BulletList = nestablelist},
|
195
|
-
{OrderedList = nestablelist},
|
196
|
-
{DefinitionList = nestablelist},
|
197
|
-
{Div = caption_div},
|
198
|
-
{Figure = figure},
|
158
|
+
{ BulletList = nestablelist },
|
159
|
+
{ OrderedList = nestablelist },
|
160
|
+
{ DefinitionList = nestablelist },
|
161
|
+
{ Div = caption_div },
|
199
162
|
}
|