starscope 1.5.0 → 1.5.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: da191b58f08b524eb31cda50bf5194e3b691e4e4
4
- data.tar.gz: eaa0415c40b4428a741d162b6ce632b8a985a07d
3
+ metadata.gz: 9a53857d630c84472be96e4290b3ea5e0db5a91f
4
+ data.tar.gz: fce33444e0824932570e254b79299eb02abdd3e5
5
5
  SHA512:
6
- metadata.gz: ee659c9708a121d3c26dfc5a733fa90960bc71c6bbd5e19e47cc14278e45dbab63e7cc35a4b827b12db78b83be0f0951fef6015d5983dfa58ba450d29f4a5cc4
7
- data.tar.gz: 73a5d16b4a4a21d8b4d4e2dc1eff507fb439445294868d809f76963e7264575c0a9a94b67a15ad9fb181ce63d590b7f86c5cf5b69583e21b698765945fcac2fb
6
+ metadata.gz: f99e826dd012862204a89d4578920835952f28a08929e22612f04dda3861c15d75919bac97f2fc2c89dc5e632db61ec1f49ae2619474814fec4e1fb492ea2cbf
7
+ data.tar.gz: eefdd45150054b3039ef7bd540a008fa44231def86f019803f0625a3b3945a145754fe927ac16b32a857e53a8828d32910b933a6ec97914b8eb33b2a2c6c96ab
@@ -1,5 +1,6 @@
1
1
  language: ruby
2
2
  sudo: false
3
+ cache: bundler
3
4
 
4
5
  rvm:
5
6
  - 1.9.3
@@ -1,7 +1,17 @@
1
1
  Changelog
2
2
  =========
3
3
 
