metanorma-core 0.1.0 → 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fc0a7a2a3459cb453bdb0ef6cfb0e08257677474f3ab66d442673c0c6d97fb01
4
- data.tar.gz: 821e0b9f72c75c9475356c3dd4fb45bc11007f2c4923d225f27024477d7a96df
3
+ metadata.gz: 75534ea08c92e8ce3d6c9011c6f0ffb3cda325ba1a0955ca3715f12c8023ff84
4
+ data.tar.gz: d8afbb2d77828838eb694ede69fcb7bed5d680f7b224913726c55d6d6e2537e5
5
5
  SHA512:
6
- metadata.gz: 4e58cf715611c4fc73db39b1017d369847c280e406cd24d4f40a283c1abd26c06a3dc08545fb0df102b66d5ef550991b42aeeb28cc4370f81c30a751683bcc5f
7
- data.tar.gz: 6c3020ab3c56adb6dd1b6cc8c651067be7dcfe122052ab0c319144b1e3693b7fb57368a1de8bace05ba1bdb8b11d34e6d3ad5b9dc0bffa7822bef08c643a645f
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
@@ -1,5 +1,5 @@
1
1
  module Metanorma
2
2
  module Core
3
- VERSION = "0.1.0".freeze
3
+ VERSION = "0.1.2".freeze
4
4
  end
5
5
  end
@@ -8,6 +8,8 @@ require "metanorma/input"
8
8
  require "metanorma/processor/processor"
9
9
  require "metanorma/registry/registry"
10
10
  require "metanorma/asciidoctor_extensions"
11
+ require "metanorma/core/flavor_loader"
12
+ require "metanorma/core/isodoc"
11
13
 
12
14
  module Metanorma
13
15
  end
@@ -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.add_runtime_dependency "asciidoctor"
29
- spec.add_runtime_dependency "nokogiri"
30
- spec.add_runtime_dependency "metanorma-taste", "~> 1.0.0"
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.0
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-16 00:00:00.000000000 Z
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: nokogiri
28
+ name: metanorma-taste
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
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: '0'
40
+ version: 1.0.0
41
41
  - !ruby/object:Gem::Dependency
42
- name: metanorma-taste
42
+ name: nokogiri
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: 1.0.0
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: 1.0.0
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