git @ Cat's Eye Technologies Feedmark / 123f447
Write a detailed dictionary of information about each link. Chris Pressey 6 years ago
2 changed file(s) with 23 addition(s) and 8 deletion(s). Raw diff Collapse all Expand all
5555
5656 def extract_links_from_documents(documents):
5757 links = []
58
59 def make_link(url, section=None, **kwargs):
60 link = {
61 'url': url,
62 }
63 if section:
64 link.update({
65 'section': section.title,
66 'document': section.document.title,
67 })
68 link.update(kwargs)
69 return link
70
71 def extend_links(section, md):
72 links.extend([make_link(url, section=section) for url in extract_links(markdown_to_html5(md))])
73
5874 for document in documents:
5975 for name, url in document.reference_links:
60 links.append((url, None))
76 links.append(make_link(url, name=name))
6177 for section in document.sections:
6278 for (name, url) in section.images:
63 links.append((url, section))
79 links.append(make_link(url, section=section, name=name))
6480 for key, value in section.properties.iteritems():
6581 if isinstance(value, list):
6682 for subitem in value:
67 links.extend([(url, section) for url in extract_links(markdown_to_html5(subitem))])
83 extend_links(section, subitem)
6884 else:
69 links.extend([(url, section) for url in extract_links(markdown_to_html5(value))])
85 extend_links(section, value)
7086 for name, url in section.reference_links:
71 links.append((url, section))
72 links.extend([(url, section) for url in extract_links(markdown_to_html5(section.body))])
87 links.append(make_link(url, section=section, name=name))
88 extend_links(section, section.body)
7389 return links
263263 if options.output_links:
264264 from feedmark.checkers import extract_links_from_documents
265265 links = extract_links_from_documents(documents)
266 jsonable_links = [(url, section.title if section else "(no section)") for (url, section) in links]
267 write(json.dumps(jsonable_links, indent=4, sort_keys=True))
266 write(json.dumps(links, indent=4, sort_keys=True))
268267
269268 if options.output_markdown:
270269 from feedmark.formats.markdown import feedmark_markdownize