Class: Ixtlan::Babel::ParamsFilter

Inherits:
Object
  • Object
show all
Defined in:
lib/ixtlan/babel/params_filter.rb

Instance Method Summary collapse

Constructor Details

#initialize(model_class) ⇒ ParamsFilter

Returns a new instance of ParamsFilter.



28
29
30
# File 'lib/ixtlan/babel/params_filter.rb', line 28

def initialize( model_class )
  @model_class = model_class
end

Instance Method Details

#filter_it(data) ⇒ Object



63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/ixtlan/babel/params_filter.rb', line 63

def filter_it( data )
  filter.options = self.class.config.single_options( @context_or_options )
  data = data.dup
  data = data[ filter.options[ :root ] ] if filter.options[ :root ]
  keeps = {}
  ( filter.options[ :keep ] || [] ).each do |k|
    keep = data[ k.to_s ] || data[ k.to_sym ]
    keeps[ k.to_s ] = data.delete( k.to_s ) || data.delete( k.to_sym ) unless keep.is_a? Hash
  end
  filtered_data = filter.filter( data )
  ( filter.options[ :keep ] || [] ).each do |k|
    keeps[ k.to_s ] = filtered_data.delete( k.to_s ) || filtered_data.delete( k.to_sym ) unless keeps.member?( k.to_s )
  end
  [ filtered_data, keeps ]
end

#new(data) ⇒ Object



79
80
81
# File 'lib/ixtlan/babel/params_filter.rb', line 79

def new( data )
  @model_class.new( filter( data ) )
end

#use(context_or_options) ⇒ Object



58
59
60
61
# File 'lib/ixtlan/babel/params_filter.rb', line 58

def use(context_or_options)
  @context_or_options = context_or_options
  self
end