asciidoctor-json-value-loader 0.1.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 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: []