rgen_ext 0.0.1 → 0.0.2
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.
- checksums.yaml +7 -0
- data/lib/rgen/ext/instantiation_extensions.rb +39 -0
- data/lib/rgen/ext/navigation_extensions.rb +1 -1
- data/lib/rgen/ext/version.rb +1 -1
- data/lib/rgen/ext.rb +1 -0
- data/rgen_ext.gemspec +1 -1
- data/test/test_instantiation_extensions.rb +40 -0
- metadata +12 -25
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: e81f0f93168cf34943559d9546433a1ceddc5882
|
4
|
+
data.tar.gz: de8df370efa41c0da4c0851aaf3740a0cd533975
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 6c2b98fe69ccd6246942e05fde08c0b65a273704a4a338ccadfc94f8df74832232ca62a71c7061005b6a89bbf43601f2304d1f0ff1918f1203bc24ef5c23f1fe
|
7
|
+
data.tar.gz: af65eb914e16d77c6c96d0f6bc09ffdff00bd1052bce3ad481bc868b8d58d93e3935ce05506acfbc90a649ba3877c8383be070a76f7232c270926387ae957296
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# RGen-ext
|
2
|
+
# Common extension to the RGen Framework
|
3
|
+
# Federico Tomassetti, 2013
|
4
|
+
|
5
|
+
require 'rgen/metamodel_builder'
|
6
|
+
|
7
|
+
module RGen
|
8
|
+
module Ext
|
9
|
+
|
10
|
+
module InstantiationExtensions
|
11
|
+
|
12
|
+
def build(values={})
|
13
|
+
instance = self.new
|
14
|
+
if values.is_a? Hash
|
15
|
+
values.each do |k,v|
|
16
|
+
attribute = self.ecore.eAllAttributes.find {|x| x.name==k.to_s}
|
17
|
+
reference = self.ecore.eAllReferences.find {|x| x.name==k.to_s}
|
18
|
+
raise "UnexistingFeature #{k}" unless (attribute or reference)
|
19
|
+
setter = (k.to_s+'=').to_sym
|
20
|
+
instance.send setter, v
|
21
|
+
end
|
22
|
+
else
|
23
|
+
raise "SingleAttributeRequired" if self.ecore.eAllAttributes.count!=1
|
24
|
+
attribute = self.ecore.eAllAttributes[0]
|
25
|
+
set_attr(instance,attribute,values)
|
26
|
+
end
|
27
|
+
instance
|
28
|
+
end
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
def set_attr(instance,attribute,value)
|
33
|
+
setter = (attribute.name+'=').to_sym
|
34
|
+
instance.send setter, value
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
end
|
@@ -22,7 +22,7 @@ module NavigationExtensions
|
|
22
22
|
def all_children(of=self)
|
23
23
|
arr = []
|
24
24
|
ecore = of.class.ecore
|
25
|
-
ecore.eAllReferences.select {|r| r.containment}.each do |ref|
|
25
|
+
ecore.eAllReferences.sort_by{|r| r.name}.select {|r| r.containment}.each do |ref|
|
26
26
|
res = of.send(ref.name.to_sym)
|
27
27
|
if ref.many
|
28
28
|
res.each do |el|
|
data/lib/rgen/ext/version.rb
CHANGED
data/lib/rgen/ext.rb
CHANGED
data/rgen_ext.gemspec
CHANGED
@@ -20,7 +20,7 @@ Gem::Specification.new do |spec|
|
|
20
20
|
|
21
21
|
spec.add_dependency "rgen"
|
22
22
|
|
23
|
-
spec.add_development_dependency "bundler"
|
23
|
+
spec.add_development_dependency "bundler"
|
24
24
|
spec.add_development_dependency "rake"
|
25
25
|
spec.add_development_dependency "simplecov"
|
26
26
|
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class InstantiationExtensionsTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
module TestMetamodel
|
6
|
+
|
7
|
+
class Dog < RGen::MetamodelBuilder::MMBase
|
8
|
+
class << self
|
9
|
+
include RGen::Ext::InstantiationExtensions
|
10
|
+
end
|
11
|
+
has_attr 'name',String
|
12
|
+
end
|
13
|
+
|
14
|
+
class Person < RGen::MetamodelBuilder::MMBase
|
15
|
+
class << self
|
16
|
+
include RGen::Ext::InstantiationExtensions
|
17
|
+
end
|
18
|
+
has_attr 'first_name', String
|
19
|
+
has_attr 'surname', String
|
20
|
+
has_attr 'age', Integer
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
def setup
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_build_single_attribute
|
29
|
+
dog = TestMetamodel::Dog.build('fuffy')
|
30
|
+
assert_equal 'fuffy',dog.name
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_build_multiple_attributes
|
34
|
+
person = TestMetamodel::Person.build(:first_name => 'Luca', :surname => 'Gillus', :age => 23)
|
35
|
+
assert_equal 'Luca',person.first_name
|
36
|
+
assert_equal 'Gillus',person.surname
|
37
|
+
assert_equal 23,person.age
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
metadata
CHANGED
@@ -1,15 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rgen_ext
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.0.2
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Federico Tomassetti
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-
|
11
|
+
date: 2013-12-30 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: rgen
|
@@ -18,29 +17,25 @@ dependencies:
|
|
18
17
|
- - '>='
|
19
18
|
- !ruby/object:Gem::Version
|
20
19
|
version: '0'
|
21
|
-
none: false
|
22
20
|
requirement: !ruby/object:Gem::Requirement
|
23
21
|
requirements:
|
24
22
|
- - '>='
|
25
23
|
- !ruby/object:Gem::Version
|
26
24
|
version: '0'
|
27
|
-
none: false
|
28
25
|
prerelease: false
|
29
26
|
type: :runtime
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: bundler
|
32
29
|
version_requirements: !ruby/object:Gem::Requirement
|
33
30
|
requirements:
|
34
|
-
- -
|
31
|
+
- - '>='
|
35
32
|
- !ruby/object:Gem::Version
|
36
|
-
version: '
|
37
|
-
none: false
|
33
|
+
version: '0'
|
38
34
|
requirement: !ruby/object:Gem::Requirement
|
39
35
|
requirements:
|
40
|
-
- -
|
36
|
+
- - '>='
|
41
37
|
- !ruby/object:Gem::Version
|
42
|
-
version: '
|
43
|
-
none: false
|
38
|
+
version: '0'
|
44
39
|
prerelease: false
|
45
40
|
type: :development
|
46
41
|
- !ruby/object:Gem::Dependency
|
@@ -50,13 +45,11 @@ dependencies:
|
|
50
45
|
- - '>='
|
51
46
|
- !ruby/object:Gem::Version
|
52
47
|
version: '0'
|
53
|
-
none: false
|
54
48
|
requirement: !ruby/object:Gem::Requirement
|
55
49
|
requirements:
|
56
50
|
- - '>='
|
57
51
|
- !ruby/object:Gem::Version
|
58
52
|
version: '0'
|
59
|
-
none: false
|
60
53
|
prerelease: false
|
61
54
|
type: :development
|
62
55
|
- !ruby/object:Gem::Dependency
|
@@ -66,13 +59,11 @@ dependencies:
|
|
66
59
|
- - '>='
|
67
60
|
- !ruby/object:Gem::Version
|
68
61
|
version: '0'
|
69
|
-
none: false
|
70
62
|
requirement: !ruby/object:Gem::Requirement
|
71
63
|
requirements:
|
72
64
|
- - '>='
|
73
65
|
- !ruby/object:Gem::Version
|
74
66
|
version: '0'
|
75
|
-
none: false
|
76
67
|
prerelease: false
|
77
68
|
type: :development
|
78
69
|
description: Extensions of general use to RGen
|
@@ -90,16 +81,19 @@ files:
|
|
90
81
|
- Rakefile
|
91
82
|
- lib/rgen/ext.rb
|
92
83
|
- lib/rgen/ext/comparison.rb
|
84
|
+
- lib/rgen/ext/instantiation_extensions.rb
|
93
85
|
- lib/rgen/ext/navigation_extensions.rb
|
94
86
|
- lib/rgen/ext/version.rb
|
95
87
|
- rgen_ext.gemspec
|
96
88
|
- test/helper.rb
|
97
89
|
- test/test_comparison.rb
|
90
|
+
- test/test_instantiation_extensions.rb
|
98
91
|
- test/test_navigation_extensions.rb
|
99
92
|
- test/test_traverse.rb
|
100
93
|
homepage: http://github.com/ftomassetti/rgen_ext
|
101
94
|
licenses:
|
102
95
|
- Apache License v2
|
96
|
+
metadata: {}
|
103
97
|
post_install_message:
|
104
98
|
rdoc_options: []
|
105
99
|
require_paths:
|
@@ -108,28 +102,21 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
108
102
|
requirements:
|
109
103
|
- - '>='
|
110
104
|
- !ruby/object:Gem::Version
|
111
|
-
segments:
|
112
|
-
- 0
|
113
105
|
version: '0'
|
114
|
-
hash: 2
|
115
|
-
none: false
|
116
106
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
117
107
|
requirements:
|
118
108
|
- - '>='
|
119
109
|
- !ruby/object:Gem::Version
|
120
|
-
segments:
|
121
|
-
- 0
|
122
110
|
version: '0'
|
123
|
-
hash: 2
|
124
|
-
none: false
|
125
111
|
requirements: []
|
126
112
|
rubyforge_project:
|
127
|
-
rubygems_version:
|
113
|
+
rubygems_version: 2.2.0
|
128
114
|
signing_key:
|
129
|
-
specification_version:
|
115
|
+
specification_version: 4
|
130
116
|
summary: Extensions of general use to RGen
|
131
117
|
test_files:
|
132
118
|
- test/helper.rb
|
133
119
|
- test/test_comparison.rb
|
120
|
+
- test/test_instantiation_extensions.rb
|
134
121
|
- test/test_navigation_extensions.rb
|
135
122
|
- test/test_traverse.rb
|