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.
@@ -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