metanorma-core 0.1.1 → 0.1.2
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/metanorma/core/flavor_loader.rb +68 -0
- data/lib/metanorma/core/isodoc.rb +48 -0
- data/lib/metanorma/core/version.rb +1 -1
- data/lib/metanorma-core.rb +2 -0
- data/metanorma-core.gemspec +4 -3
- metadata +14 -12
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 75534ea08c92e8ce3d6c9011c6f0ffb3cda325ba1a0955ca3715f12c8023ff84
|
|
4
|
+
data.tar.gz: d8afbb2d77828838eb694ede69fcb7bed5d680f7b224913726c55d6d6e2537e5
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 40e5e611703c2f81216430d2af7e14ec4544c2de8feec7bf02ff00964c7df08e315ec46a1fc24deca556e161ff91b40493aee80bcdf6890eaaaea6a2b3474793
|
|
7
|
+
data.tar.gz: a7da456887f1dd604d1834d416299756f420839d6a76c284d49211c2203a9b7781d5cd79ec7cd12de49416602c13541ad6688b40758497e510f0fa6d7a1d360d
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "date"
|
|
4
|
+
|
|
5
|
+
module Metanorma
|
|
6
|
+
module Core
|
|
7
|
+
module FlavorLoader
|
|
8
|
+
module_function
|
|
9
|
+
|
|
10
|
+
def taste2flavor(stdtype)
|
|
11
|
+
stdtype = stdtype.to_sym
|
|
12
|
+
tastes = Metanorma::TasteRegister.instance.aliases
|
|
13
|
+
tastes[stdtype] and stdtype = tastes[stdtype].to_sym
|
|
14
|
+
stdtype
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def stdtype2flavor_gem(stdtype)
|
|
18
|
+
"metanorma-#{stdtype}"
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def load_flavor(stdtype)
|
|
22
|
+
canonical = taste2flavor(stdtype)
|
|
23
|
+
gem_name = stdtype2flavor_gem(canonical)
|
|
24
|
+
registry = Metanorma::Registry.instance
|
|
25
|
+
registry.supported_backends.include?(canonical) or
|
|
26
|
+
require_flavor_gem(gem_name, stdtype)
|
|
27
|
+
registry.supported_backends.include?(canonical) or
|
|
28
|
+
flavor_unsupported(gem_name, stdtype)
|
|
29
|
+
canonical
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def require_flavor_gem(gem_name, stdtype)
|
|
33
|
+
Metanorma::Util.log("[metanorma] Info: Loading `#{gem_name}` gem " \
|
|
34
|
+
"for standard type `#{stdtype}`.", :info)
|
|
35
|
+
require gem_name
|
|
36
|
+
Metanorma::Util.log("[metanorma] Info: gem `#{gem_name}` loaded.",
|
|
37
|
+
:info)
|
|
38
|
+
rescue LoadError => e
|
|
39
|
+
write_flavor_error_log(e, gem_name)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def write_flavor_error_log(err, gem_name)
|
|
43
|
+
error_log = "#{Date.today}-error.log"
|
|
44
|
+
File.write(error_log, err)
|
|
45
|
+
msg = <<~MSG
|
|
46
|
+
Error: #{err.message}
|
|
47
|
+
Metanorma has encountered an exception.
|
|
48
|
+
|
|
49
|
+
If this problem persists, please report this issue at the following link:
|
|
50
|
+
|
|
51
|
+
* https://github.com/metanorma/metanorma/issues/new
|
|
52
|
+
|
|
53
|
+
Please attach the #{error_log} file.
|
|
54
|
+
Your valuable feedback is very much appreciated!
|
|
55
|
+
|
|
56
|
+
- The Metanorma team
|
|
57
|
+
MSG
|
|
58
|
+
Metanorma::Util.log(msg, :fatal)
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def flavor_unsupported(gem_name, stdtype)
|
|
62
|
+
Metanorma::Util.log("[metanorma] Error: The `#{gem_name}` gem does " \
|
|
63
|
+
"not support the standard type #{stdtype}. " \
|
|
64
|
+
"Exiting.", :fatal)
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
end
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "asciidoctor"
|
|
4
|
+
require_relative "flavor_loader"
|
|
5
|
+
|
|
6
|
+
module Metanorma
|
|
7
|
+
module Core
|
|
8
|
+
module Isodoc
|
|
9
|
+
class EmptyNode
|
|
10
|
+
def attr(_)
|
|
11
|
+
nil
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def attributes
|
|
15
|
+
{}
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def self.init(converter, lang:, script:, locale: nil,
|
|
20
|
+
i18nyaml: nil, xml: nil, localdir: nil)
|
|
21
|
+
converter.init_i18n(i18nyaml: i18nyaml, language: lang,
|
|
22
|
+
script: script, locale: locale)
|
|
23
|
+
i18n = converter.i18n_init(lang, script, locale, i18nyaml)
|
|
24
|
+
converter.metadata_init(lang, script, locale, i18n)
|
|
25
|
+
converter.meta.localdir = localdir if localdir
|
|
26
|
+
converter.xref_init(lang, script, nil, i18n, {})
|
|
27
|
+
converter.xrefs.klass.meta = converter.meta
|
|
28
|
+
converter.xrefs.klass.localdir = localdir if localdir
|
|
29
|
+
converter.info(xml, nil) if xml
|
|
30
|
+
converter
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def self.resolve_converter(flavor, presxml: true)
|
|
34
|
+
resolved = Metanorma::Core::FlavorLoader.load_flavor(flavor)
|
|
35
|
+
conv_class = ::Asciidoctor::Converter.for(resolved.to_s) ||
|
|
36
|
+
::Asciidoctor::Converter.for(resolved)
|
|
37
|
+
conv_class or
|
|
38
|
+
raise "No Asciidoctor converter registered for #{resolved}"
|
|
39
|
+
conv_instance = conv_class.new(resolved.to_s, {})
|
|
40
|
+
method_name = presxml ? :presentation_xml_converter : :html_converter
|
|
41
|
+
conv_instance.respond_to?(method_name) or
|
|
42
|
+
raise "Flavor #{resolved} does not support " \
|
|
43
|
+
"#{presxml ? 'presentation XML' : 'HTML'} conversion"
|
|
44
|
+
conv_instance.send(method_name, EmptyNode.new)
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
data/lib/metanorma-core.rb
CHANGED
data/metanorma-core.gemspec
CHANGED
|
@@ -25,9 +25,9 @@ Gem::Specification.new do |spec|
|
|
|
25
25
|
end
|
|
26
26
|
spec.required_ruby_version = Gem::Requirement.new(">= 3.1.0")
|
|
27
27
|
|
|
28
|
-
spec.
|
|
29
|
-
spec.
|
|
30
|
-
spec.
|
|
28
|
+
spec.add_dependency "asciidoctor"
|
|
29
|
+
spec.add_dependency "metanorma-taste", "~> 1.0.0"
|
|
30
|
+
spec.add_dependency "nokogiri"
|
|
31
31
|
|
|
32
32
|
spec.add_development_dependency "debug"
|
|
33
33
|
spec.add_development_dependency "rake", "~> 13.0"
|
|
@@ -35,4 +35,5 @@ Gem::Specification.new do |spec|
|
|
|
35
35
|
spec.add_development_dependency "rubocop", "~> 1"
|
|
36
36
|
spec.add_development_dependency "rubocop-performance"
|
|
37
37
|
spec.add_development_dependency "simplecov", "~> 0.15"
|
|
38
|
+
#spec.metadata["rubygems_mfa_required"] = "true"
|
|
38
39
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: metanorma-core
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ribose Inc.
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-04-
|
|
11
|
+
date: 2026-04-27 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: asciidoctor
|
|
@@ -25,33 +25,33 @@ dependencies:
|
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
26
|
version: '0'
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
|
-
name:
|
|
28
|
+
name: metanorma-taste
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
30
30
|
requirements:
|
|
31
|
-
- - "
|
|
31
|
+
- - "~>"
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
|
-
version:
|
|
33
|
+
version: 1.0.0
|
|
34
34
|
type: :runtime
|
|
35
35
|
prerelease: false
|
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
37
|
requirements:
|
|
38
|
-
- - "
|
|
38
|
+
- - "~>"
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
|
-
version:
|
|
40
|
+
version: 1.0.0
|
|
41
41
|
- !ruby/object:Gem::Dependency
|
|
42
|
-
name:
|
|
42
|
+
name: nokogiri
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
44
44
|
requirements:
|
|
45
|
-
- - "
|
|
45
|
+
- - ">="
|
|
46
46
|
- !ruby/object:Gem::Version
|
|
47
|
-
version:
|
|
47
|
+
version: '0'
|
|
48
48
|
type: :runtime
|
|
49
49
|
prerelease: false
|
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
51
|
requirements:
|
|
52
|
-
- - "
|
|
52
|
+
- - ">="
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
|
-
version:
|
|
54
|
+
version: '0'
|
|
55
55
|
- !ruby/object:Gem::Dependency
|
|
56
56
|
name: debug
|
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -154,6 +154,8 @@ files:
|
|
|
154
154
|
- lib/metanorma/asciidoctor_extensions.rb
|
|
155
155
|
- lib/metanorma/asciidoctor_extensions/glob_include_processor.rb
|
|
156
156
|
- lib/metanorma/config/config.rb
|
|
157
|
+
- lib/metanorma/core/flavor_loader.rb
|
|
158
|
+
- lib/metanorma/core/isodoc.rb
|
|
157
159
|
- lib/metanorma/core/version.rb
|
|
158
160
|
- lib/metanorma/input.rb
|
|
159
161
|
- lib/metanorma/input/asciidoc.rb
|