Skip to content

Commit 15584ba

Browse files
committed
For Windows.
1 parent 214dea5 commit 15584ba

File tree

3 files changed

+18
-9
lines changed

3 files changed

+18
-9
lines changed

core/src/main/java/org/jruby/Ruby.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
***** END LICENSE BLOCK *****/
4040
package org.jruby;
4141

42+
import org.jcodings.specific.UTF8Encoding;
4243
import org.jruby.ast.ArrayNode;
4344
import org.jruby.ast.BlockNode;
4445
import org.jruby.ast.CallNode;
@@ -2750,7 +2751,7 @@ private void setupSourceEncoding(ParserConfiguration parserConfig) {
27502751
}
27512752
parserConfig.setDefaultEncoding(getEncodingService().getEncodingFromString(config.getSourceEncoding()));
27522753
} else {
2753-
parserConfig.setDefaultEncoding(getEncodingService().getLocaleEncoding());
2754+
parserConfig.setDefaultEncoding(UTF8Encoding.INSTANCE);
27542755
}
27552756
}
27562757

core/src/main/java/org/jruby/lexer/GetsLexerSource.java

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,25 @@ public class GetsLexerSource extends LexerSource {
1818
private IRubyObject io;
1919
private Encoding encoding;
2020
private int offset;
21-
22-
public GetsLexerSource(String sourceName, int line, IRubyObject io, RubyArray scriptLines) {
23-
// FIXME: Does this source needs SCRIPT_LINES support?
21+
22+
// Main-line Parsing constructor
23+
public GetsLexerSource(String sourceName, int line, IRubyObject io, RubyArray scriptLines, Encoding encoding) {
2424
super(sourceName, line, scriptLines);
25-
25+
2626
this.io = io;
27-
encoding = frobnicateEncoding();
27+
this.encoding = encoding;
28+
}
29+
30+
// FIXME: ripper probably has same problem as main-line parser so this constructor may need to be a mix
31+
// of frobbing the encoding of an incoming object plus defaultEncoding if not. but main-line parser
32+
// should not be asking IO for encoding.
33+
// Ripper constructor
34+
public GetsLexerSource(String sourceName, int line, IRubyObject io, RubyArray scriptLines) {
35+
this(sourceName, line, io, scriptLines, frobnicateEncoding(io));
2836
}
2937

3038
// FIXME: Should be a hard failure likely if no encoding is possible
31-
public final Encoding frobnicateEncoding() {
39+
public static final Encoding frobnicateEncoding(IRubyObject io) {
3240
// Non-ripper IO will not have encoding so we will just use default external
3341
if (!io.respondsTo("encoding")) return io.getRuntime().getDefaultExternalEncoding();
3442

core/src/main/java/org/jruby/parser/Parser.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ public Node parse(String file, ByteList content, DynamicScope blockScope,
8383
public Node parse(String file, byte[] content, DynamicScope blockScope,
8484
ParserConfiguration configuration) {
8585
RubyArray list = getLines(configuration, runtime, file);
86-
ByteList in = new ByteList(content, runtime.getDefaultExternalEncoding());
86+
ByteList in = new ByteList(content, configuration.getDefaultEncoding());
8787
LexerSource lexerSource = new ByteListLexerSource(file, configuration.getLineNumber(), in, list);
8888
return parse(file, lexerSource, blockScope, configuration);
8989
}
@@ -96,7 +96,7 @@ public Node parse(String file, InputStream content, DynamicScope blockScope,
9696
} else {
9797
RubyArray list = getLines(configuration, runtime, file);
9898
RubyIO io = RubyIO.newIO(runtime, Channels.newChannel(content));
99-
LexerSource lexerSource = new GetsLexerSource(file, configuration.getLineNumber(), io, list);
99+
LexerSource lexerSource = new GetsLexerSource(file, configuration.getLineNumber(), io, list, configuration.getDefaultEncoding());
100100
return parse(file, lexerSource, blockScope, configuration);
101101
}
102102
}

0 commit comments

Comments
 (0)