javaparse 0.1.1 → 0.1.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.
- data/lib/javaparse/line_counter.rb +24 -0
- data/lib/javaparse/method_graber.rb +54 -0
- metadata +3 -1
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
module JavaParse
|
|
2
|
+
|
|
3
|
+
module LineCounter
|
|
4
|
+
|
|
5
|
+
JAVA_COMMENTS_RE = /^\s*\/\/|^\s*\/\*|^\s*\*/
|
|
6
|
+
|
|
7
|
+
def count_lines
|
|
8
|
+
@loc, @bloc, @cloc, @all_lines = 0, 0, 0, 0
|
|
9
|
+
@content.each_line { |line|
|
|
10
|
+
@all_lines += 1
|
|
11
|
+
if line.strip.empty?
|
|
12
|
+
@bloc += 1
|
|
13
|
+
elsif JAVA_COMMENTS_RE.match(line)
|
|
14
|
+
@cloc += 1
|
|
15
|
+
else
|
|
16
|
+
@loc += 1
|
|
17
|
+
end
|
|
18
|
+
}
|
|
19
|
+
[@loc, @cloc, @bloc, @all_lines]
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
end
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
module JavaParse
|
|
2
|
+
|
|
3
|
+
class MethodMatch
|
|
4
|
+
|
|
5
|
+
attr_reader :signature, :method_text
|
|
6
|
+
|
|
7
|
+
def initialize(signature, method_text)
|
|
8
|
+
@signature = signature
|
|
9
|
+
@method_text = method_text
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def inner_lines_count
|
|
13
|
+
@method_text.lines.inject(-2){|sum| sum + 1}
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
module MethodGraber
|
|
19
|
+
|
|
20
|
+
def grab_methods(clazz_body)
|
|
21
|
+
methods = []
|
|
22
|
+
method_matches = match_method_bodies(clazz_body.content)
|
|
23
|
+
method_matches.each { |match|
|
|
24
|
+
methods << JavaMethod.new(unit_name, match.signature, match.inner_lines_count )
|
|
25
|
+
}
|
|
26
|
+
methods
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def match_method_bodies(text)
|
|
30
|
+
method_matches = []
|
|
31
|
+
while match = match_method_signature(text)
|
|
32
|
+
rtext = text[match.begin(0)..-1]
|
|
33
|
+
method_text = ""
|
|
34
|
+
open_brackets_counter = 0
|
|
35
|
+
rtext.each_char.with_index { |c, i|
|
|
36
|
+
open_brackets_counter = open_brackets_counter + 1 if '{' == c
|
|
37
|
+
open_brackets_counter = open_brackets_counter - 1 if '}' == c
|
|
38
|
+
method_text << c
|
|
39
|
+
break if ('}' == c && open_brackets_counter == 0)
|
|
40
|
+
}
|
|
41
|
+
method_matches << MethodMatch.new(match[0], method_text)
|
|
42
|
+
end_of_method_index = match.begin(0) + method_text.length
|
|
43
|
+
text = text[end_of_method_index..-1]
|
|
44
|
+
end
|
|
45
|
+
method_matches
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def match_method_signature(text)
|
|
49
|
+
text.match(/(?:public|private|protected).*\(.*\)\s*({$)/)
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: javaparse
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.2
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -21,6 +21,8 @@ files:
|
|
|
21
21
|
- lib/javaparse/java_section.rb
|
|
22
22
|
- lib/javaparse/java_unit.rb
|
|
23
23
|
- lib/javaparse/java_files.rb
|
|
24
|
+
- lib/javaparse/line_counter.rb
|
|
25
|
+
- lib/javaparse/method_graber.rb
|
|
24
26
|
homepage:
|
|
25
27
|
licenses: []
|
|
26
28
|
post_install_message:
|