mn-requirements 0.1.5 → 0.1.7
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/.github/workflows/release.yml +3 -0
 - data/Gemfile +1 -0
 - data/lib/metanorma/default/isodoc.rb +1 -1
 - data/lib/metanorma/modspec/cleanup.rb +43 -18
 - data/lib/metanorma/requirements/selector.rb +4 -2
 - data/lib/metanorma/requirements/version.rb +1 -1
 - data/mn-requirements.gemspec +1 -1
 - metadata +4 -4
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: c2e26c223fccd1addd079ca0f89fe9fad9f81e7fa1e43c4607245cb95e5c3292
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: f6765320c97a6a49b164973d39084b72b57206f4a8b3e9eeb86a3835df1cbad0
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 4eb0f1c8d3782eea7066f71809ee2ac05d5cc7d6fa470dee2054c4a4154cb08eda814b5fcc2241cdbe345b3f149b15a0152a2daa76d5fb5df4c1ce41b26cb6e4
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 76b1638cdc8a99eb7d6ff2fdfd321fff08fe64bf40b07a2b5ec46aecc7a1110a2feee171b25b334a6b468ab4636056511ad002aec3e78ba67c63d1d3f4ee3cc7
         
     | 
| 
         @@ -18,6 +18,9 @@ jobs: 
     | 
|
| 
       18 
18 
     | 
    
         
             
                uses: metanorma/ci/.github/workflows/rubygems-release.yml@main
         
     | 
| 
       19 
19 
     | 
    
         
             
                with:
         
     | 
| 
       20 
20 
     | 
    
         
             
                  next_version: ${{ github.event.inputs.next_version }}
         
     | 
| 
      
 21 
     | 
    
         
            +
                  release_command: rake release
         
     | 
| 
      
 22 
     | 
    
         
            +
                  bundler_cache: false
         
     | 
| 
      
 23 
     | 
    
         
            +
                  post_install: gem install bundler rake rspec
         
     | 
| 
       21 
24 
     | 
    
         
             
                secrets:
         
     | 
| 
       22 
25 
     | 
    
         
             
                  rubygems-api-key: ${{ secrets.METANORMA_CI_RUBYGEMS_API_KEY }}
         
     | 
| 
       23 
26 
     | 
    
         
             
                  pat_token: ${{ secrets.METANORMA_CI_PAT_TOKEN }}
         
     | 
    
        data/Gemfile
    CHANGED
    
    
| 
         @@ -1,28 +1,41 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module Metanorma
         
     | 
| 
       2 
2 
     | 
    
         
             
              class Requirements
         
     | 
| 
       3 
3 
     | 
    
         
             
                class Modspec < Default
         
     | 
| 
      
 4 
     | 
    
         
            +
                  REQT_TYPE_NORM = {
         
     | 
| 
      
 5 
     | 
    
         
            +
                    requirement: "general",
         
     | 
| 
      
 6 
     | 
    
         
            +
                    recommendation: "general",
         
     | 
| 
      
 7 
     | 
    
         
            +
                    permission: "general",
         
     | 
| 
      
 8 
     | 
    
         
            +
                    requirements_class: "class",
         
     | 
| 
      
 9 
     | 
    
         
            +
                    requirement_class: "class",
         
     | 
| 
      
 10 
     | 
    
         
            +
                    recommendation_class: "class",
         
     | 
| 
      
 11 
     | 
    
         
            +
                    permission_class: "class",
         
     | 
| 
      
 12 
     | 
    
         
            +
                    conformance_test: "verification",
         
     | 
| 
      
 13 
     | 
    
         
            +
                    conformance_class: "conformanceclass",
         
     | 
| 
      
 14 
     | 
    
         
            +
                    abstract_test: "abstracttest",
         
     | 
| 
      
 15 
     | 
    
         
            +
                  }.freeze
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
       4 
17 
     | 
    
         
             
                  def requirement_type_cleanup(reqt)
         
     | 
| 
       5 
     | 
    
         
            -
                     
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
                                     "general"
         
     | 
