Class: Eversign::Mappings::Document

Inherits:
Object
  • Object
show all
Includes:
Kartograph::DSL
Defined in:
lib/eversign/mappings/document.rb

Class Method Summary collapse

Class Method Details

.extract_collection(content, scope) ⇒ Object



62
63
64
65
66
67
68
69
# File 'lib/eversign/mappings/document.rb', line 62

def self.extract_collection(content, scope)
  data = JSON.parse(content)
  result = []
  data.each do |item|
    result << extract_single(item.to_json, nil)
  end
  result
end

.extract_single(content, scope) ⇒ Object



71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# File 'lib/eversign/mappings/document.rb', line 71

def self.extract_single(content, scope)
  obj = super(content, scope)
  data = JSON.parse(content)
  if data["fields"]
    data["fields"].each do |field_list|
      field_data = []
      field_list.each do |field|
        extracted_field = Field.extract_single(field.to_json, nil)
        field_data << extracted_field if extracted_field
      end
      obj.add_field_list(field_data)
    end
  end
  obj
end

.representation_for(document, isFromTemplate = false) ⇒ Object



87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# File 'lib/eversign/mappings/document.rb', line 87

def self.representation_for(document, isFromTemplate = false)
  data = super(nil, document)
  list = []
  if document.fields
    document.fields.each do |field_list|
      field_data = []
      field_list.each do |field|
        field_data << JSON.parse(Field.representation_for(nil, field))
      end
      list << field_data
    end
  end
  data = JSON.parse(data)
  # Fix for issue 7. When we create a document from template (isFromTemplate=true) fields array is 1 dimentional, so we flatten it:
  data["fields"] = isFromTemplate ? list.flatten : list
  JSON.dump(data)
end