private static RubyString filePathConvert(ThreadContext context, RubyString path) { if (!Platform.IS_WINDOWS) { Ruby runtime = context.getRuntime(); EncodingService encodingService = runtime.getEncodingService(); Encoding pathEncoding = path.getEncoding(); // If we are not ascii and do not match fs encoding then transcode to fs. if (runtime.getDefaultInternalEncoding() != null && pathEncoding != encodingService.getUSAsciiEncoding() && pathEncoding != encodingService.getAscii8bitEncoding() && pathEncoding != encodingService.getFileSystemEncoding() && !path.isAsciiOnly()) { path = EncodingUtils.strConvEnc(context, path, pathEncoding, encodingService.getFileSystemEncoding()); } } return path; }
private Encoding findEncodingCommon(ByteList name, boolean error) { checkAsciiEncodingName(name); SpecialEncoding special = SpecialEncoding.valueOf(name); if (special != null) { return special.toEncoding(runtime); } if (error) return findEncodingWithError(name); Entry e = findEncodingOrAliasEntry(name); if (e == null) return null; return e.getEncoding(); }
private static IRubyObject charsetMappedValue(final Ruby runtime, final NKFCharset charset) { final Encoding encoding; switch (charset) { case AUTO: case NOCONV: case UNKNOWN: return runtime.getNil(); case BINARY: encoding = runtime.getEncodingService().getAscii8bitEncoding(); return runtime.getEncodingService().convertEncodingToRubyEncoding(encoding); } encoding = runtime.getEncodingService().getEncodingFromString(charset.getCharset()); return runtime.getEncodingService().convertEncodingToRubyEncoding(encoding); }
public Entry findEncodingOrAliasEntry(ByteList bytes) { Entry e = findEncodingEntry(bytes); return e != null ? e : findAliasEntry(bytes); }
public IRubyObject findEncodingObject(byte[] bytes) { Entry entry = findEncodingEntry(bytes); Encoding enc; if (entry != null) { enc = entry.getEncoding(); } else { enc = ASCIIEncoding.INSTANCE; } return convertEncodingToRubyEncoding(enc); }
RubyString.createStringClass(this); encodingService = new EncodingService(this); RubyConverter.createConverterClass(this); encodingService.defineEncodings(); encodingService.defineAliases(); Encoding loadedEncoding = encodingService.loadEncoding(ByteList.create(encoding)); if (loadedEncoding == null) throw new MainExitException(1, "unknown encoding name - " + encoding); setDefaultExternalEncoding(loadedEncoding); } else { Encoding consoleEncoding = encodingService.getConsoleEncoding(); Encoding availableEncoding = consoleEncoding == null ? encodingService.getLocaleEncoding() : consoleEncoding; setDefaultExternalEncoding(availableEncoding); Encoding filesystemEncoding = encodingService.loadEncoding(ByteList.create(encoding)); if (filesystemEncoding == null) throw new MainExitException(1, "unknown encoding name - " + encoding); setDefaultFilesystemEncoding(filesystemEncoding); Encoding loadedEncoding = encodingService.loadEncoding(ByteList.create(encoding)); if (loadedEncoding == null) throw new MainExitException(1, "unknown encoding name - " + encoding); setDefaultInternalEncoding(loadedEncoding);
/** * Find an encoding given a Ruby object, coercing it to a String in the process. * * @param str the object to coerce and use to look up encoding. The coerced String * must be ASCII-compatible. * @return the Encoding object found, nil (for internal), or raises ArgumentError */ public Entry findEntry(IRubyObject str) { ByteList name = str.convertToString().getByteList(); checkAsciiEncodingName(name); SpecialEncoding special = SpecialEncoding.valueOf(name); if (special != null) { return findEntryFromEncoding(special.toEncoding(runtime)); } return findEntryWithError(name); }
public static Encoding ascii8bitEncoding(Ruby runtime) { return runtime.getEncodingService().getAscii8bitEncoding(); }
@JRubyMethod public IRubyObject source_encoding(ThreadContext context) { if (ec.sourceEncoding == null) return context.nil; return context.runtime.getEncodingService().convertEncodingToRubyEncoding(ec.sourceEncoding); }
public Encoding getEncodingFromString(String string) { if (string == null) return null; ByteList name = new ByteList(ByteList.plain(string), false); checkAsciiEncodingName(name); SpecialEncoding special = SpecialEncoding.valueOf(name); if (special != null) { return special.toEncoding(runtime); } return findEncodingWithError(name); }
private void initEmitter(ThreadContext context, IRubyObject _encoding) { if (emitter != null) throw context.runtime.newRuntimeError("already initialized emitter"); Encoding encoding = PsychLibrary.YAMLEncoding.values()[(int)_encoding.convertToInteger().getLongValue()].encoding; Charset charset = context.runtime.getEncodingService().charsetForEncoding(encoding); emitter = new Emitter(new OutputStreamWriter(new IOOutputStream(io, encoding), charset), options); }
private Encoding getEncodingFromObjectCommon(IRubyObject arg, boolean error) { if (arg == null) return null; if (arg instanceof RubyEncoding) { return ((RubyEncoding) arg).getEncoding(); } else if (arg instanceof RubyFixnum && RubyNKF.NKFCharsetMap.containsKey((int)arg.convertToInteger().getLongValue())) { return getEncodingFromNKFId(arg); } else if ((arg = arg.checkStringType19()).isNil()) { return null; } else if (!((RubyString)arg).getEncoding().isAsciiCompatible()) { return null; } else { if (error) { return findEncoding((RubyString)arg); } else { return findEncodingNoError((RubyString)arg); } } }
commonEncoding = runtime.getEncodingService().convertEncodingToRubyEncoding(enc2); } else if (enc != runtime.getEncodingService().getAscii8bitEncoding()) { commonEncoding = runtime.getEncodingService().convertEncodingToRubyEncoding(enc);
public IRubyObject getDefaultExternal() { IRubyObject defaultExternal = convertEncodingToRubyEncoding(runtime.getDefaultExternalEncoding()); if (defaultExternal.isNil()) { // TODO: MRI seems to default blindly to US-ASCII and we were using Charset default from Java...which is right? ByteList encodingName = ByteList.create("US-ASCII"); Encoding encoding = runtime.getEncodingService().loadEncoding(encodingName); runtime.setDefaultExternalEncoding(encoding); defaultExternal = convertEncodingToRubyEncoding(encoding); } return defaultExternal; }
Encoding srcEncoding = encodingService.getEncodingFromObjectNoError(src); Encoding destEncoding = encodingService.getEncodingFromObjectNoError(dest); if (srcEncoding != null) encodingService.charsetForEncoding(srcEncoding); if (destEncoding != null) encodingService.charsetForEncoding(destEncoding);
private static RaiseException makeEConvExceptionSetEncs(RaiseException exc, Ruby runtime, EConv ec) { exc.getException().setInternalVariable("source_encoding_name", RubyString.newString(runtime, ec.lastError.getSource())); exc.getException().setInternalVariable("destination_encoding_name", RubyString.newString(runtime, ec.lastError.getDestination())); EncodingDB.Entry entry = runtime.getEncodingService().findEncodingOrAliasEntry(ec.lastError.getSource()); if (entry != null) { exc.getException().setInternalVariable("source_encoding", runtime.getEncodingService().convertEncodingToRubyEncoding(entry.getEncoding())); } entry = runtime.getEncodingService().findEncodingOrAliasEntry(ec.lastError.getDestination()); if (entry != null) { exc.getException().setInternalVariable("destination_encoding", runtime.getEncodingService().convertEncodingToRubyEncoding(entry.getEncoding())); } return exc; }
public void defineAliases() { HashEntryIterator i = aliases.entryIterator(); while (i.hasNext()) { CaseInsensitiveBytesHash.CaseInsensitiveBytesHashEntry<Entry> e = ((CaseInsensitiveBytesHash.CaseInsensitiveBytesHashEntry<Entry>)i.next()); Entry entry = e.value; // The constant names must be treated by the the <code>encodingNames</code> helper. for (String constName : EncodingUtils.encodingNames(e.bytes, e.p, e.end)) { defineEncodingConstant(runtime, (RubyEncoding) encodingList[entry.getIndex()], constName); } } }
public final Encoding toEncoding(Ruby runtime) { return runtime.getEncodingService().findEncoding(this); }
RubyString.createStringClass(this); encodingService = new EncodingService(this); RubyConverter.createConverterClass(this); encodingService.defineEncodings(); encodingService.defineAliases(); Encoding loadedEncoding = encodingService.loadEncoding(ByteList.create(encoding)); if (loadedEncoding == null) throw new MainExitException(1, "unknown encoding name - " + encoding); setDefaultExternalEncoding(loadedEncoding); } else { Encoding consoleEncoding = encodingService.getConsoleEncoding(); Encoding availableEncoding = consoleEncoding == null ? encodingService.getLocaleEncoding() : consoleEncoding; setDefaultExternalEncoding(availableEncoding); Encoding filesystemEncoding = encodingService.loadEncoding(ByteList.create(encoding)); if (filesystemEncoding == null) throw new MainExitException(1, "unknown encoding name - " + encoding); setDefaultFilesystemEncoding(filesystemEncoding); Encoding loadedEncoding = encodingService.loadEncoding(ByteList.create(encoding)); if (loadedEncoding == null) throw new MainExitException(1, "unknown encoding name - " + encoding); setDefaultInternalEncoding(loadedEncoding);
/** * Find an encoding given a Ruby object, coercing it to a String in the process. * * @param str the object to coerce and use to look up encoding. The coerced String * must be ASCII-compatible. * @return the Encoding object found, nil (for internal), or raises ArgumentError */ public Entry findEntry(IRubyObject str) { ByteList name = str.convertToString().getByteList(); checkAsciiEncodingName(name); SpecialEncoding special = SpecialEncoding.valueOf(name); if (special != null) { return findEntryFromEncoding(special.toEncoding(runtime)); } return findEntryWithError(name); }