| 
       8 
     | 
    
         
            -
                                   when "requirements_class" then "class"
         
     | 
| 
       9 
     | 
    
         
            -
                                   when "conformance_test" then "verification"
         
     | 
| 
       10 
     | 
    
         
            -
                                   when "conformance_class" then "conformanceclass"
         
     | 
| 
       11 
     | 
    
         
            -
                                   when "abstract_test" then "abstracttest"
         
     | 
| 
       12 
     | 
    
         
            -
                                   else reqt["type"]
         
     | 
| 
       13 
     | 
    
         
            -
                                   end
         
     | 
| 
      
 18 
     | 
    
         
            +
                    ret = REQT_TYPE_NORM[reqt["type"]&.to_sym] or return
         
     | 
| 
      
 19 
     | 
    
         
            +
                    reqt["type"] = ret
         
     | 
| 
       14 
20 
     | 
    
         
             
                  end
         
     | 
| 
       15 
21 
     | 
    
         | 
| 
       16 
22 
     | 
    
         
             
                  def requirement_metadata_component_tags
         
     | 
| 
       17 
23 
     | 
    
         
             
                    %w(test-purpose test-method test-method-type conditions part description
         
     | 
| 
       18 
     | 
    
         
            -
                       reference step  
     | 
| 
      
 24 
     | 
    
         
            +
                       reference step guidance) +
         
     | 
| 
      
 25 
     | 
    
         
            +
                      requirement_metadata_requirement_tags
         
     | 
| 
      
 26 
     | 
    
         
            +
                  end
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
                  def requirement_metadata_requirement_tags
         
     | 
| 
      
 29 
     | 
    
         
            +
                    %w(conformance-test conformance-class abstract-test requirement-class
         
     | 
| 
      
 30 
     | 
    
         
            +
                       recommendation-class permission-class requirement permission
         
     | 
| 
      
 31 
     | 
    
         
            +
                       recommendation)
         
     | 
| 
       19 
32 
     | 
    
         
             
                  end
         
     | 
| 
       20 
33 
     | 
    
         | 
| 
       21 
34 
     | 
    
         
             
                  def requirement_metadata1(reqt, dlist, ins)
         
     | 
| 
       22 
35 
     | 
    
         
             
                    ins1 = super
         
     | 
| 
       23 
36 
     | 
    
         
             
                    dlist.xpath("./dt").each do |e|
         
     | 
| 
       24 
     | 
    
         
            -
                      tag = e 
     | 
| 
       25 
     | 
    
         
            -
                      next unless requirement_metadata_component_tags.include? 
     | 
| 
      
 37 
     | 
    
         
            +
                      tag = e.text&.gsub(/ /, "-")&.downcase
         
     | 
| 
      
 38 
     | 
    
         
            +
                      next unless requirement_metadata_component_tags.include?(tag)
         
     | 
| 
       26 
39 
     | 
    
         | 
| 
       27 
40 
     | 
    
         
             
                      ins1.next = requirement_metadata1_component(e, tag)
         
     | 
| 
       28 
41 
     | 
    
         
             
                      ins1 = ins1.next
         
     | 
| 
         @@ -36,9 +49,9 @@ module Metanorma 
     | 
|
| 
       36 
49 
     | 
    
         
             
                      requirement_metadata1(val, d, d)
         
     | 
| 
       37 
50 
     | 
    
         
             
                      d.remove
         
     | 
| 
       38 
51 
     | 
    
         
             
                    end
         
     | 
| 
       39 
     | 
    
         
            -
                     
     | 
| 
      
 52 
     | 
    
         
            +
                    requirement_metadata_requirement_tags.include?(term.text) &&
         
     | 
| 
      
 53 
     | 
    
         
            +
                      !val.text.empty? and
         
     | 
| 
       40 
54 
     | 
    
         
             
                      val.children = "<identifier>#{val.text.strip}</identifier>"
         
     | 
| 
       41 
     | 
    
         
            -
                    end
         
     | 
| 
       42 
55 
     | 
    
         
             
                    val
         
     | 
