Skip to content

Commit

Permalink
Showing 2 changed files with 28 additions and 0 deletions.
23 changes: 23 additions & 0 deletions src/org/jcodings/AbstractEncoding.java
Original file line number Diff line number Diff line change
@@ -134,6 +134,29 @@ int asciiOnlyCaseMap(IntHolder flagP, byte[]bytes, IntHolder pp, int end, byte[]
return toP - toStart;
}

int singleByteAsciiOnlyCaseMap(IntHolder flagP, byte[]bytes, IntHolder pp, int end, byte[]to, int toP, int toEnd) {
int toStart = toP;
int flags = flagP.value;

while (pp.value < end && toP < toEnd) {
int code = bytes[pp.value++] & 0xff;

if (code >= 'a' && code <= 'z' && ((flags & Config.CASE_UPCASE) != 0)) {
flags |= Config.CASE_MODIFIED;
code += 'A' - 'a';
} else if (code >= 'A' && code <= 'Z' && ((flags & (Config.CASE_DOWNCASE | Config.CASE_FOLD)) != 0)) {
flags |= Config.CASE_MODIFIED;
code += 'a' - 'A';
}
to[toP++] = (byte)code;
if ((flags & Config.CASE_TITLECASE) != 0) {
flags ^= (Config.CASE_UPCASE | Config.CASE_DOWNCASE | Config.CASE_TITLECASE);
}
}
flagP.value = flags;
return toP - toStart;
}

@Override
public int caseMap(IntHolder flagP, byte[] bytes, IntHolder pp, int end, byte[] to, int toP, int toEnd) {
return asciiOnlyCaseMap(flagP, bytes, pp, end, to, toP, toEnd);
5 changes: 5 additions & 0 deletions src/org/jcodings/SingleByteEncoding.java
Original file line number Diff line number Diff line change
@@ -54,6 +54,11 @@ public int strCodeAt(byte[] bytes, int p, int end, int index) {
}
// onigenc_is_mbc_newline_0x0a here

@Override
public int caseMap(IntHolder flagP, byte[] bytes, IntHolder pp, int end, byte[] to, int toP, int toEnd) {
return singleByteAsciiOnlyCaseMap(flagP, bytes, pp, end, to, toP, toEnd);
}

/** onigenc_single_byte_mbc_to_code
*/
@Override

0 comments on commit 5c6a4d2

Please sign in to comment.