Commit 0f643b70 authored by Rene Saarsoo's avatar Rene Saarsoo
Browse files

Implement class-list-tags as builtin tag classes.

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

module JsDuck::Builtins
  class AlternateClassNames < Tag
    def initialize
      @pattern = ["alternateClassName", "alternateClassNames"]
    end

    # @alternateClassNames classname1 classname2 ...
    def parse(p)
      p.add_tag(:alternateClassNames)
      p.classname_list(:alternateClassNames)
    end
  end
end
+15 −0
Original line number Diff line number Diff line
require "jsduck/builtins/tag"

module JsDuck::Builtins
  class Mixins < Tag
    def initialize
      @pattern = ["mixin", "mixins"]
    end

    # @mixins classname1 classname2 ...
    def parse(p)
      p.add_tag(:mixins)
      p.classname_list(:mixins)
    end
  end
end
+15 −0
Original line number Diff line number Diff line
require "jsduck/builtins/tag"

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

    # @requires classname1 classname2 ...
    def parse(p)
      p.add_tag(:requires)
      p.classname_list(:requires)
    end
  end
end
+15 −0
Original line number Diff line number Diff line
require "jsduck/builtins/tag"

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

    # @uses classname1 classname2 ...
    def parse(p)
      p.add_tag(:uses)
      p.classname_list(:uses)
    end
  end
end
+2 −17
Original line number Diff line number Diff line
@@ -33,13 +33,6 @@ module JsDuck
    end

    BUILTIN_TAGS = {
      "mixin" => [:class_list_at_tag, :mixins],
      "mixins" => [:class_list_at_tag, :mixins],
      "alternateClassName" => [:class_list_at_tag, :alternateClassNames],
      "alternateClassNames" => [:class_list_at_tag, :alternateClassNames],
      "uses" => [:class_list_at_tag, :uses],
      "requires" => [:class_list_at_tag, :requires],

      "xtype" => [:at_xtype, "widget"],
      "ftype" => [:at_xtype, "feature"],
      "ptype" => [:at_xtype, "plugin"],
@@ -209,14 +202,6 @@ module JsDuck
    # Routines for parsing of concrete tags...
    #

    # matches @<tagname> classname1 classname2 ...
    # Used for @mixins, @uses, etc...
    def class_list_at_tag(tagname)
      add_tag(tagname)
      skip_horiz_white
      @current_tag[tagname] = class_list
    end

    # matches @param {type} [name] (optional) ...
    def at_param
      add_tag(:param)
@@ -480,14 +465,14 @@ module JsDuck
    end

    # matches <ident_chain> <ident_chain> ... until line end
    def class_list
    def classname_list(propname)
      skip_horiz_white
      classes = []
      while look(@ident_chain_pattern)
        classes << ident_chain
        skip_horiz_white
      end
      classes
      @current_tag[propname] = classes
    end

    # matches chained.identifier.name and returns it