paru 1.1.2 → 1.2.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 +4 -4
- data/lib/paru/filter/cell.rb +2 -2
- data/lib/paru/filter/node.rb +3 -1
- data/lib/paru/filter/table.rb +73 -33
- data/lib/paru/filter/value.rb +0 -2
- data/lib/paru.rb +1 -1
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c5c453f6e4cb23977b77bb04faa0a9d72b1d7f9569529e5ba3995083f51bf514
|
4
|
+
data.tar.gz: af94f1496e2a1df4cf0b5cc842f95887c0000a5d2b4c2e85dc19d39054c40b27
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 733a600fc35387fcb8e381fa03099247d2719acbe09f5841d2d53f3703e6d7df28be92608f0bf7d2c180ba27e2bb86cf679ed4ef53d1f08c28a8aa96d13beb20
|
7
|
+
data.tar.gz: 817c37dfdc57802e94c70035a03c89c4e631f8c4cac34e92816d17dcb4512791cdd23cce40d2ff113024901aab288da1a18b4a6ab92719b3c57f1060953b78c9
|
data/lib/paru/filter/cell.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#--
|
2
|
-
# Copyright 2020 Huub de Beer <Huub@heerdebeer.org>
|
2
|
+
# Copyright 2020, 2023 Huub de Beer <Huub@heerdebeer.org>
|
3
3
|
#
|
4
4
|
# This file is part of Paru
|
5
5
|
#
|
@@ -22,7 +22,7 @@ require_relative "./int_value.rb"
|
|
22
22
|
|
23
23
|
module Paru
|
24
24
|
module PandocFilter
|
25
|
-
# A Cell node represents a cell
|
25
|
+
# A Cell node represents a cell in a table's head, body, or foot.
|
26
26
|
#
|
27
27
|
# @!attribute attr
|
28
28
|
# @return Attr
|
data/lib/paru/filter/node.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#--
|
2
|
-
# Copyright 2015, 2016, 2017, 2020 Huub de Beer <Huub@heerdebeer.org>
|
2
|
+
# Copyright 2015, 2016, 2017, 2020, 2023 Huub de Beer <Huub@heerdebeer.org>
|
3
3
|
#
|
4
4
|
# This file is part of Paru
|
5
5
|
#
|
@@ -26,12 +26,14 @@ module Paru
|
|
26
26
|
AST2MARKDOWN = Paru::Pandoc.new do
|
27
27
|
from "json"
|
28
28
|
to "markdown-smart"
|
29
|
+
preserve_tabs true
|
29
30
|
end
|
30
31
|
|
31
32
|
# A Paru::Pandoc converter from markdown to JSON
|
32
33
|
MARKDOWN2JSON = Paru::Pandoc.new do
|
33
34
|
from "markdown+smart"
|
34
35
|
to "json"
|
36
|
+
preserve_tabs true
|
35
37
|
end
|
36
38
|
|
37
39
|
# Every node in a Pandoc AST is mapped to Node. Filters are all about
|
data/lib/paru/filter/table.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#--
|
2
|
-
# Copyright 2015, 2016, 2017, 2020 Huub de Beer <Huub@heerdebeer.org>
|
2
|
+
# Copyright 2015, 2016, 2017, 2020, 2023 Huub de Beer <Huub@heerdebeer.org>
|
3
3
|
#
|
4
4
|
# This file is part of Paru
|
5
5
|
#
|
@@ -131,46 +131,39 @@ module Paru
|
|
131
131
|
#
|
132
132
|
# @return [Table]
|
133
133
|
def self.from_array(data, config = {})
|
134
|
-
|
135
|
-
# to construct a table manually. It has gotten easier to just
|
136
|
-
# construct a string containing a table in Pandoc's markdown and
|
137
|
-
# load that. I did remove setting alignments and column widths,
|
138
|
-
# though, because that is a bit of a hassle to get right.
|
139
|
-
|
140
|
-
markdown_table = ""
|
141
|
-
header = ""
|
142
|
-
footer = ""
|
143
|
-
|
144
|
-
if config.has_key? :headers and config[:headers] then
|
145
|
-
head_row = data.first
|
146
|
-
header += head_row.join(" \t") + "\n"
|
147
|
-
header += head_row.map {|s| s.gsub(/./, "-") + "-"}.join("\t") + "\n"
|
148
|
-
data = data.slice(1..-1)
|
149
|
-
end
|
134
|
+
table_attribute = create_attr
|
150
135
|
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
footer += foot_row.map {|s| s.gsub(/./, "-") + "-"}.join("\t") + "\n"
|
155
|
-
data = data.slice(0, -2)
|
136
|
+
caption = []
|
137
|
+
if config.has_key? :caption
|
138
|
+
caption = create_caption config[:caption]
|
156
139
|
end
|
157
140
|
|
158
|
-
data.
|
159
|
-
markdown_table += row.join(" \t") + "\n"
|
160
|
-
end
|
141
|
+
col_spec = data[0].map {|c| ColSpec.new.to_ast }
|
161
142
|
|
162
|
-
|
143
|
+
head = create_endrow []
|
144
|
+
if config.has_key? :headers and config[:headers]
|
145
|
+
head = create_endrow data.first
|
146
|
+
data = data[1..-1]
|
147
|
+
end
|
163
148
|
|
164
|
-
|
165
|
-
|
166
|
-
|
149
|
+
foot = create_endrow []
|
150
|
+
if config.has_key? :footers and config[:footers]
|
151
|
+
foot = create_endrow data.last
|
152
|
+
data = data[0...-1]
|
167
153
|
end
|
168
154
|
|
169
|
-
|
170
|
-
|
171
|
-
table =
|
155
|
+
body = create_body data
|
156
|
+
|
157
|
+
table = [
|
158
|
+
table_attribute,
|
159
|
+
caption,
|
160
|
+
col_spec,
|
161
|
+
head,
|
162
|
+
body,
|
163
|
+
foot
|
164
|
+
]
|
172
165
|
|
173
|
-
table
|
166
|
+
Table.new table
|
174
167
|
end
|
175
168
|
|
176
169
|
|
@@ -188,6 +181,53 @@ module Paru
|
|
188
181
|
|
189
182
|
return self.from_array(data, config)
|
190
183
|
end
|
184
|
+
|
185
|
+
private
|
186
|
+
|
187
|
+
def self.create_caption(contents)
|
188
|
+
[
|
189
|
+
nil,
|
190
|
+
[Node.from_markdown(contents).to_ast]
|
191
|
+
]
|
192
|
+
end
|
193
|
+
|
194
|
+
def self.create_body(data)
|
195
|
+
[[
|
196
|
+
create_attr,
|
197
|
+
0,
|
198
|
+
[],
|
199
|
+
data.map {|r| create_row(r)}
|
200
|
+
]]
|
201
|
+
end
|
202
|
+
|
203
|
+
def self.create_endrow(data)
|
204
|
+
[
|
205
|
+
create_attr,
|
206
|
+
if data.empty? then [] else [create_row(data)] end
|
207
|
+
]
|
208
|
+
end
|
209
|
+
|
210
|
+
def self.create_row(data)
|
211
|
+
[
|
212
|
+
create_attr,
|
213
|
+
data.map {|c| create_cell(c)}
|
214
|
+
]
|
215
|
+
end
|
216
|
+
|
217
|
+
def self.create_cell(contents)
|
218
|
+
[
|
219
|
+
create_attr,
|
220
|
+
{"t" => "AlignDefault", "c" => nil},
|
221
|
+
1,
|
222
|
+
1,
|
223
|
+
[Node.from_markdown(contents).to_ast]
|
224
|
+
]
|
225
|
+
end
|
226
|
+
|
227
|
+
def self.create_attr()
|
228
|
+
["", [], []]
|
229
|
+
end
|
230
|
+
|
191
231
|
end
|
192
232
|
end
|
193
233
|
end
|
data/lib/paru/filter/value.rb
CHANGED
data/lib/paru.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: paru
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Huub de Beer
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-11-26 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Control pandoc with Ruby and write pandoc filters in Ruby
|
14
14
|
email: Huub@heerdebeer.org
|
@@ -103,7 +103,7 @@ homepage: https://heerdebeer.org/Software/markdown/paru/
|
|
103
103
|
licenses:
|
104
104
|
- GPL-3.0
|
105
105
|
metadata: {}
|
106
|
-
post_install_message:
|
106
|
+
post_install_message:
|
107
107
|
rdoc_options: []
|
108
108
|
require_paths:
|
109
109
|
- lib
|
@@ -118,8 +118,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
118
118
|
- !ruby/object:Gem::Version
|
119
119
|
version: '0'
|
120
120
|
requirements: []
|
121
|
-
rubygems_version: 3.4.
|
122
|
-
signing_key:
|
121
|
+
rubygems_version: 3.4.10
|
122
|
+
signing_key:
|
123
123
|
specification_version: 4
|
124
124
|
summary: Paru is a ruby wrapper around pandoc
|
125
125
|
test_files: []
|