Sha256: 07e26ca58310f1537cee99f5d298fdd041c8960e787a2fa7ce410bdbb5b846f5

Contents?: true

Size: 1.43 KB

Versions: 17

Compression:

Stored size: 1.43 KB

Contents

module Ruby2JS
  class Converter

    # (ivar :@a)

    handle :ivar do |var|
      if self.ivars and self.ivars.include? var
        parse s(:hostvalue, self.ivars[var])
      else
        parse s(:attr, s(:self), var.to_s.sub('@', '_'))
      end
    end

    handle :hostvalue do |value|
      case value
      when Hash
        parse s(:hash, *value.map {|key, value| s(:pair, s(:hostvalue, key), 
          s(:hostvalue, value))})
      when Array
        parse s(:array, *value.map {|value| s(:hostvalue, value)})
      when String
        parse s(:str, value)
      when Integer
        parse s(:int, value)
      when Float
        parse s(:float, value)
      when true
        parse s(:true)
      when false
        parse s(:false)
      when nil
        parse s(:nil)
      when Symbol
        parse s(:sym, value)
      else
	value = value.as_json if value.respond_to?(:as_json)

        if value.respond_to?(:to_hash) and Hash === value.to_hash
	  parse s(:hostvalue, value.to_hash)
        elsif value.respond_to?(:to_ary) and Array === value.to_ary
	  parse s(:hostvalue, value.to_ary)
	elsif value.respond_to?(:to_str) and String === value.to_str
	  parse s(:str, value.to_str)
	elsif value.respond_to?(:to_int) and Integer === value.to_int
	  parse s(:int, value.to_int)
	elsif value.respond_to?(:to_sym) and Symbol === value.to_sym
	  parse s(:sym, value.to_sym)
	else
          parse s(:str, value.inspect)
	end
      end
    end
  end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
ruby2js-2.0.14 lib/ruby2js/converter/ivar.rb
ruby2js-2.0.13 lib/ruby2js/converter/ivar.rb
ruby2js-2.0.12 lib/ruby2js/converter/ivar.rb
ruby2js-2.0.11 lib/ruby2js/converter/ivar.rb
ruby2js-2.0.10 lib/ruby2js/converter/ivar.rb
ruby2js-2.0.9 lib/ruby2js/converter/ivar.rb
ruby2js-2.0.8 lib/ruby2js/converter/ivar.rb
ruby2js-2.0.7 lib/ruby2js/converter/ivar.rb
ruby2js-2.0.6 lib/ruby2js/converter/ivar.rb
ruby2js-2.0.5 lib/ruby2js/converter/ivar.rb
ruby2js-2.0.4 lib/ruby2js/converter/ivar.rb
ruby2js-2.0.3 lib/ruby2js/converter/ivar.rb
ruby2js-2.0.2 lib/ruby2js/converter/ivar.rb
ruby2js-2.0.1 lib/ruby2js/converter/ivar.rb
ruby2js-2.0.0 lib/ruby2js/converter/ivar.rb
ruby2js-1.15.1 lib/ruby2js/converter/ivar.rb
ruby2js-1.15.0 lib/ruby2js/converter/ivar.rb