iro 0.0.6 β 0.0.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +8 -0
- data/Rakefile +9 -0
- data/bin/smoke +45 -0
- data/lib/iro/ruby/parser.rb +42 -24
- data/lib/iro/version.rb +1 -1
- data/lib/iro.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 950f9631fe660ced9bab43b8c6c00db4c11750f40df34033895b343115afa290
|
4
|
+
data.tar.gz: f982abec609f1525e3b03050274db054cf7e896f22b86fee5f9c145b2db4cfa5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8192ecae77f85f6699bfbf633c7afe1f799ff9487dcac4210c930836603e70f4f092ef3fe106ba03cd0d01aabfd70dee8ce061e46b553f5fa24b52d994ca47df
|
7
|
+
data.tar.gz: 5accbfa9b9d90fe9b3423bf520a329e133f031dca0f6deb3db99988a65100bfb5077081e4461d23e31e701e157b21e459e0a9390ca5a80645810002ac155ea14
|
data/.travis.yml
CHANGED
data/Rakefile
CHANGED
@@ -7,3 +7,12 @@ Rake::TestTask.new do |test|
|
|
7
7
|
test.test_files = Dir['test/**/*_test.rb']
|
8
8
|
test.verbose = true
|
9
9
|
end
|
10
|
+
|
11
|
+
task :smoke do
|
12
|
+
sh 'bin/smoke', 'tric/trick2013'
|
13
|
+
sh 'bin/smoke', 'tric/trick2015'
|
14
|
+
sh 'bin/smoke', 'tric/trick2015'
|
15
|
+
sh 'bin/smoke', 'ruby/ruby', 'trunk'
|
16
|
+
sh 'bin/smoke', 'gitlabhq/gitlabhq'
|
17
|
+
sh 'bin/smoke', 'rails/rails'
|
18
|
+
end
|
data/bin/smoke
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
# Usage: bin/smoke user/repo [branch]
|
4
|
+
|
5
|
+
require "bundler/setup"
|
6
|
+
require 'open-uri'
|
7
|
+
require 'tempfile'
|
8
|
+
require 'tmpdir'
|
9
|
+
require 'pathname'
|
10
|
+
require 'iro'
|
11
|
+
|
12
|
+
def sh!(*cmd)
|
13
|
+
puts cmd.join(' ')
|
14
|
+
system(*cmd)
|
15
|
+
unless $?.success?
|
16
|
+
raise "ERROR: #{cmd.join(' ')}"
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def main(repo, branch = 'master')
|
21
|
+
url = "https://github.com/#{repo}/tarball/#{branch}"
|
22
|
+
chtmpdir do
|
23
|
+
Tempfile.create(['iro-smoke-test-', '.tar.gz']) do |tar|
|
24
|
+
open(url) do |f|
|
25
|
+
IO.copy_stream f, tar
|
26
|
+
end
|
27
|
+
sh! 'tar', 'xf', tar.path
|
28
|
+
Pathname.glob('**/*.rb').each do |f|
|
29
|
+
print "checking: #{f}"
|
30
|
+
Iro::Ruby::Parser.tokens(f.read)
|
31
|
+
puts "\t\tOKπ"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def chtmpdir
|
38
|
+
Dir.mktmpdir do |dir|
|
39
|
+
Dir.chdir(dir) do
|
40
|
+
yield
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
main(*ARGV)
|
data/lib/iro/ruby/parser.rb
CHANGED
@@ -8,11 +8,13 @@ module Iro
|
|
8
8
|
CHAR: 'Character',
|
9
9
|
int: 'Number',
|
10
10
|
float: 'Float',
|
11
|
+
label: 'rubySymbol',
|
11
12
|
|
12
13
|
comment: 'Comment',
|
13
14
|
embdoc: 'Comment',
|
14
15
|
embdoc_beg: 'Comment',
|
15
16
|
embdoc_end: 'Comment',
|
17
|
+
|
16
18
|
const: 'Type',
|
17
19
|
|
18
20
|
regexp_beg: 'Delimiter',
|
@@ -24,6 +26,12 @@ module Iro
|
|
24
26
|
embexpr_beg: 'Delimiter',
|
25
27
|
embexpr_end: 'Delimiter',
|
26
28
|
backtick: 'Delimiter',
|
29
|
+
|
30
|
+
symbeg: 'rubySymbolDelimiter',
|
31
|
+
|
32
|
+
ivar: 'rubyInstanceVariable',
|
33
|
+
cvar: 'rubyClassVariable',
|
34
|
+
gvar: 'rubyGlobalVariable',
|
27
35
|
}.freeze
|
28
36
|
|
29
37
|
attr_reader :tokens
|
@@ -38,6 +46,23 @@ module Iro
|
|
38
46
|
@tokens[group] << token
|
39
47
|
end
|
40
48
|
|
49
|
+
# TODO: Maybe multiline support is needed.
|
50
|
+
def register_scanner_event(group, event)
|
51
|
+
pos = event.position
|
52
|
+
register_token group, [pos[0], pos[1]+1, event.content.size]
|
53
|
+
end
|
54
|
+
|
55
|
+
def unhighlight!(scanner_event)
|
56
|
+
t = scanner_event.type[1..-1].to_sym
|
57
|
+
group = EVENT_NAME_TO_HIGHLIGT_NAME[t] ||
|
58
|
+
(scanner_event.kw_type? && kw_group(scanner_event.content))
|
59
|
+
raise 'bug' unless group
|
60
|
+
|
61
|
+
t = scanner_event.position + [scanner_event.content.size]
|
62
|
+
t[1] += 1
|
63
|
+
@tokens[group].reject! { |ev| ev == t }
|
64
|
+
end
|
65
|
+
|
41
66
|
EVENT_NAME_TO_HIGHLIGT_NAME.each do |tok_type, group|
|
42
67
|
eval <<~RUBY
|
43
68
|
def on_#{tok_type}(str)
|
@@ -66,46 +91,39 @@ module Iro
|
|
66
91
|
end
|
67
92
|
|
68
93
|
def on_def(name, params, body)
|
69
|
-
super.tap do
|
70
|
-
|
71
|
-
register_token 'rubyFunction', [pos[0], pos[1]+1, name.content.size]
|
94
|
+
super.tap do
|
95
|
+
register_scanner_event 'rubyFunction', name
|
72
96
|
end
|
73
97
|
end
|
74
98
|
|
75
99
|
def on_defs(recv, period, name, params, body)
|
76
|
-
super.tap do
|
77
|
-
|
78
|
-
register_token 'rubyFunction', [pos[0], pos[1]+1, name.content.size]
|
100
|
+
super.tap do
|
101
|
+
register_scanner_event 'rubyFunction', name
|
79
102
|
end
|
80
103
|
end
|
81
104
|
|
82
|
-
def on_symbol(
|
83
|
-
super.tap do
|
84
|
-
|
85
|
-
|
86
|
-
|
105
|
+
def on_symbol(node)
|
106
|
+
super.tap do
|
107
|
+
unhighlight! node if node.gvar_type? || node.ivar_type? || node.cvar_type?
|
108
|
+
register_scanner_event 'rubySymbol', node
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
def on_var_ref(name)
|
113
|
+
super.tap do
|
114
|
+
if name.ident_type?
|
115
|
+
register_scanner_event 'rubyLocalVariable', name
|
116
|
+
end
|
87
117
|
end
|
88
118
|
end
|
89
119
|
|
90
120
|
def traverse(node)
|
91
121
|
if node.kw_type?
|
92
|
-
|
93
|
-
t = node.position + [str.size]
|
94
|
-
t[1] += 1
|
95
|
-
@tokens[kw_group(str)]&.reject! do |token|
|
96
|
-
token == t
|
97
|
-
end
|
122
|
+
unhighlight!(node)
|
98
123
|
end
|
99
124
|
|
100
125
|
return if node.scanner_event?
|
101
126
|
|
102
|
-
if node.var_ref_type?
|
103
|
-
ident = node.children.first
|
104
|
-
if ident.ident_type?
|
105
|
-
pos = ident.position
|
106
|
-
register_token 'rubyLocalVariable', [pos[0], pos[1]+1, ident.content.size]
|
107
|
-
end
|
108
|
-
end
|
109
127
|
node.children.each do |child|
|
110
128
|
traverse(child) if child.is_a?(Array)
|
111
129
|
end
|
data/lib/iro/version.rb
CHANGED
data/lib/iro.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: iro
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Masataka Pocke Kuwabara
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-03-
|
11
|
+
date: 2018-03-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -81,6 +81,7 @@ files:
|
|
81
81
|
- Rakefile
|
82
82
|
- bin/console
|
83
83
|
- bin/setup
|
84
|
+
- bin/smoke
|
84
85
|
- iro.gemspec
|
85
86
|
- lib/iro.rb
|
86
87
|
- lib/iro/formatter/html_formatter.rb
|