pandoc-filter 0.0.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.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/pandoc-filter.rb +105 -0
  3. metadata +44 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 6ff62fb874b8372cd809a056cec631a1d7625ae4
4
+ data.tar.gz: ae6cb58c3d39e0e578d254c71b7a9523033cedc6
5
+ SHA512:
6
+ metadata.gz: 4b9d67f5c7912f247d665a996df4fb9cf2ca0f45ec953f991f7119cb8b859c0f797b35ac07d02e9b44d97d9e1a9c65810729e376ea9dc2723ab396ea2dd54ce9
7
+ data.tar.gz: ca9c097f332daf0cb075d05adfa54f249469cabde4ed6875969de94f279ee604bec1d164467fccf3d2578934316f28b42bf5360734f2d54252613e1ef3555c3a
@@ -0,0 +1,105 @@
1
+ # Copyright (c) Tom Potts, 2015
2
+ # Inspired by Python code by John MacFarlane.
3
+ # See http://pandoc.org/scripting.html
4
+ # and https://github.com/jgm/pandocfilters
5
+ # for more information.
6
+
7
+ require 'json'
8
+
9
+ module PandocFilter
10
+
11
+ def self.filter(&block)
12
+ # maybe not the right call?
13
+ doc = JSON.parse($stdin.read)
14
+ format = nil
15
+ if ARGV.length > 1
16
+ @format = ARGV[1]
17
+ end
18
+ @block = block
19
+ @meta = doc[0]['unMeta']
20
+ $stdout.puts JSON.dump(walk(doc))
21
+ end
22
+
23
+ def self.walk(x)
24
+ if x.kind_of?(Array)
25
+ result = []
26
+ x.each do |item|
27
+ if item.kind_of?(Hash) && item.has_key?('t')
28
+ res = @block.call(item['t'], item['c'], @format, @meta)
29
+ if !res
30
+ result.push(walk(item))
31
+ elsif res.kind_of?(Array)
32
+ res.each do |z|
33
+ result.push(walk(z))
34
+ end
35
+ else
36
+ result.push(walk(res))
37
+ end
38
+ else
39
+ result.push(walk(item))
40
+ end
41
+ end
42
+ return result
43
+ elsif x.kind_of?(Hash)
44
+ result = {}
45
+ x.each do |key,value|
46
+ result[key] = walk(value)
47
+ end
48
+ return result
49
+ else
50
+ return x
51
+ end
52
+ end
53
+
54
+ end
55
+
56
+ module PandocElement
57
+ [ ['Plain', 1],
58
+ ['Para', 1],
59
+ ['CodeBlock', 2],
60
+ ['RawBlock', 2],
61
+ ['BlockQuote', 1],
62
+ ['OrderedList', 2],
63
+ ['BulletList', 1],
64
+ ['DefinitionList', 1],
65
+ ['Header', 3],
66
+ ['HorizontalRule', 0],
67
+ ['Table', 5],
68
+ ['Div', 2],
69
+ ['Null', 0],
70
+ ['Str', 1],
71
+ ['Emp', 1],
72
+ ['Strong', 1],
73
+ ['Strikeout', 1],
74
+ ['Superscript', 1],
75
+ ['Subscript', 1],
76
+ ['SmallCaps', 1],
77
+ ['Quoted', 2],
78
+ ['Cite', 2],
79
+ ['Code', 2],
80
+ ['Space', 0],
81
+ ['LineBreak', 0],
82
+ ['Math', 2],
83
+ ['RawInline', 2],
84
+ ['Link', 2],
85
+ ['Image', 2],
86
+ ['Note', 1],
87
+ ['Span', 2]
88
+ ].each do |name, params|
89
+ if params == 0
90
+ define_singleton_method(name) { {'t'=>name, 'c'=>[]} }
91
+ elsif params == 1
92
+ define_singleton_method(name) { |value| {'t'=>name, 'c'=>value} }
93
+ elsif params == 2
94
+ define_singleton_method(name) { |v1,v2| {'t'=>name, 'c'=>[v1,v2]} }
95
+ elsif params == 3
96
+ define_singleton_method(name) { |v1,v2,v3| {'t'=>name, 'c'=>[v1,v2,v3]} }
97
+ elsif params == 4
98
+ define_singleton_method(name) { |v1,v2,v3,v4| {'t'=>name, 'c'=>[v1,v2,v3,v4]} }
99
+ elsif params == 5
100
+ define_singleton_method(name) { |v1,v2,v3,v4,v5| {'t'=>name, 'c'=>[v1,v2,v3i,v4,v5]} }
101
+ else
102
+ puts "Error!"
103
+ end
104
+ end
105
+ end
metadata ADDED
@@ -0,0 +1,44 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: pandoc-filter
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Tom Potts
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-07-06 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: A small library to make creating Pandoc filters simpler.
14
+ email: karaken12@gmail.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/pandoc-filter.rb
20
+ homepage:
21
+ licenses:
22
+ - MIT
23
+ metadata: {}
24
+ post_install_message:
25
+ rdoc_options: []
26
+ require_paths:
27
+ - lib
28
+ required_ruby_version: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ required_rubygems_version: !ruby/object:Gem::Requirement
34
+ requirements:
35
+ - - ">="
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ requirements: []
39
+ rubyforge_project:
40
+ rubygems_version: 2.4.6
41
+ signing_key:
42
+ specification_version: 4
43
+ summary: A small library to make creating Pandoc filters simpler.
44
+ test_files: []