asciidoctor-json-value-loader 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: a20adf4280493c953889b84644669e9b4c8e0d439dc2524fc9ff721d56e6ccb6
4
+ data.tar.gz: 21669a87007c43d50e7acd46ed85b4de7dd133f3a6752a8515186d175e7ea791
5
+ SHA512:
6
+ metadata.gz: 7af8e4aff520f814075505bbfba00b6636d2261b877681909252f2bbbbf50c16fb45414cd8af4011f24b174d5baaed04b200f051adde86afd30ab4a4f7777581
7
+ data.tar.gz: 749a64356c450e09fcc2eb899ccd8c1e77e0faca1203e8f446d4e4faa65d30c02a6d5e4808d0f34e33ebfd3604b26747f3452a4c939bc713e68e680de43540d0
@@ -0,0 +1,43 @@
1
+ require 'asciidoctor'
2
+ require 'json'
3
+ require 'uri'
4
+
5
+ class JsonValueLoadInlineMacro < Asciidoctor::Extensions::InlineMacroProcessor
6
+ use_dsl
7
+
8
+ named "json-value"
9
+ name_positional_attributes 'volnum'
10
+
11
+ def process parent, target, attrs
12
+
13
+ path, query = target.split(':')
14
+
15
+ query = query.split('.').map do |q|
16
+ decoded = URI.decode_www_form_component(q)
17
+ if decoded.match(/^\d+$/) then
18
+ decoded.to_i
19
+ else
20
+ decoded
21
+ end
22
+ end
23
+
24
+ json = JSON.parse(File.open(path, 'r:utf-8', &:read))
25
+
26
+ content = json.dig(*query)
27
+
28
+ content = case content
29
+ when String
30
+ content
31
+ when Numeric
32
+ content.to_s
33
+ else
34
+ JSON.generate(content)
35
+ end
36
+
37
+ create_inline_pass parent, content, attributes: { 'subs' => :normal }
38
+ end
39
+ end
40
+
41
+ Asciidoctor::Extensions.register do
42
+ inline_macro JsonValueLoadInlineMacro
43
+ end
metadata ADDED
@@ -0,0 +1,57 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: asciidoctor-json-value-loader
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - msr1k
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2024-07-13 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: asciidoctor
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ description: Adds asciidoctor a funcitons to load specific JSON value from JSON file
28
+ email: msr0210@gmail.com
29
+ executables: []
30
+ extensions: []
31
+ extra_rdoc_files: []
32
+ files:
33
+ - lib/asciidoctor-json-value-loader.rb
34
+ homepage: https://github.com/msr1k/asciidoctor-json-value-loader
35
+ licenses:
36
+ - MIT
37
+ metadata: {}
38
+ post_install_message:
39
+ rdoc_options: []
40
+ require_paths:
41
+ - lib
42
+ required_ruby_version: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ required_rubygems_version: !ruby/object:Gem::Requirement
48
+ requirements:
49
+ - - ">="
50
+ - !ruby/object:Gem::Version
51
+ version: '0'
52
+ requirements: []
53
+ rubygems_version: 3.4.22
54
+ signing_key:
55
+ specification_version: 4
56
+ summary: An asciidoctor extention to load specific JSON value
57
+ test_files: []