private void checkAsciiEncodingName(ByteList name) { if (!name.getEncoding().isAsciiCompatible()) { throw runtime.newArgumentError("invalid name encoding (non ASCII)"); } }
final Encoding isCompatibleWith(EncodingCapable other) { if (other instanceof RubyString) return checkEncoding((RubyString)other); Encoding enc1 = value.getEncoding(); Encoding enc2 = other.getEncoding(); if (enc1 == enc2) return enc1; if (value.getRealSize() == 0) return enc2; if (!enc1.isAsciiCompatible() || !enc2.isAsciiCompatible()) return null; if (enc2 instanceof USASCIIEncoding) return enc1; if (scanForCodeRange() == CR_7BIT) return enc2; return null; }
public static boolean areComparableViaCodeRange(CodeRangeable string, CodeRangeable other) { int cr1 = string.scanForCodeRange(); int cr2 = other.scanForCodeRange(); if (cr1 == CR_7BIT && (cr2 == CR_7BIT || other.getByteList().getEncoding().isAsciiCompatible())) return true; if (cr2 == CR_7BIT && string.getByteList().getEncoding().isAsciiCompatible()) return true; return false; }
public boolean endsWithAsciiChar(char c) { ByteList value = this.value; int size; return value.getEncoding().isAsciiCompatible() && (size = value.realSize()) > 0 && value.get(size - 1) == c; }
@JRubyMethod(name = "escape", module = true, frame = true) public static IRubyObject cgiesc_escape(ThreadContext context, IRubyObject self, IRubyObject _str) { RubyString str = _str.convertToString(); if (str.getEncoding().isAsciiCompatible()) { return optimized_escape(context.runtime, str); } else { return Helpers.invokeSuper(context, self, _str, Block.NULL_BLOCK); } }
private void copyCodeRangeForSubstr(RubyString from, Encoding enc) { if (value.getRealSize() == 0) { setCodeRange(!enc.isAsciiCompatible() ? CR_VALID : CR_7BIT); } else { int fromCr = from.getCodeRange(); if (fromCr == CR_7BIT) { setCodeRange(fromCr); } else { setCodeRange(CR_UNKNOWN); } } }
public static Encoding toEncoding(ThreadContext context, IRubyObject enc) { RubyString encStr = enc.convertToString(); if (!encStr.getEncoding().isAsciiCompatible()) { throw context.runtime.newArgumentError("invalid name encoding (non ASCII)"); } Encoding idx = context.runtime.getEncodingService().getEncodingFromObject(encStr); // check for missing encoding is in getEncodingFromObject return idx; }
public static long strLengthWithCodeRange(Encoding enc, byte[]bytes, int p, int end) { if (enc.isFixedWidth()) { return (end - p + enc.minLength() - 1) / enc.minLength(); } else if (enc.isAsciiCompatible()) { return strLengthWithCodeRangeAsciiCompatible(enc, bytes, p, end); } else { return strLengthWithCodeRangeNonAsciiCompatible(enc, bytes, p, end); } }
private void copyCodeRangeForSubstr(RubyString from, Encoding enc) { if (value.getRealSize() == 0) { setCodeRange(!enc.isAsciiCompatible() ? CR_VALID : CR_7BIT); } else { int fromCr = from.getCodeRange(); if (fromCr == CR_7BIT) { setCodeRange(fromCr); } else { setCodeRange(CR_UNKNOWN); } } }
public static Encoding toEncoding(ThreadContext context, IRubyObject enc) { RubyString encStr = enc.convertToString(); if (!encStr.getEncoding().isAsciiCompatible()) { throw context.runtime.newArgumentError("invalid name encoding (non ASCII)"); } Encoding idx = context.runtime.getEncodingService().getEncodingFromObject(encStr); // check for missing encoding is in getEncodingFromObject return idx; }
public static int nth(Encoding enc, byte[]bytes, int p, int end, int n) { if (enc.isSingleByte()) { p += n; } else if (enc.isFixedWidth()) { p += n * enc.maxLength(); } else if (enc.isAsciiCompatible()) { p = nthAsciiCompatible(enc, bytes, p, end, n); } else { p = nthNonAsciiCompatible(enc, bytes, p, end, n); } return p > end ? end : p; }
public static Encoding toEncoding(ThreadContext context, IRubyObject enc) { RubyString encStr = enc.convertToString(); if (!encStr.getEncoding().isAsciiCompatible()) { throw context.runtime.newArgumentError("invalid name encoding (non ASCII)"); } Encoding idx = context.runtime.getEncodingService().getEncodingFromObject(enc); // check for missing encoding is in getEncodingFromObject return idx; }
@JRubyMethod(name = "hex", compat = RUBY1_9) public IRubyObject hex19(ThreadContext context) { if (!value.getEncoding().isAsciiCompatible()) { throw context.runtime.newEncodingCompatibilityError("ASCII incompatible encoding: " + value.getEncoding()); } return stringToInum19(16, false); }
public static int nth(Encoding enc, byte[]bytes, int p, int end, int n) { if (enc.isSingleByte()) { p += n; } else if (enc.isFixedWidth()) { p += n * enc.maxLength(); } else if (enc.isAsciiCompatible()) { p = nthAsciiCompatible(enc, bytes, p, end, n); } else { p = nthNonAsciiCompatible(enc, bytes, p, end, n); } return p > end ? end : p; }
public static Encoding toEncodingIndex(ThreadContext context, IRubyObject enc) { if (enc instanceof RubyEncoding) { return ((RubyEncoding)enc).getEncoding(); } else if ((enc = enc.checkStringType()).isNil()) { return null; } if (!((RubyString)enc).getEncoding().isAsciiCompatible()) { return null; } return context.runtime.getEncodingService().getEncodingFromObjectNoError(enc); }
/** rb_str_to_inum * */ public IRubyObject stringToInum(int base, boolean badcheck) { final ByteList str = this.value; if (!str.getEncoding().isAsciiCompatible()) { throw getRuntime().newEncodingCompatibilityError("ASCII incompatible encoding: " + str.getEncoding()); } return ConvertBytes.byteListToInum(getRuntime(), str, base, badcheck); }
public static Encoding toEncodingIndex(ThreadContext context, IRubyObject enc) { if (enc instanceof RubyEncoding) { return ((RubyEncoding)enc).getEncoding(); } else if ((enc = enc.checkStringType()).isNil()) { return null; } if (!((RubyString)enc).getEncoding().isAsciiCompatible()) { return null; } return context.runtime.getEncodingService().getEncodingFromObjectNoError(enc); }
@JRubyMethod(name = "unescape", required = 1, optional = 1, module = true, frame = true) public static IRubyObject cgiesc_unescape(ThreadContext context, IRubyObject self, IRubyObject[] argv) { IRubyObject _str = argv[0]; RubyString str = _str.convertToString(); if (str.getEncoding().isAsciiCompatible()) { IRubyObject enc = accept_charset(argv, argv.length - 1, 1, self); return optimized_unescape(context, str, enc); } else { return Helpers.invokeSuper(context, self, argv, Block.NULL_BLOCK); } }
protected void setEncoding(ByteList name) { Encoding newEncoding = parser.getRuntime().getEncodingService().loadEncoding(name); if (newEncoding == null) { compile_error("unknown encoding name: " + name.toString()); return; } if (!newEncoding.isAsciiCompatible()) { compile_error(name.toString() + " is not ASCII compatible"); return; } setEncoding(newEncoding); }
private void setEncoding(ByteList name) { Encoding newEncoding = parserSupport.getConfiguration().getEncodingService().loadEncoding(name); if (newEncoding == null) { throw new SyntaxException(PID.UNKNOWN_ENCODING, getPosition(), null, "unknown encoding name: " + name.toString()); } if (!newEncoding.isAsciiCompatible()) { throw new SyntaxException(PID.NOT_ASCII_COMPATIBLE, getPosition(), null, name.toString() + " is not ASCII compatible"); } setEncoding(newEncoding); }