webidl 0.0.9 → 0.1.0
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/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
         |