Пример #1
0
        private void ResolveReferences(List<Block> blocks)
        {
            List<LinkDefinition> linkDefinitions = blocks.OfType<LinkDefinitionList>()
                .SelectMany(list => list.Definitions).ToList();

            foreach (Paragraph paragraph in blocks.OfType<Paragraph>())
            {
                foreach (ReferenceLinkSpan referenceLink in paragraph.Spans.OfType<ReferenceLinkSpan>().ToList())
                {
                    string key = referenceLink.Key.ToString().ToLower();

                    LinkDefinition definition =
                        linkDefinitions.FirstOrDefault(def => def.Key.ToString().ToLower() == key);

                    if (definition == null)
                        continue;

                    // replace the reference with a link
                    var link = new LinkSpan(
                        paragraph,
                        referenceLink.Start,
                        referenceLink.End,
                        referenceLink.Title,
                        definition.Url);

                    paragraph.Replace(referenceLink, link);
                }
            }
        }
Пример #2
0
 public void Replace(Span target, LinkSpan withThis)
 {
     int indexOf = _spans.IndexOf(target);
     _spans.Remove(target);
     _spans.Insert(indexOf, withThis);
 }