@JRubyMethod(name = "decode_json", meta = true) public static IRubyObject decodeJson(ThreadContext context, IRubyObject recv, IRubyObject json) { Ruby runtime = context.runtime; RubyMessage ret = (RubyMessage) ((RubyClass) recv).newInstance(context, Block.NULL_BLOCK); RubyModule jsonModule = runtime.getClassFromPath("JSON"); RubyHash opts = RubyHash.newHash(runtime); opts.fastASet(runtime.newSymbol("symbolize_names"), runtime.getTrue()); IRubyObject[] args = new IRubyObject[] { Helpers.invoke(context, jsonModule, "parse", json, opts) }; ret.initialize(context, args); return ret; }
private static void handleDefaultAttributeAnnotation(Class<? extends Processor> processor, RubyClass rubyClass) { Ruby rubyRuntime = rubyClass.getRuntime(); if (processor.isAnnotationPresent(DefaultAttribute.class)) { DefaultAttribute defaultAttribute = processor.getAnnotation(DefaultAttribute.class); RubyHash defaultAttrs = RubyHash.newHash(rubyRuntime); defaultAttrs.put(defaultAttribute.key(), defaultAttribute.value()); rubyClass.callMethod(rubyRuntime.getCurrentContext(), "option", new IRubyObject[]{ rubyRuntime.newSymbol("default_attrs"), defaultAttrs }); } }
public static RubyHash toNoneSymbolsRubyHash(Ruby rubyRuntime, Map<String, Object> map) { RubyHash rubyHash = new RubyHash(rubyRuntime); Set<Entry<String, Object>> entrySet = map.entrySet(); for (Entry<String, Object> entry : entrySet) { rubyHash.put(toJavaObject(entry.getKey()), toJavaObject(entry.getValue())); } return rubyHash; }
/** rb_hash_invert * */ @JRubyMethod(name = "invert") public RubyHash invert(final ThreadContext context) { final RubyHash result = newHash(getRuntime()); visitAll(context, InvertVisitor, result); return result; }
/** rb_hash_new * */ public static final RubyHash newHash(Ruby runtime) { return new RubyHash(runtime); }
@Override public boolean containsKey(Object key) { if (!(key instanceof String)) { return false; } RubySymbol symbol = rubyHash.getRuntime().getSymbolTable().getSymbol((String) key); return rubyHash.containsKey(symbol); }
@SuppressWarnings("unchecked") public String[] getEnv() { RubyHash hash = (RubyHash) runtime.getObject().getConstant("ENV"); int i=0; String[] env = new String[hash.size()]; for (Iterator<Entry<Object, Object>> iter = hash.directEntrySet().iterator(); iter.hasNext(); i++) { Map.Entry<Object, Object> entry = iter.next(); env[i] = entry.getKey().toString() + "=" + entry.getValue().toString(); } return env; }
@Override public boolean remove(RubyHash hash, Object o) { return hash.remove(o) != null; } };
/** rb_hash_select * */ @JRubyMethod(name = "select") public IRubyObject select(final ThreadContext context, final Block block) { final Ruby runtime = context.runtime; if (!block.isGiven()) return enumeratorizeWithSize(context, this, "select", enumSizeFn()); final RubyHash result = newHash(runtime); iteratorVisitAll(context, new SelectVisitor(result), block); return result; }
private static String getRubyEnv(RubyHash envHash, String var, String default_value) { var = (String) envHash.get(var); return var == null ? default_value : var; } }
@Override public Object remove(Object key) { if (!(key instanceof String)) { return null; } Object oldValue = get(key); RubySymbol symbol = rubyHash.getRuntime().getSymbolTable().getSymbol((String) key); rubyHash.remove(symbol); return convertRubyValue(oldValue); }
@Override public Object put(String key, Object value) { Object oldValue = get(key); RubySymbol symbol = rubyHash.getRuntime().getSymbolTable().getSymbol(key); rubyHash.put(symbol, convertJavaValue(value)); return oldValue; }
@Override public void clear() { RubyHash.this.clear(); }
@Override public RubyHash to_hash() { RubyHash hash = new RubyHash(getRuntime()); Set<Map.Entry> entries = ((Map) ((JavaProxy)receiver).getObject()).entrySet(); for (Map.Entry entry : entries) { IRubyObject key = JavaUtil.convertJavaToUsableRubyObject(getRuntime(), entry.getKey()); IRubyObject value = JavaUtil.convertJavaToUsableRubyObject(getRuntime(), entry.getValue()); hash.op_aset(getRuntime().getCurrentContext(), key, value); } return hash; } }
@Override public Object get(Object key) { if (!(key instanceof String)) { return false; } RubySymbol symbol = rubyHash.getRuntime().getSymbolTable().getSymbol((String) key); Object value = rubyHash.get(symbol); return convertRubyValue(value); }
private RubyFixnum getTTL(ThreadContext context, IRubyObject[] args, int index) { Ruby ruby = context.getRuntime(); if (args.length > index) { if (args[index] instanceof RubyFixnum) { return (RubyFixnum) args[index]; } else if (args[index] instanceof RubyHash) { RubyHash options = (RubyHash) args[index]; if (options.containsKey(ruby.newSymbol("ttl"))) { Long ttl = (Long) options.get(ruby.newSymbol("ttl")); return ruby.newFixnum(ttl); } else if (options.containsKey(ruby.newSymbol("expires_in"))) { Long expiresIn = (Long) options.get(ruby.newSymbol("expires_in")); return ruby.newFixnum(expiresIn); } } } return ruby.newFixnum(super.getDefaultTTL()); }