Commit e432852b authored by Rene Saarsoo's avatar Rene Saarsoo
Browse files

Support for @uses and @requires.

Just for completeness.
parent 54e68208
Loading
Loading
Loading
Loading
+22 −0
Original line number Diff line number Diff line
@@ -96,6 +96,10 @@ module JsDuck
          at_mixins
        elsif look(/@alternateClassNames?\b/)
          at_alternateClassName
        elsif look(/@uses\b/)
          at_uses
        elsif look(/@requires\b/)
          at_requires
        elsif look(/@singleton\b/)
          boolean_at_tag(/@singleton/, :singleton)
        elsif look(/@event\b/)
@@ -220,6 +224,24 @@ module JsDuck
      skip_white
    end

    # matches @uses name1 name2 ...
    def at_uses
      match(/@uses/)
      add_tag(:uses)
      skip_horiz_white
      @current_tag[:uses] = class_list
      skip_white
    end

    # matches @requires name1 name2 ...
    def at_requires
      match(/@requires/)
      add_tag(:requires)
      skip_horiz_white
      @current_tag[:requires] = class_list
      skip_white
    end

    # matches @event name ...
    def at_event
      match(/@event/)
+27 −0
Original line number Diff line number Diff line
@@ -242,6 +242,33 @@ describe JsDuck::Aggregator do
    it_should_behave_like "Ext.define"
  end

  describe "explicit @tags overriding Ext.define()" do
    before do
      @doc = parse(<<-EOS)[0]
        /**
         * @class MyClass
         * @extends Your.Class
         * @uses ClassC
         * @requires ClassA
         * @requires ClassB
         * @alternateClassName JustClass
         * @mixins Ext.util.Observable
         * @mixins Foo.Bar
         * @singleton
         */
        Ext.define('MyClassXXX', {
          extend: 'Your.ClassXXX',
          uses: ['CCC'],
          singleton: false,
          alternateClassName: ['JustClassXXX'],
          requires: ['AAA'],
          mixins: ['BBB']
        });
      EOS
    end
    it_should_behave_like "Ext.define"
  end

  describe "Ext.define() without extend" do
    before do
      @doc = parse(<<-EOS)[0]