openscap_parser 1.4.0 → 1.5.1

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: 2e9728a34c5047c3762befe37699a1413d1bc2329ba158b311a2a1342bafe210
4
- data.tar.gz: e2725fba41bbeed647628b092dfe689979f824eece673c3fb87e65c50bbeaed4
3
+ metadata.gz: 7726cf3e8cf53af20cb73fbddef5c95e92ca2a748e0da3a229a015918b382d34
4
+ data.tar.gz: f9ebf783cce54e930970ea94da5819dc50e638ec3cc91ae3c38d5e2deb705f24
5
5
  SHA512:
6
- metadata.gz: 1112c1537e58816bc6a25f7a89830fc24dec94bd4bca3897fb342ef13f4f5ee8a34a664065ad7608d2a79459dbf518f912200ad1ffcae6760c0f77b1822c6f9f
7
- data.tar.gz: e29e00ced02ba2a339461f75496c41d2395e5259b73adc7072ee9c99d6e2177b9709a858f3b57690a29239df60296e23a022a9dbdae58a354dda0df5d482c655
6
+ metadata.gz: 05e6983a1a1ce75fc9fa216a078df30be423ab56e81e863eba5ce0cab837f8e0a4de23550981dc61162d0bba9113e6b065c83103cff76714b418d3d2941083b2
7
+ data.tar.gz: 6a0340c5bd19e82b3aee053d19ebccf3a0fdb0bc0287d32145ce5380417adabbaf03b85d2702a9b7830d286a3ca6af21f32d353a4265e7a807f4209428c5c184
@@ -6,6 +6,7 @@ require 'openscap_parser/rules'
6
6
  require 'openscap_parser/profiles'
7
7
  require 'openscap_parser/rule_references'
8
8
  require 'openscap_parser/groups'
9
+ require 'openscap_parser/value_definitions'
9
10
 
10
11
  # Mimics openscap-ruby Benchmark interface
11
12
  module OpenscapParser
@@ -15,6 +16,7 @@ module OpenscapParser
15
16
  include OpenscapParser::RuleReferences
16
17
  include OpenscapParser::Profiles
17
18
  include OpenscapParser::Groups
19
+ include OpenscapParser::ValueDefinitions
18
20
 
19
21
  def id
20
22
  @id ||= @parsed_xml['id']
@@ -63,7 +63,7 @@ module OpenscapParser
63
63
  end
64
64
 
65
65
  def rule_identifier
66
- @identifier ||= RuleIdentifier.new(parsed_xml: identifier_node)
66
+ @identifier ||= identifier_node && RuleIdentifier.new(parsed_xml: identifier_node)
67
67
  end
68
68
  alias :identifier :rule_identifier
69
69
 
@@ -83,6 +83,10 @@ module OpenscapParser
83
83
  end
84
84
  end
85
85
 
86
+ def values
87
+ parsed_xml.xpath("check/check-export").map { |r| r.at_xpath('@value-id')&.text }
88
+ end
89
+
86
90
  def to_h
87
91
  {
88
92
  :id => id,
@@ -95,7 +99,8 @@ module OpenscapParser
95
99
  :rationale => rationale,
96
100
  :identifier => rule_identifier.to_h,
97
101
  :parent_id => parent_id,
98
- :parent_type => parent_type
102
+ :parent_type => parent_type,
103
+ :values => values
99
104
  }
100
105
  end
101
106
  end
@@ -0,0 +1,58 @@
1
+ # frozen_string_literal: true
2
+ module OpenscapParser
3
+ class ValueDefinition < XmlNode
4
+ include OpenscapParser::Util
5
+
6
+ def id
7
+ @id ||= parsed_xml['id']
8
+ end
9
+
10
+ def description
11
+ @description ||= newline_to_whitespace(parsed_xml.at_css('description')&.text)
12
+ end
13
+
14
+ def title
15
+ @title ||= parsed_xml.at_css('title')&.text
16
+ end
17
+
18
+ def type
19
+ @type ||= parsed_xml['type'] || 'string'
20
+ end
21
+
22
+ def lower_bound
23
+ @lower_bound ||= begin
24
+ lower_bound_element = parsed_xml.at_xpath("lower-bound[@selector='']") || parsed_xml.at_xpath('lower-bound[not(@selector)]')
25
+ lower_bound_element&.text
26
+ end
27
+ end
28
+
29
+ def upper_bound
30
+ @upper_bound ||= begin
31
+ upper_bound_element = parsed_xml.at_xpath("upper-bound[@selector='']") || parsed_xml.at_xpath('upper-bound[not(@selector)]')
32
+ upper_bound_element&.text
33
+ end
34
+ end
35
+
36
+ def default_value
37
+ # The default value is the value element with a empty or absent @selector
38
+ # If there is no value element with an empty or absent @selector, the first value in
39
+ # the top down processing shall be the default element
40
+ @default_value ||= begin
41
+ value_element = parsed_xml.at_xpath("value[@selector='']") || parsed_xml.at_xpath('value[not(@selector)]') || parsed_xml.xpath("value")[0]
42
+ value_element&.text
43
+ end
44
+ end
45
+
46
+ def to_h
47
+ {
48
+ :id => id,
49
+ :title => title,
50
+ :description => description,
51
+ :type => type,
52
+ :lower_bound => lower_bound,
53
+ :upper_bound => upper_bound,
54
+ :default_value => default_value
55
+ }
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'openscap_parser/value_definition'
4
+
5
+ module OpenscapParser
6
+ # Methods related to parsing values
7
+ module ValueDefinitions
8
+ def self.included(base)
9
+ base.class_eval do
10
+ def value_definitions
11
+ @value_definitions ||= value_definition_nodes.map do |vdn|
12
+ ValueDefinition.new(parsed_xml: vdn)
13
+ end
14
+ end
15
+
16
+ def value_definition_nodes(xpath = ".//Value")
17
+ xpath_nodes(xpath)
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -1,3 +1,3 @@
1
1
  module OpenscapParser
2
- VERSION = "1.4.0"
2
+ VERSION = "1.5.1"
3
3
  end
@@ -7,6 +7,7 @@ require 'openscap_parser/test_results'
7
7
  require 'openscap_parser/profiles'
8
8
  require 'openscap_parser/rules'
9
9
  require 'openscap_parser/groups'
10
+ require 'openscap_parser/value_definitions'
10
11
  require 'openscap_parser/rule_results'
11
12
  require 'openscap_parser/tailorings'
12
13
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: openscap_parser
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
4
+ version: 1.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Lobato Garcia
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2022-11-28 00:00:00.000000000 Z
12
+ date: 2022-12-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: nokogiri
@@ -176,6 +176,8 @@ files:
176
176
  - lib/openscap_parser/test_result_file.rb
177
177
  - lib/openscap_parser/test_results.rb
178
178
  - lib/openscap_parser/util.rb
179
+ - lib/openscap_parser/value_definition.rb
180
+ - lib/openscap_parser/value_definitions.rb
179
181
  - lib/openscap_parser/version.rb
180
182
  - lib/openscap_parser/xml_file.rb
181
183
  - lib/openscap_parser/xml_node.rb