diff options
author | Jesse Plamondon-Willard <github@jplamondonw.com> | 2018-08-18 14:44:18 -0400 |
---|---|---|
committer | Jesse Plamondon-Willard <github@jplamondonw.com> | 2018-08-18 14:44:18 -0400 |
commit | f9eb16489fcf3f4c486df5f96a94edf16cf19a09 (patch) | |
tree | 8ee581968ae378682a91869e08e76ad32c064b61 /src/StardewModdingAPI.Toolkit | |
parent | c916cc5a1023ab81df89458ecb679405081f54c6 (diff) | |
download | SMAPI-f9eb16489fcf3f4c486df5f96a94edf16cf19a09.tar.gz SMAPI-f9eb16489fcf3f4c486df5f96a94edf16cf19a09.tar.bz2 SMAPI-f9eb16489fcf3f4c486df5f96a94edf16cf19a09.zip |
refactor some methods for reuse (#468)
Diffstat (limited to 'src/StardewModdingAPI.Toolkit')
-rw-r--r-- | src/StardewModdingAPI.Toolkit/Serialisation/JsonHelper.cs | 16 | ||||
-rw-r--r-- | src/StardewModdingAPI.Toolkit/Utilities/PathUtilities.cs | 8 |
2 files changed, 18 insertions, 6 deletions
diff --git a/src/StardewModdingAPI.Toolkit/Serialisation/JsonHelper.cs b/src/StardewModdingAPI.Toolkit/Serialisation/JsonHelper.cs index cc8eeb73..dcc0dac4 100644 --- a/src/StardewModdingAPI.Toolkit/Serialisation/JsonHelper.cs +++ b/src/StardewModdingAPI.Toolkit/Serialisation/JsonHelper.cs @@ -95,18 +95,14 @@ namespace StardewModdingAPI.Toolkit.Serialisation Directory.CreateDirectory(dir); // write file - string json = JsonConvert.SerializeObject(model, this.JsonSettings); + string json = this.Serialise(model); File.WriteAllText(fullPath, json); } - - /********* - ** Private methods - *********/ /// <summary>Deserialize JSON text if possible.</summary> /// <typeparam name="TModel">The model type.</typeparam> /// <param name="json">The raw JSON text.</param> - private TModel Deserialise<TModel>(string json) + public TModel Deserialise<TModel>(string json) { try { @@ -127,5 +123,13 @@ namespace StardewModdingAPI.Toolkit.Serialisation throw; } } + + /// <summary>Serialize a model to JSON text.</summary> + /// <typeparam name="TModel">The model type.</typeparam> + /// <param name="model">The model to serialise.</param> + public string Serialise<TModel>(TModel model) + { + return JsonConvert.SerializeObject(model, this.JsonSettings); + } } } diff --git a/src/StardewModdingAPI.Toolkit/Utilities/PathUtilities.cs b/src/StardewModdingAPI.Toolkit/Utilities/PathUtilities.cs index 2e74e7d9..b959f9b5 100644 --- a/src/StardewModdingAPI.Toolkit/Utilities/PathUtilities.cs +++ b/src/StardewModdingAPI.Toolkit/Utilities/PathUtilities.cs @@ -2,6 +2,7 @@ using System; using System.Diagnostics.Contracts; using System.IO; using System.Linq; +using System.Text.RegularExpressions; namespace StardewModdingAPI.Toolkit.Utilities { @@ -61,5 +62,12 @@ namespace StardewModdingAPI.Toolkit.Utilities relative = "./"; return relative; } + + /// <summary>Get whether a string is a valid 'slug', containing only basic characters that are safe in all contexts (e.g. filenames, URLs, etc).</summary> + /// <param name="str">The string to check.</param> + public static bool IsSlug(string str) + { + return !Regex.IsMatch(str, "[^a-z0-9_.-]", RegexOptions.IgnoreCase); + } } } |