class Navigasmic::Builder::Base

Public Class Methods

new(context, name, options, &block) click to toggle source
# File lib/navigasmic/core/builder.rb, line 16
def initialize(context, name, options, &block)
  @definition = block_given? ? block : Navigasmic.configuration.definitions[name]
  raise ArgumentError, "Missing block or configuration" unless @definition

  @context, @name, @options = context, name, options
  @config = configuration_or_default(@options.delete(:config))
  remove_excluded_options(@options)
end

Public Instance Methods

group(label = nil, options = {}, &block) click to toggle source
# File lib/navigasmic/core/builder.rb, line 25
def group(label = nil, options = {}, &block)
  raise "Expected subclass to implement group"
end
item(label = nil, *args, &block) click to toggle source
# File lib/navigasmic/core/builder.rb, line 29
def item(label = nil, *args, &block)
  raise "Expected subclass to implement item"
end
render() click to toggle source
# File lib/navigasmic/core/builder.rb, line 33
def render
  raise "Expected subclass to implement render"
end

Private Instance Methods

capture(&block) click to toggle source
# File lib/navigasmic/core/builder.rb, line 49
def capture(&block)
  (block_given? ? @context.capture(self, &block) : nil).to_s.html_safe
end
configuration_or_default(config = nil) click to toggle source
# File lib/navigasmic/core/builder.rb, line 39
def configuration_or_default(config = nil)
  configurations = Navigasmic.configuration.builder_configurations[self.class.to_s]
  proc = configurations.present? ? configurations[config || :default] : nil
  self.class::Configuration.new(&proc)
end
eval_in_context(&block) click to toggle source
# File lib/navigasmic/core/builder.rb, line 53
def eval_in_context(&block)
  @context.instance_eval(&block)
end
flatten_and_eval_options(options) click to toggle source
# File lib/navigasmic/core/builder.rb, line 61
def flatten_and_eval_options(options)
  remove_excluded_options(options)
  options.inject({}) do |hash, (key, value)|
    if value.is_a?(Array)
      value = value.map{ |v| v.is_a?(Proc) ? eval_in_context(&v) : v }
    elsif value.is_a?(Proc)
      value = eval_in_context(&value)
    end
    hash.update(key => value)
  end
end
method_missing(meth, *args, &block) click to toggle source
# File lib/navigasmic/core/builder.rb, line 57
def method_missing(meth, *args, &block)
  @context.send(meth, *args, &block)
end
remove_excluded_options(options) click to toggle source
# File lib/navigasmic/core/builder.rb, line 45
def remove_excluded_options(options)
  @config.excluded_keys.each { |key| options.delete(key) }
end
visible?(options) click to toggle source
# File lib/navigasmic/core/builder.rb, line 73
def visible?(options)
  if options[:hidden_unless].nil?
    true
  elsif options[:hidden_unless].is_a?(Proc)
    eval_in_context(&options[:hidden_unless])
  else
    options[:hidden_unless]
  end
end