metanorma-plugin-lutaml 0.2.4.alpha → 0.2.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c060a247f01300f4fe46b58671a07a8f0e3a80f53e64974ccd07208e181e0eaa
4
- data.tar.gz: dcf58ee6f298d24ad2493bd65c62a549a2673717ce8a9404695caad20d32e069
3
+ metadata.gz: fedcbe218c7a2e414eeac2dff54a798c0fcb2df287f8c516c81cb2cf8484848b
4
+ data.tar.gz: 343ba55ae29367376bae9c0175698fe241e8d2c533d420d0becab9cc2f1fdfe9
5
5
  SHA512:
6
- metadata.gz: 5061cc833de5a8d4742095e5491f66ab608bdac3042ecc601cdc26e89f5ff258aa34650b3b19e3eb3b38b50be01b3f866e18f15adda02000278e6a5864cf1b34
7
- data.tar.gz: 3be917c68c0fd6b0157f6578e40f61da433b262629950f76d09b2b2cf9e4cc5f7955d9066a0930f337ec7beb9426790d650bfb632cf9abf570f3431360855ca6
6
+ metadata.gz: 38554d8cef5c12bb9650bbbbf270be3f34f4f4672868a6625966fc2c356bd686bb8e0b585cd9cb466acdc765abc7facce5ef6752ba632014910f1c7f0bc333b1
7
+ data.tar.gz: 46a0bd0c726fdb101783b376a79b633db26ece0b10272d934f4a349a62e8d4f99d5fe881728ed1713599d9e33dcc706ddfcd51205708a4762a1f44f1e236fbeb
@@ -2,7 +2,7 @@ module Metanorma
2
2
  module Plugin
3
3
  module Lutaml
4
4
  class ExpressRemarksDecorator
