SplitToSections() public static method

Splits wikitext to sections based on any level wiki heading. Includes zeroth section
public static SplitToSections ( string articleText ) : string[]
articleText string Page text
return string[]
Esempio n. 1
0
        /// <summary>
        /// Returns the name of modified section or empty string if more than one section has changed
        /// </summary>
        /// <param name="originalText"></param>
        /// <param name="articleText"></param>
        /// <returns></returns>
        public static string ModifiedSection(string originalText, string articleText)
        {
            string[] sectionsBefore = Tools.SplitToSections(originalText);
            if (sectionsBefore.Length == 0)
                return "";

            string[] sectionsAfter = Tools.SplitToSections(articleText);

            // if number of sections has changed, can't provide section edit summary
            if (sectionsAfter.Length != sectionsBefore.Length)
                return "";

            int sectionsChanged = 0, sectionChangeNumber = 0;

            for (int i = 0; i < sectionsAfter.Length; i++)
            {
                if (!sectionsBefore[i].Equals(sectionsAfter[i]))
                {
                    sectionsChanged++;
                    sectionChangeNumber = i;
                }

                // if multiple sections changed, can't provide section edit summary
                if (sectionsChanged > 1)
                    return "";
            }

            // so SectionsChanged == 1, get heading name from regex
            return WikiRegexes.Headings.Match(sectionsAfter[sectionChangeNumber]).Groups[1].Value.Trim();
        }