From 84de939b7c429c9c90edbd3a460585e7eefab179 Mon Sep 17 00:00:00 2001 From: "moandji.ezana" Date: Fri, 23 Jan 2015 22:22:29 +0200 Subject: [PATCH] Removed StringBuilder from literal string processors --- .../toml/LiteralStringConverter.java | 17 ++++++----------- .../toml/MultilineLiteralStringConverter.java | 15 +++++---------- 2 files changed, 11 insertions(+), 21 deletions(-) diff --git a/src/main/java/com/moandjiezana/toml/LiteralStringConverter.java b/src/main/java/com/moandjiezana/toml/LiteralStringConverter.java index 79c1eff..63cba93 100644 --- a/src/main/java/com/moandjiezana/toml/LiteralStringConverter.java +++ b/src/main/java/com/moandjiezana/toml/LiteralStringConverter.java @@ -15,35 +15,30 @@ class LiteralStringConverter implements ValueConverter { @Override public Object convert(String s) { char[] chars = s.toCharArray(); - boolean terminated = false; - StringBuilder sb = new StringBuilder(s.length()); + int endIndex = -1; for (int i = 1; i < chars.length; i++) { char c = chars[i]; if (c == '\'') { - terminated = true; + endIndex = i; continue; } - if (!terminated) { - sb.append(c); - } - - if (terminated && c == '#') { + if (endIndex > -1 && c == '#') { break; } - if (terminated && !Character.isWhitespace(c)) { + if (endIndex > -1 && !Character.isWhitespace(c)) { return INVALID; } } - if (!terminated) { + if (endIndex == -1) { return INVALID; } - return sb.toString(); + return s.substring(1, endIndex); } private LiteralStringConverter() {} diff --git a/src/main/java/com/moandjiezana/toml/MultilineLiteralStringConverter.java b/src/main/java/com/moandjiezana/toml/MultilineLiteralStringConverter.java index eec8479..d588817 100644 --- a/src/main/java/com/moandjiezana/toml/MultilineLiteralStringConverter.java +++ b/src/main/java/com/moandjiezana/toml/MultilineLiteralStringConverter.java @@ -14,32 +14,27 @@ class MultilineLiteralStringConverter implements ValueConverter { @Override public Object convert(String s) { char[] chars = s.toCharArray(); - boolean terminated = false; - StringBuilder sb = new StringBuilder(s.length()); + int endIndex = -1; for (int i = 3; i < chars.length; i++) { char c = chars[i]; if (c == '\'' && chars.length > i + 2 && chars[i + 1] == '\'' && chars[i + 2] == '\'') { + endIndex = i; i += 2; - terminated = true; continue; } - if (!terminated) { - sb.append(c); - } - - if (terminated && c == '#') { + if (endIndex > -1 && c == '#') { break; } - if (terminated && !Character.isWhitespace(c)) { + if (endIndex > -1 && !Character.isWhitespace(c)) { return INVALID; } } - return sb.toString(); + return s.substring(3, endIndex); } private MultilineLiteralStringConverter() {}