[jruby-joni] 160/194: StringNode.fromCodePoint
Hideki Yamane
henrich at moszumanska.debian.org
Thu Feb 1 12:04:37 UTC 2018
This is an automated email from the git hooks/post-receive script.
henrich pushed a commit to branch debian/sid
in repository jruby-joni.
commit 98dd7a1272665f1576d9dd5c275c16608b89a3a3
Author: Marcin Mielzynski <lopx at gazeta.pl>
Date: Sun Jan 14 19:02:43 2018 +0100
StringNode.fromCodePoint
---
src/org/joni/Parser.java | 14 ++------------
src/org/joni/ast/StringNode.java | 14 ++++++++++++--
2 files changed, 14 insertions(+), 14 deletions(-)
diff --git a/src/org/joni/Parser.java b/src/org/joni/Parser.java
index 66379f0..f26831b 100644
--- a/src/org/joni/Parser.java
+++ b/src/org/joni/Parser.java
@@ -805,7 +805,7 @@ class Parser extends Lexer {
return parseExpTkRawByte(group); // tk_raw_byte:
case CODE_POINT:
- node = parseCodePoint();
+ node = StringNode.fromCodePoint(token.getCode(), enc);
break;
case QUOTE_OPEN:
@@ -824,11 +824,7 @@ class Parser extends Lexer {
ObjPtr<CClassNode> ascPtr = new ObjPtr<CClassNode>();
CClassNode cc = parseCharClass(ascPtr);
int code = cc.isOneChar();
- if (code != -1) {
- StringNode sn = new StringNode();
- sn.catCode(code, enc);
- return parseStringLoop(sn, group);
- }
+ if (code != -1) return parseStringLoop(StringNode.fromCodePoint(code, enc), group);
node = cc;
if (isIgnoreCase(env.option)) node = cClassCaseFold(node, cc, ascPtr.p);
@@ -1414,12 +1410,6 @@ class Parser extends Lexer {
return false;
}
- private Node parseCodePoint() {
- byte[]buf = new byte[Config.ENC_CODE_TO_MBC_MAXLEN];
- int num = enc.codeToMbc(token.getCode(), buf, 0);
- return new StringNode(buf, 0, num);
- }
-
private Node parseQuoteOpen() {
int[]endOp = new int[]{syntax.metaCharTable.esc, 'E'};
int qstart = p;
diff --git a/src/org/joni/ast/StringNode.java b/src/org/joni/ast/StringNode.java
index aacada3..8be35f1 100644
--- a/src/org/joni/ast/StringNode.java
+++ b/src/org/joni/ast/StringNode.java
@@ -33,9 +33,19 @@ public final class StringNode extends Node implements StringType {
public int end;
public int flag;
- public StringNode() {
+ private StringNode(int size) {
super(STR);
- this.bytes = new byte[NODE_STR_BUF_SIZE];
+ this.bytes = new byte[size];
+ }
+
+ public StringNode() {
+ this(NODE_STR_BUF_SIZE);
+ }
+
+ public static StringNode fromCodePoint(int code, Encoding enc) {
+ StringNode str = new StringNode(Config.ENC_CODE_TO_MBC_MAXLEN);
+ str.end = enc.codeToMbc(code, str.bytes, str.p);
+ return str;
}
public StringNode(byte[]bytes, int p, int end) {
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-java/jruby-joni.git
More information about the pkg-java-commits
mailing list