summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDirk Dougherty <ddougherty@google.com>2015-07-06 18:30:02 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2015-07-06 18:30:02 +0000
commitd8bb1ec9efccbbcc48d8d4991c9d4001fa31eeb5 (patch)
treeec814361b0b288ca7cc9090780073b1973235e0a
parentc79f9bba0a73c75478892dd573c0af853ec9ed20 (diff)
parent30c1443ea6993e42f6a8cc3d18fbc8d251655858 (diff)
downloadandroid_external_doclava-d8bb1ec9efccbbcc48d8d4991c9d4001fa31eeb5.tar.gz
android_external_doclava-d8bb1ec9efccbbcc48d8d4991c9d4001fa31eeb5.tar.bz2
android_external_doclava-d8bb1ec9efccbbcc48d8d4991c9d4001fa31eeb5.zip
am 30c1443e: am 54004373: Fix handling of double-byte chars for tags, keywords.
* commit '30c1443ea6993e42f6a8cc3d18fbc8d251655858': Fix handling of double-byte chars for tags, keywords.
-rw-r--r--src/com/google/doclava/NavTree.java2
-rw-r--r--src/com/google/doclava/PageMetadata.java26
2 files changed, 13 insertions, 15 deletions
diff --git a/src/com/google/doclava/NavTree.java b/src/com/google/doclava/NavTree.java
index cc4f43f..cbe9fee 100644
--- a/src/com/google/doclava/NavTree.java
+++ b/src/com/google/doclava/NavTree.java
@@ -184,7 +184,7 @@ public class NavTree {
buf.append("\\u");
for (int j = 0; i < 4; i++) {
char x = (char) (c & 0x000f);
- if (x > 10) {
+ if (x >= 10) {
x = (char) (x - 10 + 'a');
} else {
x = (char) (x + '0');
diff --git a/src/com/google/doclava/PageMetadata.java b/src/com/google/doclava/PageMetadata.java
index 360ae84..57f27cb 100644
--- a/src/com/google/doclava/PageMetadata.java
+++ b/src/com/google/doclava/PageMetadata.java
@@ -282,7 +282,8 @@ public class PageMetadata {
}
if (!tagList.equals("")) {
tagList = tagList.replaceAll("\"", "");
- String[] tagParts = tagList.split(",");
+
+ String[] tagParts = tagList.split("[,\u3001]");
for (int iter = 0; iter < tagParts.length; iter++) {
tags.append("\"");
if (tag.equals("meta.tags") && sLowercaseTags) {
@@ -724,20 +725,17 @@ public class PageMetadata {
final int L = tagval.length();
for (int t = 0; t < L; t++) {
char c = tagval.charAt(t);
- if (c >= ' ' && c <= '~' && c != '\\') {
+ if (c >= Character.MIN_HIGH_SURROGATE && c <= Character.MAX_HIGH_SURROGATE ) {
+ // we have a UTF-16 multi-byte character
+ int codePoint = tagval.codePointAt(t);
+ int charSize = Character.charCount(codePoint);
+ t += charSize - 1;
+ buf.append(String.format("\\u%04x",codePoint));
+ } else if (c >= ' ' && c <= '~' && c != '\\') {
buf.append(c);
- } else {
- buf.append("\\u");
- for (int m = 0; m < 4; m++) {
- char x = (char) (c & 0x000f);
- if (x > 10) {
- x = (char) (x - 10 + 'a');
- } else {
- x = (char) (x + '0');
- }
- buf.append(x);
- c >>= 4;
- }
+ } else {
+ // we are encoding a two byte character
+ buf.append(String.format("\\u%04x", (int) c));
}
}
if (i != n - 1) {