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; }
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"); }
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); }
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); } } } } }