starscope 0.1.5 → 0.1.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,7 +1,13 @@
1
1
  Changelog
2
2
  =========
3
3
 
4
- v0.1.5 (trunk)
4
+ v0.1.6 (trunk)
5
+ -------------------
6
+
7
+ Bug Fixes:
8
+ * Much improved recognition of golang function calls.
9
+
10
+ v0.1.5 (2014-01-06)
5
11
  -------------------
6
12
 
7
13
  New Features:
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- starscope (0.1.5)
4
+ starscope (0.1.6)
5
5
  oj (~> 2.5)
6
6
  parser (~> 2.1)
7
7
  ruby-progressbar (~> 1.4)
@@ -20,7 +20,7 @@ GEM
20
20
  debugger-ruby_core_source (1.3.1)
21
21
  method_source (0.8.2)
22
22
  oj (2.5.3)
23
- parser (2.1.2)
23
+ parser (2.1.3)
24
24
  ast (~> 1.1)
25
25
  slop (~> 3.4, >= 3.4.5)
26
26
  pry (0.9.12.4)
data/README.md CHANGED
@@ -12,7 +12,7 @@ StarScope is a similar tool for [Ruby](https://www.ruby-lang.org/) and
12
12
  support for other languages at some point within the same framework (thus the
13
13
  name StarScope, ie \*scope).
14
14
 
15
- Install it as a gem:
15
+ Install it as a gem (requires at least Ruby 1.9.3):
16
16
  ```
17
17
  $ gem install starscope
18
18
  ```
@@ -1,6 +1,6 @@
1
1
  module StarScope::Lang
2
2
  module Go
3
- FUNC_CALL = /([\w\.]*?\w)\(.*\)/
3
+ FUNC_CALL = /([\w\.]*?\w)\(/
4
4
  BUILTIN_FUNCS = ['new', 'make', 'len', 'close', 'copy', 'delete',
5
5
  'int', 'int8', 'int16', 'int32', 'int64',
6
6
  'uint', 'uint8', 'uint16', 'uint32', 'uint64',
@@ -10,7 +10,7 @@ module StarScope::Lang
10
10
  name =~ /.*\.go$/
11
11
  end
12
12
 
13
- def self.extract(file)
13
+ def self.extract(file, &block)
14
14
  stack = []
15
15
  scope = []
16
16
  str = File.readlines(file).each_with_index do |line, line_no|
@@ -116,7 +116,7 @@ module StarScope::Lang
116
116
  stack.push(:def)
117
117
  when /^const\s+(\w+)\s+\w+/
118
118
  yield :defs, $1, line_no: line_no, scope: scope
119
- when /^\s+(.*?) :?= ((.*?)\(.*\))?/
119
+ when /^\s+(.*?) :?=.*/
120
120
  $1.split(',').each do |var|
121
121
  var = var.strip
122
122
  name = var.split('.')
@@ -127,16 +127,9 @@ module StarScope::Lang
127
127
  yield :assigns, name[1], line_no: line_no, scope: [name[0]]
128
128
  end
129
129
  end
130
- if $2
131
- match = FUNC_CALL.match($2)
132
- if match
133
- tmp = parse_call(match[1], line_no, scope)
134
- yield tmp if tmp
135
- end
136
- end
137
- when FUNC_CALL
138
- tmp = parse_call($1, line_no, scope)
139
- yield tmp if tmp
130
+ parse_call(line, line_no, scope, &block)
131
+ else
132
+ parse_call(line, line_no, scope, &block)
140
133
  end
141
134
  end
142
135
  # if the line looks like "foo /* foo" then we enter the comment state
@@ -148,17 +141,18 @@ module StarScope::Lang
148
141
  end
149
142
 
150
143
  def self.parse_call(line, line_no, scope)
151
- name = line.split('.').select {|chunk| not chunk.empty?}
152
- case name.length
153
- when 1
154
- return nil if name[0] == 'func'
155
- if BUILTIN_FUNCS.include?(name[0])
156
- return :calls, name[0], line_no: line_no
144
+ line.scan(FUNC_CALL) do |match|
145
+ name = match[0].split('.').select {|chunk| not chunk.empty?}
146
+ if name.length == 1
147
+ next if name[0] == 'func'
148
+ if BUILTIN_FUNCS.include?(name[0])
149
+ yield :calls, name[0], line_no: line_no
150
+ else
151
+ yield :calls, name[0], line_no: line_no, scope: scope
152
+ end
157
153
  else
158
- return :calls, name[0], line_no: line_no, scope: scope
154
+ yield :calls, name[-1], line_no: line_no, scope: name[0...-1]
159
155
  end
160
- else
161
- return :calls, name[-1], line_no: line_no, scope: name[0...-1]
162
156
  end
163
157
  end
164
158
  end
@@ -1,3 +1,3 @@
1
1
  module StarScope
2
- VERSION = "0.1.5"
2
+ VERSION = "0.1.6"
3
3
  end
@@ -12,6 +12,7 @@ Gem::Specification.new do |gem|
12
12
  gem.files = `git ls-files`.split("\n")
13
13
  gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
14
14
  gem.require_paths = ["lib"]
15
+ gem.required_ruby_version = '>= 1.9.3'
15
16
 
16
17
  gem.add_dependency 'oj', '~> 2.5'
17
18
  gem.add_dependency 'parser', '~> 2.1'
@@ -0,0 +1,25 @@
1
+ package main
2
+
3
+ func a(c int) int {
4
+ return 3
5
+ }
6
+
7
+ func b() int {
8
+ return 0
9
+ }
10
+
11
+ func c(a, b int) int {
12
+ return 1
13
+ }
14
+
15
+ func main() {
16
+ var (
17
+ q int
18
+ t string
19
+ )
20
+ x := a(1)
21
+ y := b()
22
+ z := c(a(q), b())
23
+
24
+ a(c(b(), b()))
25
+ }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: starscope
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-01-06 00:00:00.000000000 Z
12
+ date: 2014-01-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: oj
@@ -146,6 +146,7 @@ files:
146
146
  - lib/starscope/langs/ruby.rb
147
147
  - lib/starscope/version.rb
148
148
  - starscope.gemspec
149
+ - test/test.go
149
150
  homepage: https://github.com/eapache/starscope
150
151
  licenses:
151
152
  - MIT
@@ -158,7 +159,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
158
159
  requirements:
159
160
  - - ! '>='
160
161
  - !ruby/object:Gem::Version
161
- version: '0'
162
+ version: 1.9.3
162
163
  required_rubygems_version: !ruby/object:Gem::Requirement
163
164
  none: false
164
165
  requirements: