Top Level Namespace
Defined Under Namespace
Modules: CodeModels, EMF, EObjectUtil, JSON
Classes: Model
Instance Method Summary
collapse
Instance Method Details
#jsonize_attr_value(map, e_object, e_attr) ⇒ Object
12
13
14
15
16
17
18
19
20
21
22
23
|
# File 'lib/emf/emf_to_json.rb', line 12
def jsonize_attr_value(map,e_object,e_attr)
value = e_object.eGet e_attr
if e_attr.upperBound==1
map["attr_#{e_attr.name}"] = value
else
l = []
(0..(value.size-1)).each do |i|
l << value.get(i)
end
map["attr_#{e_attr.name}"] = l
end
end
|
#jsonize_obj(e_object, adapters = {}) ⇒ Object
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
# File 'lib/emf/emf_to_json.rb', line 50
def jsonize_obj(e_object, adapters={})
if not e_object
nil
else
map = { 'type' => qname(e_object), 'id' => serialization_id(e_object) }
e_class = e_object.eClass
e_class.eAllAttributes.each do |a|
jsonize_attr_value(map,e_object,a)
end
e_class.eAllReferences.each do |r|
jsonize_ref_value(map,e_object,r,adapters)
end
if adapters.has_key? qname(e_object)
adapters[qname(e_object)].adapt(e_object,map)
end
map
end
end
|
#jsonize_ref_single_el(single_value, containment, adapters) ⇒ Object
25
26
27
28
29
30
31
|
# File 'lib/emf/emf_to_json.rb', line 25
def jsonize_ref_single_el(single_value,containment,adapters)
if containment
jsonize_obj(single_value,adapters)
else
serialization_id(single_value)
end
end
|
#jsonize_ref_value(map, e_object, e_ref, adapters) ⇒ Object
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
# File 'lib/emf/emf_to_json.rb', line 33
def jsonize_ref_value(map,e_object,e_ref,adapters)
value = e_object.eGet e_ref
propname = "relcont_#{e_ref.name}" if e_ref.containment
propname = "relnoncont_#{e_ref.name}" if not e_ref.containment
if e_ref.upperBound==1
map[propname] = jsonize_ref_single_el(value,e_ref.containment,adapters)
else
l = []
(0..(value.size-1)).each do |i|
l << jsonize_ref_single_el(value.get(i),e_ref.containment,adapters)
end
map[propname] = l
end
end
|
#qname(e_object) ⇒ Object
6
7
8
9
10
|
# File 'lib/emf/emf_to_json.rb', line 6
def qname(e_object)
e_class = e_object.eClass
e_package = e_class.ePackage
"#{e_package.nsURI}##{e_class.name}"
end
|
#serialization_id(obj) ⇒ Object
4
5
6
7
8
9
10
|
# File 'lib/emf/ast_serialization.rb', line 4
def serialization_id(obj)
unless $serialization_ids[obj]
$serialization_ids[obj] = $next_serialization_id
$next_serialization_id += 1
end
$serialization_ids[obj]
end
|