module Docks::Helpers::Render

Public Instance Methods

render_everything() click to toggle source
# File lib/docks/helpers/render_helper.rb, line 9
def render_everything
  render_everything_for(@pattern)
  @pattern.symbols.each { |symbol| render_everything_for(symbol) }
end

Private Instance Methods

render_description(description, options = {}) click to toggle source
# File lib/docks/helpers/render_helper.rb, line 60
def render_description(description, options = {})
  description.gsub! /(href\s*=\s*['"])@link\s([^'"]*)(.)/ do |match|
    "#{$1}#{docks_path($2, options)}#{$3}"
  end

  render(layout: false, inline: render_description_with_theme(description, options))
end
render_description_with_theme(description, options = {}) click to toggle source

To be (optionally) overriden in themes

# File lib/docks/helpers/render_helper.rb, line 69
def render_description_with_theme(description, options = {})
  description
end
render_everything_for(symbol, options = {}) click to toggle source
# File lib/docks/helpers/render_helper.rb, line 16
def render_everything_for(symbol, options = {})
  case symbol
  when Containers::Base
    options[:language] = symbol.source.nil? ? nil : symbol.source.language_code
    render_markup(symbol)

    symbol.each do |k, v|
      next if v.nil?

      if k == :description
        symbol[k] = render_description(v, options)
      else
        symbol[k] = render_everything_for(v, options)
      end
    end

    if symbol.respond_to?(:members)
      symbol.members.each { |member| render_everything_for(member, options) }
    end

  when Array
    symbol.map! { |each_symbol| render_everything_for(each_symbol, options) }

  when OpenStruct
    symbol.each do |k, v|
      next if v.nil?

      if k == :description
        symbol.description = render_description(v, options)
      else
        symbol.send("#{k.to_s}=".to_sym, render_everything_for(v, options))
      end
    end
  end

  symbol
end
render_markup(symbol) click to toggle source
# File lib/docks/helpers/render_helper.rb, line 54
def render_markup(symbol)
  markup, helper = symbol.markup, symbol.helper
  return if markup.nil? && helper.nil?
  symbol.markup = render(inline: (helper || markup), layout: false)
end