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

Eliminate Method- and PropertySignature classes.

Instead the MemberTag class now has two helper methods:

- member_link - for rendering member name as a link.
- member_params - for rendering the params list.

Most of the complexity was really related to rendering the
method signature - all this logic is now in Tag::Method class.
parent 91811420
Loading
Loading
Loading
Loading
+0 −63
Original line number Diff line number Diff line
require 'jsduck/util/singleton'
require 'jsduck/render/signature_util'

module JsDuck
  module Render

    # Performs the rendering of method signatures.
    class MethodSignature
      include JsDuck::Util::Singleton

      # Renders signature of the given method/event/scss_mixin.
      # The class config is needed for naming the constructor the same as class.
      def render(member, cls)
        @m = member
        @cls = cls

        return [
          render_new,
          render_link,
          render_params,
          render_return,
        ].join
      end

      private

      def render_new
        constructor? ? "<strong class='new-keyword'>new</strong>" : ""
      end

      def render_link
        SignatureUtil::link(@m[:owner], @m[:id], render_name)
      end

      def render_name
        constructor? ? @cls[:name] : @m[:name]
      end

      def constructor?
        @m[:tagname] == :method && @m[:name] == "constructor"
      end

      def render_params
        ps = Array(@m[:params]).map {|p| render_single_param(p) }.join(", ")
        "( <span class='pre'>#{ps}</span> )"
      end

      def render_single_param(param)
        param[:optional] ? "["+param[:name]+"]" : param[:name]
      end

      def render_return
        method_with_return? ? (" : " + @m[:return][:html_type]) : ""
      end

      def method_with_return?
        @m[:return] != nil
      end

    end

  end
end
+0 −34
Original line number Diff line number Diff line
require 'jsduck/util/singleton'
require 'jsduck/render/signature_util'

module JsDuck
  module Render

    # Performs the rendering of property signatures.
    class PropertySignature
      include JsDuck::Util::Singleton

      # Renders signature of the given property/cfg/scss_var.
      def render(member)
        @m = member

        return [
          render_link,
          render_type,
        ].join
      end

      private

      def render_link
        SignatureUtil::link(@m[:owner], @m[:id], @m[:name])
      end

      def render_type
        " : " + @m[:html_type]
      end

    end

  end
end
+1 −2
Original line number Diff line number Diff line
require "jsduck/tag/member_tag"
require "jsduck/doc/subproperties"
require "jsduck/render/property_signature"

module JsDuck::Tag
  class Cfg < MemberTag
@@ -69,7 +68,7 @@ module JsDuck::Tag
    end

    def to_html(cfg, cls)
      JsDuck::Render::PropertySignature.render(cfg)
      member_link(cfg) + " : " + cfg[:html_type]
    end
  end
end
+1 −2
Original line number Diff line number Diff line
require "jsduck/tag/member_tag"
require "jsduck/render/method_signature"

module JsDuck::Tag
  # As of now there is no @css_mixin tag available in CSS files.  This
@@ -16,7 +15,7 @@ module JsDuck::Tag
    end

    def to_html(mixin, cls)
      JsDuck::Render::MethodSignature.render(mixin, cls)
      member_link(mixin) + member_params(mixin[:params])
    end
  end
end
+1 −2
Original line number Diff line number Diff line
require "jsduck/tag/member_tag"
require "jsduck/render/property_signature"

module JsDuck::Tag
  class CssVar < MemberTag
@@ -45,7 +44,7 @@ module JsDuck::Tag
    end

    def to_html(var, cls)
      JsDuck::Render::PropertySignature.render(var)
      member_link(var) + " : " + var[:html_type]
    end
  end
end
Loading