public void TagEscapes() { Assert.That(TagExpander.ItemRegex, Is.Not.Null); Assert.That(TagExpander.KeyRegex, Is.Not.Null); Assert.That(TagExpander.PropertyRegex, Is.Not.Null); Assert.That(TagExpander.ItemKeyOrPropertyRegex, Is.Not.Null); Assert.That(TagExpander.KeyOrPropertyRegex, Is.Not.Null); Assert.That(TagExpander.Escape("ba%nana"), Is.EqualTo("ba%nana")); Assert.That(TagExpander.Escape("ba%20nana"), Is.EqualTo("ba%2520nana")); Assert.That(TagExpander.Escape("ba%AQnana%"), Is.EqualTo("ba%25AQnana%")); Assert.That(TagExpander.Escape("ba%(nana%a"), Is.EqualTo("ba%25(nana%25a")); Assert.That(TagExpander.Unescape(TagExpander.Escape("ba%nana")), Is.EqualTo("ba%nana")); Assert.That(TagExpander.Unescape(TagExpander.Escape("ba%20nana")), Is.EqualTo("ba%20nana")); Assert.That(TagExpander.Unescape(TagExpander.Escape("ba%AQnana%")), Is.EqualTo("ba%AQnana%")); Assert.That(TagExpander.Unescape(TagExpander.Escape("ba%(nana%a")), Is.EqualTo("ba%(nana%a")); Assert.That(TagExpander.Escape("ba%(na)na"), Is.EqualTo("ba%25(na)na")); Assert.That(TagExpander.Escape("ba%(na)na", true, false), Is.EqualTo("ba%(na)na")); Assert.That(TagExpander.Unescape("ba@(na->'%qq%nn%27a')na", false), Is.EqualTo("ba@(na->'%qq%nn'a')na")); Assert.That(TagExpander.Unescape("ba@(na->'%qq%nn%27a')na", true), Is.EqualTo("ba@(na->'%qq%nn%27a')na")); Assert.That(TagExpander.Unescape("ba@( na -> '%qq%nn%27%25a' , '%25' )na", true), Is.EqualTo("ba@( na -> '%qq%nn%27%25a' , '%25' )na")); }
/// <summary> /// Creates the value. /// </summary> /// <param name="value">The value.</param> /// <returns></returns> protected override object CreateValue(string value) { IList <string> items = TagExpander.SplitItemList(value); Array a = Array.CreateInstance(ItemType, items.Count); for (int i = 0; i < items.Count; i++) { a.SetValue(base.CreateValue(items[i]), i); } return(a); }
/// <summary> /// タグのListを返す /// </summary> /// <returns></returns> private static List <TagTransferItemViewModel> GetTagListItems() { var retList = new List <TagTransferItemViewModel>(); var models = TagExpander.Expand(ModelsComposite.TagManager); foreach (var model in models) { retList.Add(new TagTransferItemViewModel(model as SaveTagModel)); } return(retList); }
protected internal override void Prepare(TagBatchDefinition batchDefinition, int offset) { InitPreparation(batchDefinition, offset); List <ValuePart> parts = new List <ValuePart>(); foreach (string item in TagExpander.SplitItemList(Definition)) { ValueItem[] vi = PrepareString(batchDefinition, item, PrepareMode.List); if (vi.Length == 1) { ValueItem v = vi[0]; ItemValueItem ivi; StringValueItem svi; if (null != (ivi = v as ItemValueItem)) { if (string.IsNullOrEmpty(ivi.Separator) || ivi.Separator.Trim() == ";") { parts.Add(new ItemValuePart(ivi)); continue; } } else if (null != (svi = v as StringValueItem)) { // TODO: Shortcut single string value parts.Add(new ConstantValuePart(svi.Value)); continue; } } parts.Add(new DynamicValuePart(vi)); } _parts = parts.ToArray(); }
/// <summary> /// タグの転送 /// </summary> /// <param name="tags">タグ</param> private static void TransferTags(List <SaveTagModel> tags) { TagExpander.Expand(tags, ModelsComposite.TagManager); }
private bool ExpandTagModel() { TagExpander.Expand(LoadComposition.TagModelCollection, ModelsComposite.TagManager); return(true); }