yaparc 0.1.3 → 0.1.4

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