paru 0.2.5b → 0.2.5c

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
  SHA1:
3
- metadata.gz: 87a2a350eeeb33246aa3d841ca14062935c29806
4
- data.tar.gz: 92e889e2dd7b06f6966327406cb8fed6d3b2f3dc
3
+ metadata.gz: e39519f32865af110131f673e16b6e4a99f567d0
4
+ data.tar.gz: bfc70e18a105a8488cc4ba06b2f3cc393e7bb9b6
5
5
  SHA512:
6
- metadata.gz: 616a84c6f967318840a95e4c4f993a63e48cc461e95bab75981dc92b35a8b32db473a1878dc46371893a2b875eddbc964d2974a616ebc0f37c1f5c8b092f5015
7
- data.tar.gz: 4ce02c9ad9a3983c2751bda198efcbdab1701ad9e5a5f181d03e5cf440ebc7a98f2390723c635fffb327b65e44a7856c4564e8e67e8ed26c60d2273760178c8d
6
+ metadata.gz: d1169e0f995d1722251fcfbb0107c386aaf6d5f0df98ead73fac6adf64276bf7715e1f4003c512186cd41d228a38f007fa26cc18cb62c033f3c69e863a570268
7
+ data.tar.gz: 12f8bbb1532f99347ac624b56215b2932bf56db09ac2d4a8f3583601fe5aadbc2df071ba4b183b07d1165c3e29f3e111743c677854cc967677341e62c24bcb44
@@ -198,11 +198,23 @@ module Paru
198
198
  #
199
199
  class Filter
200
200
 
201
- # Run the filter specified by block. In the block you specify
202
- # selectors and actions to be performed on selected nodes. In the
203
- # example below, the selector is "Image", which selects all image
204
- # nodes. The action is to prepend the contents of the image's caption
205
- # by the string "Figure. ".
201
+ # Create a new Filter instance. For convenience, {run} creates a new
202
+ # {Filter} and runs it immediately. Use this constructor if you want
203
+ # to run a filter on different input and output streams that STDIN and
204
+ # STDOUT respectively.
205
+ #
206
+ # @param input [IO = $stdin] the input stream to read, defaults to
207
+ # STDIN
208
+ # @param output [IO = $stdout] the output stream to write, defaults to
209
+ # STDOUT
210
+ def initialize(input = $stdin, output = $stdout)
211
+ @input = input
212
+ @output = output
213
+ end
214
+
215
+ # Run the filter specified by block. This is a convenience method that
216
+ # creates a new {Filter} using input stream STDIN and output stream
217
+ # STDOUT and immediately runs {filter} with the block supplied.
206
218
  #
207
219
  # @param block [Proc] the filter specification
208
220
  #
@@ -213,23 +225,39 @@ module Paru
213
225
  # end
214
226
  # end
215
227
  def self.run(&block)
216
- Filter.new().filter(&block)
228
+ Filter.new($stdin, $stdout).filter(&block)
217
229
  end
218
230
 
219
-
220
231
  # The Document node from JSON formatted pandoc document structure
221
232
  # on STDIN that is being filtered
222
233
  #
223
234
  # @return [Document] create a new Document node from a pandoc AST from
224
235
  # JSON from STDIN
225
236
  def document()
226
- PandocFilter::Document.from_JSON $stdin.read
237
+ PandocFilter::Document.from_JSON @input.read
227
238
  end
228
239
 
229
- # Create a filter using +block+.
240
+ # Create a filter using +block+. In the block you specify
241
+ # selectors and actions to be performed on selected nodes. In the
242
+ # example below, the selector is "Image", which selects all image
243
+ # nodes. The action is to prepend the contents of the image's caption
244
+ # by the string "Figure. ".
245
+ #
246
+ # @param block [Proc] the filter specification
230
247
  #
231
- # @param block [Proc] a block specifying selectors and actions
232
248
  # @return [JSON] a JSON string with the filtered pandoc AST
249
+ #
250
+ # @example Add 'Figure' to each image's caption
251
+ # input = IOString.new(File.read("my_report.md")
252
+ # output = IOString.new
253
+ #
254
+ # Paru::Filter.new(input, output).filter do
255
+ # with "Image" do |image|
256
+ # image.inner_markdown = "Figure. #{image.inner_markdown}"
257
+ # end
258
+ # end
259
+ #
260
+ # # do something with output.string
233
261
  def filter(&block)
234
262
  @selectors = Hash.new
235
263
  @filtered_nodes = []
@@ -240,10 +268,9 @@ module Paru
240
268
  instance_eval(&block)
241
269
  end
242
270
 
243
- puts @doc.to_JSON
271
+ @output.write @doc.to_JSON
244
272
  end
245
273
 
246
-
247
274
  # +current_node+ points to the node that is *now* being processed while
