pandoc2review 1.4.0 → 1.6.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8adcffddd4264746fd310194473ea979a7f884edda769a164fbbf9caa4a40fb0
4
- data.tar.gz: b42b6d77e327254cd472a356736885735984742d16acabf360d337b1fdf09611
3
+ metadata.gz: 4cfd0215db986170226f60ea72af5f323ca588196b0622cfaddd14fe16dbbd0e
4
+ data.tar.gz: b14fcc9ad8b5146dcbb13fe6e5f3bea7eb66d991596bef2f20fd6c649af4e1b8
5
5
  SHA512:
6
- metadata.gz: 2b45bf183261d07b0970b8afdfe6f24a68f63aca8505bb082237140b6d377982697f1fecc5463d255cabb5ac38920ebf838b76cfc9feca8d61f9359ff121f32a
7
- data.tar.gz: bea497ce7dba3bba8eaaefd41975bb820840803cf71260ce02901bfa5f30bc572d8c1706bbb68aa38f1d984fb980988fa9aba4c684e095c97d18daeffadce54e
6
+ metadata.gz: 1c441ec53f24068da40cbb31c83a0adce2a80c38c6dcb705227d4a147f019be367bd79b7d9afa7482ecd06d976e2503f5f4ca33cda6af85d63a14994875248fa
7
+ data.tar.gz: 68f1bfaece899793dc563c423387da38d73574122d90cb98fca45d807f0e35e855eb3d2d67f898965f38f337c6c59dbe219cf37ff41c2f52362e4989dc28e663
@@ -4,14 +4,20 @@ on: [push, pull_request]
4
4
  jobs:
5
5
  Pandoc:
6
6
  runs-on: ubuntu-latest
7
+ timeout-minutes: 5
8
+ strategy:
9
+ fail-fast: false
10
+ matrix:
11
+ ruby: ['2.7', '3.1']
12
+ pandoc: ['2.11.3', '3.1.4']
7
13
  steps:
8
14
  - uses: actions/checkout@master
9
15
  - uses: ruby/setup-ruby@v1
10
16
  with:
11
- ruby-version: '2.7'
17
+ ruby-version: ${{ matrix.ruby }}
12
18
  - uses: r-lib/actions/setup-pandoc@v1
13
19
  with:
14
- pandoc-version: '2.11.3'
20
+ pandoc-version: ${{ matrix.pandoc }}
15
21
  - run: |
16
22
  gem install bundler --no-document
17
23
  bundle install --retry 3
data/README.md CHANGED
@@ -47,7 +47,7 @@ pandoc2review file > file.re
47
47
 
48
48
  ## Copyright
49
49
 
