88import io .github .syst3ms .skriptparser .registration .tags .Tag ;
99import io .github .syst3ms .skriptparser .registration .tags .TagManager ;
1010import io .github .syst3ms .skriptparser .types .TypeManager ;
11+ import io .github .syst3ms .skriptparser .types .TypeManager .StringMode ;
1112import io .github .syst3ms .skriptparser .util .CollectionUtils ;
1213import io .github .syst3ms .skriptparser .util .StringUtils ;
1314import org .jetbrains .annotations .Contract ;
@@ -27,10 +28,12 @@ public class VariableString extends TaggedExpression {
2728 */
2829 private final Object [] data ;
2930 private final boolean simple ;
31+ private final StringMode stringMode ;
3032
31- private VariableString (Object [] data ) {
33+ private VariableString (Object [] data , StringMode stringMode ) {
3234 this .data = data ;
3335 this .simple = data .length == 1 && data [0 ] instanceof String ;
36+ this .stringMode = stringMode ;
3437 }
3538
3639 /**
@@ -41,19 +44,19 @@ private VariableString(Object[] data) {
4144 * @return {@code null} if either:
4245 * <ul>
4346 * <li>The argument isn't quoted correctly</li>
44- * <li>{@link #newInstance(String, ParserState, SkriptLogger)} returned null, which can happen when the string literal is of the form
47+ * <li>{@link #newInstance(String, ParserState, SkriptLogger, StringMode )} returned null, which can happen when the string literal is of the form
4548 * {@code "..."}</li>
4649 * <li>Something went very wrong when parsing a raw literal {@code R"possible delimiter(...)possible delimiter'}
4750 * </li>
4851 * </ul>. Returns a new instance of a VariableString otherwise.
4952 */
5053 public static Optional <VariableString > newInstanceWithQuotes (String s , ParserState parserState , SkriptLogger logger ) {
5154 if (s .startsWith ("\" " ) && s .endsWith ("\" " ) && StringUtils .nextSimpleCharacterIndex (s , 0 ) == s .length ()) {
52- return newInstance (s .substring (1 , s .length () - 1 ), parserState , logger );
55+ return newInstance (s .substring (1 , s .length () - 1 ), parserState , logger , StringMode . STRING );
5356 } else if (s .startsWith ("'" ) && s .endsWith ("'" ) && StringUtils .nextSimpleCharacterIndex (s , 0 ) == s .length ()) {
5457 return Optional .of (new VariableString (new String []{
5558 s .substring (1 , s .length () - 1 ).replace ("\\ \" " , "\" " )
56- }));
59+ }, StringMode . STRING ));
5760 }
5861 return Optional .empty ();
5962 }
@@ -66,7 +69,7 @@ public static Optional<VariableString> newInstanceWithQuotes(String s, ParserSta
6669 * @param logger the logger
6770 * @return a new instance of a VariableString, or {@code null} if there are unbalanced {@literal %} symbols
6871 */
69- public static Optional <VariableString > newInstance (String s , ParserState parserState , SkriptLogger logger ) {
72+ public static Optional <VariableString > newInstance (String s , ParserState parserState , SkriptLogger logger , StringMode stringMode ) {
7073 List <Object > data = new ArrayList <>(StringUtils .count (s , "%" ));
7174 var sb = new StringBuilder ();
7275 var charArray = s .toCharArray ();
@@ -162,7 +165,7 @@ public static Optional<VariableString> newInstance(String s, ParserState parserS
162165 if (sb .length () > 0 ) {
163166 data .add (sb .toString ());
164167 }
165- return Optional .of (new VariableString (data .toArray ()));
168+ return Optional .of (new VariableString (data .toArray (), stringMode ));
166169 }
167170
168171 @ Override
@@ -200,7 +203,7 @@ public String toString(TriggerContext ctx, String tagCtx) {
200203 for (int i = 0 ; i < actualData .length ; i ++) {
201204 var o = actualData [i ];
202205 if (o instanceof Expression ) {
203- sb .append (TypeManager .toString (((Expression <?>) o ).getValues (ctx ), TypeManager . StringMode . VARIABLE ));
206+ sb .append (TypeManager .toString (((Expression <?>) o ).getValues (ctx ), this . stringMode ));
204207 } else if (o instanceof Tag ) {
205208 ongoingTags .add ((Tag ) o );
206209 int indexOfNext = CollectionUtils .ordinalConditionalIndexOf (actualData , ++currentTags , t -> t instanceof Tag );
0 commit comments