riml 0.3.2 → 0.3.3

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.
data/lib/riml.rb CHANGED
@@ -7,7 +7,7 @@ require 'lexer'
7
7
  require 'parser'
8
8
  require 'compiler'
9
9
  require 'warning_buffer'
10
- require 'backtrace_filter'
10
+ require 'include_cache'
11
11
 
12
12
  module Riml
13
13
 
@@ -76,6 +76,7 @@ module Riml
76
76
  # expects `filenames` (String) arguments, to be readable files.
77
77
  # Optional options (Hash) as last argument.
78
78
  def self.compile_files(*filenames)
79
+ filenames = filenames.dup
79
80
  parser, compiler = Parser.new, Compiler.new
80
81
 
81
82
  if filenames.last.is_a?(Hash)
@@ -84,22 +85,24 @@ module Riml
84
85
  compiler.options = DEFAULT_COMPILE_FILES_OPTIONS.dup
85
86
  end
86
87
 
88
+ filenames.uniq!
89
+ # compile files using one thread per file, max 4 threads at once
87
90
  if filenames.size > 1
88
91
  threads = []
89
- filenames.each_with_index do |fname, i|
90
- if i.zero?
91
- _parser, _compiler = parser, compiler
92
- else
92
+ while filenames.any?
93
+ to_compile = filenames.shift(4)
94
+ to_compile.each do |fname|
93
95
  _parser, _compiler = Parser.new, Compiler.new
94
96
  _compiler.options = compiler.options
97
+ threads << Thread.new do
98
+ f = File.open(fname)
99
+ # `do_compile` will close file handle
100
+ do_compile(f, _parser, _compiler)
101
+ end
95
102
  end
96
- threads << Thread.new do
97
- f = File.open(fname)
98
- # `do_compile` will close file handle
99
- do_compile(f, _parser, _compiler)
100
- end
103
+ threads.each(&:join)
104
+ threads.clear
101
105
  end
102
- threads.each {|t| t.join}
103
106
  elsif filenames.size == 1
104
107
  fname = filenames.first
105
108
  f = File.open(fname)
@@ -108,9 +111,7 @@ module Riml
108
111
  else
109
112
  raise ArgumentError, "need filenames to compile"
110
113
  end
111
- rescue Riml::ParseError => pe
112
- BacktraceFilter.new(pe).filter!
113
- raise
114
+ true
114
115
  ensure
115
116
  flush_warnings
116
117
  end
@@ -150,6 +151,12 @@ module Riml
150
151
  warning_buffer << warning
151
152
  end
152
153
 
154
+ def self.include_cache
155
+ @include_cache
156
+ end
157
+ # initialize non-lazily because ||= isn't thread-safe
158
+ @include_cache = IncludeCache.new
159
+
153
160
  class << self
154
161
  attr_accessor :warnings
155
162
  end
@@ -166,8 +173,10 @@ module Riml
166
173
  end
167
174
 
168
175
  def self.warning_buffer
169
- @warning_buffer ||= WarningBuffer.new
176
+ @warning_buffer
170
177
  end
178
+ # initialize non-lazily because ||= isn't thread-safe
179
+ @warning_buffer = WarningBuffer.new
171
180
 
172
181
  def self.set_path(name, path)
173
182
  return instance_variable_set("@#{name}", nil) if path.nil?
data/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  module Riml
2
- # last changed: Sept. 22, 2013
3
- VERSION = [0,3,2]
2
+ # last changed: Oct. 5, 2013
3
+ VERSION = [0,3,3]
4
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: riml
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.3.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-09-22 00:00:00.000000000 Z
12
+ date: 2013-10-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: racc
@@ -27,6 +27,38 @@ dependencies:
27
27
  - - ! '>='
28
28
  - !ruby/object:Gem::Version
29
29
  version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: rake
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: 10.1.0
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: 10.1.0
46
+ - !ruby/object:Gem::Dependency
47
+ name: bundler
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
53
+ version: '1.3'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: '1.3'
30
62
  - !ruby/object:Gem::Dependency
31
63
  name: minitest
32
64
  requirement: !ruby/object:Gem::Requirement
@@ -43,6 +75,22 @@ dependencies:
43
75
  - - ~>
44
76
  - !ruby/object:Gem::Version
45
77
  version: 2.5.1
78
+ - !ruby/object:Gem::Dependency
79
+ name: mocha
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ~>
84
+ - !ruby/object:Gem::Version
85
+ version: 0.14.0
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ~>
92
+ - !ruby/object:Gem::Version
93
+ version: 0.14.0
46
94
  description: ! " Riml is a subset of VimL with some added features, and it compiles
47
95
  to plain\n Vimscript. Some of the added features include classes, string interpolation,\n
48
96
  \ heredocs, default case-sensitive string comparison and default arguments in\n
@@ -75,9 +123,9 @@ files:
75
123
  - lib/nodes.rb
76
124
  - lib/errors.rb
77
125
  - lib/ast_rewriter.rb
126
+ - lib/include_cache.rb
78
127
  - Rakefile
79
128
  - CONTRIBUTING
80
- - Gemfile.lock
81
129
  - bin/riml
82
130
  homepage: https://github.com/luke-gru/riml
83
131
  licenses:
@@ -98,6 +146,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
98
146
  - - ! '>='
99
147
  - !ruby/object:Gem::Version
100
148
  version: '0'
149
+ segments:
150
+ - 0
151
+ hash: 1222691864216833334
101
152
  requirements: []
102
153
  rubyforge_project:
103
154
  rubygems_version: 1.8.25
data/Gemfile.lock DELETED
@@ -1,15 +0,0 @@
1
- GEM
2
- remote: http://rubygems.org/
3
- specs:
4
- minitest (2.5.1)
5
- racc (1.4.9)
6
- rake (10.1.0)
7
-
8
- PLATFORMS
9
- ruby
10
-
11
- DEPENDENCIES
12
- bundler (~> 1.3)
13
- minitest (~> 2.5.1)
14
- racc
15
- rake (~> 10.1.0)