Bug 731779: Integrate the Add-on SDK loader and API libraries into Firefox (uplifting from addon-sdk a16bbd5772880b578a939eeb65102bca6560d494)
This commit is contained in:
119
addon-sdk/source/python-lib/markdown/extensions/imagelinks.py
Normal file
119
addon-sdk/source/python-lib/markdown/extensions/imagelinks.py
Normal file
@@ -0,0 +1,119 @@
|
||||
"""
|
||||
========================= IMAGE LINKS =================================
|
||||
|
||||
|
||||
Turns paragraphs like
|
||||
|
||||
<~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
dir/subdir
|
||||
dir/subdir
|
||||
dir/subdir
|
||||
~~~~~~~~~~~~~~
|
||||
dir/subdir
|
||||
dir/subdir
|
||||
dir/subdir
|
||||
~~~~~~~~~~~~~~~~~~~>
|
||||
|
||||
Into mini-photo galleries.
|
||||
|
||||
"""
|
||||
|
||||
import re, markdown
|
||||
import url_manager
|
||||
|
||||
|
||||
IMAGE_LINK = """<a href="%s"><img src="%s" title="%s"/></a>"""
|
||||
SLIDESHOW_LINK = """<a href="%s" target="_blank">[slideshow]</a>"""
|
||||
ALBUM_LINK = """ <a href="%s">[%s]</a>"""
|
||||
|
||||
|
||||
class ImageLinksExtension(markdown.Extension):
|
||||
|
||||
def extendMarkdown(self, md, md_globals):
|
||||
|
||||
md.preprocessors.add("imagelink", ImageLinkPreprocessor(md), "_begin")
|
||||
|
||||
|
||||
class ImageLinkPreprocessor(markdown.preprocessors.Preprocessor):
|
||||
|
||||
def run(self, lines):
|
||||
|
||||
url = url_manager.BlogEntryUrl(url_manager.BlogUrl("all"),
|
||||
"2006/08/29/the_rest_of_our")
|
||||
|
||||
|
||||
all_images = []
|
||||
blocks = []
|
||||
in_image_block = False
|
||||
|
||||
new_lines = []
|
||||
|
||||
for line in lines:
|
||||
|
||||
if line.startswith("<~~~~~~~"):
|
||||
albums = []
|
||||
rows = []
|
||||
in_image_block = True
|
||||
|
||||
if not in_image_block:
|
||||
|
||||
new_lines.append(line)
|
||||
|
||||
else:
|
||||
|
||||
line = line.strip()
|
||||
|
||||
if line.endswith("~~~~~~>") or not line:
|
||||
in_image_block = False
|
||||
new_block = "<div><br/><center><span class='image-links'>\n"
|
||||
|
||||
album_url_hash = {}
|
||||
|
||||
for row in rows:
|
||||
for photo_url, title in row:
|
||||
new_block += " "
|
||||
new_block += IMAGE_LINK % (photo_url,
|
||||
photo_url.get_thumbnail(),
|
||||
title)
|
||||
|
||||
album_url_hash[str(photo_url.get_album())] = 1
|
||||
|
||||
new_block += "<br/>"
|
||||
|
||||
new_block += "</span>"
|
||||
new_block += SLIDESHOW_LINK % url.get_slideshow()
|
||||
|
||||
album_urls = album_url_hash.keys()
|
||||
album_urls.sort()
|
||||
|
||||
if len(album_urls) == 1:
|
||||
new_block += ALBUM_LINK % (album_urls[0], "complete album")
|
||||
else :
|
||||
for i in range(len(album_urls)) :
|
||||
new_block += ALBUM_LINK % (album_urls[i],
|
||||
"album %d" % (i + 1) )
|
||||
|
||||
new_lines.append(new_block + "</center><br/></div>")
|
||||
|
||||
elif line[1:6] == "~~~~~" :
|
||||
rows.append([]) # start a new row
|
||||
else :
|
||||
parts = line.split()
|
||||
line = parts[0]
|
||||
title = " ".join(parts[1:])
|
||||
|
||||
album, photo = line.split("/")
|
||||
photo_url = url.get_photo(album, photo,
|
||||
len(all_images)+1)
|
||||
all_images.append(photo_url)
|
||||
rows[-1].append((photo_url, title))
|
||||
|
||||
if not album in albums :
|
||||
albums.append(album)
|
||||
|
||||
return new_lines
|
||||
|
||||
|
||||
def makeExtension(configs):
|
||||
return ImageLinksExtension(configs)
|
||||
|
||||
Reference in New Issue
Block a user