Module: PMP::Parser
Instance Method Summary
collapse
Methods included from Utils
#to_json_key_name, #to_ruby_safe_name
Instance Method Details
#as_json(options = {}) ⇒ Object
8
9
10
11
12
13
14
15
|
# File 'lib/pmp/parser.rb', line 8
def as_json(options={})
result = {}
result['version'] = self.version
result['links'] =
result['attributes'] =
result
end
|
17
18
19
20
21
22
23
24
|
# File 'lib/pmp/parser.rb', line 17
def (obj=self)
obj.attributes.inject({}) do |result, pair|
value = pair.last
name = to_json_key_name(pair.first)
result[name] = value
result
end
end
|
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
# File 'lib/pmp/parser.rb', line 26
def (obj=self)
obj.links.inject({}) do |result, pair|
value = pair.last
name = to_json_key_name(pair.first)
links = if value.is_a?(PMP::Link)
[(value)]
elsif value.is_a?(Array)
value.map{|v| (v)}
elsif value.is_a?(Hash)
value.values.map{|v| (v)}
end
result[name] = links
result
end
end
|
#parse(doc) ⇒ Object
45
46
47
48
49
50
51
52
|
# File 'lib/pmp/parser.rb', line 45
def parse(doc)
return if (!doc)
parse_version(doc['version'])
parse_attributes(doc['attributes'])
parse_links(doc['links'])
parse_items(doc['items'])
end
|
#parse_attributes(document) ⇒ Object
58
59
60
61
62
|
# File 'lib/pmp/parser.rb', line 58
def parse_attributes(document)
Array(document).each do |k,v|
self.send("#{to_ruby_safe_name(k)}=", v)
end
end
|
#parse_items(document) ⇒ Object
91
92
93
|
# File 'lib/pmp/parser.rb', line 91
def parse_items(document)
self.items = Array(document).collect{|i| PMP::CollectionDocument.new(options.merge(document:i))}
end
|
#parse_link(name, info) ⇒ Object
73
74
75
76
77
78
79
80
81
|
# File 'lib/pmp/parser.rb', line 73
def parse_link(name, info)
if ['query', 'edit', 'navigation'].include?(name.to_s)
parse_links_list(info)
elsif !info.is_a?(Array)
Link.new(info)
else
info.map{|l| Link.new(l)}
end
end
|
#parse_links(document) ⇒ Object
64
65
66
67
68
69
70
71
|
# File 'lib/pmp/parser.rb', line 64
def parse_links(document)
Array(document).each do |k,v|
link = parse_link(k,v)
if link
self.links[k] = link
end
end
end
|
#parse_links_list(links) ⇒ Object
83
84
85
86
87
88
89
|
# File 'lib/pmp/parser.rb', line 83
def parse_links_list(links)
links.inject({}) do |results, query|
rel = query['rels'].first
results[rel] = Link.new(query)
results
end
end
|
#parse_version(document) ⇒ Object
54
55
56
|
# File 'lib/pmp/parser.rb', line 54
def parse_version(document)
self.version = document || '1.0'
end
|