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}