package com.drawbridge.jsengine.jsobjects; public class JSString extends JSObject { public String mValue; public JSString(String string){ mValue = string; //TODO make sure these methods work properties.put("charAt", new JSNativeFunction(this, "charAt", new Class<?>[] {JSString.class, JSNumber.class})); properties.put("charCodeAt", new JSNativeFunction(this, "charCodeAt", new Class<?>[] {JSString.class,JSNumber.class})); properties.put("concat", new JSNativeFunction(this, "concat", new Class<?>[] {JSString.class,JSString.class})); properties.put("fromCharCode", new JSNativeFunction(this, "fromCharCode", new Class<?>[] {JSString.class,JSString.class})); properties.put("indexOf", new JSNativeFunction(this, "indexOf", new Class<?>[] {JSString.class,JSString.class})); properties.put("lastIndexOf", new JSNativeFunction(this, "lastIndexOf", new Class<?>[] {JSString.class,JSString.class})); properties.put("match", new JSNativeFunction(this, "match", new Class<?>[] {JSString.class,JSString.class})); properties.put("replace", new JSNativeFunction(this, "replace", new Class<?>[] {JSString.class,JSString.class})); properties.put("search", new JSNativeFunction(this, "search", new Class<?>[] {JSString.class,JSString.class})); properties.put("slice", new JSNativeFunction(this, "slice", new Class<?>[] {JSString.class,JSString.class})); properties.put("split", new JSNativeFunction(this, "split", new Class<?>[] {JSString.class,JSString.class})); properties.put("substr", new JSNativeFunction(this, "substr", new Class<?>[] {JSString.class,JSString.class})); properties.put("substring", new JSNativeFunction(this, "substring", new Class<?>[] {JSString.class,JSString.class})); properties.put("toLowerCase", new JSNativeFunction(this, "toLowerCase", new Class<?>[] {JSString.class,JSString.class})); properties.put("toUpperCase", new JSNativeFunction(this, "toUpperCase", new Class<?>[] {JSString.class})); properties.put("trim", new JSNativeFunction(this, "trim", null)); properties.put("valueOf", new JSNativeFunction(this, "valueOf", null)); } @Override public JSType getProperty(String name){ return properties.get(name); } @Override public void addProperty(String name, JSType value){ // Can't add properties to a number } @Override public String toString(){ return "\"" + mValue + "\""; } @Override public boolean equals(Object obj){ if(obj instanceof JSString){ if(this.mValue.equals(((JSString) obj).mValue)) return true; } return false; } }