starscope 1.6.0 → 1.6.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ruby-ci.yml +2 -2
- data/.gitignore +1 -0
- data/CHANGELOG.md +9 -0
- data/bin/starscope +1 -0
- data/lib/starscope/langs/ruby.rb +12 -4
- data/lib/starscope/langs/vue.rb +32 -0
- data/lib/starscope/version.rb +1 -1
- data/starscope.gemspec +1 -1
- data/test/fixtures/sample_ruby.rb +3 -0
- data/test/fixtures/sample_vue.vue +48 -0
- data/test/functional/starscope_test.rb +3 -2
- data/test/test_helper.rb +1 -0
- data/test/unit/langs/ruby_test.rb +21 -2
- data/test/unit/langs/vue_test.rb +28 -0
- metadata +17 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b664cd1fd9107436e9a2bf94a21c00249ed8970b905b34c8649eba4cca7336c7
|
4
|
+
data.tar.gz: 39aa4d99d25f820db321b1c5b58d9e8662ed45812a8636c047df52f25a9d38b1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1fb43999baa94336ac2265045f0e7a06e18070d2199489bdc489155bc9baf03b9541922c8a9791b6d3a9578cda6cd2a75d20076a73b86d0d9481d2ae9659da05
|
7
|
+
data.tar.gz: a9ee933fffe03daf2b50f017499b188da833305da02012283823c771c5daa10e7c9a293486925f30afde29342e192a5bfbd1606ced1c8f20e848741eac839f27
|
data/.gitignore
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,15 @@
|
|
1
1
|
Changelog
|
2
2
|
=========
|
3
3
|
|
4
|
+
v1.6.1 (2022-08-07)
|
5
|
+
-------------------
|
6
|
+
|
7
|
+
* Support for extracting javascript blocks from vue files.
|
8
|
+
* Print a newline when exiting from line-mode via interrupt.
|
9
|
+
* Support for Ruby 3.x "def foo = ..." method syntax (#192).
|
10
|
+
* Don't generate conflicting `read` and `defs` entries for class and module
|
11
|
+
definitions (#176).
|
12
|
+
|
4
13
|
v1.6.0 (2022-02-10)
|
5
14
|
-------------------
|
6
15
|
|
data/bin/starscope
CHANGED
data/lib/starscope/langs/ruby.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require 'parser/
|
1
|
+
require 'parser/ruby31'
|
2
2
|
|
3
3
|
module Starscope
|
4
4
|
module Lang
|
@@ -29,7 +29,7 @@ module Starscope
|
|
29
29
|
buffer = Parser::Source::Buffer.new(path, 1)
|
30
30
|
buffer.source = contents.force_encoding(Encoding::UTF_8)
|
31
31
|
|
32
|
-
parser = Parser::
|
32
|
+
parser = Parser::Ruby31.new(Builder.new)
|
33
33
|
parser.diagnostics.ignore_warnings = true
|
34
34
|
parser.diagnostics.all_errors_are_fatal = false
|
35
35
|
|
@@ -41,12 +41,15 @@ module Starscope
|
|
41
41
|
extract_node(tree, scope, &block)
|
42
42
|
|
43
43
|
new_scope = []
|
44
|
+
child_nodes = tree.children
|
45
|
+
|
44
46
|
if %i[class module].include? tree.type
|
45
47
|
new_scope = scoped_name(tree.children[0], scope)
|
46
48
|
scope += new_scope
|
49
|
+
child_nodes = child_nodes[1..] # module and class constant definitions are not "read"s
|
47
50
|
end
|
48
51
|
|
49
|
-
|
52
|
+
child_nodes.each { |node| extract_tree(node, scope, &block) if node.is_a? AST::Node }
|
50
53
|
|
51
54
|
scope.pop(new_scope.count)
|
52
55
|
end
|
@@ -70,7 +73,12 @@ module Starscope
|
|
70
73
|
when :def
|
71
74
|
yield :defs, scope + [node.children[0]],
|
72
75
|
line_no: loc.line, type: :func, col: loc.name.column
|
73
|
-
|
76
|
+
if loc.end
|
77
|
+
yield :end, :end, line_no: loc.end.line, type: :func, col: loc.end.column
|
78
|
+
else
|
79
|
+
# ruby 3.x syntax for "def foo = ..."
|
80
|
+
yield :end, :end, line_no: loc.line, type: :func, col: loc.expression.end.column
|
81
|
+
end
|
74
82
|
|
75
83
|
when :defs
|
76
84
|
yield :defs, scope + [node.children[1]],
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module Starscope
|
2
|
+
module Lang
|
3
|
+
module Vue
|
4
|
+
VERSION = 1
|
5
|
+
|
6
|
+
SCRIPT_START = '<script>'.freeze
|
7
|
+
SCRIPT_END = '</script>'.freeze
|
8
|
+
|
9
|
+
def self.match_file(name)
|
10
|
+
name.end_with?('.vue')
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.extract(_path, contents)
|
14
|
+
in_script = false
|
15
|
+
|
16
|
+
contents.lines.each_with_index do |line, line_no|
|
17
|
+
line_no += 1 # zero-index to one-index
|
18
|
+
|
19
|
+
if in_script
|
20
|
+
if line.strip == SCRIPT_END
|
21
|
+
in_script = false
|
22
|
+
else
|
23
|
+
yield Starscope::DB::FRAGMENT, :Javascript, frag: line, line_no: line_no
|
24
|
+
end
|
25
|
+
elsif line.strip == SCRIPT_START
|
26
|
+
in_script = true
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
data/lib/starscope/version.rb
CHANGED
data/starscope.gemspec
CHANGED
@@ -27,9 +27,9 @@ Gem::Specification.new do |gem|
|
|
27
27
|
gem.add_dependency 'sourcemap', '~> 0.1'
|
28
28
|
|
29
29
|
gem.add_development_dependency 'bundler', '>= 1.7'
|
30
|
+
gem.add_development_dependency 'byebug', '~> 11.1'
|
30
31
|
gem.add_development_dependency 'minitest', '~> 5.12'
|
31
32
|
gem.add_development_dependency 'mocha', '~> 1.3'
|
32
|
-
gem.add_development_dependency 'pry', '~> 0.11'
|
33
33
|
gem.add_development_dependency 'rake', '~> 13.0'
|
34
34
|
gem.add_development_dependency 'rubocop', '~> 1.25.0'
|
35
35
|
gem.add_development_dependency 'rubocop-minitest', '~> 0.17.1'
|
@@ -0,0 +1,48 @@
|
|
1
|
+
<template>
|
2
|
+
<div class="container">
|
3
|
+
<span>
|
4
|
+
<a
|
5
|
+
href="https://www.markdownguide.org/cheat-sheet/"
|
6
|
+
target="_blank"
|
7
|
+
style="padding-left: 6px; padding-bottom: 0px;"
|
8
|
+
>Markdown </a>
|
9
|
+
{{ descriptionLinkingVerb }} supported.
|
10
|
+
</span>
|
11
|
+
</div>
|
12
|
+
</template>
|
13
|
+
|
14
|
+
<script>
|
15
|
+
import marked from 'marked';
|
16
|
+
|
17
|
+
export default {
|
18
|
+
props: {
|
19
|
+
placeholderText: {
|
20
|
+
type: String,
|
21
|
+
default: 'This field supports Markdown. Try it out!'
|
22
|
+
}
|
23
|
+
},
|
24
|
+
computed: {
|
25
|
+
markdown() {
|
26
|
+
return marked(this.value || '');
|
27
|
+
}
|
28
|
+
},
|
29
|
+
methods: {
|
30
|
+
handleChange(e) {
|
31
|
+
this.$emit('change', e.target.value);
|
32
|
+
}
|
33
|
+
}
|
34
|
+
}
|
35
|
+
</script>
|
36
|
+
|
37
|
+
<style scoped>
|
38
|
+
@import "../shared/style.css";
|
39
|
+
</style>
|
40
|
+
|
41
|
+
<style>
|
42
|
+
.container {
|
43
|
+
overflow: auto;
|
44
|
+
padding: 5px;
|
45
|
+
border-radius: 5px;
|
46
|
+
}
|
47
|
+
|
48
|
+
</style>
|
@@ -23,8 +23,9 @@ describe 'starscope executable script' do
|
|
23
23
|
lines = `#{EXTRACT} -d requires`.lines.to_a
|
24
24
|
_(lines[1].split.first).must_equal 'date'
|
25
25
|
_(lines[2].split.first).must_equal 'foo-bar'
|
26
|
-
_(lines[3].split.first).must_equal '
|
27
|
-
_(lines[4].split.first).must_equal '
|
26
|
+
_(lines[3].split.first).must_equal 'marked'
|
27
|
+
_(lines[4].split.first).must_equal 'react-native'
|
28
|
+
_(lines[5].split.first).must_equal 'zlib'
|
28
29
|
end
|
29
30
|
|
30
31
|
it 'must correctly query the database' do
|
data/test/test_helper.rb
CHANGED
@@ -9,4 +9,5 @@ GOLANG_SAMPLE = "#{FIXTURES}/sample_golang.go".freeze
|
|
9
9
|
JAVASCRIPT_EXAMPLE = "#{FIXTURES}/sample_javascript.js".freeze
|
10
10
|
RUBY_SAMPLE = "#{FIXTURES}/sample_ruby.rb".freeze
|
11
11
|
ERB_SAMPLE = "#{FIXTURES}/sample_erb.erb".freeze
|
12
|
+
VUE_SAMPLE = "#{FIXTURES}/sample_vue.vue".freeze
|
12
13
|
EMPTY_FILE = "#{FIXTURES}/empty".freeze
|
@@ -28,15 +28,20 @@ describe Starscope::Lang::Ruby do
|
|
28
28
|
_(defs).must_include :load
|
29
29
|
_(defs).must_include :update
|
30
30
|
_(defs).must_include :files_from_path
|
31
|
+
_(defs).must_include :get_lastfile
|
31
32
|
end
|
32
33
|
|
33
34
|
it 'must identify constant definitions' do
|
34
|
-
_(@db
|
35
|
+
_(@db.keys).must_include :defs
|
36
|
+
defs = @db[:defs].map { |x| x[:name][-1] }
|
37
|
+
|
38
|
+
_(defs).must_include :PBAR_FORMAT
|
39
|
+
_(defs).must_include :SOME_INVALID_ENCODING
|
35
40
|
end
|
36
41
|
|
37
42
|
it 'must identify endings' do
|
38
43
|
_(@db.keys).must_include :end
|
39
|
-
_(@db[:end].count).must_equal
|
44
|
+
_(@db[:end].count).must_equal 14
|
40
45
|
end
|
41
46
|
|
42
47
|
it 'must identify function calls' do
|
@@ -63,4 +68,18 @@ describe Starscope::Lang::Ruby do
|
|
63
68
|
_(assigns.keys).wont_include :'='
|
64
69
|
_(assigns.keys).wont_include :<
|
65
70
|
end
|
71
|
+
|
72
|
+
it 'must identify variable and constant reads' do
|
73
|
+
_(@db.keys).must_include :reads
|
74
|
+
reads = @db[:reads].map { |x| x[:name][-1] }
|
75
|
+
|
76
|
+
_(reads).must_include :Go
|
77
|
+
_(reads).must_include :Ruby
|
78
|
+
_(reads).must_include :DB_FORMAT
|
79
|
+
_(reads).must_include :UnknownDBFormatError
|
80
|
+
_(reads).must_include :path
|
81
|
+
_(reads).must_include :entry
|
82
|
+
_(reads).must_include :file
|
83
|
+
_(reads).must_include :@files
|
84
|
+
end
|
66
85
|
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require_relative '../../test_helper'
|
2
|
+
|
3
|
+
describe Starscope::Lang::Vue do
|
4
|
+
before do
|
5
|
+
@frags = []
|
6
|
+
Starscope::Lang::Vue.extract(VUE_SAMPLE, File.read(VUE_SAMPLE)) do |tbl, name, args|
|
7
|
+
_(tbl).must_equal Starscope::DB::FRAGMENT
|
8
|
+
_(name).must_equal :Javascript
|
9
|
+
@frags << args
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'must match vue files' do
|
14
|
+
_(Starscope::Lang::Vue.match_file(VUE_SAMPLE)).must_equal true
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'must not match non-vue files' do
|
18
|
+
_(Starscope::Lang::ERB.match_file(GOLANG_SAMPLE)).must_equal false
|
19
|
+
_(Starscope::Lang::ERB.match_file(EMPTY_FILE)).must_equal false
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'must identify fragments' do
|
23
|
+
_(@frags.length).must_equal(20)
|
24
|
+
_(@frags).must_include({ frag: "import marked from 'marked';\n", line_no: 15 })
|
25
|
+
_(@frags).must_include({ frag: " markdown() {\n", line_no: 25 })
|
26
|
+
_(@frags).must_include({ frag: "}\n", line_no: 34 })
|
27
|
+
end
|
28
|
+
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.6.
|
4
|
+
version: 1.6.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: 2022-
|
11
|
+
date: 2022-08-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: babel-transpiler
|
@@ -109,47 +109,47 @@ dependencies:
|
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '1.7'
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
112
|
+
name: byebug
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
115
|
- - "~>"
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version: '
|
117
|
+
version: '11.1'
|
118
118
|
type: :development
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
122
|
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version: '
|
124
|
+
version: '11.1'
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
|
-
name:
|
126
|
+
name: minitest
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
129
|
- - "~>"
|
130
130
|
- !ruby/object:Gem::Version
|
131
|
-
version: '
|
131
|
+
version: '5.12'
|
132
132
|
type: :development
|
133
133
|
prerelease: false
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
136
136
|
- - "~>"
|
137
137
|
- !ruby/object:Gem::Version
|
138
|
-
version: '
|
138
|
+
version: '5.12'
|
139
139
|
- !ruby/object:Gem::Dependency
|
140
|
-
name:
|
140
|
+
name: mocha
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
142
142
|
requirements:
|
143
143
|
- - "~>"
|
144
144
|
- !ruby/object:Gem::Version
|
145
|
-
version: '
|
145
|
+
version: '1.3'
|
146
146
|
type: :development
|
147
147
|
prerelease: false
|
148
148
|
version_requirements: !ruby/object:Gem::Requirement
|
149
149
|
requirements:
|
150
150
|
- - "~>"
|
151
151
|
- !ruby/object:Gem::Version
|
152
|
-
version: '
|
152
|
+
version: '1.3'
|
153
153
|
- !ruby/object:Gem::Dependency
|
154
154
|
name: rake
|
155
155
|
requirement: !ruby/object:Gem::Requirement
|
@@ -236,6 +236,7 @@ files:
|
|
236
236
|
- lib/starscope/langs/golang.rb
|
237
237
|
- lib/starscope/langs/javascript.rb
|
238
238
|
- lib/starscope/langs/ruby.rb
|
239
|
+
- lib/starscope/langs/vue.rb
|
239
240
|
- lib/starscope/matcher.rb
|
240
241
|
- lib/starscope/output.rb
|
241
242
|
- lib/starscope/queryable.rb
|
@@ -254,6 +255,7 @@ files:
|
|
254
255
|
- test/fixtures/sample_golang.go
|
255
256
|
- test/fixtures/sample_javascript.js
|
256
257
|
- test/fixtures/sample_ruby.rb
|
258
|
+
- test/fixtures/sample_vue.vue
|
257
259
|
- test/functional/starscope_test.rb
|
258
260
|
- test/test_helper.rb
|
259
261
|
- test/unit/db_test.rb
|
@@ -263,6 +265,7 @@ files:
|
|
263
265
|
- test/unit/langs/golang_test.rb
|
264
266
|
- test/unit/langs/javascript_test.rb
|
265
267
|
- test/unit/langs/ruby_test.rb
|
268
|
+
- test/unit/langs/vue_test.rb
|
266
269
|
- test/unit/output_test.rb
|
267
270
|
- test/unit/queryable_test.rb
|
268
271
|
homepage: https://github.com/eapache/starscope
|
@@ -285,7 +288,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
285
288
|
- !ruby/object:Gem::Version
|
286
289
|
version: '0'
|
287
290
|
requirements: []
|
288
|
-
rubygems_version: 3.
|
291
|
+
rubygems_version: 3.1.2
|
289
292
|
signing_key:
|
290
293
|
specification_version: 4
|
291
294
|
summary: Smart code search and indexing
|
@@ -303,6 +306,7 @@ test_files:
|
|
303
306
|
- test/fixtures/sample_golang.go
|
304
307
|
- test/fixtures/sample_javascript.js
|
305
308
|
- test/fixtures/sample_ruby.rb
|
309
|
+
- test/fixtures/sample_vue.vue
|
306
310
|
- test/functional/starscope_test.rb
|
307
311
|
- test/test_helper.rb
|
308
312
|
- test/unit/db_test.rb
|
@@ -312,5 +316,6 @@ test_files:
|
|
312
316
|
- test/unit/langs/golang_test.rb
|
313
317
|
- test/unit/langs/javascript_test.rb
|
314
318
|
- test/unit/langs/ruby_test.rb
|
319
|
+
- test/unit/langs/vue_test.rb
|
315
320
|
- test/unit/output_test.rb
|
316
321
|
- test/unit/queryable_test.rb
|