mn-requirements 0.5.8 → 0.5.10

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: e2e0c4a9b0d02316fd0d4acd61a486620cd795d5524d4a26577d66b7df226b41
4
- data.tar.gz: 53eee52188710a25557b1e8e47c78ede14094297a88553e337982e2bedd74260
3
+ metadata.gz: e446f52e8a55fc21a99df29ce798a2a7ea84d987d07aceb23d64b5c1c77be7e3
4
+ data.tar.gz: f1142726f55149df21ff127df360b656cd14b9c376f7d13844ba04451239b5b1
5
5
  SHA512:
6
- metadata.gz: 65aca4ae0137d2e7169bfbcb74c4a82fb77cd9a68f302313d7acf6a11c714b37230d7d1885d30361f398467454a614f84bef21005bf00ecdfc6bd1ab34d3f70f
7
- data.tar.gz: 17fd1772574e8e2f33dda1a6aaa15d0492f2fe7cf828f59d2dfe227ac07ccb3f87151b7a8f51852eb9491c727faffdd5e5680c1c6c0ef9374ed4844c5b573545
6
+ metadata.gz: 2617c33c902c0caddd8ac9f47f4b9fd497ce04482ef53195d50e13776e3f2a165ec1c13f3891efb67cfdbfc11b891dcff9a598894bf344d6f97a3b538bc171b8
7
+ data.tar.gz: dba9959bd392290b870c539410f8d50b55203308d96b3ec786c1c6a9532bcbc7e650f89a614390425f2fe21d52853109dfd63f792729de68aab92b20345ab684
@@ -73,7 +73,7 @@ module Metanorma
73
73
  end
74
74
 
75
75
  def requirement_metadata1_attrs
76
- %w(obligation model type class)
76
+ %w(obligation model type class render)
77
77
  end
78
78
 
79
79
  def requirement_metadata1_tags
@@ -3,6 +3,7 @@ require_relative "cleanup"
3
3
  require_relative "utils"
4
4
  require_relative "isodoc"
5
5
  require_relative "xrefs"
6
+ require "metanorma-core"
6
7
 
7
8
  module Metanorma
8
9
  class Requirements
@@ -12,6 +13,7 @@ module Metanorma
12
13
  @parent = options[:parent]
13
14
  @i18n = @parent.i18n
14
15
  @labels = @parent.labels
16
+ @isodoc = options[:isodoc]
15
17
  end
16
18
 
17
19
  def reqt_subpart?(name)
@@ -1,3 +1,5 @@
1
+ require "isodoc"
2
+
1
3
  module Metanorma
2
4
  class Requirements
3
5
  class Default
@@ -5,34 +7,9 @@ module Metanorma
5
7
  @i18n.l10n(text)
6
8
  end
7
9
 
8
- # TODO: move to metanorma-utils
9
- def semx_fmt_dup(elem)
10
- elem["id"] ||= "_#{UUIDTools::UUID.random_create}"
11
- new = Nokogiri::XML(<<~XML).root
12
- <semx xmlns='#{elem.namespace.href}' element='#{elem.name}' source='#{elem['original-id'] || elem['id']}'>#{to_xml(elem.children)}</semx>
13
- XML
14
- strip_duplicate_ids(nil, elem, new)
15
- new
16
- end
17
-
18
- def gather_all_ids(elem)
19
- elem.xpath(".//*[@id]").each_with_object([]) do |i, m|
20
- m << i["id"]
10
+ def semx_fmt_dup(elem)
11
+ @isodoc.semx_fmt_dup(elem)
21
12
  end
22
- end
23
-
24
- # remove ids duplicated between sem_title and pres_title
25
- # index terms are assumed transferred to pres_title from sem_title
26
- def strip_duplicate_ids(_node, sem_title, pres_title)
27
- sem_title && pres_title or return
28
- ids = gather_all_ids(pres_title)
29
- sem_title.xpath(".//*[@id]").each do |x|
30
- ids.include?(x["id"]) or next
31
- x["original-id"] = x["id"]
32
- x.delete("id")
33
- end
34
- sem_title.xpath(ns(".//index")).each(&:remove)
35
- end
36
13
 
37
14
  def recommendation_label(elem, type, xrefs)
38
15
  label, title = recommendation_labels(elem)
