Commit 0abbdab5 authored by Rene Saarsoo's avatar Rene Saarsoo
Browse files

Move the rendering of subproperties to Tag classes.

Param, Return and Throw classes now perform calls to
Subproperties.render* methods as needed.

Additionally rename the Param tag @key from :param to :params.
Otherwise we have no handler for the :params key to render the HTML.
parent 77aca643
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -31,7 +31,7 @@ module JsDuck
        :cfg
      elsif doc_map[:constructor]
        :method
      elsif doc_map[:param] || doc_map[:return]
      elsif doc_map[:params] || doc_map[:return]
        :method
      else
        code[:tagname]
+1 −1
Original line number Diff line number Diff line
@@ -31,7 +31,7 @@ module JsDuck
      end

      OPTIONS = {
        :tagname => :param,
        :tagname => :params,
        :name => "eOpts",
        :type => "Object",
        :doc => "The options object passed to {@link Ext.util.Observable#addListener}."
+1 −8
Original line number Diff line number Diff line
@@ -2,7 +2,6 @@ require 'jsduck/util/html'
require 'jsduck/signature_renderer'
require 'jsduck/tag_renderer'
require 'jsduck/sidebar'
require 'jsduck/subproperties'

module JsDuck

@@ -142,13 +141,7 @@ module JsDuck
    end

    def render_long_doc(m)
      doc = []

      doc << render_tags(m)

      doc << Subproperties.render_member(m)

      doc
      render_tags(m)
    end

  end
+0 −8
Original line number Diff line number Diff line
@@ -8,14 +8,6 @@ module JsDuck
  class Subproperties
    include Util::Singleton

    def render_member(item)
      doc = []
      doc << render_params(item[:params]) if item[:params] && item[:params].length > 0
      doc << render_return(item[:return]) if item[:return]
      doc << render_throws(item[:throws]) if item[:throws]
      doc
    end

    # Renders object properties, which could also be functions in
    # which case they will be rendered with parameters and return
    # value.
+8 −2
Original line number Diff line number Diff line
require "jsduck/tag/tag"
require "jsduck/doc/subproperties"
require "jsduck/subproperties"
require "jsduck/docs_code_comparer"

module JsDuck::Tag
  class Param < Tag
    def initialize
      @pattern = "param"
      @key = :param
      @key = :params
      @merge_context = [:method, :event, :css_mixin]
      @html_position = POS_PARAMS
    end

    # @param {Type} [name=default] (optional) ...
    def parse_doc(p)
      tag = p.standard_tag({:tagname => :param, :type => true, :name => true})
      tag = p.standard_tag({:tagname => :params, :type => true, :name => true})
      tag[:optional] = true if parse_optional(p)
      tag[:doc] = :multiline
      tag
@@ -30,6 +32,10 @@ module JsDuck::Tag
      h[:params] = merge_params(docs, code)
    end

    def to_html(m)
      JsDuck::Subproperties.render_params(m[:params]) if m[:params].length > 0
    end

    private

    def merge_params(docs, code)
Loading