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

Extract class for removal of ignored classes.

parent 9f0f149d
Loading
Loading
Loading
Loading
+0 −10
Original line number Diff line number Diff line
@@ -189,16 +189,6 @@ module JsDuck
      })
    end

    # Gets rid of classes marked with @ignore
    def remove_ignored_classes
      @documentation.delete_if do |cls|
        if cls[:ignore]
          @classes.delete(cls["name"])
          true
        end
      end
    end

    # Now used only in tests.
    def result
      @documentation + @orphans
+2 −1
Original line number Diff line number Diff line
@@ -2,6 +2,7 @@ require 'jsduck/util/parallel'
require 'jsduck/util/io'
require 'jsduck/source/file'
require 'jsduck/aggregator'
require 'jsduck/ignore'
require 'jsduck/enum'
require 'jsduck/accessors'
require 'jsduck/ext4_events'
@@ -61,9 +62,9 @@ module JsDuck
      end
      agr.classify_orphans
      agr.create_global_class
      agr.remove_ignored_classes
      classes = agr.classes

      Ignore.new(classes).process_all!
      Accessors.new(classes).create_all!
      Ext4Events.new(classes, @opts).process_all!
      Enum.new(classes).process_all!

lib/jsduck/ignore.rb

0 → 100644
+14 −0
Original line number Diff line number Diff line
module JsDuck

  # Gets rid of classes marked with @ignore
  class Ignore
    def initialize(classes)
      @classes = classes
    end

    def process_all!
      @classes.delete_if {|name, cls| cls[:ignore] }
    end
  end

end
+82 −0
Original line number Diff line number Diff line
require "jsduck/aggregator"
require "jsduck/source/file"
require "jsduck/ignore"

describe JsDuck::Aggregator do

  def parse(string)
    agr = JsDuck::Aggregator.new
    agr.aggregate(JsDuck::Source::File.new(string))
    agr.classify_orphans
    agr.create_global_class
    JsDuck::Ignore.new(agr.classes).process_all!
    agr.classes
  end

  describe "@ignore in member" do
    before do
      @docs = parse(<<-EOSTR)["Foo"]
      /**
       * @class Foo
       */
          /**
           * @method bar
           * @ignore
           */
      EOSTR
    end

    it "ignores the member completely" do
      @docs[:members].length.should == 0
    end
  end

  describe "@ignore in class" do
    before do
      @docs = parse(<<-EOSTR)
      /**
       * @class Foo
       * @ignore
       */
          /**
           * @method bar
           */
          /**
           * @method baz
           */
      EOSTR
    end

    it "ignores the class and all it's members" do
      @docs.length.should == 0
    end
  end

  describe "@ignore in duplicate member" do
    before do
      @doc = parse(<<-EOSTR)["Foo"]
      /**
       * @class Foo
       */
          /**
           * @method bar
           * First method docs
           */
          /**
           * @method bar
           * Second method docs
           * @ignore
           */
      EOSTR
    end

    it "ignores one member" do
      @doc[:members].length.should == 1
    end

    it "lets the other member stay" do
      @doc[:members][0][:doc].should == "First method docs"
    end
  end

end
+0 −59
Original line number Diff line number Diff line
@@ -6,7 +6,6 @@ describe JsDuck::Aggregator do
  def parse(string)
    agr = JsDuck::Aggregator.new
    agr.aggregate(JsDuck::Source::File.new(string))
    agr.remove_ignored_classes
    agr.result
  end

@@ -20,64 +19,6 @@ describe JsDuck::Aggregator do
    end
  end

  describe "@ignore in member" do
    before do
      @docs = parse("/** @ignore */")
    end

    it "ignores the member completely" do
      @docs.length.should == 0
    end
  end

  describe "@ignore in class" do
    before do
      @docs = parse(<<-EOSTR)
      /**
       * @class Foo
       * @ignore
       */
          /**
           * @method bar
           */
          /**
           * @method baz
           */
      EOSTR
    end

    it "ignores the class and all it's members" do
      @docs.length.should == 0
    end
  end

  describe "@ignore in duplicate member" do
    before do
      @doc = parse(<<-EOSTR)[0]
      /**
       * @class Foo
       */
          /**
           * @method bar
           * First method docs
           */
          /**
           * @method bar
           * Second method docs
           * @ignore
           */
      EOSTR
    end

    it "ignores one member" do
      @doc[:members].length.should == 1
    end

    it "lets the other member stay" do
      @doc[:members][0][:doc].should == "First method docs"
    end
  end

  describe "@hide" do
    before do
      @doc = parse("/** @hide */")[0]