koi-reference-parser 0.0.1 → 0.0.2
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/.gitignore +3 -3
- data/MIT-LICENSE +19 -19
- data/README.rdoc +43 -43
- data/Rakefile +42 -42
- data/VERSION +1 -0
- data/lib/koi-reference-parser.rb +8 -8
- data/lib/parser/exceptions.rb +1 -1
- data/lib/parser/koi-reference-parser.treetop +197 -197
- data/lib/parser/parser.rb +42 -42
- data/lib/parser/syntax_node_extensions.rb +20 -0
- data/lib/parser/syntax_nodes.rb +113 -113
- data/test/parser/functional/function_call_as_argument.rb +16 -16
- data/test/parser/functional/simple_program_test.rb +34 -34
- data/test/parser/unit/assignment_test.rb +114 -114
- data/test/parser/unit/compound_expression_test.rb +34 -34
- data/test/parser/unit/function_call_test.rb +51 -51
- data/test/parser/unit/function_definition_test.rb +18 -18
- data/test/parser/unit/hash_accessor_test.rb +40 -40
- data/test/parser/unit/identifier_test.rb +54 -54
- data/test/parser/unit/if_test.rb +24 -24
- data/test/parser/unit/simple_expression_test.rb +211 -211
- data/test/parser/unit/statement_test.rb +21 -21
- data/test/parser/unit/syntax_node_to_hash_test.rb +43 -0
- data/test/parser/unit/unless_test.rb +24 -24
- data/test/setup/test_unit_extensions.rb +20 -20
- data/test/test_helper.rb +9 -9
- metadata +11 -4
@@ -0,0 +1,43 @@
|
|
1
|
+
require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'test_helper.rb'))
|
2
|
+
|
3
|
+
class SyntaxNodeToHashTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
include KoiReferenceParser
|
6
|
+
|
7
|
+
test "should convert SyntaxNode to hash" do
|
8
|
+
input = "test = 1"
|
9
|
+
tree = Identifier.new(input, 0...4)
|
10
|
+
hash = tree.to_hash
|
11
|
+
assert_equal( {
|
12
|
+
:elements => nil,
|
13
|
+
:offset => 0,
|
14
|
+
:name => "Identifier",
|
15
|
+
:text_value => "test"
|
16
|
+
}, hash )
|
17
|
+
end
|
18
|
+
|
19
|
+
test "should convert SyntaxNode to hash including elements" do
|
20
|
+
input = "test = 1"
|
21
|
+
tree = Assignment.new(input, 0...8, [
|
22
|
+
Identifier.new(input, 0...4)
|
23
|
+
])
|
24
|
+
hash = tree.to_hash
|
25
|
+
built_hash = {
|
26
|
+
:elements => nil,
|
27
|
+
:offset => 0,
|
28
|
+
:name => "Assignment",
|
29
|
+
:text_value => "test = 1"
|
30
|
+
}
|
31
|
+
built_hash[:elements] = [
|
32
|
+
{
|
33
|
+
:elements => nil,
|
34
|
+
:offset => 0,
|
35
|
+
:name => "Identifier",
|
36
|
+
:text_value => "test"
|
37
|
+
}
|
38
|
+
]
|
39
|
+
assert_equal( built_hash, hash )
|
40
|
+
end
|
41
|
+
|
42
|
+
|
43
|
+
end
|
@@ -1,25 +1,25 @@
|
|
1
|
-
require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'test_helper.rb'))
|
2
|
-
|
3
|
-
class UnlessTest < Test::Unit::TestCase
|
4
|
-
|
5
|
-
include KoiReferenceParser
|
6
|
-
|
7
|
-
test "should parse unless statement" do
|
8
|
-
tree = Parser.parse("unless(1 == 1)\n test = 1\nend")
|
9
|
-
assert_kind_of Block, tree
|
10
|
-
assert_kind_of Statement, tree.elements.first
|
11
|
-
assert_kind_of Unless, tree.elements.first.elements.first
|
12
|
-
assert_kind_of Expression, tree.elements.first.elements.first.elements.first
|
13
|
-
assert_kind_of Block, tree.elements.first.elements.first.elements.last
|
14
|
-
end
|
15
|
-
|
16
|
-
test "should parse single line unless statement" do
|
17
|
-
tree = Parser.parse("unless(1 == 1) test = 1; end")
|
18
|
-
assert_kind_of Block, tree
|
19
|
-
assert_kind_of Statement, tree.elements.first
|
20
|
-
assert_kind_of Unless, tree.elements.first.elements.first
|
21
|
-
assert_kind_of Expression, tree.elements.first.elements.first.elements.first
|
22
|
-
assert_kind_of Block, tree.elements.first.elements.first.elements.last
|
23
|
-
end
|
24
|
-
|
1
|
+
require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'test_helper.rb'))
|
2
|
+
|
3
|
+
class UnlessTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
include KoiReferenceParser
|
6
|
+
|
7
|
+
test "should parse unless statement" do
|
8
|
+
tree = Parser.parse("unless(1 == 1)\n test = 1\nend")
|
9
|
+
assert_kind_of Block, tree
|
10
|
+
assert_kind_of Statement, tree.elements.first
|
11
|
+
assert_kind_of Unless, tree.elements.first.elements.first
|
12
|
+
assert_kind_of Expression, tree.elements.first.elements.first.elements.first
|
13
|
+
assert_kind_of Block, tree.elements.first.elements.first.elements.last
|
14
|
+
end
|
15
|
+
|
16
|
+
test "should parse single line unless statement" do
|
17
|
+
tree = Parser.parse("unless(1 == 1) test = 1; end")
|
18
|
+
assert_kind_of Block, tree
|
19
|
+
assert_kind_of Statement, tree.elements.first
|
20
|
+
assert_kind_of Unless, tree.elements.first.elements.first
|
21
|
+
assert_kind_of Expression, tree.elements.first.elements.first.elements.first
|
22
|
+
assert_kind_of Block, tree.elements.first.elements.first.elements.last
|
23
|
+
end
|
24
|
+
|
25
25
|
end
|
@@ -1,21 +1,21 @@
|
|
1
|
-
module Test::Unit
|
2
|
-
# Used to fix a minor minitest/unit incompatibility in flexmock
|
3
|
-
AssertionFailedError = Class.new(StandardError)
|
4
|
-
|
5
|
-
class TestCase
|
6
|
-
|
7
|
-
def self.test(name, &block)
|
8
|
-
test_name = "test_#{name.gsub(/\s+/,'_')}".to_sym
|
9
|
-
defined = instance_method(test_name) rescue false
|
10
|
-
raise "#{test_name} is already defined in #{self}" if defined
|
11
|
-
if block_given?
|
12
|
-
define_method(test_name, &block)
|
13
|
-
else
|
14
|
-
define_method(test_name) do
|
15
|
-
flunk "No implementation provided for #{name}"
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
end
|
1
|
+
module Test::Unit
|
2
|
+
# Used to fix a minor minitest/unit incompatibility in flexmock
|
3
|
+
AssertionFailedError = Class.new(StandardError)
|
4
|
+
|
5
|
+
class TestCase
|
6
|
+
|
7
|
+
def self.test(name, &block)
|
8
|
+
test_name = "test_#{name.gsub(/\s+/,'_')}".to_sym
|
9
|
+
defined = instance_method(test_name) rescue false
|
10
|
+
raise "#{test_name} is already defined in #{self}" if defined
|
11
|
+
if block_given?
|
12
|
+
define_method(test_name, &block)
|
13
|
+
else
|
14
|
+
define_method(test_name) do
|
15
|
+
flunk "No implementation provided for #{name}"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
21
|
end
|
data/test/test_helper.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'test/unit'
|
3
|
-
|
4
|
-
require_files = []
|
5
|
-
require_files << File.join(File.dirname(__FILE__), '..', 'lib', 'koi-reference-parser.rb')
|
6
|
-
require_files.concat Dir[File.join(File.dirname(__FILE__), 'setup', '*.rb')]
|
7
|
-
|
8
|
-
require_files.each do |file|
|
9
|
-
require File.expand_path(file)
|
1
|
+
require 'rubygems'
|
2
|
+
require 'test/unit'
|
3
|
+
|
4
|
+
require_files = []
|
5
|
+
require_files << File.join(File.dirname(__FILE__), '..', 'lib', 'koi-reference-parser.rb')
|
6
|
+
require_files.concat Dir[File.join(File.dirname(__FILE__), 'setup', '*.rb')]
|
7
|
+
|
8
|
+
require_files.each do |file|
|
9
|
+
require File.expand_path(file)
|
10
10
|
end
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
version: 0.0.
|
8
|
+
- 2
|
9
|
+
version: 0.0.2
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Aaron Gough
|
@@ -14,13 +14,14 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-08-
|
17
|
+
date: 2010-08-31 00:00:00 -04:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: treetop
|
22
22
|
prerelease: false
|
23
23
|
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
24
25
|
requirements:
|
25
26
|
- - ">="
|
26
27
|
- !ruby/object:Gem::Version
|
@@ -43,10 +44,12 @@ files:
|
|
43
44
|
- MIT-LICENSE
|
44
45
|
- README.rdoc
|
45
46
|
- Rakefile
|
47
|
+
- VERSION
|
46
48
|
- lib/koi-reference-parser.rb
|
47
49
|
- lib/parser/exceptions.rb
|
48
50
|
- lib/parser/koi-reference-parser.treetop
|
49
51
|
- lib/parser/parser.rb
|
52
|
+
- lib/parser/syntax_node_extensions.rb
|
50
53
|
- lib/parser/syntax_nodes.rb
|
51
54
|
- test/parser/functional/function_call_as_argument.rb
|
52
55
|
- test/parser/functional/simple_program_test.rb
|
@@ -59,6 +62,7 @@ files:
|
|
59
62
|
- test/parser/unit/if_test.rb
|
60
63
|
- test/parser/unit/simple_expression_test.rb
|
61
64
|
- test/parser/unit/statement_test.rb
|
65
|
+
- test/parser/unit/syntax_node_to_hash_test.rb
|
62
66
|
- test/parser/unit/unless_test.rb
|
63
67
|
- test/setup/test_unit_extensions.rb
|
64
68
|
- test/test_helper.rb
|
@@ -74,6 +78,7 @@ rdoc_options:
|
|
74
78
|
require_paths:
|
75
79
|
- lib
|
76
80
|
required_ruby_version: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
77
82
|
requirements:
|
78
83
|
- - ">="
|
79
84
|
- !ruby/object:Gem::Version
|
@@ -81,6 +86,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
81
86
|
- 0
|
82
87
|
version: "0"
|
83
88
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
84
90
|
requirements:
|
85
91
|
- - ">="
|
86
92
|
- !ruby/object:Gem::Version
|
@@ -90,7 +96,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
90
96
|
requirements: []
|
91
97
|
|
92
98
|
rubyforge_project:
|
93
|
-
rubygems_version: 1.3.
|
99
|
+
rubygems_version: 1.3.7
|
94
100
|
signing_key:
|
95
101
|
specification_version: 3
|
96
102
|
summary: A reference parser for the Koi language.
|
@@ -106,6 +112,7 @@ test_files:
|
|
106
112
|
- test/parser/unit/if_test.rb
|
107
113
|
- test/parser/unit/simple_expression_test.rb
|
108
114
|
- test/parser/unit/statement_test.rb
|
115
|
+
- test/parser/unit/syntax_node_to_hash_test.rb
|
109
116
|
- test/parser/unit/unless_test.rb
|
110
117
|
- test/setup/test_unit_extensions.rb
|
111
118
|
- test/test_helper.rb
|