class Bricolage::KeyValuePairsParam

Public Class Methods

new(name, arg_spec, description, optional: true, default: nil, value_handler: nil) click to toggle source
Calls superclass method Bricolage::Param::new
# File lib/bricolage/parameters.rb, line 639
def initialize(name, arg_spec, description, optional: true, default: nil, value_handler: nil)
  super name, arg_spec, description, optional: optional, publish: false
  @default_value = default
  @value_handler = value_handler
end

Public Instance Methods

default_value(ctx, vars) click to toggle source
# File lib/bricolage/parameters.rb, line 668
def default_value(ctx, vars)
  @default_value
end
materialize(pairs, ctx, vars) click to toggle source
# File lib/bricolage/parameters.rb, line 672
def materialize(pairs, ctx, vars)
  if @value_handler
    @value_handler.call(pairs, ctx, vars)
  else
    unless pairs.kind_of?(Hash)
      raise "[BUG] bad value type #{pairs.class} for KeyValuePairsParam\#materialize (#{name})"
    end
    h = {}
    pairs.each do |name, value|
      h[name] = expand(value.to_s, vars)
    end
    h
  end
end
parse_option_value(value, h) click to toggle source
# File lib/bricolage/parameters.rb, line 645
def parse_option_value(value, h)
  var, spec = value.split(':', 2)
  if not var or var.empty?
    raise ParameterError, "missing variable name: #{value.inspect}"
  end
  (h ||= {})[var] = spec
  h   # accumulator
end
parse_value(h) click to toggle source
# File lib/bricolage/parameters.rb, line 654
def parse_value(h)
  case h
  when Hash
    h.empty? ? nil : h
  when String   # FIXME: should be removed after changing all load options
    raise ParameterError, "bad type for parameter #{name}: #{h.class}" unless @value_handler
    h.strip.empty? ? nil : h
  when nil, false   # disables option explicitly
    {}
  else
    raise ParameterError, "bad type for parameter #{name}: #{h.class}"
  end
end
variables(h) click to toggle source
# File lib/bricolage/parameters.rb, line 687
def variables(h)
  []
end