Sha256: dbc523ce322cb22beb390923d0184ed3931d6aa1f4e5c1275fd48311d5901646

Contents?: true

Size: 1.76 KB

Versions: 20

Compression:

Stored size: 1.76 KB

Contents

require "jsduck/tag/member_tag"
require "jsduck/params_merger"

module JsDuck::Tag
  # Implementation of @method tag.
  class Method < MemberTag
    def initialize
      @pattern = "method"
      @tagname = :method
      @member_type = {
        :title => "Methods",
        :position => MEMBER_POS_METHOD,
        :icon => File.dirname(__FILE__) + "/icons/method.png",
        :subsections => [
          {:title => "Instance methods", :filter => {:static => false}, :default => true},
          {:title => "Static methods", :filter => {:static => true}},
        ]
      }
    end

    # @method name ...
    def parse_doc(p, pos)
      {
        :tagname => :method,
        :name => p.ident,
      }
    end

    # Onle sets the name when it's actually specified.
    # Otherwise we might overwrite name coming from @constructor.
    def process_doc(h, tags, pos)
      h[:name] = tags[0][:name] if tags[0][:name]
    end

    def process_code(code)
      h = super(code)
      h[:params] = code[:params]
      h[:chainable] = code[:chainable]
      h[:fires] = code[:fires]
      h[:method_calls] = code[:method_calls]
      h
    end

    def merge(h, docs, code)
      JsDuck::ParamsMerger.merge(h, docs, code)
    end

    def to_html(m, cls)
      new_kw(m) + method_link(m, cls) + member_params(m[:params]) + return_value(m)
    end

    private

    def new_kw(m)
      constructor?(m) ? "<strong class='new-keyword'>new</strong>" : ""
    end

    def method_link(m, cls)
      if constructor?(m)
        member_link(:owner => m[:owner], :id => m[:id], :name => cls[:name])
      else
        member_link(m)
      end
    end

    def constructor?(m)
      m[:name] == "constructor"
    end

    def return_value(m)
      m[:return] ? (" : " + m[:return][:html_type]) : ""
    end

  end
end

Version data entries

20 entries across 20 versions & 2 rubygems

Version Path
solvas-jsduck-6.0.0.30539 lib/jsduck/tag/method.rb
solvas-jsduck-6.0.0.9571 lib/jsduck/tag/method.rb
solvas-jsduck-6.0.0.6154 lib/jsduck/tag/method.rb
solvas-jsduck-6.0.0.4021 lib/jsduck/tag/method.rb
solvas-jsduck-6.0.0.2554 lib/jsduck/tag/method.rb
solvas-jsduck-6.0.0.1891 lib/jsduck/tag/method.rb
solvas-jsduck-6.0.0.beta.1888 lib/jsduck/tag/method.rb
jsduck-6.0.0beta lib/jsduck/tag/method.rb
jsduck-5.3.4 lib/jsduck/tag/method.rb
jsduck-5.3.3 lib/jsduck/tag/method.rb
jsduck-5.3.2 lib/jsduck/tag/method.rb
jsduck-5.3.1 lib/jsduck/tag/method.rb
jsduck-5.3.0 lib/jsduck/tag/method.rb
jsduck-5.2.0 lib/jsduck/tag/method.rb
jsduck-5.1.0 lib/jsduck/tag/method.rb
jsduck-5.0.1 lib/jsduck/tag/method.rb
jsduck-5.0.0 lib/jsduck/tag/method.rb
jsduck-5.0.0.beta5 lib/jsduck/tag/method.rb
jsduck-5.0.0.beta4 lib/jsduck/tag/method.rb
jsduck-5.0.0.beta3 lib/jsduck/tag/method.rb