openscap_parser 1.4.0 → 1.5.1

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: 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