public static RubyString pack(ThreadContext context, RubyArray list, RubyString formatString) { RubyString pack = packCommon(context, list, formatString.getByteList(), formatString.isTaint(), executor()); return (RubyString) pack.infectBy(formatString); }
public static RubyString pack(ThreadContext context, RubyArray list, RubyString formatString) { RubyString pack = packCommon(context, list, formatString.getByteList(), formatString.isTaint(), executor()); return (RubyString) pack.infectBy(formatString); }
/** Convenience method when using no pattern caching */ public RubyString compileAndFormat(RubyString pattern, boolean dateLibrary, DateTime dt, long nsec, RubyNumeric sub_millis) { RubyString out = format(compilePattern(pattern, dateLibrary), dt, nsec, sub_millis); out.setEncoding(pattern.getEncoding()); if (pattern.isTaint()) out.setTaint(true); return out; }
/** Convenience method when using no pattern caching */ public RubyString compileAndFormat(RubyString pattern, boolean dateLibrary, DateTime dt, long nsec, RubyNumeric sub_millis) { RubyString out = format(compilePattern(pattern, dateLibrary), dt, nsec, sub_millis); out.setEncoding(pattern.getEncoding()); if (pattern.isTaint()) out.setTaint(true); return out; }
public IRubyObject parse(ThreadContext context, final String format, final RubyString text) { final List<StrptimeToken> compiledPattern = context.runtime.getCachedStrptimePattern(format); final StrptimeParser.FormatBag bag = new StrptimeParser().parse(compiledPattern, text.asJavaString()); return bag == null ? context.nil : convertFormatBagToHash(context, bag, text.getEncoding(), text.isTaint()); }
public IRubyObject parse(ThreadContext context, final String format, final RubyString text) { final List<StrptimeToken> compiledPattern = context.runtime.getCachedStrptimePattern(format); final StrptimeParser.FormatBag bag = new StrptimeParser().parse(compiledPattern, text.asJavaString()); return bag == null ? context.nil : convertFormatBagToHash(context, bag, text.getEncoding(), text.isTaint()); }
/** * @see org.jruby.util.Pack#pack */ @JRubyMethod(name = "pack", required = 1, compat = RUBY1_8) public RubyString pack(ThreadContext context, IRubyObject obj) { RubyString iFmt = obj.convertToString(); try { return Pack.pack(getRuntime(), this, iFmt.getByteList(), iFmt.isTaint()); } catch (ArrayIndexOutOfBoundsException aioob) { concurrentModification(); return null; // not reached } }
/** * @see org.jruby.util.Pack#pack */ @JRubyMethod(name = "pack", required = 1, compat = RUBY1_8) public RubyString pack(ThreadContext context, IRubyObject obj) { RubyString iFmt = obj.convertToString(); try { return Pack.pack(getRuntime(), this, iFmt.getByteList(), iFmt.isTaint()); } catch (ArrayIndexOutOfBoundsException aioob) { concurrentModification(); return null; // not reached } }
@SuppressWarnings("fallthrough") public static RubyString pack19(ThreadContext context, Ruby runtime, RubyArray list, RubyString formatString) { RubyString pack = packCommon(runtime, list, formatString.getByteList(), formatString.isTaint(), executor19()); pack = (RubyString) pack.infectBy(formatString); for (IRubyObject element : list.toJavaArray()) { if (element.isUntrusted()) { pack = (RubyString) pack.untrust(context); break; } } return pack; }
@SuppressWarnings("fallthrough") public static RubyString pack19(ThreadContext context, Ruby runtime, RubyArray list, RubyString formatString) { RubyString pack = packCommon(runtime, list, formatString.getByteList(), formatString.isTaint(), executor19()); pack = (RubyString) pack.infectBy(formatString); for (IRubyObject element : list.toJavaArray()) { if (element.isUntrusted()) { pack = (RubyString) pack.untrust(context); break; } } return pack; }
public static void replaceInternal19(Ruby runtime, int beg, int len, RubyString source, RubyString repl) { if (len < 0) throw runtime.newIndexError("negative length " + len); int slen = strLengthFromRubyString(source, source.checkEncoding(repl)); if (slen < beg) { throw runtime.newIndexError("index " + beg + " out of string"); } if (beg < 0) { if (-beg > slen) { throw runtime.newIndexError("index " + beg + " out of string"); } beg += slen; } if (slen < len || slen < beg + len) { len = slen - beg; } replaceInternal19(beg, len, source, repl); if (repl.isTaint()) source.setTaint(true); }
public static void replaceInternal19(Ruby runtime, int beg, int len, RubyString source, RubyString repl) { if (len < 0) throw runtime.newIndexError("negative length " + len); int slen = strLengthFromRubyString(source, source.checkEncoding(repl)); if (slen < beg) { throw runtime.newIndexError("index " + beg + " out of string"); } if (beg < 0) { if (-beg > slen) { throw runtime.newIndexError("index " + beg + " out of string"); } beg += slen; } if (slen < len || slen < beg + len) { len = slen - beg; } replaceInternal19(beg, len, source, repl); if (repl.isTaint()) source.setTaint(true); }
private void inspectSet(final ThreadContext context, final RubyString str) { str.cat((byte) '{'); boolean tainted = isTaint(); boolean notFirst = false; for ( IRubyObject elem : elementsOrdered() ) { final RubyString s = inspect(context, elem); if ( s.isTaint() ) tainted = true; if ( notFirst ) str.cat((byte) ',').cat((byte) ' '); else str.setEncoding( s.getEncoding() ); notFirst = true; str.cat19( s ); } str.cat((byte) '}'); if ( tainted ) str.setTaint(true); }
private RubyString opFormatCommon(ThreadContext context, IRubyObject arg) { IRubyObject tmp; if (arg instanceof RubyHash) { tmp = arg; } else { tmp = arg.checkArrayType(); if (tmp.isNil()) tmp = arg; } ByteList out = new ByteList(value.getRealSize()); out.setEncoding(value.getEncoding()); boolean tainted; // FIXME: Should we make this work with platform's locale, // or continue hardcoding US? tainted = Sprintf.sprintf1_9(out, Locale.US, value, tmp); RubyString str = newString(context.runtime, out); str.setTaint(tainted || isTaint()); return str; }
@Override protected IRubyObject inspectAry(ThreadContext context) { if (!packed()) return super.inspectAry(context); final Ruby runtime = context.runtime; RubyString str = RubyString.newStringLight(runtime, DEFAULT_INSPECT_STR_SIZE, USASCIIEncoding.INSTANCE); str.cat((byte) '['); boolean tainted = isTaint(); RubyString s = inspect(context, value); if (s.isTaint()) tainted = true; else str.setEncoding(s.getEncoding()); str.cat19(s); str.cat((byte) ']'); if (tainted) str.setTaint(true); return str; }
private RubyString opFormatCommon(ThreadContext context, IRubyObject arg) { IRubyObject tmp; if (arg instanceof RubyHash) { tmp = arg; } else { tmp = arg.checkArrayType(); if (tmp.isNil()) tmp = arg; } ByteList out = new ByteList(value.getRealSize()); out.setEncoding(value.getEncoding()); boolean tainted; // FIXME: Should we make this work with platform's locale, // or continue hardcoding US? tainted = Sprintf.sprintf1_9(out, Locale.US, value, tmp); RubyString str = newString(context.runtime, out); str.setTaint(tainted || isTaint()); return str; }
private void inspectSet(final ThreadContext context, final RubyString str) { str.cat((byte) '{'); boolean tainted = isTaint(); boolean notFirst = false; for ( IRubyObject elem : elementsOrdered() ) { final RubyString s = inspect(context, elem); if ( s.isTaint() ) tainted = true; if ( notFirst ) str.cat((byte) ',').cat((byte) ' '); else str.setEncoding( s.getEncoding() ); notFirst = true; str.cat19( s ); } str.cat((byte) '}'); if ( tainted ) str.setTaint(true); }
@Override protected IRubyObject inspectAry(ThreadContext context) { if (!packed()) return super.inspectAry(context); final Ruby runtime = context.runtime; RubyString str = RubyString.newStringLight(runtime, DEFAULT_INSPECT_STR_SIZE, USASCIIEncoding.INSTANCE); str.cat((byte) '['); boolean tainted = isTaint(); RubyString s = inspect(context, value); if (s.isTaint()) tainted = true; else str.setEncoding(s.getEncoding()); str.cat19(s); str.cat((byte) ']'); if (tainted) str.setTaint(true); return str; }
private int writeInternal18(ThreadContext context, IRubyObject arg) { checkWritable(); RubyString val = arg.asString(); ptr.string.modify(); if (ptr.modes.isAppendable()) { ptr.string.getByteList().append(val.getByteList()); ptr.pos = ptr.string.getByteList().length(); } else { int left = ptr.string.getByteList().length()-(int)ptr.pos; ptr.string.getByteList().replace((int)ptr.pos,Math.min(val.getByteList().length(),left),val.getByteList()); ptr.pos += val.getByteList().length(); } if (val.isTaint()) { ptr.string.setTaint(true); } return val.getByteList().length(); }
private int writeInternal18(ThreadContext context, IRubyObject arg) { checkWritable(); RubyString val = arg.asString(); ptr.string.modify(); if (ptr.modes.isAppendable()) { ptr.string.getByteList().append(val.getByteList()); ptr.pos = ptr.string.getByteList().length(); } else { int left = ptr.string.getByteList().length()-(int)ptr.pos; ptr.string.getByteList().replace((int)ptr.pos,Math.min(val.getByteList().length(),left),val.getByteList()); ptr.pos += val.getByteList().length(); } if (val.isTaint()) { ptr.string.setTaint(true); } return val.getByteList().length(); }