Example #1
0
        public string GetFormattedNumber(int numId, int iLvl)
        {
            if (numbering == null || iLvl < 0 || numId == -1)
            {
                return(string.Empty);
            }

            var instances = numbering.Where(r => r is NumberingInstance).Select(r => r as NumberingInstance).ToList();
            var instance  = instances.Where(r => r.NumberID.HasValue && r.NumberID.Value == numId).FirstOrDefault();

            if (instance == null)
            {
                return(string.Empty);
            }

            int currAbNumId = instance.AbstractNumId.Val.Value;

            var abstractNums = numbering.Where(r => r is AbstractNum).Select(r => r as AbstractNum);
            var abNum        = abstractNums.Where(r => r.AbstractNumberId.HasValue && r.AbstractNumberId.Value == instance.AbstractNumId.Val.Value)
                               .Select(r => r).FirstOrDefault();

            ParagraphLevelCounter lc;

            listLevelMap.TryGetValue(currAbNumId, out lc);

            LevelTuple[] overrideTuples;
            overrideTupleMap.TryGetValue(numId, out overrideTuples);

            if (lc == null)
            {
                lc = LoadLevelTuples(abNum);
            }

            if (overrideTuples == null)
            {
                overrideTuples = LoadOverrideTuples(abNum, lc.LevelCount);
            }

            string formattedString = lc.IncrementLevel(iLvl, overrideTuples);

            listLevelMap[currAbNumId] = lc;
            overrideTupleMap[numId]   = overrideTuples;

            return(formattedString);
        }