// This code is part of the Fungus library (http://fungusgames.com) maintained by Chris Gregan (http://twitter.com/gofungus). // It is released for free under the MIT open source license (https://github.com/snozbot/fungus/blob/master/LICENSE) using System.Text; namespace Fungus { /// /// Replaces special tokens in a string with substituted values (typically variables or localisation strings). /// public interface IStringSubstituter { /// /// The internal StringBuilder object used to perform string substitution. /// This is exposed publicly to allow for optimized string manipulation in client code. /// StringBuilder _StringBuilder { get; } /// /// Returns a new string that has been processed by all substitution handlers in the scene. /// string SubstituteStrings(string input); /// /// Returns a new string that has been processed by all substitution handlers in the scene. /// bool SubstituteStrings(StringBuilder input); } /// /// Interface for components that support substituting strings. /// public interface ISubstitutionHandler { /// /// Modifies a StringBuilder so that tokens are replaced by subsituted values. /// It's up to clients how to implement substitution but the convention looks like: /// "Hi {$VarName}" => "Hi John" where VarName == "John" /// /// True if the input was modified bool SubstituteStrings(StringBuilder input); } }