pandoc2review 1.3.0 → 1.5.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a5671aaebdb1909371f608bb0812d18f101827b5ccc06ee80532b48928d0f158
4
- data.tar.gz: 568f9cee83013a84b9a11691c4420e62b174fec7a88e5898b0a3ba565e0b2e52
3
+ metadata.gz: a11aa7a678f2ccee527f68b25d2617c4b25dbe44fb675316593b4638ccf82252
4
+ data.tar.gz: afe9e95dde61125f788c438128014721cc5825f67f834048a2240d455929e90b
5
5
  SHA512:
6
- metadata.gz: 15129e6dffb240ca58c4da70834d4f16488da5b752c3302f313c9d0ff74eb614ec7d9e9d2615f688085b089035a9c8b3b32e8822470c6b0635c9bdb2427ea8c3
7
- data.tar.gz: 60a7d8451a10be4a98f21f9a5c0b934f5fe95cc7637aad9e1951dca092a3ab21d78b3838815ca0de95584b932085cdede8c8f0cfa86bcf5c135bef44d6514fd8
6
+ metadata.gz: 267a8c27385b13c00f835fc73b01dd9f5c27e8c3e85b5d298c185580f1f048aef2537dbde3eb5c39a0d87893ef98c9572f9c53eb152fddf79166e5c7a4744301
7
+ data.tar.gz: 4665b011334f35a3c1444a2aacfcec7bf96771ccd8181c3f14b116f499cd936355b587d1b804e37ed7c99b6b99568e8b27a3855c9e3f50c48edeb96700a832b4
@@ -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
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.5.0
61
+ - Support Pandoc 3.
62
+
63
+ ### 1.4.0
64
+ - Fix an error when empty div block is received.
65
+ - Introduce '--strip-emptydev' to strip empty block `//{-//}`, produced by TeX file.
66
+
60
67
  ### 1.3.0
61
68
  - Fix "attempt to index global 'first' (a nil value)" error in a docx file.
62
69
 
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'
@@ -29,6 +29,10 @@ class Pandoc2ReVIEW
29
29
  end
30
30
  end
31
31
 
32
+ if @stripemptydev
33
+ args += ['-M', "stripemptydev:true"]
34
+ end
35
+
32
36
  if @heading
33
37
  args += ["--shift-heading-level-by=#{@heading}"]
34
38
  end
@@ -48,9 +52,10 @@ class Pandoc2ReVIEW
48
52
  @heading = nil
49
53
  @disableeaw = nil
50
54
  @hideraw = nil
55
+ @stripemptydev = nil
51
56
  opts = OptionParser.new
52
57
  opts.banner = 'Usage: pandoc2review [option] file [file ...]'
53
- opts.version = '1.3'
58
+ opts.version = '1.5'
54
59
 
55
60
  opts.on('--help', 'Prints this message and quit.') do
56
61
  puts opts.help
@@ -65,8 +70,16 @@ class Pandoc2ReVIEW
65
70
  opts.on('--hideraw', "Hide raw inline/block with no review format specified.") do
66
71
  @hideraw = true
67
72
  end
73
+ opts.on('--strip-emptydev', "Strip <div> without any id or class") do
74
+ @stripemptydev = true
75
+ end
68
76
 
69
- opts.parse!(ARGV)
77
+ begin
78
+ opts.parse!(ARGV)
79
+ rescue OptionParser::ParseError
80
+ puts opts.help
81
+ exit 1
82
+ end
70
83
  if ARGV.size != 1
71
84
  puts opts.help
72
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)
@@ -102,6 +108,7 @@ local function caption_div(div)
102
108
  local caption = div.attributes.caption
103
109
 
104
110
  if ((#div.content == 1) and
111
+ (div.content[1].content) and
105
112
  (#div.content[1].content == 1) and
106
113
  (div.content[1].content[1].tag == "Math") and
107
114
  (div.identifier)) then
@@ -149,6 +156,34 @@ local function noindent(para)
149
156
  return para
150
157
  end
151
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
+
152
187
  return {
153
188
  {Emph = support_strong("Strong")},
154
189
  {Strong = support_strong("Emph")},
@@ -159,5 +194,6 @@ return {
159
194
  {BulletList = nestablelist},
160
195
  {OrderedList = nestablelist},
161
196
  {DefinitionList = nestablelist},
162
- {Div = caption_div}
197
+ {Div = caption_div},
198
+ {Figure = figure},
163
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 = {
@@ -477,6 +477,16 @@ function CaptionedImage(s, src, tit, attr)
477
477
  )
478
478
  end
479
479
 
480
+ function Image(s, src, tit, attr)
481
+ -- Re:VIEW @<icon> ignores caption and title
482
+ if attr.is_figure then
483
+ return CaptionedImage(src, s, tit, attr)
484
+ end
485
+ local id = string.gsub(src, "%.%w+$", "")
486
+ id = string.gsub(id, "^images/", "")
487
+ return format_inline("icon", id)
488
+ end
489
+
480
490
  function Note(s)
481
491
  note_num = note_num + 1
482
492
  table.insert(footnotes, "//footnote[fn" .. note_num .. "][" .. s .. "]")
@@ -522,7 +532,11 @@ function Div(s, attr)
522
532
  local classes = attr_classes(attr)
523
533
 
524
534
  if next(classes) == nil then
525
- return "//{\n" .. s .. "\n//}"
535
+ if metadata.stripemptydev then
536
+ return s
537
+ else
538
+ return "//{\n" .. s .. "\n//}"
539
+ end
526
540
  end
527
541
 
528
542
  if classes["review-internal"] then
@@ -592,24 +606,38 @@ function RawBlock(format, text)
592
606
  end
593
607
  end
594
608
 
595
- try_catch {
596
- try = function()
597
- metadata = PANDOC_DOCUMENT.meta
598
- end,
599
- catch = function(error)
600
- log("Due to your pandoc version is too old, config.yml loader is disabled.\n")
601
- end
602
- }
609
+ local function configure()
610
+ try_catch {
611
+ try = function()
612
+ metadata = PANDOC_DOCUMENT.meta
613
+ end,
614
+ catch = function(error)
615
+ log("Due to your pandoc version is too old, config.yml loader is disabled.\n")
616
+ end
617
+ }
603
618
 
604
- if (metadata) then
605
- -- Load config from YAML
606
- for k,v in pairs(config) do
607
- if metadata[k] ~= nil then
608
- config[k] = stringify(metadata[k])
619
+ if (metadata) then
620
+ -- Load config from YAML
621
+ for k,v in pairs(config) do
622
+ if metadata[k] ~= nil then
623
+ config[k] = stringify(metadata[k])
624
+ end
609
625
  end
610
626
  end
611
627
  end
612
628
 
629
+ if PANDOC_VERSION >= "3.0.0" then
630
+ -- NOTE: A wrapper to support Pandoc >= 3.0 https://pandoc.org/custom-writers.html#changes-in-pandoc-3.0
631
+ function Writer (doc, opts)
632
+ PANDOC_DOCUMENT = doc
633
+ PANDOC_WRITER_OPTIONS = opts
634
+ configure()
635
+ return pandoc.write_classic(doc, opts)
636
+ end
637
+ else
638
+ configure()
639
+ end
640
+
613
641
  local meta = {}
614
642
  meta.__index =
615
643
  function(_, key)
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |spec|
2
2
  spec.name = "pandoc2review"
3
- spec.version = "1.3.0"
3
+ spec.version = "1.5.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.3.0
4
+ version: 1.5.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-09 00:00:00.000000000 Z
11
+ date: 2023-07-03 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: []