Module: HQMF1::Utilities

Instance Method Summary collapse

Methods included from HQMF::Conversion::Utilities

#build_hash, #check_equality, #json_array, #openstruct_to_json

Instance Method Details

#attr_val(xpath) ⇒ Object

Utility function to handle optional attributes

Parameters:

  • xpath

    an XPath that identifies an XML attribute

Returns:

  • the value of the attribute or nil if the attribute is missing



9
10
11
12
13
14
15
16
# File 'lib/hqmf-parser/1.0/utilities.rb', line 9

def attr_val(xpath)
  attr = @entry.at_xpath(xpath)
  if attr
    attr.value
  else
    nil
  end
end

#check_nil_conjunction_on_childObject

Preconditions can have nil conjunctions as part of a DATEDIFF, we want to remove these and warn



41
42
43
44
45
46
47
48
49
50
51
# File 'lib/hqmf-parser/1.0/utilities.rb', line 41

def check_nil_conjunction_on_child
  if (@preconditions.length == 1 && @preconditions.first.conjunction.nil?)
    bad_precondition = @preconditions.first
    if (bad_precondition.restrictions.empty? && bad_precondition.subset.nil? && bad_precondition.expression.nil?)
      @preconditions = @preconditions.first.preconditions
      #puts "\t FIXED PRECONDITION WITHOUT CONJUNCTION"
    else
      puts "\t PRECONDITION WITHOUT CONJUNCTION: Cannot be fixed"
    end
  end
end

#clean_json(json) ⇒ Object



18
19
20
# File 'lib/hqmf-parser/1.0/utilities.rb', line 18

def clean_json(json)
  json.reject!{|k,v| v.nil? || (v.respond_to?(:empty?) && v.empty?)}
end

#clean_json_recursive(json) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/hqmf-parser/1.0/utilities.rb', line 22

def clean_json_recursive(json)
  json.each do |k,v|
    if v.is_a? Hash
      clean_json_recursive(v)
      clean_json(v)
    elsif v.is_a? Array
      v.each do |e|
        if e.is_a? Hash
          clean_json_recursive(e)
          clean_json(e)
        end
      end
    end
    
  end
  clean_json(json)
end