public StrNode createStrNode(ISourcePosition position, ByteList buffer, int flags) { Encoding bufferEncoding = buffer.getEncoding(); int codeRange = StringSupport.codeRangeScan(bufferEncoding, buffer); if ((flags & RubyYaccLexer.STR_FUNC_REGEXP) == 0 && bufferEncoding.isAsciiCompatible()) { // If we have characters outside 7-bit range and we are still ascii then change to ascii-8bit if (codeRange == StringSupport.CR_7BIT) { // Do nothing like MRI } else if (getEncoding() == RubyYaccLexer.USASCII_ENCODING && bufferEncoding != RubyYaccLexer.UTF8_ENCODING) { codeRange = ParserSupport.associateEncoding(buffer, RubyYaccLexer.ASCII8BIT_ENCODING, codeRange); } } return new StrNode(position, buffer, codeRange); }
public StrNode createStrNode(ISourcePosition position, ByteList buffer, int flags) { Encoding bufferEncoding = buffer.getEncoding(); int codeRange = StringSupport.codeRangeScan(bufferEncoding, buffer); if ((flags & RubyYaccLexer.STR_FUNC_REGEXP) == 0 && bufferEncoding.isAsciiCompatible()) { // If we have characters outside 7-bit range and we are still ascii then change to ascii-8bit if (codeRange == StringSupport.CR_7BIT) { // Do nothing like MRI } else if (getEncoding() == RubyYaccLexer.USASCII_ENCODING && bufferEncoding != RubyYaccLexer.UTF8_ENCODING) { codeRange = ParserSupport.associateEncoding(buffer, RubyYaccLexer.ASCII8BIT_ENCODING, codeRange); } } return new StrNode(position, buffer, codeRange); }
public StrNode createStr(ByteList buffer, int flags) { Encoding bufferEncoding = buffer.getEncoding(); int codeRange = StringSupport.codeRangeScan(bufferEncoding, buffer); if ((flags & STR_FUNC_REGEXP) == 0 && bufferEncoding.isAsciiCompatible()) { // If we have characters outside 7-bit range and we are still ascii then change to ascii-8bit if (codeRange == StringSupport.CR_7BIT) { // Do nothing like MRI } else if (getEncoding() == USASCII_ENCODING && bufferEncoding != UTF8_ENCODING) { codeRange = ParserSupport.associateEncoding(buffer, ASCII8BIT_ENCODING, codeRange); } } StrNode newStr = new StrNode(getPosition(), buffer, codeRange); if (parserSupport.getConfiguration().isFrozenStringLiteral()) newStr.setFrozen(true); return newStr; }
public StrNode createStr(ByteList buffer, int flags) { Encoding bufferEncoding = buffer.getEncoding(); int codeRange = StringSupport.codeRangeScan(bufferEncoding, buffer); if ((flags & STR_FUNC_REGEXP) == 0 && bufferEncoding.isAsciiCompatible()) { // If we have characters outside 7-bit range and we are still ascii then change to ascii-8bit if (codeRange == StringSupport.CR_7BIT) { // Do nothing like MRI } else if (getEncoding() == USASCII_ENCODING && bufferEncoding != UTF8_ENCODING) { codeRange = ParserSupport.associateEncoding(buffer, ASCII8BIT_ENCODING, codeRange); } } StrNode newStr = new StrNode(getPosition(), buffer, codeRange); if (parserSupport.getConfiguration().isFrozenStringLiteral()) newStr.setFrozen(true); return newStr; }