metanorma 1.7.2 → 1.7.4
Sign up to get free protection for your applications and to get access to all the features.
- 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
|