java_model_jrb 0.1.2-java → 0.1.4-java
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/java_model/info_extraction.rb +75 -0
- data/lib/java_model/java_models_builder.rb +18 -0
- data/lib/java_model/java_to_json.rb +7 -3
- data/lib/java_model/model_building.rb +26 -0
- data/lib/java_model_jrb.rb +3 -1
- metadata +38 -28
- data/lib/java_model/generate.rb +0 -63
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 96241e0802c62de51225c76660bdf0386efab2fc
|
4
|
+
data.tar.gz: e0e72e926e6a5cf03c9d496937a3918ef61bbe54
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 98d2186f4cd615851335fd289ff6e60469457f86391fe5261bda314725d5039c5f3fd5ed9d75e9d7c14309dff545c92fbc4b8acde6b7650cd980715574f4c393
|
7
|
+
data.tar.gz: 9ce8e595bd9d8a263ade09efc2e829f2a9f26e17e6494c64029d1202078dc0ab432342aafab8a315f8d823b23d0c5842ef2bf15b31a2506e89cb89fd42e05f01
|
@@ -0,0 +1,75 @@
|
|
1
|
+
module JavaModel
|
2
|
+
|
3
|
+
module InfoExtraction
|
4
|
+
|
5
|
+
def self.is_camel_case_str(s)
|
6
|
+
not s.index /[^A-Za-z0-9]/
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.camel_to_words(camel)
|
10
|
+
return [''] if camel==''
|
11
|
+
|
12
|
+
# if camel contains an upcase word and it is followed by something then
|
13
|
+
# extract it and process the camel before and after
|
14
|
+
# to understand where the upcase word ends we have to look if there is
|
15
|
+
# a downcase char after
|
16
|
+
upcaseword_index = camel.index /[A-Z]{2}/
|
17
|
+
number_index = camel.index /[0-9]/
|
18
|
+
if upcaseword_index
|
19
|
+
if upcaseword_index==0
|
20
|
+
words_before = []
|
21
|
+
else
|
22
|
+
camel_before = camel[0..upcaseword_index-1]
|
23
|
+
words_before = camel_to_words(camel_before)
|
24
|
+
end
|
25
|
+
|
26
|
+
camel_from = camel[upcaseword_index..-1]
|
27
|
+
has_other_after = camel_from.index /[^A-Z]/
|
28
|
+
if has_other_after
|
29
|
+
is_lower_case_after = camel_from[has_other_after].index /[a-z]/
|
30
|
+
if is_lower_case_after
|
31
|
+
mod = 1
|
32
|
+
else
|
33
|
+
mod = 0
|
34
|
+
end
|
35
|
+
upcase_word = camel_from[0..has_other_after-1-mod]
|
36
|
+
camel_after = camel_from[has_other_after-mod..-1]
|
37
|
+
words_after = camel_to_words(camel_after)
|
38
|
+
else
|
39
|
+
upcase_word = camel_from
|
40
|
+
words_after = []
|
41
|
+
end
|
42
|
+
words = words_before
|
43
|
+
words << upcase_word
|
44
|
+
words = words + words_after
|
45
|
+
words
|
46
|
+
elsif number_index
|
47
|
+
if number_index==0
|
48
|
+
words_before = []
|
49
|
+
else
|
50
|
+
camel_before = camel[0..number_index-1]
|
51
|
+
words_before = camel_to_words(camel_before)
|
52
|
+
end
|
53
|
+
|
54
|
+
camel_from = camel[number_index..-1]
|
55
|
+
has_other_after = camel_from.index /[^0-9]/
|
56
|
+
if has_other_after
|
57
|
+
number_word = camel_from[0..has_other_after-1]
|
58
|
+
camel_after = camel_from[has_other_after..-1]
|
59
|
+
words_after = camel_to_words(camel_after)
|
60
|
+
else
|
61
|
+
number_word = camel_from
|
62
|
+
words_after = []
|
63
|
+
end
|
64
|
+
words = words_before
|
65
|
+
words << number_word
|
66
|
+
words = words + words_after
|
67
|
+
words
|
68
|
+
else
|
69
|
+
camel.split /(?=[A-Z])/
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
end
|
74
|
+
|
75
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'emf_jruby'
|
2
|
+
require 'json'
|
3
|
+
require 'java_model_jrb/model_building'
|
4
|
+
require 'lightmodels'
|
5
|
+
|
6
|
+
$PWD = File.dirname(__FILE__)
|
7
|
+
|
8
|
+
raise "Usage: java_models_builder <sources> <models>" unless ARGV.count==2
|
9
|
+
|
10
|
+
sources_path = ARGV[0]
|
11
|
+
models_path = ARGV[1]
|
12
|
+
raise "Path to sources does not exist or it is not a dir: #{sources_path}" unless File.exist?(sources_path) and File.directory?(sources_path)
|
13
|
+
raise "Path to models does not exist or it is not a dir: #{models_path}" unless File.exist?(models_path) and File.directory?(models_path)
|
14
|
+
|
15
|
+
$SRC = sources_path
|
16
|
+
$DEST = models_path
|
17
|
+
|
18
|
+
JavaModel.generate_java_models_in_dir($SRC,$DEST)
|
@@ -135,11 +135,15 @@ class EClassFieldAdapter
|
|
135
135
|
|
136
136
|
end
|
137
137
|
|
138
|
-
|
139
|
-
|
138
|
+
ADAPTERS_MAP =
|
139
|
+
{
|
140
140
|
'http://www.emftext.org/java/classifiers#Class'=> EClassClassAdapter.new,
|
141
141
|
'http://www.emftext.org/java/members#ClassMethod'=> EClassClassMethodAdapter.new,
|
142
|
-
'http://www.emftext.org/java/members#Field'=> EClassFieldAdapter.new
|
142
|
+
'http://www.emftext.org/java/members#Field'=> EClassFieldAdapter.new
|
143
|
+
}
|
144
|
+
|
145
|
+
def self.jsonize_java_obj(root)
|
146
|
+
LightModels::Serialization::jsonize_obj(root,ADAPTERS_MAP)
|
143
147
|
end
|
144
148
|
|
145
149
|
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'lightmodels'
|
2
|
+
require 'java_model/java_to_json'
|
3
|
+
|
4
|
+
module JavaModel
|
5
|
+
|
6
|
+
@resource_set = JavaModel.create_resource_set()
|
7
|
+
|
8
|
+
def self.generate_java_models_in_dir(src,dest,model_ext='java.lm',max_nesting=500)
|
9
|
+
LightModels::ModelBuilding.generate_models_in_dir(src,dest,'java',model_ext,max_nesting) do |src|
|
10
|
+
java_resource = JavaModel.get_resource(@resource_set, src)
|
11
|
+
raise "wrong number of roots" unless java_resource.contents.size == 1
|
12
|
+
root = java_resource.contents.get(0)
|
13
|
+
LightModels::Serialization.eobject_to_model(root,JavaModel::ADAPTERS_MAP)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.generate_java_model_per_file(src,dest,model_ext='java.lm',max_nesting=500)
|
18
|
+
LightModels::ModelBuilding.generate_model_per_file(src,dest) do |src|
|
19
|
+
java_resource = JavaModel.get_resource(@resource_set, src)
|
20
|
+
raise "wrong number of roots" unless java_resource.contents.size == 1
|
21
|
+
root = java_resource.contents.get(0)
|
22
|
+
LightModels::Serialization.eobject_to_model(root,JavaModel::ADAPTERS_MAP)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
data/lib/java_model_jrb.rb
CHANGED
metadata
CHANGED
@@ -1,65 +1,77 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: java_model_jrb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
5
|
-
prerelease:
|
4
|
+
version: 0.1.4
|
6
5
|
platform: java
|
7
6
|
authors:
|
8
7
|
- Federico Tomassetti
|
9
|
-
autorequire:
|
8
|
+
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-08-
|
11
|
+
date: 2013-08-27 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: emf_jruby
|
16
|
-
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
17
16
|
requirements:
|
18
17
|
- - '>='
|
19
18
|
- !ruby/object:Gem::Version
|
20
19
|
version: 0.1.2
|
21
|
-
|
22
|
-
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - '>='
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 0.1.2
|
27
|
-
none: false
|
28
|
-
prerelease: false
|
29
|
-
type: :runtime
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: lightmodels
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
32
36
|
version_requirements: !ruby/object:Gem::Requirement
|
33
37
|
requirements:
|
34
38
|
- - '>='
|
35
39
|
- !ruby/object:Gem::Version
|
36
40
|
version: '0'
|
37
|
-
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: json
|
38
43
|
requirement: !ruby/object:Gem::Requirement
|
39
44
|
requirements:
|
40
45
|
- - '>='
|
41
46
|
- !ruby/object:Gem::Version
|
42
47
|
version: '0'
|
43
|
-
none: false
|
44
|
-
prerelease: false
|
45
48
|
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
46
55
|
description: Create EMF models of Java code and serialize them in JSON
|
47
56
|
email: f.tomassetti@gmail.com
|
48
57
|
executables: []
|
49
58
|
extensions: []
|
50
59
|
extra_rdoc_files: []
|
51
60
|
files:
|
52
|
-
- lib/java_model_jrb.rb
|
53
|
-
- lib/java_model/
|
54
|
-
- lib/java_model/
|
55
|
-
- lib/
|
56
|
-
- lib/
|
57
|
-
- lib/jars/org.emftext.
|
58
|
-
- lib/jars/org.emftext.
|
59
|
-
- lib/jars/org.emftext.language.java_1.4.0.v201207310007.jar
|
61
|
+
- ./lib/java_model_jrb.rb
|
62
|
+
- ./lib/java_model/info_extraction.rb
|
63
|
+
- ./lib/java_model/java_models_builder.rb
|
64
|
+
- ./lib/java_model/java_to_json.rb
|
65
|
+
- ./lib/java_model/model_building.rb
|
66
|
+
- ./lib/jars/org.emftext.commons.antlr3_4_0_3.4.0.v201207310007.jar
|
67
|
+
- ./lib/jars/org.emftext.commons.layout_1.4.1.v201207310007.jar
|
68
|
+
- ./lib/jars/org.emftext.language.java.resource.java_1.4.0.v201207310007.jar
|
69
|
+
- ./lib/jars/org.emftext.language.java.resource_1.4.0.v201207310007.jar
|
70
|
+
- ./lib/jars/org.emftext.language.java_1.4.0.v201207310007.jar
|
60
71
|
homepage: http://federico-tomassetti.it
|
61
72
|
licenses: []
|
62
|
-
|
73
|
+
metadata: {}
|
74
|
+
post_install_message:
|
63
75
|
rdoc_options: []
|
64
76
|
require_paths:
|
65
77
|
- lib
|
@@ -68,17 +80,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
68
80
|
- - '>='
|
69
81
|
- !ruby/object:Gem::Version
|
70
82
|
version: '0'
|
71
|
-
none: false
|
72
83
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
73
84
|
requirements:
|
74
85
|
- - '>='
|
75
86
|
- !ruby/object:Gem::Version
|
76
87
|
version: '0'
|
77
|
-
none: false
|
78
88
|
requirements: []
|
79
|
-
rubyforge_project:
|
80
|
-
rubygems_version:
|
81
|
-
signing_key:
|
82
|
-
specification_version:
|
89
|
+
rubyforge_project:
|
90
|
+
rubygems_version: 2.0.3
|
91
|
+
signing_key:
|
92
|
+
specification_version: 4
|
83
93
|
summary: Create EMF models of Java
|
84
94
|
test_files: []
|
data/lib/java_model/generate.rb
DELETED
@@ -1,63 +0,0 @@
|
|
1
|
-
require 'emf_jruby'
|
2
|
-
require 'json'
|
3
|
-
require 'zip/zipfilesystem'
|
4
|
-
require 'java_to_json_lib'
|
5
|
-
|
6
|
-
$PWD = File.dirname(__FILE__)
|
7
|
-
|
8
|
-
raise "Usage: java_to_json <sources> <models>" unless ARGV.count==2
|
9
|
-
|
10
|
-
sources_path = ARGV[0]
|
11
|
-
models_path = ARGV[1]
|
12
|
-
raise "Path to sources does not exist or it is not a dir: #{sources_path}" unless File.exist?(sources_path) and File.directory?(sources_path)
|
13
|
-
raise "Path to models does not exist or it is not a dir: #{models_path}" unless File.exist?(models_path) and File.directory?(models_path)
|
14
|
-
|
15
|
-
EObject = org.eclipse.emf.ecore.EObject
|
16
|
-
JavaResource = org.emftext.language.java.resource.java.mopp.JavaResource
|
17
|
-
JavaResourceUtil = org.emftext.language.java.resource.java.util.JavaResourceUtil
|
18
|
-
EcoreUtil = org.eclipse.emf.ecore.util.EcoreUtil
|
19
|
-
|
20
|
-
$SRC = sources_path
|
21
|
-
$DEST = models_path
|
22
|
-
$VERBOSE = false
|
23
|
-
|
24
|
-
def translate_dir(src,dest,src_extension,dest_extension,&translate_file)
|
25
|
-
puts "== #{src} -> #{dest} ==" if $VERBOSE
|
26
|
-
Dir["#{src}/*"].each do |fd|
|
27
|
-
if File.directory? fd
|
28
|
-
basename = File.basename(fd)
|
29
|
-
translate_dir("#{src}/#{basename}","#{dest}/#{basename}",src_extension,dest_extension,&translate_file)
|
30
|
-
else
|
31
|
-
if File.extname(fd)==".#{src_extension}"
|
32
|
-
translated_simple_name = "#{File.basename(fd, ".#{src_extension}")}.#{dest_extension}"
|
33
|
-
translated_name = "#{dest}/#{translated_simple_name}"
|
34
|
-
puts "* #{fd} --> #{translated_name}" if $VERBOSE
|
35
|
-
translate_file.call(fd,translated_name)
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
$resource_set = create_resource_set()
|
42
|
-
|
43
|
-
translate_dir($SRC,$DEST,'java','json') do |src,dest|
|
44
|
-
if not File.exist? dest
|
45
|
-
puts "<Model from #{src}>"
|
46
|
-
|
47
|
-
#file = java.io.File.new src
|
48
|
-
# java_resource = JavaResourceUtil.getResource file
|
49
|
-
java_resource = get_resource($resource_set, src)
|
50
|
-
|
51
|
-
raise "wrong number of roots" unless java_resource.contents.size == 1
|
52
|
-
root = java_resource.contents.get(0)
|
53
|
-
|
54
|
-
$nextId = 1
|
55
|
-
res = jsonize_java_obj(root)
|
56
|
-
|
57
|
-
dest_dir = File.dirname(dest)
|
58
|
-
FileUtils.mkdir_p(dest_dir)
|
59
|
-
File.open(dest, 'w') do |file|
|
60
|
-
file.write(JSON.pretty_generate(res,:max_nesting => 500))
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|