Sha256: b3eee8131ddf366d2eeeb400f6dc9d97a725b2632a96c63d80ce182183cdf178

Contents?: true

Size: 833 Bytes

Versions: 7

Compression:

Stored size: 833 Bytes

Contents

class WWW_App
  module JavaScript

    class DSL < BasicObject

      include ::Kernel

      def initialize &blok
        @js = []
        instance_eval &blok
      end

      %w[ add_class ].each { |name|
        eval <<-EOF, nil, __FILE__, __LINE__ + 1
          def #{name} *args
            run_method :#{name}, args
          end
        EOF
      }
      def run_method name, args
        self << name
        self << args
        self
      end

      def raw_code
        @js
      end

      def concat arr
        @js.concat(arr)
      end

      def << *args
        @js.<<(*args)
      end

      def capture &blok
        orig = @js
        new  = []
        @js = new
        instance_eval &blok
        @js = orig
        new
      end

    end # === class DSL

  end # === module JavaScript
end # === class WWW_App

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
www_app-2.3.0 lib/www_app/JavaScript.rb
www_app-2.1.3 lib/www_app/JavaScript.rb
www_app-2.1.1 lib/www_app/JavaScript.rb
www_app-2.1.0 lib/www_app/JavaScript.rb
www_app-2.0.2 lib/www_app/JavaScript.rb
www_app-2.0.1 lib/www_app/JavaScript.rb
www_app-2.0.0 lib/www_app/JavaScript.rb