Class: FastSerializer::JsonModel::Attribute
- Defined in:
- lib/fast_serializer/json_model/attribute.rb
Direct Known Subclasses
Instance Attribute Summary collapse
- 
  
    
      #cond  ⇒ Object 
    
    
  
  
  
  
    
    
  
  
  
  
  
  
    Returns the value of attribute cond. 
- 
  
    
      #cond_arity  ⇒ Object 
    
    
  
  
  
  
    
    
  
  
  
  
  
  
    Returns the value of attribute cond_arity. 
- 
  
    
      #cond_method_name  ⇒ Object 
    
    
  
  
  
  
    
    
  
  
  
  
  
  
    Returns the value of attribute cond_method_name. 
- 
  
    
      #context  ⇒ Object 
    
    
  
  
  
  
    
    
  
  
  
  
  
  
    Returns the value of attribute context. 
- 
  
    
      #injected  ⇒ Object 
    
    
  
  
  
  
    
    
  
  
  
  
  
  
    Returns the value of attribute injected. 
- 
  
    
      #key  ⇒ Object 
    
    
  
  
  
  
    
    
  
  
  
  
  
  
    Returns the value of attribute key. 
- 
  
    
      #method  ⇒ Object 
    
    
  
  
  
  
    
    
  
  
  
  
  
  
    Returns the value of attribute method. 
- 
  
    
      #method_arity  ⇒ Object 
    
    
  
  
  
  
    
    
  
  
  
  
  
  
    Returns the value of attribute method_arity. 
- 
  
    
      #method_name  ⇒ Object 
    
    
  
  
  
  
    
    
  
  
  
  
  
  
    Returns the value of attribute method_name. 
- 
  
    
      #mixin  ⇒ Object 
    
    
  
  
  
  
    
    
  
  
  
  
  
  
    Returns the value of attribute mixin. 
- 
  
    
      #opts  ⇒ Object 
    
    
  
  
  
  
    
    
  
  
  
  
  
  
    Returns the value of attribute opts. 
Instance Method Summary collapse
- #included?(resource, params, context) ⇒ Boolean
- 
  
    
      #initialize(key, method, opts = {})  ⇒ Attribute 
    
    
  
  
  
    constructor
  
  
  
  
  
  
  
    A new instance of Attribute. 
- #inject(context) ⇒ Object
- #injectable? ⇒ Boolean
- #serialize(resource, params, context) ⇒ Object
Constructor Details
#initialize(key, method, opts = {}) ⇒ Attribute
Returns a new instance of Attribute.
| 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | # File 'lib/fast_serializer/json_model/attribute.rb', line 18 def initialize(key, method, opts = {}) super() @opts = opts || {} @injected_methods = Hash.new { |h, method_name| h[method_name] = true } @key = key.to_sym @method = !method ? key : method @mixin = Module.new @injected = false @method_name = @method && !@method.is_a?(Proc) ? @method : nil @method_arity = @method.is_a?(Proc) ? [@method.arity, 0].max : nil @cond = @opts[:if] || @opts[:unless] @cond_method_name = @cond && !@cond.is_a?(Proc) ? @cond : nil @cond_arity = @cond.is_a?(Proc) ? [@cond.arity, 0].max : nil init_with_proc if @method.is_a?(Proc) init_with_cond if @cond && @cond.is_a?(Proc) end | 
Instance Attribute Details
#cond ⇒ Object
Returns the value of attribute cond.
| 6 7 8 | # File 'lib/fast_serializer/json_model/attribute.rb', line 6 def cond @cond end | 
#cond_arity ⇒ Object
Returns the value of attribute cond_arity.
| 6 7 8 | # File 'lib/fast_serializer/json_model/attribute.rb', line 6 def cond_arity @cond_arity end | 
#cond_method_name ⇒ Object
Returns the value of attribute cond_method_name.
| 6 7 8 | # File 'lib/fast_serializer/json_model/attribute.rb', line 6 def cond_method_name @cond_method_name end | 
#context ⇒ Object
Returns the value of attribute context.
| 6 7 8 | # File 'lib/fast_serializer/json_model/attribute.rb', line 6 def context @context end | 
#injected ⇒ Object
Returns the value of attribute injected.
| 6 7 8 | # File 'lib/fast_serializer/json_model/attribute.rb', line 6 def injected @injected end | 
#key ⇒ Object
Returns the value of attribute key.
| 6 7 8 | # File 'lib/fast_serializer/json_model/attribute.rb', line 6 def key @key end | 
#method ⇒ Object
Returns the value of attribute method.
| 6 7 8 | # File 'lib/fast_serializer/json_model/attribute.rb', line 6 def method @method end | 
#method_arity ⇒ Object
Returns the value of attribute method_arity.
| 6 7 8 | # File 'lib/fast_serializer/json_model/attribute.rb', line 6 def method_arity @method_arity end | 
#method_name ⇒ Object
Returns the value of attribute method_name.
| 6 7 8 | # File 'lib/fast_serializer/json_model/attribute.rb', line 6 def method_name @method_name end | 
#mixin ⇒ Object
Returns the value of attribute mixin.
| 6 7 8 | # File 'lib/fast_serializer/json_model/attribute.rb', line 6 def mixin @mixin end | 
#opts ⇒ Object
Returns the value of attribute opts.
| 6 7 8 | # File 'lib/fast_serializer/json_model/attribute.rb', line 6 def opts @opts end | 
Instance Method Details
#included?(resource, params, context) ⇒ Boolean
| 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 | # File 'lib/fast_serializer/json_model/attribute.rb', line 72 def included?(resource, params, context) return true if !cond can_execute_on_mixin = !!(injected && cond_method_name && @injected_methods.key?(cond_method_name) && context) res = if can_execute_on_mixin call_method_on_context(context, cond_method_name, cond_arity, resource, params) elsif cond.is_a?(Proc) call_proc_binding_to_context(context, cond, cond_arity, resource, params) else context.public_send(cond) end res = !res unless @opts[:unless].nil? res end | 
#inject(context) ⇒ Object
| 43 44 45 46 | # File 'lib/fast_serializer/json_model/attribute.rb', line 43 def inject(context) context.include(mixin) self.injected = true end | 
#injectable? ⇒ Boolean
| 39 40 41 | # File 'lib/fast_serializer/json_model/attribute.rb', line 39 def injectable? !mixin.nil? end | 
#serialize(resource, params, context) ⇒ Object
| 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | # File 'lib/fast_serializer/json_model/attribute.rb', line 52 def serialize(resource, params, context) can_execute_on_mixin = !!(injected && method_name && @injected_methods.key?(method_name) && context) val = if can_execute_on_mixin call_method_on_context(context, method_name, method_arity, resource, params) elsif method.is_a?(Proc) call_proc_binding_to_context(context, method, method_arity, resource, params) else resource.public_send(method_name) end val.freeze val end |