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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4cf3d2a33cbae3c5f943a89008a6c0369459e29c94edfc2ee3477f3538086e8b
4
- data.tar.gz: 41e5c25e1f8efcc683f326c9e34e55c06c78eb823dd581dd79445e1ee9578b5f
3
+ metadata.gz: 950f9631fe660ced9bab43b8c6c00db4c11750f40df34033895b343115afa290
4
+ data.tar.gz: f982abec609f1525e3b03050274db054cf7e896f22b86fee5f9c145b2db4cfa5
5
5
  SHA512:
6
- metadata.gz: 3ba860747e7560c4b2673bdc51cdfd2fa39778027dcb5f2da59b52c85ec9e427a525ce7f072478f562ca93b4909247898ec0e1b7fad6c3b6c2cd0e7c974b5489
7
- data.tar.gz: 955ab2bfbc594f1c28ee1da1a59fde7e191a7c3ca55795a1fba9c33639cca5a4c2a3d469ec2f0a020f52213e22886eef29c024f94a888c8427f6a4616772db4d
6
+ metadata.gz: 8192ecae77f85f6699bfbf633c7afe1f799ff9487dcac4210c930836603e70f4f092ef3fe106ba03cd0d01aabfd70dee8ce061e46b553f5fa24b52d994ca47df
7
+ data.tar.gz: 5accbfa9b9d90fe9b3423bf520a329e133f031dca0f6deb3db99988a65100bfb5077081e4461d23e31e701e157b21e459e0a9390ca5a80645810002ac155ea14
data/.travis.yml CHANGED
@@ -6,3 +6,11 @@ rvm:
6
6
 
7
7
  before_install:
8
8
  - gem update --system
9
+
10
+ script:
11
+ - bundle exec rake test
12
+ - bundle exec rake smoke
13
+
14
+ branches:
15
+ only:
16
+ - master
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)
@@ -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 |result|
70
- pos = name.position
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 |result|
77
- pos = name.position
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(ident)
83
- super.tap do |result|
84
- pos = ident.position
85
- register_token 'rubySymbol', [pos[0], pos[1]+1, ident.content.size]
86
- register_token 'rubySymbolDelimiter', [pos[0], pos[1], 1]
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
- str = node.content
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
@@ -1,3 +1,3 @@
1
1
  module Iro
2
- VERSION = "0.0.6"
2
+ VERSION = "0.0.7"
3
3
  end
data/lib/iro.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  require 'ripper'
2
- require 'cgi/escape'
2
+ require 'cgi/util'
3
3
 
4
4
  require "iro/version"
5
5
  require 'iro/ripper_wrapper'
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.6
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-10 00:00:00.000000000 Z
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