emf_jruby 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/emf/ast_serialization.rb +10 -0
- data/lib/emf/emf_to_json.rb +65 -0
- data/lib/emf_jruby.rb +5 -0
- data/lib/jars/org.antlr.runtime_3.0.0.v200803061811.jar +0 -0
- data/lib/jars/org.eclipse.emf.common_2.8.0.v20130125-0546.jar +0 -0
- data/lib/jars/org.eclipse.emf.ecore.xmi_2.8.1.v20130125-0546.jar +0 -0
- data/lib/jars/org.eclipse.emf.ecore_2.8.3.v20130125-0546.jar +0 -0
- data/lib/jars/org.eclipse.m2m.atl.common_3.3.1.v201209061455.jar +0 -0
- data/lib/jars/org.eclipse.m2m.atl.core.emf_3.3.1.v201209061455.jar +0 -0
- data/lib/jars/org.eclipse.m2m.atl.core_3.3.1.v201209061455.jar +0 -0
- data/lib/jars/org.eclipse.m2m.atl.dsls_3.3.1.v201209061455.jar +0 -0
- data/lib/jars/org.eclipse.m2m.atl.engine_3.3.1.v201209061455.jar +0 -0
- metadata +56 -0
@@ -0,0 +1,65 @@
|
|
1
|
+
require 'ast_serialization'
|
2
|
+
|
3
|
+
def qname(e_object)
|
4
|
+
e_class = e_object.eClass
|
5
|
+
e_package = e_class.ePackage
|
6
|
+
"#{e_package.nsURI}##{e_class.name}"
|
7
|
+
end
|
8
|
+
|
9
|
+
def jsonize_attr_value(map,e_object,e_attr)
|
10
|
+
value = e_object.eGet e_attr
|
11
|
+
if e_attr.upperBound==1
|
12
|
+
map["attr_#{e_attr.name}"] = value
|
13
|
+
else
|
14
|
+
l = []
|
15
|
+
(0..(value.size-1)).each do |i|
|
16
|
+
l << value.get(i)
|
17
|
+
end
|
18
|
+
map["attr_#{e_attr.name}"] = l
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def jsonize_ref_single_el(single_value,containment,adapters)
|
23
|
+
if containment
|
24
|
+
jsonize_obj(single_value,adapters)
|
25
|
+
else
|
26
|
+
serialization_id(single_value)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def jsonize_ref_value(map,e_object,e_ref,adapters)
|
31
|
+
value = e_object.eGet e_ref
|
32
|
+
|
33
|
+
propname = "relcont_#{e_ref.name}" if e_ref.containment
|
34
|
+
propname = "relnoncont_#{e_ref.name}" if not e_ref.containment
|
35
|
+
|
36
|
+
if e_ref.upperBound==1
|
37
|
+
map[propname] = jsonize_ref_single_el(value,e_ref.containment,adapters)
|
38
|
+
else
|
39
|
+
l = []
|
40
|
+
(0..(value.size-1)).each do |i|
|
41
|
+
l << jsonize_ref_single_el(value.get(i),e_ref.containment,adapters)
|
42
|
+
end
|
43
|
+
map[propname] = l
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def jsonize_obj(e_object, adapters={})
|
48
|
+
if not e_object
|
49
|
+
nil
|
50
|
+
else
|
51
|
+
map = { 'type' => qname(e_object), 'id' => serialization_id(e_object) }
|
52
|
+
e_class = e_object.eClass
|
53
|
+
e_class.eAllAttributes.each do |a|
|
54
|
+
jsonize_attr_value(map,e_object,a)
|
55
|
+
end
|
56
|
+
e_class.eAllReferences.each do |r|
|
57
|
+
#puts "ref #{r.name} #{r.containment}"
|
58
|
+
jsonize_ref_value(map,e_object,r,adapters)
|
59
|
+
end
|
60
|
+
if adapters.has_key? qname(e_object)
|
61
|
+
adapters[qname(e_object)].adapt(e_object,map)
|
62
|
+
end
|
63
|
+
map
|
64
|
+
end
|
65
|
+
end
|
data/lib/emf_jruby.rb
ADDED
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
metadata
ADDED
@@ -0,0 +1,56 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: emf_jruby
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease:
|
5
|
+
version: 0.1.0
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Federico Tomassetti
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2013-07-30 00:00:00.000000000 Z
|
13
|
+
dependencies: []
|
14
|
+
description: EMF support for JRuby. Support for loading and saving models in JSon.
|
15
|
+
email: f.tomassetti@gmail.com
|
16
|
+
executables: []
|
17
|
+
extensions: []
|
18
|
+
extra_rdoc_files: []
|
19
|
+
files:
|
20
|
+
- lib/emf_jruby.rb
|
21
|
+
- lib/emf/emf_to_json.rb
|
22
|
+
- lib/emf/ast_serialization.rb
|
23
|
+
- lib/jars/org.antlr.runtime_3.0.0.v200803061811.jar
|
24
|
+
- lib/jars/org.eclipse.emf.common_2.8.0.v20130125-0546.jar
|
25
|
+
- lib/jars/org.eclipse.emf.ecore.xmi_2.8.1.v20130125-0546.jar
|
26
|
+
- lib/jars/org.eclipse.emf.ecore_2.8.3.v20130125-0546.jar
|
27
|
+
- lib/jars/org.eclipse.m2m.atl.common_3.3.1.v201209061455.jar
|
28
|
+
- lib/jars/org.eclipse.m2m.atl.core.emf_3.3.1.v201209061455.jar
|
29
|
+
- lib/jars/org.eclipse.m2m.atl.core_3.3.1.v201209061455.jar
|
30
|
+
- lib/jars/org.eclipse.m2m.atl.dsls_3.3.1.v201209061455.jar
|
31
|
+
- lib/jars/org.eclipse.m2m.atl.engine_3.3.1.v201209061455.jar
|
32
|
+
homepage: http://federico-tomassetti.it
|
33
|
+
licenses: []
|
34
|
+
post_install_message:
|
35
|
+
rdoc_options: []
|
36
|
+
require_paths:
|
37
|
+
- lib
|
38
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
39
|
+
requirements:
|
40
|
+
- - '>='
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: '0'
|
43
|
+
none: false
|
44
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - '>='
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '0'
|
49
|
+
none: false
|
50
|
+
requirements: []
|
51
|
+
rubyforge_project:
|
52
|
+
rubygems_version: 1.8.24
|
53
|
+
signing_key:
|
54
|
+
specification_version: 3
|
55
|
+
summary: EMF support for JRuby
|
56
|
+
test_files: []
|