5
- RELATIVE_PREFIX_MACRO_REGEXP = /^(\* <<express.+?>>;|link|image|video|audio|include)(:+)?(?![^\/:]+:\/\/|[A-Z]:\/|\/)([^:\[]+)(\[.*\])?$/.freeze
5
+ RELATIVE_PREFIX_MACRO_REGEXP = /^(link|image|video|audio|include)(:+)?(?![^\/:]+:\/\/|[A-Z]:\/|\/)([^:\[]+)(\[.*\])?$/.freeze
6
6
 
7
7
  attr_reader :remark, :options
8
8
 
@@ -45,7 +45,11 @@ module Metanorma
45
45
  def prefix_relative_paths(line, path_prefix)
46
46
  line.gsub(RELATIVE_PREFIX_MACRO_REGEXP) do |_match|
47
47
  prefixed_path = File.join(path_prefix, $3.strip)
48
- "#{$1}#{$2}#{prefixed_path}#{$4}"
48
+ # When we are dealing with arelative path of a template: ../path/to/file we need to transform it into
49
+ # the absolute one because `image::` macro wont understand it other way
50
+ prefixed_path = File.absolute_path(prefixed_path) if prefixed_path.start_with?('../')
51
+ full_path = File.expand_path(prefixed_path)
52
+ "#{$1}#{$2}#{full_path}#{$4}"
49
53
  end
50
54
  end
51
55
 
@@ -27,10 +27,11 @@ module Metanorma
27
27
 
28
28
  protected
29
29
 
30
- def content_from_file(document, file_path)
31
- ::Lutaml::Parser
32
- .parse(File.new(Utils.relative_file_path(document, file_path),
33
- encoding: "UTF-8"))
30
+ def content_from_files(document, file_paths)
31
+ file_list = file_paths.map do |file_path|
32
+ File.new(Utils.relative_file_path(document, file_path), encoding: "UTF-8")
33
+ end
34
+ ::Lutaml::Parser.parse(file_list)
34
35
  end
35
36
 
36
37
  private
@@ -72,28 +73,38 @@ module Metanorma
72
73
 
73
74
  def contexts_items(block_match, document, express_indexes)
74
75
  contexts_names = block_match[1].split(";").map(&:strip)
75
- contexts_names.each_with_object([]) do |path, res|
76
+ file_paths = []
77
+ result = contexts_names.each_with_object([]) do |path, res|
76
78
  if express_indexes[path]
77
79
  res.push(*express_indexes[path])
78
80
  else
79
- res.push(content_from_file(document, path).to_liquid)
81
+ file_paths.push(path)
80
82
  end
81
83
  end
84
+ if !file_paths.empty?
85
+ from_files = content_from_files(document, file_paths)
86
+ .map do |n|
87
+ n.to_liquid.map { |j| j.merge('relative_path_prefix' => Utils.relative_file_path(document, File.dirname(j['file']))) }
88
+ end
89
+ .flatten
90
+ result += from_files
91
+ end
92
+ result
82
93
  end
83
94
 
84
95
  def parse_template(document, current_block, block_match, express_indexes)
85
96
  options = parse_options(block_match[3])
86
- .merge("relative_path_prefix" => File.dirname(block_match[1]))
87
97
  contexts_items(block_match, document, express_indexes)
88
- .map do |context_items|
98
+ .map do |items|
99
+ opts = options.merge('relative_path_prefix' => items['relative_path_prefix'])
89
100
  parse_context_block(document: document,
90
101
  context_lines: current_block,
91
- context_items: decorate_context_items(context_items, options),
102
+ context_items: decorate_context_items(items, opts),
92
103
  context_name: block_match[2].strip)
93
104
  end.flatten
94
- rescue StandardError => e
95
- document.logger.warn("Failed to parse lutaml block: #{e.message}")
96
- []
105
+ # rescue StandardError => e
106
+ # document.logger.warn("Failed to parse lutaml block: #{e.message}")
107
+ # []
97
108
  end
98
109
 
99
110
  def parse_options(options_string)
@@ -29,6 +29,7 @@ module Metanorma
29
29
  ::Lutaml::Parser
30
30
  .parse(File.new(Utils.relative_file_path(document, file_path),
31
31
  encoding: "UTF-8"))
32
+ .first
32
33
  end
33
34
 
34
35
  def processed_lines(document, input_lines)
@@ -38,8 +38,10 @@ module Metanorma
38
38
  next if [".", ".."].include?(path)
39
39
 
40
40
  begin
41
+ parsed = ::Lutaml::Parser.parse(File.new(path, encoding: "UTF-8"))
42
+ parsed = parsed.map { |n| n.to_liquid.map { |j| j.merge('relative_path_prefix' => Utils.relative_file_path(document, File.dirname(j['file']))) } }.flatten
41
43
  idxs[name]
42
- .push(::Lutaml::Parser.parse(File.new(path, encoding: "UTF-8")).to_liquid)
44
+ .push(*parsed)
43
45
  rescue StandardError => e
44
46
  document.logger.warn("Failed to load #{path}: #{e.message}")
45
47
  end
@@ -1,7 +1,7 @@
1
1
  module Metanorma
2
2
  module Plugin
3
3
  module Lutaml
4
- VERSION = "0.2.4.alpha".freeze
4
+ VERSION = "0.2.4".freeze
5
5
  end
6
6
  end
7
7
  end
@@ -24,7 +24,7 @@ Gem::Specification.new do |spec|
24
24
  spec.require_paths = ["lib"]
25
25
 
26
26
  spec.add_dependency "liquid"
27
- spec.add_dependency "lutaml", "0.4.1.pre.alpha"
27
+ spec.add_dependency "lutaml", "0.4.1.pre.alpha.2"
28
28
  spec.add_dependency "lutaml-uml", "~> 0.2.0"
29
29
  spec.add_dependency "metanorma"
30
30
  spec.add_dependency "relaton-cli"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metanorma-plugin-lutaml
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4.alpha
4
+ version: 0.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-02-09 00:00:00.000000000 Z
11
+ date: 2021-03-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: liquid
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - '='
32
32
  - !ruby/object:Gem::Version
33
- version: 0.4.1.pre.alpha
33
+ version: 0.4.1.pre.alpha.2
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.4.1.pre.alpha
40
+ version: 0.4.1.pre.alpha.2
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: lutaml-uml
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -274,9 +274,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
274
274
  version: '0'
275
275
  required_rubygems_version: !ruby/object:Gem::Requirement
276
276
  requirements:
277
- - - ">"
277
+ - - ">="
278
278
  - !ruby/object:Gem::Version
279
- version: 1.3.1
279
+ version: '0'
280
280
  requirements: []
281
281
  rubygems_version: 3.0.3
282
282
  signing_key: