Sha256: 3c4ba4bdc82583eb3e9e30b42a3fab8844e9daf2f34da08f4d325f8ed314314f

Contents?: true

Size: 886 Bytes

Versions: 16

Compression:

Stored size: 886 Bytes

Contents

module Ruby2JS
  class Converter

    # (defs (self) :foo
    #   (args)
    #   (...)

    # NOTE: defp is only produced by filters

    handle :defs, :defp do |target, method, args, body|
      parse transform_defs(target, method, args, body)
    end

    def transform_defs(target, method, args, body)
      if not @ast.is_method? or @ast.type == :defp
        s(:prop, target, method.to_s => 
          {enumerable: s(:true), configurable: s(:true),
          get: s(:block, s(:send, nil, :proc), args,
          s(:autoreturn, body))})
      elsif method =~ /=$/
        s(:prop, target, method.to_s.sub('=', '') => 
          {enumerable: s(:true), configurable: s(:true),
          set: s(:block, s(:send, nil, :proc), args,
          body)})
      else
        s(:send, target, "#{method}=", 
          s(:block, s(:send, nil, :lambda), args, body))
      end
    end
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
ruby2js-1.15.1 lib/ruby2js/converter/defs.rb
ruby2js-1.15.0 lib/ruby2js/converter/defs.rb
ruby2js-1.14.1 lib/ruby2js/converter/defs.rb
ruby2js-1.14.0 lib/ruby2js/converter/defs.rb
ruby2js-1.13.1 lib/ruby2js/converter/defs.rb
ruby2js-1.13.0 lib/ruby2js/converter/defs.rb
ruby2js-1.12.2 lib/ruby2js/converter/defs.rb
ruby2js-1.12.1 lib/ruby2js/converter/defs.rb
ruby2js-1.12.0 lib/ruby2js/converter/defs.rb
ruby2js-1.11.1 lib/ruby2js/converter/defs.rb
ruby2js-1.11.0 lib/ruby2js/converter/defs.rb
ruby2js-1.10.0 lib/ruby2js/converter/defs.rb
ruby2js-1.9.3 lib/ruby2js/converter/defs.rb
ruby2js-1.9.2 lib/ruby2js/converter/defs.rb
ruby2js-1.9.1 lib/ruby2js/converter/defs.rb
ruby2js-1.9.0 lib/ruby2js/converter/defs.rb