16516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru""" 26516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru========================= IMAGE LINKS ================================= 36516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru 46516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru 56516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste QueruTurns paragraphs like 66516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru 76516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru<~~~~~~~~~~~~~~~~~~~~~~~~ 86516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Querudir/subdir 96516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Querudir/subdir 106516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Querudir/subdir 116516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru~~~~~~~~~~~~~~ 126516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Querudir/subdir 136516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Querudir/subdir 146516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Querudir/subdir 156516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru~~~~~~~~~~~~~~~~~~~> 166516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru 176516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste QueruInto mini-photo galleries. 186516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru 196516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru""" 206516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru 216516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queruimport re, markdown 226516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queruimport url_manager 236516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru 246516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru 256516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste QueruIMAGE_LINK = """<a href="%s"><img src="%s" title="%s"/></a>""" 266516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste QueruSLIDESHOW_LINK = """<a href="%s" target="_blank">[slideshow]</a>""" 276516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste QueruALBUM_LINK = """ <a href="%s">[%s]</a>""" 286516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru 296516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru 306516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queruclass ImageLinksExtension(markdown.Extension): 316516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru 326516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru def extendMarkdown(self, md, md_globals): 336516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru 346516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru md.preprocessors.add("imagelink", ImageLinkPreprocessor(md), "_begin") 356516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru 366516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru 376516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queruclass ImageLinkPreprocessor(markdown.preprocessors.Preprocessor): 386516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru 396516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru def run(self, lines): 406516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru 416516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru url = url_manager.BlogEntryUrl(url_manager.BlogUrl("all"), 426516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru "2006/08/29/the_rest_of_our") 436516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru 446516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru 456516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru all_images = [] 466516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru blocks = [] 476516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru in_image_block = False 486516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru 496516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru new_lines = [] 506516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru 516516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru for line in lines: 526516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru 536516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru if line.startswith("<~~~~~~~"): 546516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru albums = [] 556516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru rows = [] 566516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru in_image_block = True 576516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru 586516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru if not in_image_block: 596516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru 606516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru new_lines.append(line) 616516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru 626516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru else: 636516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru 646516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru line = line.strip() 656516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru 666516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru if line.endswith("~~~~~~>") or not line: 676516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru in_image_block = False 686516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru new_block = "<div><br/><center><span class='image-links'>\n" 696516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru 706516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru album_url_hash = {} 716516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru 726516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru for row in rows: 736516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru for photo_url, title in row: 746516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru new_block += " " 756516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru new_block += IMAGE_LINK % (photo_url, 766516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru photo_url.get_thumbnail(), 776516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru title) 786516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru 796516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru album_url_hash[str(photo_url.get_album())] = 1 806516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru 816516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru new_block += "<br/>" 826516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru 836516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru new_block += "</span>" 846516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru new_block += SLIDESHOW_LINK % url.get_slideshow() 856516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru 866516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru album_urls = album_url_hash.keys() 876516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru album_urls.sort() 886516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru 896516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru if len(album_urls) == 1: 906516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru new_block += ALBUM_LINK % (album_urls[0], "complete album") 916516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru else : 926516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru for i in range(len(album_urls)) : 936516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru new_block += ALBUM_LINK % (album_urls[i], 946516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru "album %d" % (i + 1) ) 956516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru 966516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru new_lines.append(new_block + "</center><br/></div>") 976516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru 986516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru elif line[1:6] == "~~~~~" : 996516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru rows.append([]) # start a new row 1006516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru else : 1016516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru parts = line.split() 1026516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru line = parts[0] 1036516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru title = " ".join(parts[1:]) 1046516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru 1056516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru album, photo = line.split("/") 1066516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru photo_url = url.get_photo(album, photo, 1076516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru len(all_images)+1) 1086516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru all_images.append(photo_url) 1096516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru rows[-1].append((photo_url, title)) 1106516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru 1116516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru if not album in albums : 1126516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru albums.append(album) 1136516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru 1146516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru return new_lines 1156516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru 1166516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru 1176516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Querudef makeExtension(configs): 1186516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru return ImageLinksExtension(configs) 1196516b99bb74dfb7187a08f7090bf7ca22a006f15Jean-Baptiste Queru 120