Ejemplo n.º 1
0
        public virtual string CreateString(int minIndex = -1)
        {
            Initialize();

            string result = Label;
            var    tags   = SubTags
                            .OrderBy(l => l.m_Index)
                            .SkipWhile(l => l.m_Index <= minIndex)
                            .ToList();

            if (tags.Any())
            {
                var first = tags.First();
                result = first
                         .CreateString(minIndex)
                         .AppendStatus(Label);
                minIndex = first.m_Index;

                foreach (var tag in tags.Skip(1))
                {
                    result   = result.AppendSubStatus(tag.CreateString(minIndex));
                    minIndex = tag.m_Index;
                }
            }
            return(result);
        }
Ejemplo n.º 2
0
        public void AddTag(Tag tag)
        {
            if (GetTag(tag.Name) != null && tag.Name != "") // Tags with "" are actually list items
            {
                var index = 0;
                for (var i = 0; i < SubTags.Count; i++)
                {
                    if (SubTags[i].Name == tag.Name)
                    {
                        index = i;
                        break;
                    }
                }

                Logger.Log($"Adding Tag of a similar name {tag.Name}");
                if (tag.SubTags.Count == 0)
                {
                    Logger.Log("Replacing Tag, as it is a value tag");
                    SubTags.RemoveAt(index);
                }
                else
                {
                    Logger.Log("Because there are subtags, merging tags");
                    foreach (var t in tag.SubTags)
                    {
                        SubTags[index].AddTag(t);
                    }

                    return;
                }
            }

            SubTags.Add(tag);
        }
Ejemplo n.º 3
0
        public IEnumerable <CmdTag> LocateCmdPath(EnterCommandAttribute cmd)
        {
            var stack = new Stack <CmdTag>();

            return(SubTags.Any(subTag => FindCmdPath(subTag, cmd, stack)) ? stack.ToList() : default);
Ejemplo n.º 4
0
 public IEnumerator <Asn1Tag> GetEnumerator()
 {
     return(SubTags.GetEnumerator());
 }
Ejemplo n.º 5
0
 protected internal void AddSubTag(Asn1Tag subTag)
 {
     SubTags.Add(subTag);
     subTag.ParentTag = this;
 }