| 
       43 
56 
     | 
    
         
             
                  end
         
     | 
| 
       44 
57 
     | 
    
         | 
| 
         @@ -59,8 +72,8 @@ module Metanorma 
     | 
|
| 
       59 
72 
     | 
    
         
             
                  end
         
     | 
| 
       60 
73 
     | 
    
         | 
| 
       61 
74 
     | 
    
         
             
                  def requirement_metadata_to_component(reqt)
         
     | 
| 
       62 
     | 
    
         
            -
                    xpath = requirement_metadata_component_tags -
         
     | 
| 
       63 
     | 
    
         
            -
                       
     | 
| 
      
 75 
     | 
    
         
            +
                    xpath = requirement_metadata_component_tags - %w(description) -
         
     | 
| 
      
 76 
     | 
    
         
            +
                      requirement_metadata_requirement_tags
         
     | 
| 
       64 
77 
     | 
    
         
             
                    reqt.xpath(xpath.map { |x| ".//#{x}" }.join(" | ")).each do |c|
         
     | 
| 
       65 
78 
     | 
    
         
             
                      c["class"] = c.name
         
     | 
| 
       66 
79 
     | 
    
         
             
                      c.name = "component"
         
     | 
| 
         @@ -68,13 +81,25 @@ module Metanorma 
     | 
|
| 
       68 
81 
     | 
    
         
             
                  end
         
     | 
| 
       69 
82 
     | 
    
         | 
| 
       70 
83 
     | 
    
         
             
                  def requirement_metadata_to_requirement(reqt)
         
     | 
| 
       71 
     | 
    
         
            -
                     
     | 
| 
       72 
     | 
    
         
            -
             
     | 
| 
      
 84 
     | 
    
         
            +
                    xpath = requirement_metadata_requirement_tags
         
     | 
| 
      
 85 
     | 
    
         
            +
                    reqt.xpath(xpath.map { |x| "./#{x}" }.join(" | ")).each do |c|
         
     | 
| 
       73 
86 
     | 
    
         
             
                      c["id"] = Metanorma::Utils::anchor_or_uuid
         
     | 
| 
       74 
87 
     | 
    
         
             
                      c["model"] = reqt["model"] # all requirements must have a model
         
     | 
| 
      
 88 
     | 
    
         
            +
                      requirement_metadata_to_requirement1(c)
         
     | 
| 
       75 
89 
     | 
    
         
             
                    end
         
     | 
| 
       76 
90 
     | 
    
         
             
                  end
         
     | 
| 
       77 
91 
     | 
    
         | 
| 
      
 92 
     | 
    
         
            +
                  def requirement_metadata_to_requirement1(reqt)
         
     | 
| 
      
 93 
     | 
    
         
            +
                    reqt["type"] = reqt.name.sub(/-/, "_")
         
     | 
| 
      
 94 
     | 
    
         
            +
                    reqt.name =
         
     | 
| 
      
 95 
     | 
    
         
            +
                      case reqt.name
         
     | 
| 
      
 96 
     | 
    
         
            +
                      when "recommendation-class", "recommendation" then "recommendation"
         
     | 
| 
      
 97 
     | 
    
         
            +
                      when "permission-class", "permission" then "permission"
         
     | 
| 
      
 98 
     | 
    
         
            +
                      else "requirement"
         
     | 
| 
      
 99 
     | 
    
         
            +
                      end
         
     | 
| 
      
 100 
     | 
    
         
            +
                    requirement_type_cleanup(reqt)
         
     | 
| 
      
 101 
     | 
    
         
            +
                  end
         
     | 
| 
      
 102 
     | 
    
         
            +
             
     | 
| 
       78 
103 
     | 
    
         
             
                  def requirement_subparts_to_blocks(reqt)
         
     | 
| 
       79 
104 
     | 
    
         
             
                    reqt.xpath(".//component | .//description").each do |c|
         
     | 
| 
       80 
105 
     | 
    
         
             
                      next if %w(p ol ul dl table component description)
         
     | 
