Sha256: 1914ffee5e3060d91e8c89a426f813e363b0f7a86c2354fc5cf034944a04eca5
Contents?: true
Size: 1.52 KB
Versions: 2
Compression:
Stored size: 1.52 KB
Contents
module Presenter class Xsd def get_enums_by_type(domain_arguments) xsd_files_gateway = ViewModelGateway::XsdFilesGateway.new(domain_arguments) begin xsd_files = xsd_files_gateway.xsd_files rescue ViewModelBoundary::XsdFilesNotFound => e raise ViewModelBoundary::XsdFilesNotFound, e.message.to_s end hash = {} xpath = "//xs:simpleType[@name='#{domain_arguments.simple_type}']//xs:enumeration" xsd_files.each do |file| doc = REXML::Document.new(File.read(file)) enums_hash = {} REXML::XPath.each(doc, "#{xpath}/@value") do |node| desc_path = "#{xpath}[@value='#{node.value}']//xs:annotation//xs:documentation" enums_hash.merge!(node.value => REXML::XPath.first(doc, desc_path).children.first) end next if enums_hash.empty? hash[xsd_files_gateway.schema_version(file)] = enums_hash end raise ViewModelBoundary::NodeNotFound, "Node #{domain_arguments.simple_type} was not found in any of the xsd files in #{domain_arguments.xsd_dir_path} directory" if hash.empty? hash end def unique_enums(domain_arguments) uniq_enums = [] enums = get_enums_by_type(domain_arguments).values enums.each_with_index do |_hash, i| if i.positive? && (enums[i].to_a != enums[i + 1].to_a) uniq_enums << enums[i] end end uniq_enums end def variation_between_schema_versions?(enums_hash) enums_hash.values.flatten.uniq.count != 1 end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
epb_view_models-1.0.11 | lib/presenter/xsd.rb |
epb_view_models-1.0.10 | lib/presenter/xsd.rb |