@@ -40,7 +17,8 @@ def semx_fmt_dup(elem)
40
17
  num = xrefs.anchor(elem["id"], :label, false)
41
18
  num &&= "<semx element='autonum' source='#{elem['id']}'>#{num}</semx>"
42
19
  ret = num
43
- /<span class='fmt-element-name'>/.match?(ret) or ret = "#{type} #{num}".strip
20
+ ret&.include?("<span class='fmt-element-name'>") or
21
+ ret = "#{type} #{num}".strip
44
22
  label || title and
45
23
  ret += recommendation_label_add(elem, label, title)
46
24
  ret
@@ -66,6 +44,34 @@ def semx_fmt_dup(elem)
66
44
  end
67
45
 
68
46
  def requirement_render1(node)
47
+ case node["render"]
48
+ when "inline" then requirement_render1_inline(node)
49
+ else requirement_render1_default(node)
50
+ end
51
+ end
52
+
53
+ def requirement_render1_inline(node)
54
+ out = recommendation_base(node, "fmt-provision")
55
+ lbl, body = requirement_render1_inline_prep(node)
56
+ if ins = body&.at(ns(".//p"))
57
+ ins.children.first.previous = lbl
58
+ out << body
59
+ else
60
+ lbl and out << lbl
61
+ body and out << body
62
+ end
63
+ requirement_presentation(node, out)
64
+ end
65
+
66
+ def requirement_render1_inline_prep(node)
67
+ ident = node.at(ns("./identifier")) and
68
+ lbl = "[#{to_xml(semx_fmt_dup(ident))}] "
69
+ body = node.at(ns("./title | ./specification | ./description"))
70
+ body &&= semx_fmt_dup(body)
71
+ [lbl, body]
72
+ end
73
+
74
+ def requirement_render1_default(node)
69
75
  out = recommendation_base(node, "fmt-provision")
70
76
  ins = recommendation_header(node, out)
71
77
  ins = recommendation_attributes(node, ins)
@@ -99,7 +105,7 @@ def semx_fmt_dup(elem)
99
105
  def recommendation_labels(node)
100
106
  [node.at(ns("./identifier")), node.at(ns("./title"))]
101
107
  .map do |n|
102
- to_xml(n&.children)
108
+ to_xml(n&.children)
103
109
  end
104
110
  end
105
111
 
@@ -107,7 +113,6 @@ def semx_fmt_dup(elem)
107
113
  oblig = node["obligation"] and
108
114
  out << l10n("#{@labels['default']['obligation']}: #{oblig}")
109
115
  node.xpath(ns("./subject")).each do |subj|
110
- #out << l10n("#{@labels['default']['subject']}: #{subj.text}")
111
116
  out << l10n("#{@labels['default']['subject']}: #{to_xml(semx_fmt_dup(subj))}")
112
117
  end
113
118
  node.xpath(ns("./inherit")).each do |i|
@@ -120,7 +125,6 @@ def semx_fmt_dup(elem)
120
125
  end
121
126
 
122
127
  def recommendation_attr_parse(node, label)
123
- #l10n("#{label}: #{to_xml(node.children)}")
124
128
  l10n("#{label}: #{to_xml(semx_fmt_dup(node))}")
125
129
  end
126
130
 
@@ -18,10 +18,18 @@ module Metanorma
18
18
  # @labels = @i18n.get.deep_merge(options[:labels] || {})["requirements"]
19
19
  @labels = @i18n.get["requirements"]
20
20
  @modspecidentifierbase = options[:modspecidentifierbase]
21
+ init_isodoc(options)
21
22
  @models =
22
23
  model_names.each_with_object({}) { |k, m| m[k] = create(k) }
23
24
  end
24
25
 
26
+ def init_isodoc(options)
27
+ @isodoc = Metanorma::Core::Isodoc
28
+ .init(options[:conv], lang: options[:lang], script: options[:script],
29
+ locale: options[:locale],
30
+ i18nyaml: options[:labels])
31
+ end
32
+
25
33
  def model_names
26
34
  %i[default ogc]
27
35
  end
@@ -50,8 +58,8 @@ module Metanorma
50
58
  def create(type)
51
59
  case type
52
60
  when :modspec, :ogc
