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 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