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 = {}) ⇒ 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 = {}) ⇒ LinkRenderer
Returns a new instance of LinkRenderer.
12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/jsduck/inline/link_renderer.rb', line 12 def initialize(relations={}, opts={}) @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_tpl] || '<a href="%c%#%m">%a</a>' end |
Instance Attribute Details
#relations ⇒ Object (readonly)
Access to relations object, used by Inline::Link and Inline::AutoLink.
10 11 12 |
# File 'lib/jsduck/inline/link_renderer.rb', line 10 def relations @relations end |
Instance Method Details
#find_members(cls, query) ⇒ Object
62 63 64 |
# File 'lib/jsduck/inline/link_renderer.rb', line 62 def find_members(cls, query) @relations[cls] ? @relations[cls].find_members(query) : [] end |
#get_matching_member(cls, query) ⇒ Object
52 53 54 55 56 57 58 59 60 |
# File 'lib/jsduck/inline/link_renderer.rb', line 52 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.
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/jsduck/inline/link_renderer.rb', line 28 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 |