53
- Metanorma::Requirements::Modspec.new(parent: self)
54
- else Metanorma::Requirements::Default.new(parent: self)
61
+ Metanorma::Requirements::Modspec.new(parent: self, isodoc: @isodoc)
62
+ else Metanorma::Requirements::Default.new(parent: self, isodoc: @isodoc)
55
63
  end
56
64
  end
57
65
 
@@ -1,5 +1,5 @@
1
1
  module Metanorma
2
2
  class Requirements
3
- VERSION = "0.5.8".freeze
3
+ VERSION = "0.5.10".freeze
4
4
  end
5
5
  end
@@ -28,19 +28,21 @@ Gem::Specification.new do |spec|
28
28
  # precise version is on relaton-render
29
29
  spec.add_dependency "isodoc-i18n", ">= 1.2.0"
30
30
  spec.add_dependency "metanorma-utils", ">= 2.0.0"
31
+ spec.add_dependency "metanorma-core", ">= 0.1.0"
31
32
  spec.add_dependency "relaton-render", ">= 1.0.0"
32
33
 
34
+ spec.add_development_dependency "benchmark"
35
+ spec.add_development_dependency "canon"
33
36
  spec.add_development_dependency "debug"
34
37
  spec.add_development_dependency "equivalent-xml", "~> 0.6"
35
38
  spec.add_development_dependency "guard", "~> 2.14"
36
39
  spec.add_development_dependency "guard-rspec", "~> 4.7"
37
- spec.add_development_dependency "metanorma-standoc", ">= 2.8.0"
40
+ spec.add_development_dependency "metanorma-standoc", ">= 3.4.1"
38
41
  spec.add_development_dependency "rake", "~> 13.0"
39
42
  spec.add_development_dependency "rspec", "~> 3.6"
40
43
  spec.add_development_dependency "rubocop", "~> 1"
41
- spec.add_development_dependency "rubocop-performance"
44
+ spec.add_development_dependency "rubocop-performance"
42
45
  spec.add_development_dependency "sassc-embedded", "~> 1"
43
46
  spec.add_development_dependency "simplecov", "~> 0.15"
44
47
  spec.add_development_dependency "timecop", "~> 0.9"
45
- spec.add_development_dependency "canon", "= 0.1.3"
46
48
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mn-requirements
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.8
4
+ version: 0.5.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2026-02-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: isodoc-i18n
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: 2.0.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: metanorma-core
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: 0.1.0
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: 0.1.0
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: relaton-render
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -52,6 +66,34 @@ dependencies:
52
66
  - - ">="
53
67
  - !ruby/object:Gem::Version
54
68
  version: 1.0.0
69
+ - !ruby/object:Gem::Dependency
70
+ name: benchmark
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: canon
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
55
97
  - !ruby/object:Gem::Dependency
56
98
  name: debug
57
99
  requirement: !ruby/object:Gem::Requirement
@@ -114,14 +156,14 @@ dependencies:
114
156
  requirements:
115
157
  - - ">="
116
158
  - !ruby/object:Gem::Version
117
- version: 2.8.0
159
+ version: 3.4.1
118
160
  type: :development
119
161
  prerelease: false
120
162
  version_requirements: !ruby/object:Gem::Requirement
121
163
  requirements:
122
164
  - - ">="
123
165
  - !ruby/object:Gem::Version
124
- version: 2.8.0
166
+ version: 3.4.1
125
167
  - !ruby/object:Gem::Dependency
126
168
  name: rake
127
169
  requirement: !ruby/object:Gem::Requirement
@@ -220,20 +262,6 @@ dependencies:
220
262
  - - "~>"
221
263
  - !ruby/object:Gem::Version
222
264
  version: '0.9'
223
- - !ruby/object:Gem::Dependency
224
- name: canon
225
- requirement: !ruby/object:Gem::Requirement
226
- requirements:
227
- - - '='
228
- - !ruby/object:Gem::Version
229
- version: 0.1.3
230
- type: :development
231
- prerelease: false
232
- version_requirements: !ruby/object:Gem::Requirement
233
- requirements:
234
- - - '='
235
- - !ruby/object:Gem::Version
236
- version: 0.1.3
237
265
  description: 'Requirements processing and rendering according to different models
238
266
 
239
267
  '