| 
         @@ -13,6 +13,7 @@ module Metanorma 
     | 
|
| 
       13 
13 
     | 
    
         
             
                  @default = options[:default]
         
     | 
| 
       14 
14 
     | 
    
         
             
                  @i18n = i18n_klass(options[:lang] || "en",
         
     | 
| 
       15 
15 
     | 
    
         
             
                                     options[:script] || "Latn",
         
     | 
| 
      
 16 
     | 
    
         
            +
                                     options[:locale],
         
     | 
| 
       16 
17 
     | 
    
         
             
                                     options[:i18nhash])
         
     | 
| 
       17 
18 
     | 
    
         
             
                  @labels = @i18n.get.deep_merge(options[:labels] || {})["requirements"]
         
     | 
| 
       18 
19 
     | 
    
         
             
                  @models =
         
     | 
| 
         @@ -23,8 +24,9 @@ module Metanorma 
     | 
|
| 
       23 
24 
     | 
    
         
             
                  %i[default ogc]
         
     | 
| 
       24 
25 
     | 
    
         
             
                end
         
     | 
| 
       25 
26 
     | 
    
         | 
| 
       26 
     | 
    
         
            -
                def i18n_klass(lang 
     | 
| 
       27 
     | 
    
         
            -
                  ::IsoDoc::MnRequirementsI18n.new(lang, script,  
     | 
| 
      
 27 
     | 
    
         
            +
                def i18n_klass(lang, script, locale = nil, i18nhash = nil)
         
     | 
| 
      
 28 
     | 
    
         
            +
                  ::IsoDoc::MnRequirementsI18n.new(lang, script, locale: locale,
         
     | 
| 
      
 29 
     | 
    
         
            +
                                                                 i18nhash: i18nhash)
         
     | 
| 
       28 
30 
     | 
    
         
             
                end
         
     | 
| 
       29 
31 
     | 
    
         | 
| 
       30 
32 
     | 
    
         
             
                # all roles that can be assigned to an example to make it a reqt,
         
     | 
    
        data/mn-requirements.gemspec
    CHANGED
    
    | 
         @@ -24,7 +24,7 @@ Gem::Specification.new do |spec| 
     | 
|
| 
       24 
24 
     | 
    
         
             
              spec.require_paths = ["lib"]
         
     | 
| 
       25 
25 
     | 
    
         
             
              spec.required_ruby_version = Gem::Requirement.new(">= 2.5.0")
         
     | 
| 
       26 
26 
     | 
    
         | 
| 
       27 
     | 
    
         
            -
              spec.add_dependency "isodoc-i18n", "~> 1.0 
     | 
| 
      
 27 
     | 
    
         
            +
              spec.add_dependency "isodoc-i18n", "~> 1.1.0"
         
     | 
| 
       28 
28 
     | 
    
         
             
              spec.add_dependency "metanorma-utils", "~> 1.4.0"
         
     | 
| 
       29 
29 
     | 
    
         | 
| 
       30 
30 
     | 
    
         
             
              spec.add_development_dependency "debug"
         
     | 
    
        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.1. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.1.7
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Ribose Inc.
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: exe
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2022-09- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2022-09-25 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: isodoc-i18n
         
     | 
| 
         @@ -16,14 +16,14 @@ dependencies: 
     | 
|
| 
       16 
16 
     | 
    
         
             
                requirements:
         
     | 
| 
       17 
17 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       18 
18 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       19 
     | 
    
         
            -
                    version: 1.0 
     | 
| 
      
 19 
     | 
    
         
            +
                    version: 1.1.0
         
     | 
| 
       20 
20 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       21 
21 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       22 
22 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       23 
23 
     | 
    
         
             
                requirements:
         
     | 
| 
       24 
24 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       25 
25 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       26 
     | 
    
         
            -
                    version: 1.0 
     | 
| 
      
 26 
     | 
    
         
            +
                    version: 1.1.0
         
     | 
| 
       27 
27 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       28 
28 
     | 
    
         
             
              name: metanorma-utils
         
     | 
| 
       29 
29 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     |