class JsDuck::Tag::Class

Public Class Methods

new() click to toggle source
# File lib/jsduck/tag/class.rb, line 5
def initialize
  @pattern = "class"
  @tagname = :class
  @class_icon = {
    :small => File.dirname(__FILE__) + "/icons/class.png",
    :large => File.dirname(__FILE__) + "/icons/class-large.png",
    :redirect => File.dirname(__FILE__) + "/icons/class-redirect.png",
    :priority => PRIORITY_CLASS,
  }
end

Public Instance Methods

merge(h, docs, code) click to toggle source
# File lib/jsduck/tag/class.rb, line 41
def merge(h, docs, code)
  # Ensure the empty members array.
  h[:members] = []
  # Ignore extending of the Object class
  h[:extends] = nil if h[:extends] == "Object"
  # Default alternateClassNames list to empty array
  h[:alternateClassNames] = [] unless h[:alternateClassNames]
  # Turn :aliases field into hash
  h[:aliases] = build_aliases_hash(h[:aliases] || [])

  # Takes the :enum always from docs, but the :doc_only can come
  # from either code or docs.
  if docs[:enum]
    h[:enum] = docs[:enum]
    h[:enum][:doc_only] = docs[:enum][:doc_only] || (code[:enum] && code[:enum][:doc_only])
  end
end
parse_doc(p, pos) click to toggle source

@class name

# File lib/jsduck/tag/class.rb, line 17
def parse_doc(p, pos)
  {
    :tagname => :class,
    :name => p.ident_chain,
  }
end
process_code(code) click to toggle source

Although class is not a member, it also has the auto-detected part from code. So this method gets called by Merger.

If we did detect code as a class use all the auto-detected fields, otherwise use only the name field.

# File lib/jsduck/tag/class.rb, line 33
def process_code(code)
  if code[:tagname] == :class
    code
  else
    {:name => code[:name] }
  end
end
process_doc(h, tags, pos) click to toggle source
# File lib/jsduck/tag/class.rb, line 24
def process_doc(h, tags, pos)
  h[:name] = tags[0][:name]
end

Private Instance Methods

build_aliases_hash(aliases) click to toggle source

Given array of full alias names like “foo.bar”, “foo.baz” build hash like {“foo” => [“bar”, “baz”]}

# File lib/jsduck/tag/class.rb, line 63
def build_aliases_hash(aliases)
  hash={}
  aliases.each do |a|
    if a =~ /^([^.]+)\.(.+)$/
      if hash[$1]
        hash[$1] << $2
      else
        hash[$1] = [$2]
      end
    end
  end
  hash
end