Sha256: f692435f382cce5c825b66f6cd70537a305cf93ea079f2820b96c91611b4038e

Contents?: true

Size: 1.27 KB

Versions: 135

Compression:

Stored size: 1.27 KB

Contents

/** 
 * Copyright 2005-2007 Xue Yong Zhi
 * Distributed under the BSD License
 */

package com.xruby.compiler.codedom;

import java.util.*;

public class HashExpression extends Expression {
	
	class ExpressionPair implements Visitable {
		private Expression key;
		private Expression value;

		ExpressionPair(Expression k, Expression v) {
			key = k;
			value = v;
		}

		public void accept(CodeVisitor visitor) {
			key.accept(visitor);
			value.accept(visitor);
			visitor.visitHashElement();
		}
	}
	
	private ArrayList<ExpressionPair> elements_ = new ArrayList<ExpressionPair>();
	private Expression last_exp_ = null;

	//Hash may look like "{1, 2, 2, 4, 3, 6}", it should be converted to "{1=>2, 2=>4, 3 => 6}"
	public void addElement(Expression k, Expression v) {
		if (null != v) {
			elements_.add(new ExpressionPair(k, v));
		} else {
			if (null == last_exp_) {
				last_exp_ = k;
			} else {
				elements_.add(new ExpressionPair(last_exp_, k));
				last_exp_ = null;
			}
		}
		//TODO throw exception if "odd number list for Hash"
	}

	public void accept(CodeVisitor visitor) {
		visitor.visitHashBegin();
		
		int i = 0;
		for (ExpressionPair e : elements_) {
			e.accept(visitor);
			++i;
		}
		
		visitor.visitHashEnd();
	}
}

Version data entries

135 entries across 135 versions & 2 rubygems

Version Path
rhodes-7.6.0 platform/shared/xruby/src/com/xruby/compiler/codedom/HashExpression.java
rhodes-7.5.1 platform/shared/xruby/src/com/xruby/compiler/codedom/HashExpression.java
rhodes-7.4.1 platform/shared/xruby/src/com/xruby/compiler/codedom/HashExpression.java
rhodes-7.1.17 platform/shared/xruby/src/com/xruby/compiler/codedom/HashExpression.java
rhodes-6.2.0 platform/shared/xruby/src/com/xruby/compiler/codedom/HashExpression.java
rhodes-6.0.11 platform/shared/xruby/src/com/xruby/compiler/codedom/HashExpression.java
rhodes-5.5.18 platform/shared/xruby/src/com/xruby/compiler/codedom/HashExpression.java
rhodes-5.5.17 platform/shared/xruby/src/com/xruby/compiler/codedom/HashExpression.java
rhodes-5.5.15 platform/shared/xruby/src/com/xruby/compiler/codedom/HashExpression.java
rhodes-5.5.0.22 platform/shared/xruby/src/com/xruby/compiler/codedom/HashExpression.java
rhodes-5.5.2 platform/shared/xruby/src/com/xruby/compiler/codedom/HashExpression.java
rhodes-5.5.0.7 platform/shared/xruby/src/com/xruby/compiler/codedom/HashExpression.java
rhodes-5.5.0.3 platform/shared/xruby/src/com/xruby/compiler/codedom/HashExpression.java
rhodes-5.5.0 platform/shared/xruby/src/com/xruby/compiler/codedom/HashExpression.java
tauplatform-1.0.3 platform/shared/xruby/src/com/xruby/compiler/codedom/HashExpression.java
tauplatform-1.0.2 platform/shared/xruby/src/com/xruby/compiler/codedom/HashExpression.java
tauplatform-1.0.1 platform/shared/xruby/src/com/xruby/compiler/codedom/HashExpression.java
rhodes-3.5.1.12 platform/shared/xruby/src/com/xruby/compiler/codedom/HashExpression.java
rhodes-3.3.5 platform/shared/xruby/src/com/xruby/compiler/codedom/HashExpression.java
rhodes-3.4.2 platform/shared/xruby/src/com/xruby/compiler/codedom/HashExpression.java