public void CanExtractTag() { const string data = "{MİKTAR} {ÜRÜN} [Fiyat:{FİYAT}]"; var tagData = new TagData(data, "{MİKTAR}"); Assert.IsTrue(tagData.Tag == "{MİKTAR}"); Assert.IsTrue(tagData.Length == "{MİKTAR}".Length); Assert.IsTrue(tagData.StartPos == 0); tagData = new TagData(data, "{ÜRÜN}"); Assert.IsTrue(tagData.Tag == "{ÜRÜN}"); Assert.IsTrue(tagData.Length == "{ÜRÜN}".Length); Assert.IsTrue(tagData.StartPos == data.IndexOf("{ÜRÜN")); Assert.IsTrue(tagData.DataString == "{ÜRÜN}"); tagData = new TagData(data, "{FİYAT}"); Assert.IsTrue(tagData.Tag == "{FİYAT}"); Assert.IsTrue(tagData.Length == "[Fiyat:{FİYAT}]".Length); Assert.IsTrue(tagData.StartPos == data.IndexOf("[Fiyat:{FİYAT}]")); Assert.IsTrue(tagData.DataString == "[Fiyat:{FİYAT}]"); Assert.IsTrue(tagData.Title == "Fiyat:<value>"); }
private static string RemoveTag(string data, string tag) { var i = 0; while (data.Contains(tag) && i < 99) { var tagData = new TagData(data, tag); var spos = data.IndexOf(tagData.DataString); data = data.Remove(spos, tagData.Length); i++; } return data; }
private static string UpdateSettings(string result) { while (Regex.IsMatch(result, "{SETTING:[^}]+}", RegexOptions.Singleline)) { var match = Regex.Match(result, "{SETTING:([^}]+)}"); var tagName = match.Groups[0].Value; var settingName = match.Groups[1].Value; var tagData = new TagData(result, tagName); var value = !string.IsNullOrEmpty(settingName) ? AppServices.SettingService.ReadSetting(settingName).StringValue : ""; var replace = !string.IsNullOrEmpty(value) ? tagData.Title.Replace("<value>", value) : ""; result = result.Replace(tagData.DataString, replace); } return result; }
private static string FormatData(string data, string tag, Func<string> valueFunc) { if (!data.Contains(tag)) return data; var i = 0; while (data.Contains(tag) && i < 99) { var value = valueFunc.Invoke(); var tagData = new TagData(data, tag); if (!string.IsNullOrEmpty(value)) value = !string.IsNullOrEmpty(tagData.Title) && tagData.Title.Contains("<value>") ? tagData.Title.Replace("<value>", value) : tagData.Title + value; var spos = data.IndexOf(tagData.DataString); data = data.Remove(spos, tagData.Length).Insert(spos, value ?? ""); i++; } return data; }