Commit 29835d71 authored by Rene Saarsoo's avatar Rene Saarsoo
Browse files

Parse out requires and uses from class definition.

parent d3a8bd55
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -220,7 +220,7 @@ module JsDuck
      cfg
    end

    # <ext-define-cfg> := "{" ( <extend> | <mixins> | <alternate-class-name> | <alias> | <singleton> | <?> )*
    # <ext-define-cfg> := "{" ( <extend> | <mixins> | <alternate-class-name> | <alias> | <requires> | <uses> | <singleton> | <?> )*
    def ext_define_cfg
      match("{")
      cfg = {}
@@ -239,6 +239,14 @@ module JsDuck
        elsif look("alias", ":")
          cfg[:alias] = ext_define_alias
          found = true
        elsif look("requires", ":")
          match("requires", ":")
          cfg[:requires] = string_or_list
          found = true
        elsif look("uses", ":")
          match("uses", ":")
          cfg[:uses] = string_or_list
          found = true
        elsif look("singleton", ":", "true")
          cfg[:singleton] = ext_define_singleton
          found = true
+2 −0
Original line number Diff line number Diff line
@@ -116,6 +116,8 @@ module JsDuck
        :author => detect_author(doc_map),
        :docauthor => detect_docauthor(doc_map),
        :singleton => detect_singleton(doc_map, code),
        :requires => detect_list(:requires, doc_map, code),
        :uses => detect_list(:uses, doc_map, code),
        # Used by Aggregator to determine if we're dealing with Ext4 code
        :code_type => code[:type],
      }, doc_map)
+13 −2
Original line number Diff line number Diff line
@@ -201,6 +201,12 @@ describe JsDuck::Aggregator do
    it "detects implied singleton" do
      @doc[:singleton].should == true
    end
    it "detects required classes" do
      @doc[:requires].should == ["ClassA", "ClassB"]
    end
    it "detects used classes" do
      @doc[:uses].should == ["ClassC"]
    end
  end

  describe "basic Ext.define() in code" do
@@ -215,7 +221,9 @@ describe JsDuck::Aggregator do
          },
          alias: 'widget.foo',
          alternateClassName: 'JustClass',
          singleton: true
          singleton: true,
          requires: ['ClassA', 'ClassB'],
          uses: 'ClassC'
        });
      EOS
    end
@@ -240,10 +248,13 @@ describe JsDuck::Aggregator do
        Ext.define('MyClass', {
          blah: true,
          extend: 'Your.Class',
          uses: ['ClassC'],
          conf: {foo: 10},
          alias: ['widget.foo', 'something.bar'],
          singleton: true,
          alternateClassName: ['JustClass'],
          requires: ['Hohooo', 'hahaa'],
          stuff: ["foo", "bar"],
          requires: ['ClassA', 'ClassB'],
          mixins: {
            obs: 'Ext.util.Observable',
            bar: 'Foo.Bar'