Class: JsDuck::Inline::LinkRenderer
- Inherits:
-
Object
- Object
- JsDuck::Inline::LinkRenderer
- Defined in:
- lib/jsduck/inline/link_renderer.rb
Overview
Renders HTML link to class or member.
Instance Attribute Summary collapse
-
#relations ⇒ Object
readonly
Access to relations object, used by Inline::Link and Inline::AutoLink.
Instance Method Summary collapse
- #find_members(cls, query) ⇒ Object
- #get_matching_member(cls, query) ⇒ Object
-
#initialize(relations = {}, opts = OpenStruct.new) ⇒ LinkRenderer
constructor
A new instance of LinkRenderer.
-
#link(cls, member, anchor_text, type = nil, static = nil) ⇒ Object
Generates HTML link to class or member applying the link template.
Constructor Details
#initialize(relations = {}, opts = OpenStruct.new) ⇒ LinkRenderer
Returns a new instance of LinkRenderer.
13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/jsduck/inline/link_renderer.rb', line 13 def initialize(relations={}, opts=OpenStruct.new) @relations = relations # Template HTML that replaces {@link Class#member anchor text}. # Can contain placeholders: # # %c - full class name (e.g. "Ext.Panel") # %m - class member name prefixed with member type (e.g. "method-urlEncode") # %# - inserts "#" if member name present # %- - inserts "-" if member name present # %a - anchor text for link @tpl = opts.link || '<a href="%c%#%m">%a</a>' end |
Instance Attribute Details
#relations ⇒ Object (readonly)
Access to relations object, used by Inline::Link and Inline::AutoLink.
11 12 13 |
# File 'lib/jsduck/inline/link_renderer.rb', line 11 def relations @relations end |
Instance Method Details
#find_members(cls, query) ⇒ Object
63 64 65 |
# File 'lib/jsduck/inline/link_renderer.rb', line 63 def find_members(cls, query) @relations[cls] ? @relations[cls].find_members(query) : [] end |
#get_matching_member(cls, query) ⇒ Object
53 54 55 56 57 58 59 60 61 |
# File 'lib/jsduck/inline/link_renderer.rb', line 53 def get_matching_member(cls, query) ms = find_members(cls, query) if ms.length > 1 instance_ms = ms.find_all {|m| !m[:static] } instance_ms.length > 0 ? instance_ms[0] : ms.find_all {|m| m[:static] }[0] else ms[0] end end |
#link(cls, member, anchor_text, type = nil, static = nil) ⇒ Object
Generates HTML link to class or member applying the link template.
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/jsduck/inline/link_renderer.rb', line 29 def link(cls, member, anchor_text, type=nil, static=nil) # Use the canonical class name for link (not some alternateClassName) cls = @relations[cls][:name] # prepend type name to member name member = member && get_matching_member(cls, {:name => member, :tagname => type, :static => static}) @tpl.gsub(/(%[\w#-])/) do case $1 when '%c' cls when '%m' member ? member[:id] : "" when '%#' member ? "#" : "" when '%-' member ? "-" : "" when '%a' Util::HTML.escape(anchor_text||"") else $1 end end end |