001package net.filebot.format;
002
003import java.util.Map;
004
005public interface StringBinding extends CharSequence {
006
007        default String lower() {
008                return ExpressionFormatMethods.lower(toString());
009        }
010
011        default String upper() {
012                return ExpressionFormatMethods.upper(toString());
013        }
014
015        default String replaceAll(String pattern) {
016                return ExpressionFormatMethods.replaceAll(toString(), pattern);
017        }
018
019        default String removeAll(String pattern) {
020                return ExpressionFormatMethods.removeAll(toString(), pattern);
021        }
022
023        default String space(String replacement) {
024                return ExpressionFormatMethods.space(toString(), replacement);
025        }
026
027        default String upperInitial() {
028                return ExpressionFormatMethods.upperInitial(toString());
029        }
030
031        default String lowerTrail() {
032                return ExpressionFormatMethods.lowerTrail(toString());
033        }
034
035        default String before(String pattern) {
036                return ExpressionFormatMethods.before(toString(), pattern);
037        }
038
039        default String after(String pattern) {
040                return ExpressionFormatMethods.after(toString(), pattern);
041        }
042
043        default String replace(CharSequence target, CharSequence replacement) {
044                return toString().replace(target, replacement);
045        }
046
047        default String replace(Map<?, ?> replacer) {
048                return ExpressionFormatMethods.replace(toString(), replacer);
049        }
050
051        // Implement CharSequence to ensure that Groovy treats Resolution objects like String objects and not like List objects
052
053        default int length() {
054                return toString().length();
055        }
056
057        default char charAt(int index) {
058                return toString().charAt(index);
059        }
060
061        default CharSequence subSequence(int start, int end) {
062                return toString().subSequence(start, end);
063        }
064
065        // Implement minus unary operator to make -value work
066
067        default String negative(String self) {
068                return '-' + self;
069        }
070
071}