public void AddAbstractNumbering(int id, int level, NumberingDefinition numberingDefinition)
        {
            if (!_abstractNumIdToStyle.TryGetValue(id, out var levelDict))
            {
                _abstractNumIdToStyle[id] = levelDict = new Dictionary <int, NumberingDefinition>();
            }

            levelDict[level] = numberingDefinition;
        }
示例#2
0
        public string Convert(NumberingDefinition numberingDefinition, int number)
        {
            if (_converters.TryGetValue(numberingDefinition.Style, out var converter))
            {
                return(converter.Convert(number));
            }

            throw new NotImplementedException($"{numberingDefinition.Style.ToString()} has not been supported");
        }
示例#3
0
        public NumberingDefinition Override(NumberingDefinition def)
        {
            if (Style.HasValue)
            {
                def.Style = Style.Value;
            }

            if (StartFrom.HasValue)
            {
                def.StartFrom = StartFrom.Value;
            }

            if (Template != null)
            {
                def.Template = Template;
            }

            if (Suffix != null)
            {
                def.Suffix = Suffix;
            }

            return(def);
        }
示例#4
0
        private void PrepareNumbering()
        {
            if (_numberingDefinitionsPart == null || _numberingDefinitionsPart.Numbering == null)
            {
                return;
            }

            foreach (var child in _numberingDefinitionsPart.Numbering.ChildElements)
            {
                if (child is AbstractNum abstractNum &&
                    abstractNum.AbstractNumberId?.HasValue == true)
                {
                    var abstractNumId = abstractNum.AbstractNumberId.Value;
                    foreach (var item in abstractNum.ChildElements)
                    {
                        if (item is Level level &&
                            level.LevelIndex?.HasValue == true &&
                            level.LevelText?.Val?.HasValue == true)
                        {
                            var def = new NumberingDefinition
                            {
                                StartFrom = level.StartNumberingValue?.Val?.HasValue == true ? level.StartNumberingValue.Val.Value : 1,
                                Template  = level.LevelText.Val.Value,
                                Suffix    = ParseLevelSuffix(level.LevelSuffix),
                                Style     = ParseNumberingFormat(level.NumberingFormat),
                            };

                            _numberingManager.AddAbstractNumbering(
                                abstractNumId,
                                level.LevelIndex.Value,
                                def);
                        }
                    }
                }
            }

            foreach (var child in _numberingDefinitionsPart.Numbering.ChildElements)
            {
                if (child is NumberingInstance num &&
                    num.NumberID?.HasValue == true &&
                    num.AbstractNumId?.Val?.HasValue == true)
                {
                    _numberingManager.AddNumbering(num.NumberID.Value, num.AbstractNumId.Val.Value);

                    foreach (var item in num.ChildElements)
                    {
                        if (item is LevelOverride lvlOverride &&
                            lvlOverride.LevelIndex?.HasValue == true)
                        {
                            var def = new OverrideNumberingDefinition();

                            var lvl = lvlOverride.Level;
                            if (lvl != null)
                            {
                                if (lvl.StartNumberingValue?.Val?.HasValue == true)
                                {
                                    def.StartFrom
                                        = lvl.StartNumberingValue.Val.Value;
                                }

                                if (lvl.LevelSuffix?.Val?.HasValue == true)
                                {
                                    def.Suffix = ParseLevelSuffix(lvl.LevelSuffix);
                                }

                                if (lvl.LevelText?.Val?.HasValue == true)
                                {
                                    def.Template = lvl.LevelText.Val.Value;
                                }

                                if (lvl.NumberingFormat?.Val?.HasValue == true)
                                {
                                    def.Style = ParseNumberingFormat(lvl.NumberingFormat);
                                }
                            }

                            if (lvlOverride.StartOverrideNumberingValue?.Val?.HasValue == true)
                            {
                                def.StartFrom = lvlOverride.StartOverrideNumberingValue.Val.Value;
                            }

                            _numberingManager.OverrideNumbering(
                                num.NumberID,
                                lvlOverride.LevelIndex.Value,
                                def);
                        }
                    }
                }
            }
        }