Class: BinData::SanitizedParameters

Inherits:
Object
  • Object
show all
Defined in:
lib/bindata/sanitize.rb

Overview

A BinData object accepts arbitrary parameters. This class sanitizes those parameters so they can be used by the BinData object.

Instance Method Summary collapse

Constructor Details

#initialize(params, the_class) ⇒ SanitizedParameters

Returns a new instance of SanitizedParameters.



11
12
13
14
15
16
17
18
19
# File 'lib/bindata/sanitize.rb', line 11

def initialize(params, the_class)
  @all_sanitized = false
  @the_class = the_class

  @parameters = {}
  params.each { |param, value| @parameters[param.to_sym] = value }

  ensure_no_nil_values
end

Instance Method Details

#[](param) ⇒ Object



26
27
28
# File 'lib/bindata/sanitize.rb', line 26

def [](param)
  @parameters[param]
end

#[]=(param, value) ⇒ Object



30
31
32
# File 'lib/bindata/sanitize.rb', line 30

def []=(param, value)
  @parameters[param] = value unless @all_sanitized
end

#all_sanitized?Boolean

Returns:

  • (Boolean)


42
43
44
# File 'lib/bindata/sanitize.rb', line 42

def all_sanitized?
  @all_sanitized
end

#delete(param) ⇒ Object



69
70
71
# File 'lib/bindata/sanitize.rb', line 69

def delete(param)
  @parameters.delete(param)
end

#has_parameter?(param) ⇒ Boolean

Returns:

  • (Boolean)


34
35
36
# File 'lib/bindata/sanitize.rb', line 34

def has_parameter?(param)
  @parameters.has_key?(param)
end

#lengthObject Also known as: size



21
22
23
# File 'lib/bindata/sanitize.rb', line 21

def length
  @parameters.size
end

#move_unknown_parameters_to(dest) ⇒ Object



59
60
61
62
63
64
65
66
67
# File 'lib/bindata/sanitize.rb', line 59

def move_unknown_parameters_to(dest)
  unless @all_sanitized
    unused_keys = @parameters.keys - @the_class.accepted_parameters.all
    unused_keys.each do |param|
      next if param == :onlyif
      dest[param] = @parameters.delete(param)
    end
  end
end

#needs_sanitizing?(param) ⇒ Boolean

Returns:

  • (Boolean)


38
39
40
# File 'lib/bindata/sanitize.rb', line 38

def needs_sanitizing?(param)
  has_parameter?(param) and not self[param].is_a?(SanitizedParameter)
end

#sanitize!(sanitizer) ⇒ Object



46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/bindata/sanitize.rb', line 46

def sanitize!(sanitizer)
  unless @all_sanitized
    merge_default_parameters!

    @the_class.sanitize_parameters!(self, sanitizer)

    ensure_mandatory_parameters_exist
    ensure_mutual_exclusion_of_parameters

    @all_sanitized = true
  end
end