yaparc 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. data/lib/yaparc.rb +14 -3
  2. data/tests/test_parser.rb +8 -1
  3. metadata +43 -36
data/lib/yaparc.rb CHANGED
@@ -26,6 +26,7 @@ module Yaparc
26
26
  IS_ALPHANUM = lambda {|c| (c >= 'a' and c <= 'z') or (c >= '0' and c <= '9')}
27
27
  IS_DIGIT = lambda {|i| i >= '0' and i <= '9'}
28
28
  IS_SPACE = lambda {|i| i == ' '}
29
+ IS_WHITESPACE = lambda {|i| i == ' ' or i == "\n" or i == "\t"}
29
30
 
30
31
  def self.included(mod)
31
32
  mod.extend ClassMethods
@@ -343,15 +344,25 @@ module Yaparc
343
344
  class Space < ParserBase
344
345
  def initialize
345
346
  @parser = SeqParser.new(ManyParser.new(SatisfyParser.new(IS_SPACE))) do |vs|
346
- []
347
+ SucceedParser.new([])
348
+ end
349
+ end
350
+ end
351
+
352
+ class WhiteSpace < ParserBase
353
+ def initialize
354
+ @parser = SeqParser.new(ManyParser.new(SatisfyParser.new(IS_WHITESPACE))) do |vs|
355
+ SucceedParser.new([])
347
356
  end
348
357
  end
349
358
  end
350
359
 
351
360
  class Token < ParserBase
361
+ attr_accessor :prefix, :postfix
352
362
 
353
- def initialize(parser, prefix = Space.new, postfix = Space.new)
354
- @parser = SeqParser.new(prefix, parser, postfix) do |_, vs, _|
363
+ def initialize(parser, prefix = WhiteSpace.new, postfix = WhiteSpace.new)
364
+ @prefix, @postfix = prefix, postfix
365
+ @parser = SeqParser.new(@prefix, parser, @postfix) do |_, vs, _|
355
366
  vs
356
367
  end
357
368
  end
data/tests/test_parser.rb CHANGED
@@ -223,7 +223,14 @@ class YaparcTest < Test::Unit::TestCase
223
223
  def test_space
224
224
  parser = Space.new
225
225
  result = parser.parse(" abc")
226
- assert_equal [], result.value
226
+ assert_instance_of Result::OK, result
227
+ assert_equal "abc", result.input
228
+ end
229
+
230
+ def test_whitespace
231
+ parser = WhiteSpace.new
232
+ result = parser.parse(" \n abc")
233
+ assert_instance_of Result::OK, result
227
234
  assert_equal "abc", result.input
228
235
  end
229
236
 
metadata CHANGED
@@ -1,52 +1,59 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.9.3
3
- specification_version: 1
4
2
  name: yaparc
5
3
  version: !ruby/object:Gem::Version
6
- version: 0.1.3
7
- date: 2008-01-20 00:00:00 +09:00
8
- summary: Yet Another Combinator Parser Library
9
- require_paths:
10
- - lib
11
- email: akimichi_tatsukawa@nifty.com
12
- homepage: http://rubyforge.org/projects/yaparc/
13
- rubyforge_project:
14
- description:
15
- autorequire: yaparc
16
- default_executable:
17
- bindir: bin
18
- has_rdoc: true
19
- required_ruby_version: !ruby/object:Gem::Version::Requirement
20
- requirements:
21
- - - ">"
22
- - !ruby/object:Gem::Version
23
- version: 0.0.0
24
- version:
4
+ version: 0.1.4
25
5
  platform: ruby
26
- signing_key:
27
- cert_chain:
28
- post_install_message:
29
6
  authors:
30
7
  - Akimichi Tatsukawa
8
+ autorequire: yaparc
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2008-02-07 00:00:00 +09:00
13
+ default_executable:
14
+ dependencies: []
15
+
16
+ description:
17
+ email: akimichi_tatsukawa@nifty.com
18
+ executables: []
19
+
20
+ extensions: []
21
+
22
+ extra_rdoc_files:
23
+ - README
31
24
  files:
32
25
  - tests/test_parser.rb
33
26
  - tests/test_calc.rb
34
27
  - tests/test_sql.rb
35
28
  - lib/yaparc.rb
36
29
  - README
37
- test_files:
38
- - tests/test_parser.rb
39
- - tests/test_calc.rb
40
- - tests/test_sql.rb
30
+ has_rdoc: true
31
+ homepage: http://rubyforge.org/projects/yaparc/
32
+ post_install_message:
41
33
  rdoc_options: []
42
34
 
43
- extra_rdoc_files:
44
- - README
45
- executables: []
46
-
47
- extensions: []
48
-
35
+ require_paths:
36
+ - lib
37
+ required_ruby_version: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ version: "0"
42
+ version:
43
+ required_rubygems_version: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: "0"
48
+ version:
49
49
  requirements: []
50
50
 
51
- dependencies: []
52
-
51
+ rubyforge_project:
52
+ rubygems_version: 1.0.1
53
+ signing_key:
54
+ specification_version: 2
55
+ summary: Yet Another Combinator Parser Library
56
+ test_files:
57
+ - tests/test_parser.rb
58
+ - tests/test_calc.rb
59
+ - tests/test_sql.rb