[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