Tanka.Markdown.MarkdownParser.ResolveReferences C# (CSharp) Method

ResolveReferences() private method

private ResolveReferences ( List blocks ) : void
blocks List
return void
        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);
                }
            }
        }
    }