mn-requirements 0.3.4 → 0.3.6

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: 41cb14a86e3b4fc25c64a3ac59332f35da0d111de2e8d66194273fa5d92b370b
4
- data.tar.gz: 340e4d252c1a0e2a27de24be51cec9036900a9f461b80739d3b3f086f9183f01
3
+ metadata.gz: 754071e6a128c01af6fd2526dce1b8cbbecb043e9e9a4f76877ba076a5edf573
4
+ data.tar.gz: 8937c93e2818e1c5a8ba3b69320e740b7f271e372660f6f4ad5e9a58e491edc6
5
5
  SHA512:
6
- metadata.gz: 7ebe357fa3c17264a716910853b96d1513fe93e7d7039a8faf2f83ff0f28197ea47dbf670498de9ed0a9dad6bee4e417e176a49a483db7007b1065404fbdcda3
7
- data.tar.gz: 17642bf0e4b3094e42a0c925aa9a4ff7ac7ed187dd735290b93964906b1eb49c151e4b5ea3523124d107591afbb7a30b2337323c632262dcd4c274dca82b2e1c
6
+ metadata.gz: ffd53201ea85a67bfe53b14a6e96696c6d0581ff2a56205e35756c15f7713ca184fef57e547767ce0f5bd96b8bacc284cf9852153e1cc848cc1cda57bb9971bc
7
+ data.tar.gz: e350c1ca4121ac9bdcbece442b2a93d544eeed699d262e169ef883cff52deac2fddb47c308274e9377a178d711a26a44097498f9e8cc7419f370b2e1810407e4
data/Gemfile CHANGED
@@ -4,8 +4,12 @@ Encoding.default_internal = Encoding::UTF_8
4
4
  source "https://rubygems.org"
5
5
  git_source(:github) { |repo| "https://github.com/#{repo}" }
6
6
 
7
- gemspec
7
+ group :development, :test do
8
+ gem "rspec"
9
+ end
8
10
 
9
11
  if File.exist? "Gemfile.devel"
10
12
  eval File.read("Gemfile.devel"), nil, "Gemfile.devel" # rubocop:disable Security/Eval
11
13
  end
14
+
15
+ gemspec
@@ -95,16 +95,32 @@ module Metanorma
95
95
  end
96
96
 
97
97
  def requirement_component_parse(node, out)
98
- return out if node["exclude"] == "true"
99
-
98
+ node["exclude"] == "true" and return out
100
99
  ret = node.dup
101
100
  if reqt_subpart?(node.name)
102
101
  ret["type"] = reqt_component_type(node)
103
102
  ret.name = "div"
104
103
  end
104
+ descr_classif_render(ret)
105
105
  out << ret
106
106
  out
107
107
  end
108
+
109
+ def descr_classif_render(reqt)
110
+ reqt.at(ns("./classification")) or return
111
+ ins = reqt.at(ns("./classification")).before("<dl/>").previous
112
+ descr_classif_extract(reqt, ins)
113
+ end
114
+
115
+ def descr_classif_extract(desc, ins)
116
+ dlist = desc.xpath(ns("./classification"))
117
+ dlist.each do |x|
118
+ x.at(ns("./tag")).name = "dt"
119
+ x.at(ns("./value")).name = "dd"
120
+ ins << x.children
121
+ x.remove
122
+ end
123
+ end
108
124
  end
109
125
  end
110
126
  end
@@ -184,6 +184,7 @@ module Metanorma
184
184
 
185
185
  def requirement_component_parse(node, out)
186
186
  node["exclude"] == "true" and return out
187
+ descr_classif_render(node)
187
188
  node.elements.size == 1 && node.first_element_child.name == "dl" and
188
189
  return reqt_dl(node.first_element_child, out)
189
190
  node.name == "component" and
@@ -11,7 +11,6 @@ module Metanorma
11
11
  def recommendation_label(elem, type, xrefs)
12
12
  @xrefs ||= xrefs.dup
13
13
  init_lookups(elem.document)
14
-
15
14
  label = elem.at(ns("./identifier"))&.text
16
15
  if inject_crossreference_reqt?(elem, label)
17
16
  recommendation_label_xref(elem, label, xrefs, type)
@@ -182,7 +181,6 @@ module Metanorma
182
181
 
183
182
  def truncate_id_base_outside_reqts(docxml)
