class RichTextRenderer::AssetHyperlinkRenderer
Asset hyperlink renderer
Constants
- ANCHOR_HTML
Anchor HTML Tag
Public Instance Methods
render(node)
click to toggle source
Renders asset nodes
# File lib/rich_text_renderer/block_renderers/asset_hyperlink_renderer.rb, line 10 def render(node) asset = nil begin asset = node['data']['target'] rescue fail "Node target is not an asset - Node: #{node}" end # Check by class name instead of instance type to # avoid dependending on the Contentful SDK. return render_asset(asset, node) if asset.class.ancestors.map(&:to_s).any? { |name| name.include?('Asset') } if asset.is_a?(::Hash) unless asset.key?('fields') && asset['fields'].key?('file') fail "Node target is not an asset - Node: #{node}" end return render_hash(asset, node) end fail "Node target is not an asset - Node: #{node}" end
Protected Instance Methods
render!(markup, url, text, formatted = false)
click to toggle source
# File lib/rich_text_renderer/block_renderers/asset_hyperlink_renderer.rb, line 59 def render!(markup, url, text, formatted = false) text = render_content(text) if formatted markup[url, text] end
render_asset(asset, node = nil)
click to toggle source
# File lib/rich_text_renderer/block_renderers/asset_hyperlink_renderer.rb, line 35 def render_asset(asset, node = nil) render!( ANCHOR_HTML, asset.url, renders_node?(node) ? node : asset.title, renders_node?(node) ) end
render_hash(asset, node = nil)
click to toggle source
# File lib/rich_text_renderer/block_renderers/asset_hyperlink_renderer.rb, line 44 def render_hash(asset, node = nil) render!( ANCHOR_HTML, asset['fields']['file']['url'], renders_node?(node) ? node : asset['fields']['title'], renders_node?(node) ) end
renders_node?(node)
click to toggle source
# File lib/rich_text_renderer/block_renderers/asset_hyperlink_renderer.rb, line 53 def renders_node?(node) !(node.nil? || node.empty?) && ( node.is_a?(::Hash) ? renders_node?(node['content']) : true ) end