iro 0.0.6 β 0.0.7
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.
- 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
|