Class: Interpol::ParamParser

Inherits:
Object
  • Object
show all
Defined in:
lib/interpol/configuration.rb

Overview

Holds the validation/parsing logic for a particular parameter type (w/ additional options).

Instance Method Summary collapse

Constructor Details

#initialize(type, options = {}) {|_self| ... } ⇒ ParamParser

Returns a new instance of ParamParser.

Yields:

  • (_self)

Yield Parameters:



262
263
264
265
266
# File 'lib/interpol/configuration.rb', line 262

def initialize(type, options = {})
  @type = type
  @options = options
  yield self
end

Instance Method Details

#descriptionObject



296
297
298
299
300
301
302
# File 'lib/interpol/configuration.rb', line 296

def description
  @description ||= @type.inspect.tap do |desc|
    if @options.any?
      desc << " (with options: #{@options.inspect})"
    end
  end
end

#matches_options?(options) ⇒ Boolean

Returns:

  • (Boolean)


276
277
278
279
280
# File 'lib/interpol/configuration.rb', line 276

def matches_options?(options)
  @options.all? do |key, value|
    options.has_key?(key) && options[key] == value
  end
end

#parse(&block) ⇒ Object



272
273
274
# File 'lib/interpol/configuration.rb', line 272

def parse(&block)
  @parse_block = block
end

#parse_value(value) ⇒ Object



288
289
290
291
292
293
294
# File 'lib/interpol/configuration.rb', line 288

def parse_value(value)
  unless @parse_block
    raise "No parse callback has been set for param type definition: #{description}"
  end

  @parse_block.call(value)
end

#string_validation_options(options = nil, &block) ⇒ Object



268
269
270
# File 'lib/interpol/configuration.rb', line 268

def string_validation_options(options = nil, &block)
  @string_validation_options_block = block || Proc.new { options }
end

#type_validation_options_for(type, options) ⇒ Object



282
283
284
285
286
# File 'lib/interpol/configuration.rb', line 282

def type_validation_options_for(type, options)
  return type unless @string_validation_options_block
  string_options = @string_validation_options_block.call(options)
  Array(type) + [string_options.merge('type' => 'string')]
end