epb_view_models 1.0.8 → 1.0.9
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/Gemfile +1 -0
- data/Gemfile.lock +1 -0
- data/lib/epb_view_models.rb +1 -1
- data/lib/presenter/xsd.rb +76 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 94ef952761872299d77aff99b1c9ac3d82d1df98a63cd74d0520c1628475f319
|
4
|
+
data.tar.gz: 4466ab181f638cd85fc7ef943f6b78709b770a742dcd07529e708f49c3e9669f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 69ceeb585c7014f6b47c4a71241d8a5120cf9dee08e41bd53f90ea3b9bf1a7b4e5b29c8dabf643060b471acee26778295c04c83a4fb6bd1000be0deff6ccb959
|
7
|
+
data.tar.gz: 3fe39ccc50a2ddff5fa2040d214b95c56554e45b8332fd5ba9aa29ed57648c7c68bdf9a1210143babd0518d777033fd0db9e8778487d4d0e477a34a4d6c0dd75
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
data/lib/epb_view_models.rb
CHANGED
@@ -0,0 +1,76 @@
|
|
1
|
+
module Presenter
|
2
|
+
class Xsd
|
3
|
+
def initialize(assessment_type:, xsd_dir_path: "api/schemas/xml/*/")
|
4
|
+
@assessment_type = assessment_type
|
5
|
+
@xsd_dir_path = xsd_dir_path
|
6
|
+
end
|
7
|
+
|
8
|
+
def get_enums_by_type(simple_type)
|
9
|
+
hash = {}
|
10
|
+
xpath = "//xs:simpleType[@name='#{simple_type}']//xs:enumeration"
|
11
|
+
xsd_files.each do |file_name|
|
12
|
+
doc = REXML::Document.new(File.read(file_name))
|
13
|
+
enums_hash = {}
|
14
|
+
REXML::XPath.each(doc, "#{xpath}/@value") do |e|
|
15
|
+
desc_path = "#{xpath}[@value='#{e.value}']//xs:annotation//xs:documentation"
|
16
|
+
enums_hash.merge!(e.value => REXML::XPath.first(doc, desc_path).children.first)
|
17
|
+
end
|
18
|
+
|
19
|
+
next if enums_hash.empty?
|
20
|
+
|
21
|
+
hash[schema_version(file_name)] = enums_hash
|
22
|
+
end
|
23
|
+
hash
|
24
|
+
end
|
25
|
+
|
26
|
+
def unique_enums(simple_type)
|
27
|
+
uniq_enums = []
|
28
|
+
enums = get_enums_by_type(simple_type).values
|
29
|
+
|
30
|
+
enums.each_with_index do |_hash, i|
|
31
|
+
if i.positive? && (enums[i].to_a != enums[i + 1].to_a)
|
32
|
+
uniq_enums << enums[i]
|
33
|
+
end
|
34
|
+
end
|
35
|
+
uniq_enums
|
36
|
+
end
|
37
|
+
|
38
|
+
def variation_between_schema_versions?(enums_hash)
|
39
|
+
enums_hash.values.flatten.uniq.count != 1
|
40
|
+
end
|
41
|
+
|
42
|
+
private
|
43
|
+
|
44
|
+
def schema_version(file_name)
|
45
|
+
schema_version = file_name.delete_prefix("api/schemas/xml/").split("/").first
|
46
|
+
sap_defnied_in_rdsap_dir?(file_name) ? "#{schema_version}/SAP" : schema_version
|
47
|
+
end
|
48
|
+
|
49
|
+
def xsd_files
|
50
|
+
case @assessment_type
|
51
|
+
when "SAP"
|
52
|
+
sap_xsd_files
|
53
|
+
when "RdSAP"
|
54
|
+
rdsap_xsd_files
|
55
|
+
when "CEPC"
|
56
|
+
cepc_xsd_files
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
def sap_xsd_files
|
61
|
+
Dir.glob("#{@xsd_dir_path}*-Domains.xsd")
|
62
|
+
end
|
63
|
+
|
64
|
+
def rdsap_xsd_files
|
65
|
+
Dir.glob("#{@xsd_dir_path}SAP-Domains.xsd")
|
66
|
+
end
|
67
|
+
|
68
|
+
def cepc_xsd_files
|
69
|
+
Dir.glob("#{@xsd_dir_path}Reported-Data.xsd")
|
70
|
+
end
|
71
|
+
|
72
|
+
def sap_defnied_in_rdsap_dir?(file_name)
|
73
|
+
@assessment_type == "SAP" && file_name.end_with?("SAP-Domains.xsd")
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: epb_view_models
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- MHCLG Energy Performance of Buildings
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-10-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|
@@ -1661,6 +1661,7 @@ files:
|
|
1661
1661
|
- lib/presenter/sap/recommendation_report.rb
|
1662
1662
|
- lib/presenter/sap/report.rb
|
1663
1663
|
- lib/presenter/sap/summary.rb
|
1664
|
+
- lib/presenter/xsd.rb
|
1664
1665
|
- lib/view_model/ac_cert_wrapper.rb
|
1665
1666
|
- lib/view_model/ac_report_wrapper.rb
|
1666
1667
|
- lib/view_model/base_view_model.rb
|