Commit 1dfe9b08 authored by Rene Saarsoo's avatar Rene Saarsoo
Browse files

Implement all class-tags as builtin tag classes.

parent c1560715
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
require "jsduck/builtins/tag"

module JsDuck::Builtins
  class Class < Tag
    def initialize
      @pattern = "class"
    end

    # @class name
    def parse(p)
      p.add_tag(:class)
      p.maybe_ident_chain(:name)
    end
  end
end
+15 −0
Original line number Diff line number Diff line
require "jsduck/builtins/tag"

module JsDuck::Builtins
  class Extends < Tag
    def initialize
      @pattern = ["extend", "extends"]
    end

    # @extends classname
    def parse(p)
      p.add_tag(:extends)
      p.maybe_ident_chain(:extends)
    end
  end
end
+15 −0
Original line number Diff line number Diff line
require "jsduck/builtins/tag"

module JsDuck::Builtins
  class Member < Tag
    def initialize
      @pattern = "member"
    end

    # @member classname
    def parse(p)
      p.add_tag(:member)
      p.maybe_ident_chain(:member)
    end
  end
end
+2 −2
Original line number Diff line number Diff line
@@ -22,8 +22,8 @@ module JsDuck
    def instantiate_tags
      JsDuck::Builtins::Tag.descendants.each do |cls|
        tag = cls.new()
        if tag.pattern
          @map[tag.pattern] = tag
        Array(tag.pattern).each do |pattern|
          @map[pattern] = tag
        end
      end
    end
+0 −12
Original line number Diff line number Diff line
@@ -33,11 +33,6 @@ module JsDuck
    end

    BUILTIN_TAGS = {
      "class" => [:class_at_tag, :class, :name],
      "extend" => [:class_at_tag, :extends, :extends],
      "extends" => [:class_at_tag, :extends, :extends],
      "member" => [:class_at_tag, :member, :member],

      "mixin" => [:class_list_at_tag, :mixins],
      "mixins" => [:class_list_at_tag, :mixins],
      "alternateClassName" => [:class_list_at_tag, :alternateClassNames],
@@ -214,13 +209,6 @@ module JsDuck
    # Routines for parsing of concrete tags...
    #

    # matches @<tagname> [ classname ]
    # Used for @class, @extends, @member
    def class_at_tag(tagname, property_name)
      add_tag(tagname)
      maybe_ident_chain(property_name)
    end

    # matches @<tagname> classname1 classname2 ...
    # Used for @mixins, @uses, etc...
    def class_list_at_tag(tagname)