4
- v1.5.0 (trunk)
4
+ v1.5.1 (trunk)
5
+ --------------------
6
+
7
+ Improvements:
8
+ * Support CommonJS require syntax and ES6 import syntax in JavaScript (#146).
9
+
10
+ Bug Fixes:
11
+ * Fix handling of Ctrl-C in line-mode to exit cleanly instead of crashing.
12
+ * Fix handling of braceless fat-arrow methods in JavaScript (#147).
13
+
14
+ v1.5.0 (2015-09-24)
5
15
  --------------------
6
16
 
7
17
  New Features:
data/Rakefile CHANGED
@@ -1,9 +1,12 @@
1
1
  require 'bundler/gem_tasks'
2
2
  require 'rake/testtask'
3
+ require 'rubocop/rake_task'
3
4
 
4
5
  Rake::TestTask.new do |t|
5
6
  t.test_files = FileList['test/**/*_test.rb']
6
7
  end
7
8
 
8
- desc 'Run tests'
9
- task default: :test
9
+ RuboCop::RakeTask.new
10
+
11
+ desc 'Run tests and style checks'
12
+ task default: [:test, :rubocop]
@@ -295,7 +295,6 @@ if options[:linemode]
295
295
  end
296
296
  end
297
297
  rescue Interrupt
298
- # just exit
299
- return
298
+ exit
300
299
  end
301
300
  end
@@ -62,7 +62,7 @@ belongs (basically its type). Current tables already include:
62
62
  * `defs` for definitions of classes, functions, modules, etc.
63
63
  * `end` for the matching *end* of each definition
64
64
  * `assigns` for variable assignment
65
- * `requires` for required files in Ruby
65
+ * `requires` for required files in Ruby and JavaScript
66
66
  * `imports` for imported packages in Golang
67
67
  * `reads` for reading of variables, constants etc. (e.g. use in an expression)
68
68
  * `sym` for Ruby symbols
@@ -4,7 +4,7 @@ require 'sourcemap'
4
4
 
5
5
  module Starscope::Lang
6
6
  module Javascript
7
- VERSION = 0
7
+ VERSION = 1
8
8
 
9
9
  def self.match_file(name)
10
10
  name.end_with?('.js')
@@ -49,17 +49,28 @@ module Starscope::Lang
49
49
  next if type == :class
50
50
 
51
51
  mapping = map.bsearch(SourceMap::Offset.new(node.range.to.line, node.range.to.char))
52
- yield :end, :'}', line_no: mapping.original.line, type: type
52
+ if lines[mapping.original.line - 1].include? '}'
53
+ yield :end, '}', line_no: mapping.original.line, type: type
54
+ else
55
+ yield :end, '', line_no: mapping.original.line, type: type, col: mapping.original.column
56
+ end
53
57
  when RKelly::Nodes::FunctionCallNode
54
58
  name = node_name(node.value)
55
59
  next unless name
56
60
 
61
+ node = node.arguments.value[0] if name == 'require'
62
+
57
63
  line = find_line(node.range.from, map, lines, name)
58
64
  next unless line
59
65
 
60
- yield :calls, name, line_no: line
61
66
  found[name] ||= Set.new
62
67
  found[name].add(line)
68
+
69
+ if name == 'require'
70
+ yield :requires, node.value[1...-1], line_no: line
71
+ else
72
+ yield :calls, name, line_no: line
73
+ end
63
74
  end
64
75
  end
65
76
 
@@ -73,6 +84,15 @@ module Starscope::Lang
73
84
  line = find_line(node.range.from, map, lines, node.name)
74
85
  next unless line
75
86
 
87
+ if node.value.is_a?(RKelly::Nodes::AssignExprNode) &&
88
+ node.value.value.is_a?(RKelly::Nodes::FunctionCallNode) &&
89
+ node.value.value.value.is_a?(RKelly::Nodes::ResolveNode) &&
90
+ node.value.value.value.value == 'require'
91
+ found[node.name] ||= Set.new
92
+ found[node.name].add(line)
93
+ next
94
+ end
95
+
76
96
  next if found[node.name] && found[node.name].include?(line)
77
97
  yield :defs, node.name, line_no: line
78
98
  found[node.name] ||= Set.new
@@ -107,7 +127,10 @@ module Starscope::Lang
107
127
  def self.find_line(from, map, lines, name)
108
128
  mapping = map.bsearch(SourceMap::Offset.new(from.line, from.char))
109
129
  return unless mapping
110
- return unless lines[mapping.original.line - 1].include? name
130
+
131
+ line = lines[mapping.original.line - 1]
132
+ return unless line.include?(name) || (name == 'require' && line.include?('import'))
133
+
111
134
  mapping.original.line
112
135
  end
113
136
  end
@@ -1,3 +1,3 @@
1
1
  module Starscope
2
- VERSION = '1.5.0'
2
+ VERSION = '1.5.1'
3
3
  end
@@ -31,4 +31,5 @@ Gem::Specification.new do |gem|
31
31
  gem.add_development_dependency 'pry', '~> 0.10.1'
32
32
  gem.add_development_dependency 'minitest', '~> 5.8'
33
33
  gem.add_development_dependency 'mocha', '~> 1.1'
34
+ gem.add_development_dependency 'rubocop', '~> 0.34.2'
34
35
  end
@@ -2,6 +2,8 @@
2
2
 
3
3
  import React from 'react-native';
4
4
 
5
+ let madness = require('foo-bar');
6
+
5
7
  var {
6
8
  Component,
7
9
  StyleSheet,
@@ -15,6 +17,7 @@ var styles = StyleSheet.create({
15
17
  justifyContent: 'center',
16
18
  alignItems: 'center',
17
19
  },
20
+ bracelessMethod: () => 42,
18
21
  });
19
22
 
20
23
  var func1 = () => {
@@ -22,7 +22,9 @@ describe 'starscope executable script' do
22
22
  it 'must produce a valid database dump' do
23
23
  lines = `#{EXTRACT} -d requires`.lines.to_a
24
24
  lines[1].split.first.must_equal 'date'
25
- lines[2].split.first.must_equal 'zlib'
25
+ lines[2].split.first.must_equal 'foo-bar'
26
+ lines[3].split.first.must_equal 'react-native'
27
+ lines[4].split.first.must_equal 'zlib'
26
28
  end
27
29
 
28
30
  it 'must correctly query the database' do
@@ -35,11 +35,14 @@ describe Starscope::Lang::Javascript do
35
35
  defs.must_include :foo
36
36
  defs.must_include :MyStat
37
37
  defs.must_include :myStatFunc
38
+ defs.must_include :bracelessMethod
38
39
 
39
40
  defs.wont_include :setStyle
40
41
  defs.wont_include :setState
41
42
  defs.wont_include :fontFamily
42
43
  defs.wont_include :navigator
44
+ defs.wont_include :madness
45
+ defs.wont_include :React
43
46
  end
44
47
 
45
48
  it 'must only tag static classes once' do
@@ -48,7 +51,12 @@ describe Starscope::Lang::Javascript do
48
51
 
49
52
  it 'must identify endings' do
50
53
  @db.keys.must_include :end
51
- @db[:end].count.must_equal 11
54
+ @db[:end].count.must_equal 12
55
+
56
+ # bracelessMethod doesn't have a taggable end token so
57
+ # we have to do a little dancing with an empty name and a precise column
58
+ @db[:end][0][:name].must_equal [:'']
59
+ @db[:end][0][:col].must_equal 27
52
60
  end
53
61
 
54
62
  it 'must identify function calls' do
@@ -65,4 +73,12 @@ describe Starscope::Lang::Javascript do
65
73
  calls[:pop].count.must_equal 1
66
74
  calls[:_tabItem].count.must_equal 3
67
75
  end
76
+
77
+ it 'must identify module requires' do
78
+ @db.keys.must_include :requires
79
+ requires = @db[:requires].group_by { |x| x[:name][-1] }
80
+
81
+ requires.keys.must_include :'foo-bar'
82
+ requires.keys.must_include :'react-native'
83
+ end
68
84
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: starscope
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.0
4
+ version: 1.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Evan Huus
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-09-25 00:00:00.000000000 Z
11
+ date: 2015-10-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: oj
@@ -164,6 +164,20 @@ dependencies:
164
164
  - - "~>"
165
165
  - !ruby/object:Gem::Version
166
166
  version: '1.1'
167
+ - !ruby/object:Gem::Dependency
168
+ name: rubocop
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - "~>"
172
+ - !ruby/object:Gem::Version
173
+ version: 0.34.2
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - "~>"
179
+ - !ruby/object:Gem::Version
180
+ version: 0.34.2
167
181
  description: |2
168
182
  Starscope is a code indexer, search and navigation tool for Ruby, Golang, and JavaScript.
169
183
  Inspired by the extremely popular Ctags and Cscope utilities, Starscope can
@@ -243,7 +257,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
243
257
  version: '0'
244
258
  requirements: []
245
259
  rubyforge_project:
246
- rubygems_version: 2.2.2
260
+ rubygems_version: 2.4.8
247
261
  signing_key:
248
262
  specification_version: 4
249
263
  summary: Smart code search and indexing