ParseTree 1.3.6 → 1.3.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.
@@ -1,3 +1,10 @@
1
+ *** 1.3.7 / 2005-07-13
2
+
3
+ + 3 bug fixes:
4
+ + Fixed rubygem requires for non-gem systems.
5
+ + Renamed on to on_error_in to make more clear.
6
+ + Moved exceptions to their own tree to make catching cleaner.
7
+
1
8
  *** 1.3.6 / 2005-05-19
2
9
 
3
10
  + 2 minor enhancements:
data/Makefile CHANGED
@@ -5,7 +5,7 @@ RUBY_LIB?=$(shell $(RUBY) -rrbconfig -e 'include Config; print CONFIG["sitelibdi
5
5
  PREFIX?=/usr/local
6
6
 
7
7
  all test: FORCE
8
- GEM_SKIP=RubyInline:ParseTree $(RUBY) $(RUBY_DEBUG) $(RUBY_FLAGS) test/test_all.rb
8
+ $(RUBY) $(RUBY_DEBUG) $(RUBY_FLAGS) test/test_all.rb
9
9
 
10
10
  # we only install test_sexp_processor.rb to help make ruby_to_c's
11
11
  # subclass tests work.
@@ -33,7 +33,7 @@ clean:
33
33
  -rm -fr diff diff.txt *.gem doc $$HOME/.ruby_inline
34
34
 
35
35
  demo:
36
- echo 1+1 | GEM_SKIP=RubyInline:ParseTree $(RUBY) $(RUBY_FLAGS) ./bin/parse_tree_show -f
36
+ echo 1+1 | $(RUBY) $(RUBY_FLAGS) ./bin/parse_tree_show -f
37
37
 
38
38
  gem:
39
39
  gem ParseTree.gemspec
@@ -8,14 +8,9 @@
8
8
 
9
9
  PARSE_TREE_ABC=true
10
10
 
11
- begin
12
- require 'rubygems'
13
- require_gem 'ParseTree'
14
- rescue LoadError
15
- require 'parse_tree'
16
- end
17
-
18
- require 'sexp_processor'
11
+ begin require 'rubygems' rescue LoadError end
12
+ require 'parse_tree'
13
+ require 'sexp_processor'
19
14
 
20
15
  old_classes = []
21
16
  ObjectSpace.each_object(Module) do |klass|
@@ -6,13 +6,8 @@ ObjectSpace.each_object(Module) { |klass| old_classes << klass } if defined? $a
6
6
 
7
7
  require 'pp'
8
8
 
9
- begin
10
- require 'rubygems'
11
- require_gem 'ParseTree'
12
- rescue LoadError
13
- require 'parse_tree'
14
- end
15
-
9
+ begin require 'rubygems' rescue LoadError end
10
+ require 'parse_tree'
16
11
  require 'sexp_processor'
17
12
 
18
13
  ObjectSpace.each_object(Module) { |klass| old_classes << klass } unless defined? $a
@@ -1,13 +1,8 @@
1
1
  #!/usr/local/bin/ruby -ws
2
2
 
3
3
  require 'pp'
4
-
5
- begin
6
- require 'rubygems'
7
- require_gem 'ParseTree'
8
- rescue LoadError
9
- require 'parse_tree'
10
- end
4
+ begin require 'rubygems' rescue LoadError end
5
+ require 'parse_tree'
11
6
 
12
7
  def discover_new_classes_from
13
8
  old_classes = []
@@ -41,9 +41,9 @@ class CompositeSexpProcessor < SexpProcessor
41
41
  exp
42
42
  end
43
43
 
44
- def on(exception, &block)
44
+ def on_error_in(node_type, &block)
45
45
  @processors.each do |processor|
46
- processor.on(exception, &block)
46
+ processor.on_error_in(node_type, &block)
47
47
  end
48
48
  end
49
49
  end
@@ -1,11 +1,7 @@
1
1
  #!/usr/local/bin/ruby -w
2
2
 
3
- begin
4
- require 'rubygems'
5
- require_gem 'RubyInline'
6
- rescue LoadError
7
- require "inline"
8
- end
3
+ begin require 'rubygems' rescue LoadError end
4
+ require 'inline'
9
5
 
10
6
  ##
11
7
  # ParseTree is a RubyInline-style extension that accesses and
@@ -28,7 +24,7 @@ end
28
24
 
29
25
  class ParseTree
30
26
 
31
- VERSION = '1.3.6'
27
+ VERSION = '1.3.7'
32
28
 
33
29
  ##
34
30
  # Initializes a ParseTree instance. Includes newline nodes if
@@ -192,23 +192,33 @@ def s(*args)
192
192
  Sexp.new(*args)
193
193
  end
194
194
 
195
+ ##
196
+ # SexpProcessor base exception class.
197
+
198
+ class SexpProcessorError < StandardError; end
199
+
195
200
  ##
196
201
  # Raised by SexpProcessor if it sees a node type listed in its
197
202
  # unsupported list.
198
203
 
199
- class UnsupportedNodeError < SyntaxError; end
204
+ class UnsupportedNodeError < SexpProcessorError; end
200
205
 
201
206
  ##
202
207
  # Raised by SexpProcessor if it is in strict mode and sees a node for
203
208
  # which there is no processor available.
204
209
 
205
- class UnknownNodeError < SyntaxError; end
210
+ class UnknownNodeError < SexpProcessorError; end
206
211
 
207
212
  ##
208
213
  # Raised by SexpProcessor if a processor did not process every node in
209
214
  # a sexp and @require_empty is true.
210
215
 
211
- class NotEmptyError < SyntaxError; end
216
+ class NotEmptyError < SexpProcessorError; end
217
+
218
+ ##
219
+ # Raised if assert_type encounters an unexpected sexp type.
220
+
221
+ class SexpTypeError < SexpProcessorError; end
212
222
 
213
223
  ##
214
224
  # SexpProcessor provides a uniform interface to process Sexps.
@@ -260,7 +270,7 @@ class SexpProcessor
260
270
 
261
271
  ##
262
272
  # An array that specifies node types that are unsupported by this
263
- # processor. SexpProcesor will raise UnsupportedNodeError if you try
273
+ # processor. SexpProcessor will raise UnsupportedNodeError if you try
264
274
  # to process one of those node types.
265
275
 
266
276
  attr_accessor :unsupported
@@ -389,7 +399,7 @@ class SexpProcessor
389
399
  self.send(meth, exp)
390
400
  end
391
401
 
392
- raise TypeError, "Result must be a #{@expected}, was #{result.class}:#{result.inspect}" unless @expected === result
402
+ raise SexpTypeError, "Result must be a #{@expected}, was #{result.class}:#{result.inspect}" unless @expected === result
393
403
 
394
404
  if @require_empty and not exp.empty? then
395
405
  msg = "exp not empty after #{self.class}.#{meth} on #{exp.inspect}"
@@ -431,25 +441,25 @@ class SexpProcessor
431
441
  end
432
442
 
433
443
  def generate # :nodoc:
434
- raise "not implemented yet"
444
+ raise NotImplementedError, "not implemented yet"
435
445
  end
436
446
 
437
447
  ##
438
448
  # Raises unless the Sexp type for +list+ matches +typ+
439
449
 
440
450
  def assert_type(list, typ)
441
- raise TypeError, "Expected type #{typ.inspect} in #{list.inspect}" if
451
+ raise SexpTypeError, "Expected type #{typ.inspect} in #{list.inspect}" if
442
452
  list.first != typ
443
453
  end
444
454
 
445
455
  def error_handler(type, exp=nil) # :nodoc:
446
456
  begin
447
457
  return yield
448
- rescue Exception => err
458
+ rescue StandardError => err
449
459
  if @exceptions.has_key? type then
450
460
  return @exceptions[type].call(self, exp, err)
451
461
  else
452
- puts "#{err.class} Exception thrown while processing #{type} for sexp #{exp.inspect} #{caller.inspect}" if $DEBUG
462
+ $stderr.puts "#{err.class} Exception thrown while processing #{type} for sexp #{exp.inspect} #{caller.inspect}" if $DEBUG
453
463
  raise
454
464
  end
455
465
  end
@@ -459,8 +469,8 @@ class SexpProcessor
459
469
  ##
460
470
  # Registers an error handler for +node+
461
471
 
462
- def on(node, &block)
463
- @exceptions[node] = block
472
+ def on_error_in(node_type, &block)
473
+ @exceptions[node_type] = block
464
474
  end
465
475
 
466
476
  ##
@@ -282,7 +282,7 @@ class TestSexpProcessor < Test::Unit::TestCase
282
282
  @processor = TestProcessor.new
283
283
  @processor.warn_on_default = false
284
284
 
285
- assert_raises(TypeError) do
285
+ assert_raises(SexpTypeError) do
286
286
  @processor.process([:broken, 1, 2, 3])
287
287
  end
288
288
  end
@@ -342,7 +342,7 @@ class TestSexpProcessor < Test::Unit::TestCase
342
342
  end
343
343
 
344
344
  def test_assert_type_miss
345
- assert_raise(TypeError) do
345
+ assert_raise(SexpTypeError) do
346
346
  @processor.assert_type([:thingy, 1, 2, 3], :blah)
347
347
  end
348
348
  end
@@ -369,7 +369,7 @@ class TestSexpProcessor < Test::Unit::TestCase
369
369
 
370
370
  def test_expected
371
371
  assert_equal Sexp, @processor.expected
372
- assert_raises(TypeError) do
372
+ assert_raises(SexpTypeError) do
373
373
  @processor.process([:expected]) # should raise
374
374
  end
375
375
 
@@ -379,7 +379,7 @@ class TestSexpProcessor < Test::Unit::TestCase
379
379
  assert_equal Hash, @processor.expected
380
380
  assert !(Hash === s()), "Hash === s() should not be true"
381
381
 
382
- assert_raises(TypeError) do
382
+ assert_raises(SexpTypeError) do
383
383
  @processor.process(s(:string, "string")) # should raise
384
384
  end
385
385
 
metadata CHANGED
@@ -1,10 +1,10 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.8.10
2
+ rubygems_version: 0.8.10.1
3
3
  specification_version: 1
4
4
  name: ParseTree
5
5
  version: !ruby/object:Gem::Version
6
- version: 1.3.6
7
- date: 2005-05-19
6
+ version: 1.3.7
7
+ date: 2005-07-13
8
8
  summary: Extract and enumerate ruby parse trees.
9
9
  require_paths:
10
10
  - lib