Class: DeRjs::JavaScriptCollectionProxy

Inherits:
JavaScriptProxy show all
Defined in:
lib/de_rjs/jquery_generator.rb

Overview

:nodoc:

Direct Known Subclasses

JavaScriptElementCollectionProxy

Constant Summary collapse

ENUMERABLE_METHODS_WITH_RETURN =
[:all, :any, :collect, :map, :detect, :find, :find_all, :select, :max, :min, :partition, :reject, :sort_by, :in_groups_of, :each_slice]
ENUMERABLE_METHODS =
ENUMERABLE_METHODS_WITH_RETURN + [:each]

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from JavaScriptProxy

#==, #is_a?

Constructor Details

#initialize(generator, pattern) ⇒ JavaScriptCollectionProxy

Returns a new instance of JavaScriptCollectionProxy.



713
714
715
# File 'lib/de_rjs/jquery_generator.rb', line 713

def initialize(generator, pattern)
  super(generator, @pattern = pattern)
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method, *arguments, &block) ⇒ Object (private)



760
761
762
763
764
765
766
767
768
# File 'lib/de_rjs/jquery_generator.rb', line 760

def method_missing(method, *arguments, &block)
  if ENUMERABLE_METHODS.include?(method)
    returnable = ENUMERABLE_METHODS_WITH_RETURN.include?(method)
    variable   = arguments.first if returnable
    enumerate(method, {:variable => (arguments.first if returnable), :return => returnable, :yield_args => %w(value index)}, &block)
  else
    super
  end
end

Instance Attribute Details

#generatorObject (readonly)

Returns the value of attribute generator.



710
711
712
# File 'lib/de_rjs/jquery_generator.rb', line 710

def generator
  @generator
end

Instance Method Details

#each_slice(variable, number, &block) ⇒ Object



717
718
719
720
721
722
723
724
# File 'lib/de_rjs/jquery_generator.rb', line 717

def each_slice(variable, number, &block)
  if block
    enumerate :eachSlice, :variable => variable, :method_args => [number], :yield_args => %w(value index), :return => true, &block
  else
    add_variable_assignment!(variable)
    append_enumerable_function!("eachSlice(#{::ActiveSupport::JSON.encode(number)});")
  end
end

#grep(variable, pattern, &block) ⇒ Object



726
727
728
# File 'lib/de_rjs/jquery_generator.rb', line 726

def grep(variable, pattern, &block)
  enumerate :grep, :variable => variable, :return => true, :method_args => [JsonLiteral.new(pattern.inspect)], :yield_args => %w(value index), &block
end

#in_groups_of(variable, number, fill_with = nil) ⇒ Object



730
731
732
733
734
735
# File 'lib/de_rjs/jquery_generator.rb', line 730

def in_groups_of(variable, number, fill_with = nil)
  arguments = [number]
  arguments << fill_with unless fill_with.nil?
  add_variable_assignment!(variable)
  append_enumerable_function!("inGroupsOf(#{arguments_for_call arguments});")
end

#inject(variable, memo, &block) ⇒ Object



737
738
739
# File 'lib/de_rjs/jquery_generator.rb', line 737

def inject(variable, memo, &block)
  enumerate :inject, :variable => variable, :method_args => [memo], :yield_args => %w(memo value index), :return => true, &block
end

#pluck(variable, property) ⇒ Object



741
742
743
744
# File 'lib/de_rjs/jquery_generator.rb', line 741

def pluck(variable, property)
  add_variable_assignment!(variable)
  append_enumerable_function!("pluck(#{::ActiveSupport::JSON.encode(property)});")
end

#zip(variable, *arguments, &block) ⇒ Object



746
747
748
749
750
751
752
753
754
755
756
757
# File 'lib/de_rjs/jquery_generator.rb', line 746

def zip(variable, *arguments, &block)
  add_variable_assignment!(variable)
  append_enumerable_function!("zip(#{arguments_for_call arguments}")
  if block
    function_chain[-1] += ", function(array) {"
    yield JsonLiteral.new('array')
    add_return_statement!
    @generator << '});'
  else
    function_chain[-1] += ');'
  end
end