webidl 0.0.9 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/webidl.rb +1 -1
- data/lib/webidl/ast/exception.rb +2 -1
- data/lib/webidl/parse_tree/exception.rb +4 -0
- data/lib/webidl/parse_tree/{interface_inheritance.rb → inheritance.rb} +2 -2
- data/lib/webidl/parser/idl.rb +45 -29
- data/lib/webidl/parser/idl.treetop +4 -4
- data/lib/webidl/version.rb +1 -1
- data/spec/ast_spec.rb +6 -0
- data/spec/fixtures/exception_with_inheritance.idl +3 -0
- metadata +5 -3
data/lib/webidl.rb
CHANGED
@@ -8,6 +8,7 @@ require "webidl/parse_tree/definitions"
|
|
8
8
|
require "webidl/parse_tree/module"
|
9
9
|
require "webidl/parse_tree/attribute"
|
10
10
|
require "webidl/parse_tree/typedef"
|
11
|
+
require "webidl/parse_tree/inheritance"
|
11
12
|
require "webidl/parse_tree/interface"
|
12
13
|
require "webidl/parse_tree/argument"
|
13
14
|
require "webidl/parse_tree/argument_list"
|
@@ -23,7 +24,6 @@ require "webidl/parse_tree/specials"
|
|
23
24
|
require "webidl/parse_tree/exception"
|
24
25
|
require "webidl/parse_tree/exception_field"
|
25
26
|
require "webidl/parse_tree/implements_statement"
|
26
|
-
require "webidl/parse_tree/interface_inheritance"
|
27
27
|
require "webidl/parse_tree/scoped_name_list"
|
28
28
|
require "webidl/parse_tree/stringifier_attribute_or_operation"
|
29
29
|
|
data/lib/webidl/ast/exception.rb
CHANGED
@@ -2,12 +2,13 @@ module WebIDL
|
|
2
2
|
module Ast
|
3
3
|
class Exception < Node
|
4
4
|
attr_reader :name
|
5
|
-
attr_accessor :members, :extended_attributes
|
5
|
+
attr_accessor :members, :extended_attributes, :inherits
|
6
6
|
|
7
7
|
def initialize(parent, name)
|
8
8
|
@parent = parent
|
9
9
|
@name = name
|
10
10
|
@members = []
|
11
|
+
@inherits = []
|
11
12
|
@extended_attributes = []
|
12
13
|
end
|
13
14
|
|
@@ -1,11 +1,11 @@
|
|
1
1
|
module WebIDL
|
2
2
|
module ParseTree
|
3
|
-
class
|
3
|
+
class Inheritance < Treetop::Runtime::SyntaxNode
|
4
4
|
|
5
5
|
def build(parent)
|
6
6
|
names.build(parent)
|
7
7
|
end
|
8
8
|
|
9
|
-
end #
|
9
|
+
end # Inheritance
|
10
10
|
end # ParseTree
|
11
11
|
end # WebIDL
|
data/lib/webidl/parser/idl.rb
CHANGED
@@ -349,7 +349,7 @@ module WebIDL
|
|
349
349
|
r4 = _nt_ws
|
350
350
|
s0 << r4
|
351
351
|
if r4
|
352
|
-
r5 =
|
352
|
+
r5 = _nt_Inheritance
|
353
353
|
s0 << r5
|
354
354
|
if r5
|
355
355
|
r6 = _nt_ws
|
@@ -418,7 +418,7 @@ module WebIDL
|
|
418
418
|
r0
|
419
419
|
end
|
420
420
|
|
421
|
-
module
|
421
|
+
module Inheritance0
|
422
422
|
def ws
|
423
423
|
elements[1]
|
424
424
|
end
|
@@ -428,10 +428,10 @@ module WebIDL
|
|
428
428
|
end
|
429
429
|
end
|
430
430
|
|
431
|
-
def
|
431
|
+
def _nt_Inheritance
|
432
432
|
start_index = index
|
433
|
-
if node_cache[:
|
434
|
-
cached = node_cache[:
|
433
|
+
if node_cache[:Inheritance].has_key?(index)
|
434
|
+
cached = node_cache[:Inheritance][index]
|
435
435
|
if cached
|
436
436
|
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
437
437
|
@index = cached.interval.end
|
@@ -457,8 +457,8 @@ module WebIDL
|
|
457
457
|
end
|
458
458
|
end
|
459
459
|
if s1.last
|
460
|
-
r1 = instantiate_node(ParseTree::
|
461
|
-
r1.extend(
|
460
|
+
r1 = instantiate_node(ParseTree::Inheritance,input, i1...index, s1)
|
461
|
+
r1.extend(Inheritance0)
|
462
462
|
else
|
463
463
|
@index = i1
|
464
464
|
r1 = nil
|
@@ -469,7 +469,7 @@ module WebIDL
|
|
469
469
|
r0 = instantiate_node(SyntaxNode,input, index...index)
|
470
470
|
end
|
471
471
|
|
472
|
-
node_cache[:
|
472
|
+
node_cache[:Inheritance][start_index] = r0
|
473
473
|
|
474
474
|
r0
|
475
475
|
end
|
@@ -595,22 +595,30 @@ module WebIDL
|
|
595
595
|
elements[3]
|
596
596
|
end
|
597
597
|
|
598
|
-
def
|
599
|
-
elements[
|
598
|
+
def inherits
|
599
|
+
elements[4]
|
600
600
|
end
|
601
601
|
|
602
|
-
def
|
603
|
-
elements[
|
602
|
+
def ws3
|
603
|
+
elements[5]
|
604
604
|
end
|
605
605
|
|
606
606
|
def ws4
|
607
607
|
elements[7]
|
608
608
|
end
|
609
609
|
|
610
|
+
def members
|
611
|
+
elements[8]
|
612
|
+
end
|
613
|
+
|
610
614
|
def ws5
|
611
615
|
elements[9]
|
612
616
|
end
|
613
617
|
|
618
|
+
def ws6
|
619
|
+
elements[11]
|
620
|
+
end
|
621
|
+
|
614
622
|
end
|
615
623
|
|
616
624
|
def _nt_Exception
|
@@ -643,44 +651,52 @@ module WebIDL
|
|
643
651
|
r4 = _nt_ws
|
644
652
|
s0 << r4
|
645
653
|
if r4
|
646
|
-
|
647
|
-
r5 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
648
|
-
@index += 1
|
649
|
-
else
|
650
|
-
terminal_parse_failure("{")
|
651
|
-
r5 = nil
|
652
|
-
end
|
654
|
+
r5 = _nt_Inheritance
|
653
655
|
s0 << r5
|
654
656
|
if r5
|
655
657
|
r6 = _nt_ws
|
656
658
|
s0 << r6
|
657
659
|
if r6
|
658
|
-
|
660
|
+
if has_terminal?("{", false, index)
|
661
|
+
r7 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
662
|
+
@index += 1
|
663
|
+
else
|
664
|
+
terminal_parse_failure("{")
|
665
|
+
r7 = nil
|
666
|
+
end
|
659
667
|
s0 << r7
|
660
668
|
if r7
|
661
669
|
r8 = _nt_ws
|
662
670
|
s0 << r8
|
663
671
|
if r8
|
664
|
-
|
665
|
-
r9 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
666
|
-
@index += 1
|
667
|
-
else
|
668
|
-
terminal_parse_failure("}")
|
669
|
-
r9 = nil
|
670
|
-
end
|
672
|
+
r9 = _nt_ExceptionMembers
|
671
673
|
s0 << r9
|
672
674
|
if r9
|
673
675
|
r10 = _nt_ws
|
674
676
|
s0 << r10
|
675
677
|
if r10
|
676
|
-
if has_terminal?("
|
678
|
+
if has_terminal?("}", false, index)
|
677
679
|
r11 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
678
680
|
@index += 1
|
679
681
|
else
|
680
|
-
terminal_parse_failure("
|
682
|
+
terminal_parse_failure("}")
|
681
683
|
r11 = nil
|
682
684
|
end
|
683
685
|
s0 << r11
|
686
|
+
if r11
|
687
|
+
r12 = _nt_ws
|
688
|
+
s0 << r12
|
689
|
+
if r12
|
690
|
+
if has_terminal?(";", false, index)
|
691
|
+
r13 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
692
|
+
@index += 1
|
693
|
+
else
|
694
|
+
terminal_parse_failure(";")
|
695
|
+
r13 = nil
|
696
|
+
end
|
697
|
+
s0 << r13
|
698
|
+
end
|
699
|
+
end
|
684
700
|
end
|
685
701
|
end
|
686
702
|
end
|
@@ -21,11 +21,11 @@ module WebIDL
|
|
21
21
|
end
|
22
22
|
|
23
23
|
rule Interface
|
24
|
-
"interface" ws name:identifier ws inherits:
|
24
|
+
"interface" ws name:identifier ws inherits:Inheritance ws "{" ws members:InterfaceMembers ws "}" ws ";" <ParseTree::Interface>
|
25
25
|
end
|
26
26
|
|
27
|
-
rule
|
28
|
-
(":" ws names:ScopedNameList <ParseTree::
|
27
|
+
rule Inheritance
|
28
|
+
(":" ws names:ScopedNameList <ParseTree::Inheritance>)?
|
29
29
|
end
|
30
30
|
|
31
31
|
# extract to a generic Members syntax node?
|
@@ -38,7 +38,7 @@ module WebIDL
|
|
38
38
|
end
|
39
39
|
|
40
40
|
rule Exception
|
41
|
-
"exception" ws name:identifier ws "{" ws members:ExceptionMembers ws "}" ws ";" <ParseTree::Exception>
|
41
|
+
"exception" ws name:identifier ws inherits:Inheritance ws "{" ws members:ExceptionMembers ws "}" ws ";" <ParseTree::Exception>
|
42
42
|
end
|
43
43
|
|
44
44
|
# extract to a generic Members syntax node?
|
data/lib/webidl/version.rb
CHANGED
data/spec/ast_spec.rb
CHANGED
@@ -138,6 +138,12 @@ describe WebIDL::Ast do
|
|
138
138
|
interface.inherits.first.qualified_name.should == "::foo"
|
139
139
|
end
|
140
140
|
|
141
|
+
it "creates an exception with inheritance" do
|
142
|
+
exception = parse(fixture("exception_with_inheritance.idl")).build.last
|
143
|
+
exception.inherits.should_not be_empty
|
144
|
+
exception.inherits.first.name.should == "NotFoundException"
|
145
|
+
end
|
146
|
+
|
141
147
|
it "creates an interface with an array type member" do
|
142
148
|
interface = parse(fixture("interface_with_array_member.idl")).build.first
|
143
149
|
interface.should be_kind_of(WebIDL::Ast::Interface)
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: webidl
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.0
|
5
|
+
version: 0.1.0
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Jari Bakken
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-04-
|
13
|
+
date: 2011-04-12 00:00:00 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: treetop
|
@@ -92,8 +92,8 @@ files:
|
|
92
92
|
- lib/webidl/parse_tree/exception_field.rb
|
93
93
|
- lib/webidl/parse_tree/extended_attributes.rb
|
94
94
|
- lib/webidl/parse_tree/implements_statement.rb
|
95
|
+
- lib/webidl/parse_tree/inheritance.rb
|
95
96
|
- lib/webidl/parse_tree/interface.rb
|
96
|
-
- lib/webidl/parse_tree/interface_inheritance.rb
|
97
97
|
- lib/webidl/parse_tree/interface_members.rb
|
98
98
|
- lib/webidl/parse_tree/module.rb
|
99
99
|
- lib/webidl/parse_tree/nullable_type.rb
|
@@ -111,6 +111,7 @@ files:
|
|
111
111
|
- spec/ast_spec.rb
|
112
112
|
- spec/fixtures/empty_interface.idl
|
113
113
|
- spec/fixtures/empty_module.idl
|
114
|
+
- spec/fixtures/exception_with_inheritance.idl
|
114
115
|
- spec/fixtures/framework.idl
|
115
116
|
- spec/fixtures/html5.idl
|
116
117
|
- spec/fixtures/interface_with_array_member.idl
|
@@ -167,6 +168,7 @@ test_files:
|
|
167
168
|
- spec/ast_spec.rb
|
168
169
|
- spec/fixtures/empty_interface.idl
|
169
170
|
- spec/fixtures/empty_module.idl
|
171
|
+
- spec/fixtures/exception_with_inheritance.idl
|
170
172
|
- spec/fixtures/framework.idl
|
171
173
|
- spec/fixtures/html5.idl
|
172
174
|
- spec/fixtures/interface_with_array_member.idl
|