184
183
  @modspecidentifierbase or return
185
-
186
184
  (docxml.xpath(ns("//xref[@style = 'id']")) - docxml
187
185
  .xpath(ns("//requirement//xref | //permission//xref | " \
188
186
  "//recommendation//xref"))).each do |x|
@@ -1,3 +1,5 @@
1
+ require "uri"
2
+
1
3
  module Metanorma
2
4
  class Requirements
3
5
  class Modspec < Default
@@ -6,9 +8,25 @@ module Metanorma
6
8
  requirement_table_consec_rows_cleanup(node, table)
7
9
  node.ancestors("requirement, recommendation, permission").empty? and
8
10
  truncate_id_base_in_reqt(table)
11
+ cell2link(table)
9
12
  table
10
13
  end
11
14
 
15
+ def cell2link(table)
16
+ table.xpath(ns(".//td")).each do |td|
17
+ td.elements.empty? or next
18
+ uri?(td.text.strip) or next
19
+ td.children = "<link target='#{td.text.strip}'/>"
20
+ end
21
+ end
22
+
23
+ def uri?(string)
24
+ uri = URI.parse(string)
25
+ %w(http https).include?(uri.scheme)
26
+ rescue URI::BadURIError, URI::InvalidURIError
27
+ false
28
+ end
29
+
12
30
  def requirement_table_consec_rows_cleanup(_node, table)
13
31
  table.xpath(ns("./tbody/tr")).each do |tr|
14
32
  conflate_table_rows?(tr) or next
@@ -19,7 +37,6 @@ module Metanorma
19
37
  def conflate_table_rows?(trow)
20
38
  tr1 = trow.next or return
21
39
  tr1.name == "tr" or return
22
-
23
40
  th = trow.at(ns("./th"))&.text
24
41
  th && th == tr1.at(ns("./th"))&.text
25
42
  end
@@ -4,12 +4,10 @@ module Metanorma
4
4
  class Requirements
5
5
  class Modspec < Default
6
6
  def validate(reqt, log)
7
- @fatalerrors = []
8
7
  @log ||= log
9
8
  @ids ||= reqt_links(reqt.document)
10
9
  reqt_cycles_validate
11
10
  reqt_link_validate(reqt)
12
- @fatalerrors
13
11
  end
14
12
 
15
13
  def nested_reqt?(reqt)
@@ -130,8 +128,7 @@ module Metanorma
130
128
 
131
129
  if hash[:label][struct[:label]]
132
130
  msg = "Modspec identifier #{struct[:label]} is used more than once"
133
- @log.add("Requirements", reqt, msg)
134
- @fatalerrors << msg
131
+ @log.add("Requirements", reqt, msg, severity: 0)
135
132
  end
136
133
  hash[:label][struct[:label]] = reqt["id"]
137
134
  hash
@@ -1,5 +1,5 @@
1
1
  module Metanorma
2
2
  class Requirements
3
- VERSION = "0.3.4".freeze
3
+ VERSION = "0.3.6".freeze
4
4
  end
5
5
  end
@@ -32,7 +32,7 @@ Gem::Specification.new do |spec|
32
32
  spec.add_development_dependency "equivalent-xml", "~> 0.6"
33
33
  spec.add_development_dependency "guard", "~> 2.14"
34
34
  spec.add_development_dependency "guard-rspec", "~> 4.7"
35
- spec.add_development_dependency "metanorma-standoc"
35
+ spec.add_development_dependency "metanorma-standoc", ">= 2.7.2"
36
36
  spec.add_development_dependency "rake", "~> 13.0"
37
37
  spec.add_development_dependency "rspec", "~> 3.6"
38
38
  spec.add_development_dependency "rubocop", "~> 1.5.2"
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.3.4
4
+ version: 0.3.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-10-09 00:00:00.000000000 Z
11
+ date: 2023-12-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: isodoc-i18n
@@ -86,14 +86,14 @@ dependencies:
86
86
  requirements:
87
87
  - - ">="
88
88
  - !ruby/object:Gem::Version
89
- version: '0'
89
+ version: 2.7.2
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - ">="
95
95
  - !ruby/object:Gem::Version
96
- version: '0'
96
+ version: 2.7.2
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: rake
99
99
  requirement: !ruby/object:Gem::Requirement