50
- Copyright 2020-2021 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,13 @@ GNU General Public License Version 2
57
57
  - [@takahashim](https://github.com/takahashim)
58
58
 
59
59
  ## Changelog
60
+ ### 1.6.0
61
+ - Fix inline raw.
62
+ - Refactoring.
63
+
64
+ ### 1.5.0
65
+ - Support Pandoc 3.
66
+
60
67
  ### 1.4.0
61
68
  - Fix an error when empty div block is received.
62
69
  - Introduce '--strip-emptydev' to strip empty block `//{-//}`, produced by TeX file.
data/lib/pandoc2review.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # -*- coding: utf-8 -*-
2
- # Copyright 2020-2021 Kenshi Muto
2
+ # Copyright 2020-2023 Kenshi Muto
3
3
  require 'optparse'
4
4
  require 'unicode/eaw'
5
5
  require 'pathname'
@@ -55,7 +55,7 @@ class Pandoc2ReVIEW
55
55
  @stripemptydev = nil
56
56
  opts = OptionParser.new
57
57
  opts.banner = 'Usage: pandoc2review [option] file [file ...]'
58
- opts.version = '1.4'
58
+ opts.version = '1.6'
59
59
 
60
60
  opts.on('--help', 'Prints this message and quit.') do
61
61
  puts opts.help
@@ -74,7 +74,12 @@ class Pandoc2ReVIEW
74
74
  @stripemptydev = true
75
75
  end
76
76
 
77
- opts.parse!(ARGV)
77
+ begin
78
+ opts.parse!(ARGV)
79
+ rescue OptionParser::ParseError
80
+ puts opts.help
81
+ exit 1
82
+ end
78
83
  if ARGV.size != 1
79
84
  puts opts.help
80
85
  exit 0
data/lua/filters.lua CHANGED
@@ -1,3 +1,5 @@
1
+ -- Copyright 2020-2023 atusy and Kenshi Muto
2
+
1
3
  local function review_inline(x)
2
4
  return pandoc.RawInline("review", x)
3
5
  end
@@ -6,7 +8,11 @@ local beginchild = {pandoc.Plain(review_inline("//beginchild"))}
6
8
  local endchild = {pandoc.Plain(review_inline("//endchild"))}
7
9
 
8
10
  local function markdown(text)
9
- return(pandoc.read(text, "markdown").blocks[1].content)
11
+ return pandoc.read(
12
+ text,
13
+ "markdown-auto_identifiers-smart+east_asian_line_breaks",
14
+ PANDOC_READER_OPTIONS
15
+ ).blocks[1].content
10
16
  end
11
17
 
12
18
  local function support_blankline(constructor)
@@ -23,7 +29,7 @@ local function support_blankline(constructor)
23
29
  local n_break = 0
24
30
  local content = blocks[i].content
25
31
 
26
- for j, elem in ipairs(x.content) do
32
+ for _, elem in ipairs(x.content) do
27
33
  if elem.tag == "LineBreak" then
28
34
  -- Count the repeated number of LineBreak
29
35
  n_break = n_break + 1
@@ -136,7 +142,7 @@ local function caption_div(div)
136
142
  end
137
143
 
138
144
  local function noindent(para)
139
- first = para.content[1]
145
+ local first = para.content[1]
140
146
 
141
147
  if (first and (first.tag == "RawInline") and
142
148
  (first.format == "tex") and
@@ -150,6 +156,34 @@ local function noindent(para)
150
156
  return para
151
157
  end
152
158
 
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
+
153
187
  return {
154
188
  {Emph = support_strong("Strong")},
155
189
  {Strong = support_strong("Emph")},
@@ -160,5 +194,6 @@ return {
160
194
  {BulletList = nestablelist},
161
195
  {OrderedList = nestablelist},
162
196
  {DefinitionList = nestablelist},
163
- {Div = caption_div}
197
+ {Div = caption_div},
198
+ {Figure = figure},
164
199
  }
data/lua/review.lua CHANGED
@@ -1,6 +1,6 @@
1
1
  -- -*- coding: utf-8 -*-
2
2
  -- Re:VIEW Writer for Pandoc
3
- -- Copyright 2020 Kenshi Muto
3
+ -- Copyright 2020-2023 atusy and Kenshi Muto
4
4
 
5
5
  -- config
6
6
  local config = {
@@ -161,13 +161,7 @@ function Para(s)
161
161
  end
162
162
 
163
163
  local function attr_val(attr, key)
164
- local attr_table = {}
165
- for k, v in pairs(attr) do
166
- if (k == key and v and v ~= "") then
167
- return v
168
- end
169
- end
170
- return ""
164
+ return attr[key] or ""
171
165
  end
172
166
 
173
167
  local function attr_classes(attr)
@@ -180,7 +174,7 @@ local function attr_classes(attr)
180
174
  end
181
175
 
182
176
  local function attr_scale(attr, key) -- a helper for CaptionedImage
183
- scale = attr_val(attr, key)
177
+ local scale, count = attr_val(attr, key), 0
184
178
  if (scale == "") or (key == "scale") then
185
179
  return scale
186
180
  end
@@ -195,10 +189,7 @@ local function attr_scale(attr, key) -- a helper for CaptionedImage
195
189
  end
196
190
 
197
191
  function Header(level, s, attr)
198
- local headmark = ""
199
- for i = 1, level do
200
- headmark = headmark .. "="
201
- end
192
+ local headmark = string.rep("=", level)
202
193
 
203
194
  local classes = attr_classes(attr)
204
195
 
@@ -288,7 +279,7 @@ function CodeBlock(s, attr)
288
279
  end
289
280
  command = command or "list"
290
281
 
291
- is_list = command == "list"
282
+ local is_list = command == "list"
292
283
 
293
284
 
294
285
  local num = (is_list == false) and "" or (
@@ -411,7 +402,7 @@ function Table(caption, aligns, widths, headers, rows)
411
402
  end
412
403
  local tmp = {}
413
404
  for i, h in pairs(headers) do
414
- align = html_align(aligns[i])
405
+ local align = html_align(aligns[i])
415
406
  if (config.use_table_align == "true") and (align ~= "") then
416
407
  h = format_inline("dtp", "table align=" .. align) .. h
417
408
  end
@@ -422,7 +413,7 @@ function Table(caption, aligns, widths, headers, rows)
422
413
  for _, row in pairs(rows) do
423
414
  tmp = {}
424
415
  for i, c in pairs(row) do
425
- align = html_align(aligns[i])
416
+ local align = html_align(aligns[i])
426
417
  if (config.use_table_align == "true") and (align ~= "") then
427
418
  c = format_inline("dtp", "table align=" .. align) .. c
428
419
  end
@@ -477,6 +468,16 @@ function CaptionedImage(s, src, tit, attr)
477
468
  )
478
469
  end
479
470
 
471
+ function Image(s, src, tit, attr)
472
+ -- Re:VIEW @<icon> ignores caption and title
473
+ if attr.is_figure then
474
+ return CaptionedImage(src, s, tit, attr)
475
+ end
476
+ local id = string.gsub(src, "%.%w+$", "")
477
+ id = string.gsub(id, "^images/", "")
478
+ return format_inline("icon", id)
479
+ end
480
+
480
481
  function Note(s)
481
482
  note_num = note_num + 1
482
483
  table.insert(footnotes, "//footnote[fn" .. note_num .. "][" .. s .. "]")
@@ -513,7 +514,7 @@ function Div(s, attr)
513
514
  local blankline = attr_val(attr, "blankline")
514
515
  if blankline ~= "" then
515
516
  local buffer = {}
516
- for i = 1, tonumber(blankline) do
517
+ for _ = 1, tonumber(blankline) do
517
518
  table.insert(buffer, "//blankline")
518
519
  end
519
520
  return table.concat(buffer, "\n")
@@ -576,7 +577,7 @@ function RawInline(format, text)
576
577
  if (format == "tex") then
577
578
  return format_inline("embed", "|latex|" .. text)
578
579
  else
579
- return format_inline("embed", "|" .. format .. "|", text)
580
+ return format_inline("embed", "|" .. format .. "|" .. text)
580
581
  end
581
582
  end
582
583
 
@@ -596,24 +597,38 @@ function RawBlock(format, text)
596
597
  end
597
598
  end
598
599
 
599
- try_catch {
600
- try = function()
601
- metadata = PANDOC_DOCUMENT.meta
602
- end,
603
- catch = function(error)
604
- log("Due to your pandoc version is too old, config.yml loader is disabled.\n")
605
- end
606
- }
600
+ local function configure()
601
+ try_catch {
602
+ try = function()
603
+ metadata = PANDOC_DOCUMENT.meta
604
+ end,
605
+ catch = function(error)
606
+ log("Due to your pandoc version is too old, config.yml loader is disabled.\n")
607
+ end
608
+ }
607
609
 
608
- if (metadata) then
609
- -- Load config from YAML
610
- for k,v in pairs(config) do
611
- if metadata[k] ~= nil then
612
- config[k] = stringify(metadata[k])
610
+ if (metadata) then
611
+ -- Load config from YAML
612
+ for k, _ in pairs(config) do
613
+ if metadata[k] ~= nil then
614
+ config[k] = stringify(metadata[k])
615
+ end
613
616
  end
614
617
  end
615
618
  end
616
619
 
620
+ if PANDOC_VERSION >= "3.0.0" then
621
+ -- NOTE: A wrapper to support Pandoc >= 3.0 https://pandoc.org/custom-writers.html#changes-in-pandoc-3.0
622
+ function Writer (doc, opts)
623
+ PANDOC_DOCUMENT = doc
624
+ PANDOC_WRITER_OPTIONS = opts
625
+ configure()
626
+ return pandoc.write_classic(doc, opts)
627
+ end
628
+ else
629
+ configure()
630
+ end
631
+
617
632
  local meta = {}
618
633
  meta.__index =
619
634
  function(_, key)
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |spec|
2
2
  spec.name = "pandoc2review"
3
- spec.version = "1.4.0"
3
+ spec.version = "1.6.0"
4
4
  spec.authors = ["Kenshi Muto"]
5
5
  spec.email = ["kmuto@kmuto.jp"]
6
6
  spec.license = "GPL-2.0"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pandoc2review
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
4
+ version: 1.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kenshi Muto
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-02-25 00:00:00.000000000 Z
11
+ date: 2023-07-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: unicode-eaw
@@ -104,7 +104,7 @@ licenses:
104
104
  metadata:
105
105
  homepage_uri: https://github.com/kmuto/pandoc2review
106
106
  source_code_uri: https://github.com/kmuto/pandoc2review
107
- post_install_message:
107
+ post_install_message:
108
108
  rdoc_options: []
109
109
  require_paths:
110
110
  - lib
@@ -120,9 +120,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
120
120
  - !ruby/object:Gem::Version
121
121
  version: '0'
122
122
  requirements: []
123
- rubyforge_project:
124
- rubygems_version: 2.7.6.2
125
- signing_key:
123
+ rubygems_version: 3.3.15
124
+ signing_key:
126
125
  specification_version: 4
127
126
  summary: Pandoc2review is a converter from any document to Re:VIEW format (using Pandoc)
128
127
  test_files: []