class RedParse::ListInNode::HashLiteralNode

Attributes

no_arrows[R]
no_braces[RW]
offset[W]

Public Class Methods

new(open,contents,close) click to toggle source
Calls superclass method RedParse::ListInNode::Node::new
# File lib/redparse/node.rb, line 4655
def initialize(open,contents,close)
  @offset=open.offset rescue contents.first.offset
  case contents
  when nil; super()
  when ArrowOpNode; super(contents.first,contents.last)
  when CommaOpNode,Array
    if ArrowOpNode===contents.first
      data=[]
      contents.each{|pair|
        ArrowOpNode===pair or fail
        data.push pair.first,pair.last
      }
    else
      @no_arrows=true
      data=Array[*contents]
    end
    super(*data)
  else fail
  end
  @no_braces=true unless open
end

Public Instance Methods

as_h() click to toggle source
# File lib/redparse/node.rb, line 4709
def as_h
  return @h if defined? @h
  @h={}
  (0...size).step(2){|i|
    k=self[i].dup
    k.delete_extraneous_ivars!
    k.delete_linenums!
    @h[k]=self[i+1]
  }
  return @h
end
blame() click to toggle source
# File lib/redparse/node.rb, line 4730
def blame; self end
error?(rubyversion=1.8) click to toggle source
Calls superclass method RedParse::ListInNode::Node#error?
# File lib/redparse/node.rb, line 4725
def error? rubyversion=1.8
  return true if defined?(@no_arrows) and rubyversion>=1.9
  return super
end
get(k) click to toggle source
# File lib/redparse/node.rb, line 4697
def get k
  case k
  when Node; 
    k.delete_extraneous_ivars!
    k.delete_linenums!
  when Symbol, Numeric; k=LiteralNode[k]
  when true,false,nil; k=VarLikeNode[k.inspect]
  else raise ArgumentError
  end
  return as_h[k]
end
image() click to toggle source
# File lib/redparse/node.rb, line 4681
def image; "({})" end
msg() click to toggle source
# File lib/redparse/node.rb, line 4731
def msg; "comma not allowed within pairs in hashes anymore" end
parsetree(o) click to toggle source
# File lib/redparse/node.rb, line 4721
def parsetree(o)
  map{|elem| elem.rescue_parsetree(o)}.unshift :hash
end
unparse(o=default_unparse_options) click to toggle source
# File lib/redparse/node.rb, line 4683
def unparse o=default_unparse_options
  result=''
  result << "{" unless defined? @no_braces and @no_braces
  arrow= defined?(@no_arrows) ? " , " : " => "
  (0...size).step(2){|i| 
    result<< unparse_nl(self[i],o,'')+
      self[i].unparse_maybe_parens(o)+arrow+
      self[i+1].unparse_maybe_parens(o)+', '
  }
  result.chomp! ', '
  result << "}" unless defined? @no_braces and @no_braces
  return result
end