248
275
  # running this filter.
249
276
  #
@@ -42,7 +42,7 @@ module Paru
42
42
  end
43
43
 
44
44
  # Get the value belonging to key. Prefer to use the {has?}, {get},
45
- # and {delete} methods to manipulate metadata.
45
+ # {replace} and {delete} methods to manipulate metadata.
46
46
  #
47
47
  # @param key [String] the key
48
48
  #
@@ -56,9 +56,7 @@ module Paru
56
56
  # to set the metadata.
57
57
  #
58
58
  # @param key [String] the key to set
59
- # @param value
60
- # [MetaBlocks|MetaBool|MetaInline|MetaList|MetaMap|MetaString|MetaValue]
61
- # the value to set
59
+ # @param value [MetaBlocks|MetaBool|MetaInlines|MetaList|MetaMap|MetaString|MetaValue] the value to set
62
60
  def []=(key, value)
63
61
  @children[key] = value
64
62
  end
@@ -73,6 +71,7 @@ module Paru
73
71
  # Mixin the YAML code into this metadata object
74
72
  #
75
73
  # @param yaml_string [YAML] A string with YAML data
74
+ # @return [MetaMap] this MetaMap object
76
75
  #
77
76
  # @example Set some properties in the metadata
78
77
  # #!/usr/bin/env ruby
@@ -82,7 +81,7 @@ module Paru
82
81
  # Paru::Filter.run do
83
82
  # metadata.yaml <<~YAML
84
83
  # ---
85
- # date: Date.today.to_s
84
+ # date: #{Date.today.to_s}
86
85
  # title: This **is** the title
87
86
  # pandoc_options:
88
87
  # from: markdown
@@ -99,6 +98,7 @@ module Paru
99
98
  meta_from_yaml(yaml_string).each do |key, value|
100
99
  self[key] = value
101
100
  end
101
+ self
102
102
  end
103
103
 
104
104
  # Replace the property in this MetaMap matching the selector with
@@ -108,8 +108,7 @@ module Paru
108
108
  # @param selector [String] a dot-separated sequence of property
109
109
  # names denoting a sequence of descendants.
110
110
  #
111
- # @param value
112
- # [MetaBlocks|MetaBool|MetaInline|MetaList|MetaMap|MetaString|MetaValue|String]
111
+ # @param value [MetaBlocks|MetaBool|MetaInlines|MetaList|MetaMap|MetaString|MetaValue|String]
113
112
  # if value is a String, it is treated as a yaml string
114
113
  def replace(selector, value)
115
114
  parent = select(selector, true)
@@ -124,7 +123,7 @@ module Paru
124
123
  # @param selector [String] a dot-separated sequence of property
125
124
  # names denoting a sequence of descendants.
126
125
  #
127
- # @return [MetaBlocks|MetaBool|MetaInline|MetaList|MetaMap|MetaString|MetaValue] the value matching the selected property, nil if it cannot be found
126
+ # @return [MetaBlocks|MetaBool|MetaInlines|MetaList|MetaMap|MetaString|MetaValue] the value matching the selected property, nil if it cannot be found
128
127
  def get(selector)
129
128
  select(selector)
130
129
  end
@@ -145,14 +144,13 @@ module Paru
145
144
  # @param selector [String] a dot-separated sequence of property
146
145
  # names denoting a sequence of descendants
147
146
  #
148
- # @return [MetaBlocks|MetaBool|MetaInline|MetaList|MetaMap|MetaString|MetaValue] the value of the deleted property, nil if it cannot be found
147
+ # @return [MetaBlocks|MetaBool|MetaInlines|MetaList|MetaMap|MetaString|MetaValue] the value of the deleted property, nil if it cannot be found
149
148
  #
150
149
  def delete(selector)
151
150
  parent = select(selector, true)
152
151
  parent.children.delete(last_key(selector))
153
152
  end
154
153
 
155
-
156
154
  # The AST contents
157
155
  def ast_contents()
158
156
  ast = Hash.new
@@ -173,7 +171,7 @@ module Paru
173
171
  # @param get_parent [Boolean = false] Get the parent MetaMap
174
172
  # of the selected property instead of its value
175
173
  #
176
- # @return [MetaBlocks|MetaBool|MetaInline|MetaList|MetaMap|MetaString|MetaValue] the value of the deleted property, nil if it cannot be found
174
+ # @return [MetaBlocks|MetaBool|MetaInlines|MetaList|MetaMap|MetaString|MetaValue] the value of the deleted property, nil if it cannot be found
177
175
  def select(selector, get_parent = false)
178
176
  keys = selector.split(".")
179
177
  level = self
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: paru
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.5b
4
+ version: 0.2.5c
5
5
  platform: ruby
6
6
  authors:
7
7
  - Huub de Beer