metanorma 1.7.2 → 1.7.4
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/collection_render_utils.rb +3 -2
- data/lib/metanorma/compile.rb +16 -3
- data/lib/metanorma/compile_options.rb +17 -12
- data/lib/metanorma/files_lookup_sectionsplit.rb +1 -0
- data/lib/metanorma/input/asciidoc.rb +9 -8
- data/lib/metanorma/sectionsplit.rb +2 -1
- data/lib/metanorma/util.rb +6 -1
- data/lib/metanorma/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d3a50d8116aadebecaf6fbdcdc1b9ffaee19cb233bf38ad6ea2f7b6b1b320fa8
|
4
|
+
data.tar.gz: 67283cbe9df47b100e3b6598f08bb7a00e9be1602d3a6cc7d41ff3b527673556
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 195226d8f70127bfe659d1a032824482ec02911ca8f7f1e9d0f75f14f5b319e90912300345a50c05422b6dd87fc5b0b1674b11f66471e06c8ff79c39a4ab3db3
|
7
|
+
data.tar.gz: 4fbf96851ca7857e83767abbb86c13cc9a28130b289543f82b9d30841d55298703149b82d48597c6d25acc8ea7a0667ff00a49784187f471d0f685c0598a2104
|
@@ -20,8 +20,9 @@ module Metanorma
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def get_bibitem_docid(bib, identifier)
|
23
|
-
|
24
|
-
|
23
|
+
docid =
|
24
|
+
bib.at(ns("./docidentifier[@type = 'metanorma-collection']")) ||
|
25
|
+
bib.at(ns("./docidentifier[not(@type)]")) ||
|
25
26
|
bib.at(ns("./docidentifier"))
|
26
27
|
docid &&= docid_prefix(docid)
|
27
28
|
if @files.get(docid) then docid
|
data/lib/metanorma/compile.rb
CHANGED
@@ -22,18 +22,31 @@ module Metanorma
|
|
22
22
|
@errors = []
|
23
23
|
@isodoc = IsoDoc::Convert.new({})
|
24
24
|
@fontist_installed = false
|
25
|
+
@log = Metanorma::Utils::Log.new
|
25
26
|
end
|
26
27
|
|
27
28
|
def compile(filename, options = {})
|
28
|
-
|
29
|
-
options = options_extract(filename, options)
|
30
|
-
validate_options(options)
|
29
|
+
options_process(filename, options)
|
31
30
|
@processor = @registry.find_processor(options[:type].to_sym)
|
32
31
|
extensions = get_extensions(options) or return nil
|
33
32
|
(file, isodoc = process_input(filename, options)) or return nil
|
34
33
|
relaton_export(isodoc, options)
|
35
34
|
extract(isodoc, options[:extract], options[:extract_type])
|
36
35
|
process_exts(filename, extensions, file, isodoc, options)
|
36
|
+
clean_exit(options)
|
37
|
+
end
|
38
|
+
|
39
|
+
def options_process(filename, options)
|
40
|
+
require_libraries(options)
|
41
|
+
options = options_extract(filename, options)
|
42
|
+
validate_options(options)
|
43
|
+
@log.save_to(filename, options[:output_dir])
|
44
|
+
options[:log] = @log
|
45
|
+
end
|
46
|
+
|
47
|
+
def clean_exit(options)
|
48
|
+
options[:novalid] and return
|
49
|
+
@log.write
|
37
50
|
end
|
38
51
|
|
39
52
|
def process_input(filename, options)
|
@@ -30,29 +30,27 @@ module Metanorma
|
|
30
30
|
options[:format] ||= :asciidoc
|
31
31
|
options[:filename] = filename
|
32
32
|
options[:fontlicenseagreement] ||= "no-install-fonts"
|
33
|
+
options[:novalid] = o[:novalid] if o[:novalid]
|
33
34
|
options
|
34
35
|
end
|
35
36
|
|
36
37
|
def get_extensions(options)
|
37
|
-
options
|
38
|
-
|
39
|
-
extensions = extract_extensions(options)
|
40
|
-
if !extensions.include?(:presentation) && extensions.any? do |e|
|
38
|
+
ext = extract_extensions(options)
|
39
|
+
!ext.include?(:presentation) && ext.any? do |e|
|
41
40
|
@processor.use_presentation_xml(e)
|
42
|
-
end
|
43
|
-
|
44
|
-
|
45
|
-
|
41
|
+
end and ext << :presentation
|
42
|
+
!ext.include?(:rxl) && options[:site_generate] and
|
43
|
+
ext << :rxl
|
44
|
+
ext
|
46
45
|
end
|
47
46
|
|
48
47
|
def extract_extensions(options)
|
48
|
+
options[:extension_keys] ||=
|
49
|
+
@processor.output_formats.reduce([]) { |memo, (k, _)| memo << k }
|
49
50
|
options[:extension_keys].reduce([]) do |memo, e|
|
50
51
|
if @processor.output_formats[e] then memo << e
|
51
52
|
else
|
52
|
-
|
53
|
-
"for this standard."
|
54
|
-
@errors << message
|
55
|
-
Util.log(message, :error)
|
53
|
+
unsupported_format_error(e)
|
56
54
|
memo
|
57
55
|
end
|
58
56
|
end
|
@@ -65,6 +63,13 @@ module Metanorma
|
|
65
63
|
|
66
64
|
private
|
67
65
|
|
66
|
+
def unsupported_format_error(ext)
|
67
|
+
message = "[metanorma] Error: #{ext} format is not supported " \
|
68
|
+
"for this standard."
|
69
|
+
@errors << message
|
70
|
+
Util.log(message, :error)
|
71
|
+
end
|
72
|
+
|
68
73
|
def get_isodoc_options(file, options, ext)
|
69
74
|
ret = @processor.extract_options(file)
|
70
75
|
copy_isodoc_options_attrs(options, ret)
|
@@ -5,11 +5,11 @@ module Metanorma
|
|
5
5
|
class Asciidoc < Base
|
6
6
|
def process(file, filename, type, options = {})
|
7
7
|
require "asciidoctor"
|
8
|
-
out_opts = {
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
8
|
+
out_opts = { to_file: false, safe: :safe, backend: type,
|
9
|
+
header_footer: true, log: options[:log],
|
10
|
+
novalid: options[:novalid],
|
11
|
+
attributes: ["nodoc", "stem", "docfile=#{filename}",
|
12
|
+
"output_dir=#{options[:output_dir]}"] }
|
13
13
|
unless asciidoctor_validate(file, filename, out_opts)
|
14
14
|
warn "Cannot continue compiling Asciidoctor document"
|
15
15
|
abort
|
@@ -24,7 +24,7 @@ module Metanorma
|
|
24
24
|
$stderr = StringIO.new
|
25
25
|
::Asciidoctor.load(file, options)
|
26
26
|
%r{(\n|^)asciidoctor: ERROR: ['"]?#{Regexp.escape(filename ||
|
27
|
-
|
27
|
+
'<empty>')}['"]?: line \d+: include file not found: }
|
28
28
|
.match($stderr.string) and err = $stderr.string
|
29
29
|
ensure
|
30
30
|
$stderr = previous_stderr
|
@@ -39,15 +39,16 @@ module Metanorma
|
|
39
39
|
/\n:mn-output-extensions:\s+(?<extensions>[^\n]+)\n/ =~ headerextract
|
40
40
|
/\n:mn-relaton-output-file:\s+(?<relaton>[^\n]+)\n/ =~ headerextract
|
41
41
|
/\n(?<asciimath>:mn-keep-asciimath:[^\n]*)\n/ =~ headerextract
|
42
|
+
/\n(?<novalid>:novalid:[^\n]*)\n/ =~ headerextract
|
42
43
|
asciimath = if defined?(asciimath)
|
43
|
-
|
44
|
+
!asciimath.nil? && asciimath != ":mn-keep-asciimath: false"
|
44
45
|
end
|
45
46
|
asciimath = nil if asciimath == false
|
46
47
|
{
|
47
48
|
type: defined?(type) ? type&.strip : nil,
|
48
49
|
extensions: defined?(extensions) ? extensions&.strip : nil,
|
49
50
|
relaton: defined?(relaton) ? relaton&.strip : nil,
|
50
|
-
asciimath: asciimath,
|
51
|
+
asciimath: asciimath, novalid: !novalid.nil? || nil
|
51
52
|
}.compact
|
52
53
|
end
|
53
54
|
|
@@ -206,7 +206,8 @@ module Metanorma
|
|
206
206
|
output_folder: "#{ident}_collection",
|
207
207
|
format: %i(html),
|
208
208
|
coverpage: File.join(dir, "cover.html")).coverpage
|
209
|
-
filename = one_doc_coll ? "#{ident}_index.html" : "index.html"
|
209
|
+
#filename = one_doc_coll ? "#{ident}_index.html" : "index.html"
|
210
|
+
filename = "#{ident}_index.html"
|
210
211
|
FileUtils.mv "#{ident}_collection/index.html", File.join(dir, filename)
|
211
212
|
FileUtils.rm_rf "#{ident}_collection"
|
212
213
|
filename
|
data/lib/metanorma/util.rb
CHANGED
@@ -40,7 +40,12 @@ module Metanorma
|
|
40
40
|
|
41
41
|
def self.gather_bibitems(xml)
|
42
42
|
xml.xpath("//xmlns:bibitem[@id]").each_with_object({}) do |b, m|
|
43
|
-
m[b["id"]]
|
43
|
+
if m[b["id"]]
|
44
|
+
b.remove
|
45
|
+
next # we can't update duplicate bibitem, processing updates wrong one
|
46
|
+
else
|
47
|
+
m[b["id"]] = b
|
48
|
+
end
|
44
49
|
end
|
45
50
|
end
|
46
51
|
|
data/lib/metanorma/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: metanorma
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.7.
|
4
|
+
version: 1.7.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ribose Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-04-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: asciidoctor
|