diff --git a/pom.xml b/pom.xml index b7615cade..5fe0d9818 100644 --- a/pom.xml +++ b/pom.xml @@ -131,12 +131,6 @@ 1.3.2 compile - - org.apache.commons - commons-lang3 - 3.1 - compile - org.slf4j slf4j-log4j12 diff --git a/src/main/java/com/mitchellbosecke/pebble/extension/CoreExtension.java b/src/main/java/com/mitchellbosecke/pebble/extension/CoreExtension.java index e9ddc2e66..16e10bcd9 100644 --- a/src/main/java/com/mitchellbosecke/pebble/extension/CoreExtension.java +++ b/src/main/java/com/mitchellbosecke/pebble/extension/CoreExtension.java @@ -23,8 +23,6 @@ import java.util.List; import java.util.Map; -import org.apache.commons.lang3.StringUtils; - import com.mitchellbosecke.pebble.PebbleEngine; import com.mitchellbosecke.pebble.node.expression.binary.NodeExpressionBinaryAdd; import com.mitchellbosecke.pebble.node.expression.binary.NodeExpressionBinaryAnd; @@ -61,6 +59,7 @@ import com.mitchellbosecke.pebble.tokenParser.SetTokenParser; import com.mitchellbosecke.pebble.tokenParser.TokenParser; import com.mitchellbosecke.pebble.utils.OperatorUtils; +import com.mitchellbosecke.pebble.utils.StringUtils; public class CoreExtension extends AbstractExtension { diff --git a/src/main/java/com/mitchellbosecke/pebble/extension/EscaperExtension.java b/src/main/java/com/mitchellbosecke/pebble/extension/EscaperExtension.java index 7358546b9..1249aacde 100644 --- a/src/main/java/com/mitchellbosecke/pebble/extension/EscaperExtension.java +++ b/src/main/java/com/mitchellbosecke/pebble/extension/EscaperExtension.java @@ -12,8 +12,6 @@ import java.util.ArrayList; import java.util.List; -import org.apache.commons.lang3.StringEscapeUtils; - import com.mitchellbosecke.pebble.PebbleEngine; public class EscaperExtension extends AbstractExtension { @@ -28,7 +26,7 @@ public List getFilters() { filters.add(escapeFilter); return filters; } - + private Filter escapeFilter = new Filter() { public String getName() { return "escape"; @@ -57,7 +55,38 @@ public Object apply(Object inputObject, List args) { }; private String htmlEscape(String input) { - return StringEscapeUtils.escapeHtml4(input); + if (input == null) { + return input; + } + StringBuilder result = new StringBuilder(); + char[] chars = input.toCharArray(); + for (int i = 0; i < chars.length; i++) { + char charac = chars[i]; + + switch (charac) { + case '&': + result.append("&"); + break; + case '<': + result.append("<"); + break; + case '>': + result.append(">"); + break; + case '"': + result.append("""); + break; + case '\'': + result.append("'"); + break; + case '/': + result.append("/"); + default: + result.append(charac); + break; + } + } + return result.toString(); } } diff --git a/src/main/java/com/mitchellbosecke/pebble/lexer/LexerImpl.java b/src/main/java/com/mitchellbosecke/pebble/lexer/LexerImpl.java index 64358af76..2b7d8530a 100644 --- a/src/main/java/com/mitchellbosecke/pebble/lexer/LexerImpl.java +++ b/src/main/java/com/mitchellbosecke/pebble/lexer/LexerImpl.java @@ -17,8 +17,6 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; -import org.apache.commons.lang3.StringUtils; - import com.mitchellbosecke.pebble.PebbleEngine; import com.mitchellbosecke.pebble.error.SyntaxException; import com.mitchellbosecke.pebble.lexer.Token.Type; @@ -26,6 +24,7 @@ import com.mitchellbosecke.pebble.operator.UnaryOperator; import com.mitchellbosecke.pebble.utils.Pair; import com.mitchellbosecke.pebble.utils.StringLengthComparator; +import com.mitchellbosecke.pebble.utils.StringUtils; public class LexerImpl implements Lexer { @@ -416,8 +415,9 @@ private void pushToken(Token.Type type) { */ private void pushToken(Token.Type type, String value) { // ignore empty text tokens - if (type.equals(Token.Type.TEXT) && StringUtils.isEmpty(value)) + if (type.equals(Token.Type.TEXT) && StringUtils.isEmpty(value)){ return; + } this.tokens.add(new Token(type, value, this.lineNumber)); } diff --git a/src/main/java/com/mitchellbosecke/pebble/utils/StringUtils.java b/src/main/java/com/mitchellbosecke/pebble/utils/StringUtils.java new file mode 100644 index 000000000..87bbfec41 --- /dev/null +++ b/src/main/java/com/mitchellbosecke/pebble/utils/StringUtils.java @@ -0,0 +1,56 @@ +package com.mitchellbosecke.pebble.utils; + +public class StringUtils { + + public static boolean isEmpty(String value) { + boolean blank = false; + + if (value == null) { + blank = true; + } else if ("".equals(value)) { + blank = true; + } + return blank; + } + + public static boolean isBlank(String value) { + boolean blank = false; + + if (value == null) { + blank = true; + } else if ("".equals(value.trim())) { + blank = true; + } + return blank; + } + + public static String capitalize(String value) { + if (value == null || (value.length() == 0)) { + return value; + } + + char firstCharacter = value.charAt(0); + if (Character.isTitleCase(firstCharacter)) { + return value; + } + return new StringBuilder(value.length()).append(Character.toTitleCase(firstCharacter)) + .append(value.substring(1)).toString(); + } + + public static String abbreviate(String value, int maxWidth) { + if(value == null){ + return null; + } + String ellipsis = "..."; + int length = value.length(); + + if(length < maxWidth){ + return value; + } + if(length <= 3){ + return value; + } + return value.substring(0, maxWidth - 3) + ellipsis; + } + +}