Sha256: c70a5ef97d5d84a38feef2611d14dc24a8ef05f805aa1bac31c3722316190765

Contents?: true

Size: 1.17 KB

Versions: 1

Compression:

Stored size: 1.17 KB

Contents

module ActionView
  module Helpers
    class JavaScriptProxy
      public :method_missing
      
      protected 
      
      def wrap(function, *args)
        args = [function_chain[-1].chomp(';')].concat(args.collect(&:to_json)).join(', ')
        replace_line("#{function.to_s}(#{args});")
      end
      
      def replace_line(new_line)
        function_chain[-1] = new_line
      end
      
    end
  end
end


module UJS
  module JavascriptProxies
    
    class ReferencedJavascriptElementProxy < ActionView::Helpers::JavaScriptElementProxy
      
      def initialize(generator, var)
        @generator = generator
        @generator << var
      end
      
      def reload; end
      
    end
      
    class JavascriptArgumentProxy
      def initialize(proxy, *contructor_args)
        @proxy, @args = proxy, contructor_args
      end
      
      def method_missing(meth, *args)
        proxy = @proxy.new(*@args)
        proxy.__send__(meth, *args)
      end
    end
    
    class JavascriptEventProxy < ActionView::Helpers::JavaScriptProxy
      def stop
        wrap('Event.stop')
      end
      
      def element
        wrap('Event.element')
      end
    end 
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
compages-0.4.0 vendor/plugins/unobtrusive_javascript/lib/ujs/javascript_proxies.rb