java_model_jrb 0.1.2-java → 0.1.4-java

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
- def self.jsonize_java_obj(root)
139
- LightModels::Serialization::jsonize_obj(root,{
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
@@ -3,4 +3,6 @@ Dir[curr_dir+"/jars/*.jar"].each do |jar|
3
3
  require jar
4
4
  end
5
5
 
6
- require 'java_model/java_to_json'
6
+ require 'java_model/java_to_json'
7
+ require 'java_model/model_building'
8
+ require 'java_model/info_extraction'
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.2
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-16 00:00:00.000000000 Z
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
- version_requirements: !ruby/object:Gem::Requirement
15
+ requirement: !ruby/object:Gem::Requirement
17
16
  requirements:
18
17
  - - '>='
19
18
  - !ruby/object:Gem::Version
20
19
  version: 0.1.2
21
- none: false
22
- requirement: !ruby/object:Gem::Requirement
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
- none: false
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/generate.rb
54
- - lib/java_model/java_to_json.rb
55
- - lib/jars/org.emftext.commons.antlr3_4_0_3.4.0.v201207310007.jar
56
- - lib/jars/org.emftext.commons.layout_1.4.1.v201207310007.jar
57
- - lib/jars/org.emftext.language.java.resource.java_1.4.0.v201207310007.jar
58
- - lib/jars/org.emftext.language.java.resource_1.4.0.v201207310007.jar
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
- post_install_message:
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: 1.8.24
81
- signing_key:
82
- specification_version: 3
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: []
@@ -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