public static Token GetToken(TagTypeContainer closerTag, TagTypeContainer openerTag, string result) { var end = closerTag.position + closerTag.Tag.Length - 1; var stringValueStart = openerTag.position + openerTag.Tag.Length; var token = new Token(result.ToString().Substring(stringValueStart, closerTag.position - stringValueStart), openerTag.position, end); return(token); }
private void WrapTag(TagTypeContainer typeContainer, StringBuilder result) { var token = GetToken(typeContainer, stackTags.Peek(), result.ToString()); var wrappedTag = Wrapper.WrapWithTag( typeContainer.Tag, token); result.Remove(token.Start, token.End - token.Start + 1) .Insert(token.Start, wrappedTag); }
public override bool TryGetCorrectTagContainer(int start, string input, out TagTypeContainer tagContainer, ITag tag) { if (start != 0) { if (start + tag.Length < input.Length) // "__ " { if (isOpen[tag.StringTag]) { if (input[start - 1] != ' ') { tagContainer = new TagTypeContainer(tag, isOpen[tag.StringTag], start); // b_ closer return(true); } } if (input[start + tag.Length] != ' ') { tagContainer = new TagTypeContainer(tag, isOpen[tag.StringTag], start); // opener return(true); } } if (start + tag.Length == input.Length) //"__" { if (isOpen[tag.StringTag]) { if (input[start - 1] != ' ') { tagContainer = new TagTypeContainer(tag, isOpen[tag.StringTag], start); // closer return(true); } } tagContainer = new TagTypeContainer(tag, isOpen[tag.StringTag], start); // opener return(true); } } if (input[start + tag.Length] != ' ') { tagContainer = new TagTypeContainer(tag, isOpen[tag.StringTag], start); // opener return(true); } tagContainer = null; return(false); }
public abstract bool TryGetCorrectTagContainer(int start, string input, out TagTypeContainer tagContainer, ITag tag);