public bool Process(WikiDocument doc, TagObj obj)
        {
            WikiHeader summary;
            object     summaryText = obj[SUMMARY];

            if (summaryText != null)
            {
                obj[SUMMARY]  = null;
                summary       = new WikiHeader();
                summary.level = 1;
                summary.name  = PAGENAME;
                string sum = summaryText.ToString();
                if (String.IsNullOrEmpty(sum))
                {
                    sum = PAGENAME;
                }
                summary.text.Add(sum);
                doc.headers.Insert(0, summary);
            }
            WikiHeader head0 = doc.headers.Count > 0 ? doc.headers[0] : null;

            if ((head0 == null) || (!head0.name.Equals(PAGENAME)))
            {
                summary       = new WikiHeader();
                summary.level = 1;
                summary.name  = PAGENAME;
                summary.text.Add(PAGENAME);
                doc.headers.Insert(0, summary);
            }
            return(true);
        }
 public WikiDocument(string title, string text)
 {
     this.title = title;
     header     = null;
     string[] rows = text.Split(SEP);
     for (int i = 0; i < rows.Length; i++)
     {
         ProcessRow(rows[i]);
     }
 }
 public void Process(WikiDocument doc, WikiMedia.ExportNotify notify)
 {
     foreach (string name in blacklist)
     {
         WikiHeader header = doc.FindHeader(name);
         if (header != null)
         {
             notify("E\t" + doc.title + "\tInvalid header: " + name + "\n");
         }
     }
 }
 public void Process(WikiDocument doc, WikiMedia.ExportNotify notify)
 {
     foreach (string name in requiredNames)
     {
         WikiHeader header = doc.FindHeader(name);
         if (header == null)
         {
             notify("E\t" + doc.title + "\tMissing header: " + name + "\n");
         }
     }
 }
        public override string ToString()
        {
            StringBuilder sb = new StringBuilder(1024);

            for (int i = 0; i < rowData.text.Count; i++)
            {
                sb.Append(rowData.text[i].ToString()).Append('\n');
            }
            for (int i = 0; i < headers.Count; i++)
            {
                WikiHeader header = headers[i];
                sb.Append(header.ToString());
            }
            return(sb.ToString());
        }
 public WikiHeader FindHeader(string name)
 {
     if (name != null)
     {
         for (int i = 0; i < headers.Count; i++)
         {
             WikiHeader header = headers[i];
             if (name.Equals(header.name))
             {
                 return(header);
             }
         }
     }
     return(null);
 }
 public WikiHeader FindHeader(int level, string name)
 {
     if (name != null)
     {
         for (int i = 0; i < headers.Count - 1; i++)
         {
             WikiHeader header = headers[i];
             if ((header.level == level) && (name.Equals(header.name)))
             {
                 return(header);
             }
         }
     }
     return(null);
 }
 public bool Process(WikiDocument doc)
 {
     for (int i = doc.headers.Count - 1; i >= 0; i--)
     {
         WikiHeader header = doc.headers[i];
         if (header.text.Count == 0)
         {
             int nextLev = header.level;
             if (i < doc.headers.Count - 1)
             {
                 nextLev = doc.headers[i + 1].level;
             }
             if (header.level >= nextLev)
             {
                 doc.headers.RemoveAt(i);
             }
         }
     }
     return(true);
 }
        public void ProcessHeaderRow(string row)
        {
            WikiHeader    newHeader = new WikiHeader();
            int           lev       = 0;
            int           state     = 0;
            StringBuilder name      = new StringBuilder();

            for (int ci = 0; ci < row.Length; ci++)
            {
                if (row[ci] == '=')
                {
                    if (state == 0)
                    {
                        lev++;
                    }
                    else
                    {
                        state = 2;
                    }
                }
                else
                {
                    if (state == 0)
                    {
                        state = 1;
                    }
                    if (state == 1)
                    {
                        name.Append(row[ci]);
                    }
                }
            }
            newHeader.name  = name.ToString().Trim();
            newHeader.level = lev;
            headers.Add(newHeader);
            header = newHeader;
        }