def publish(dirname, lxml_path, release): if not os.path.exists(dirname): os.mkdir(dirname) doc_dir = os.path.join(lxml_path, 'doc') script = os.path.join(doc_dir, 'rest2html.py') pubkey = os.path.join(doc_dir, 'pubkey.asc') stylesheet_url = 'style.css' shutil.copy(pubkey, dirname) href_map = HREF_MAP.copy() changelog_basename = 'changes-%s' % release href_map['Release Changelog'] = changelog_basename + '.html' trees = {} menu = Element("div", {"class":"sidemenu"}) # build HTML pages and parse them back for section, text_files in SITE_STRUCTURE: section_head = make_menu_section_head(section, menu) for filename in text_files: if filename.startswith('@'): # special menu entry page_title = filename[1:] url = href_map[page_title] build_menu_entry(page_title, url, section_head) else: path = os.path.join(doc_dir, filename) basename = os.path.splitext(os.path.basename(filename))[0] basename = BASENAME_MAP.get(basename, basename) outname = basename + '.html' outpath = os.path.join(dirname, outname) rest2html(script, path, outpath, stylesheet_url) tree = parse(outpath) trees[filename] = (tree, basename, outpath) build_menu(tree, basename, section_head) # also convert CHANGES.txt rest2html(script, os.path.join(lxml_path, 'CHANGES.txt'), os.path.join(dirname, 'changes-%s.html' % release), '') # integrate menu for tree, basename, outpath in trees.itervalues(): new_tree = merge_menu(tree, menu, basename) title = find_title_tag(new_tree) if title and title[0].text == 'lxml': title[0].text = "lxml - Processing XML and HTML with Python" new_tree.write(outpath)
def publish(dirname, lxml_path, release): if not os.path.exists(dirname): os.mkdir(dirname) doc_dir = os.path.join(lxml_path, 'doc') script = os.path.join(doc_dir, 'rest2html.py') pubkey = os.path.join(doc_dir, 'pubkey.asc') stylesheet_url = 'style.css' shutil.copy(pubkey, dirname) href_map = HREF_MAP.copy() changelog_basename = 'changes-%s' % release href_map['Release Changelog'] = changelog_basename + '.html' trees = {} menu = Element("div", {"class": "sidemenu"}) # build HTML pages and parse them back for section, text_files in SITE_STRUCTURE: section_head = make_menu_section_head(section, menu) for filename in text_files: if filename.startswith('@'): # special menu entry page_title = filename[1:] url = href_map[page_title] build_menu_entry(page_title, url, section_head) else: path = os.path.join(doc_dir, filename) basename = os.path.splitext(os.path.basename(filename))[0] basename = BASENAME_MAP.get(basename, basename) outname = basename + '.html' outpath = os.path.join(dirname, outname) rest2html(script, path, outpath, stylesheet_url) tree = parse(outpath) trees[filename] = (tree, basename, outpath) build_menu(tree, basename, section_head) # also convert CHANGES.txt rest2html(script, os.path.join(lxml_path, 'CHANGES.txt'), os.path.join(dirname, 'changes-%s.html' % release), '') # integrate menu for tree, basename, outpath in trees.itervalues(): new_tree = merge_menu(tree, menu, basename) title = find_title_tag(new_tree) if title and title[0].text == 'lxml': title[0].text = "lxml - Processing XML and HTML with Python" new_tree.write(outpath)
def publish(dirname, lxml_path, release): if not os.path.exists(dirname): os.mkdir(dirname) doc_dir = os.path.join(lxml_path, 'doc') script = os.path.join(doc_dir, 'rest2html.py') pubkey = os.path.join(doc_dir, 'pubkey.asc') stylesheet_url = 'style.css' shutil.copy(pubkey, dirname) href_map = HREF_MAP.copy() changelog_basename = 'changes-%s' % release href_map['Release Changelog'] = changelog_basename + '.html' menu_js = textwrap.dedent(''' function trigger_menu(event) { var sidemenu = document.getElementById("sidemenu"); var classes = sidemenu.getAttribute("class"); classes = (classes.indexOf(" visible") === -1) ? classes + " visible" : classes.replace(" visible", ""); sidemenu.setAttribute("class", classes); event.preventDefault(); event.stopPropagation(); } function hide_menu() { var sidemenu = document.getElementById("sidemenu"); var classes = sidemenu.getAttribute("class"); if (classes.indexOf(" visible") !== -1) { sidemenu.setAttribute("class", classes.replace(" visible", "")); } } ''') trees = {} menu = Element("div", {'class': 'sidemenu', 'id': 'sidemenu'}) SubElement(menu, 'div', {'class': 'menutrigger', 'onclick': 'trigger_menu(event)'}).text = "Menu" menu_div = SubElement(menu, 'div', {'class': 'menu'}) # build HTML pages and parse them back for section, text_files in SITE_STRUCTURE: section_head = make_menu_section_head(section, menu_div) for filename in text_files: if filename.startswith('@'): # special menu entry page_title = filename[1:] url = href_map[page_title] build_menu_entry(page_title, url, section_head) else: path = os.path.join(doc_dir, filename) basename = os.path.splitext(os.path.basename(filename))[0] basename = BASENAME_MAP.get(basename, basename) outname = basename + '.html' outpath = os.path.join(dirname, outname) rest2html(script, path, outpath, stylesheet_url) tree = parse(outpath) if filename == 'main.txt': # inject donation buttons #inject_flatter_button(tree) inject_donate_buttons(lxml_path, script, tree) trees[filename] = (tree, basename, outpath) build_menu(tree, basename, section_head) # also convert CHANGES.txt convert_changelog(lxml_path, os.path.join(dirname, 'changes-%s.html' % release), script, stylesheet_url) # generate sitemap from menu sitemap = XML(textwrap.dedent('''\ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Sitemap of lxml.de - Processing XML and HTML with Python</title> <meta content="lxml - the most feature-rich and easy-to-use library for processing XML and HTML in the Python language" name="description" /> <meta content="Python XML, XML, XML processing, HTML, lxml, simple XML, ElementTree, etree, lxml.etree, objectify, XML parsing, XML validation, XPath, XSLT" name="keywords" /> </head> <body> <h1>Sitemap of lxml.de - Processing XML and HTML with Python</h1> </body> </html> ''')) sitemap_menu = copy.deepcopy(menu) SubElement(SubElement(sitemap_menu[-1], 'li'), 'a', href='http://lxml.de/files/').text = 'Download files' sitemap[-1].append(sitemap_menu) # append to body ElementTree(sitemap).write(os.path.join(dirname, 'sitemap.html')) # integrate sitemap into the menu SubElement(SubElement(menu_div[-1], 'li'), 'a', href='/sitemap.html').text = 'Sitemap' # integrate menu into web pages for tree, basename, outpath in trees.values(): head = find_head(tree)[0] SubElement(head, 'script', type='text/javascript').text = menu_js SubElement(head, 'meta', name='viewport', content="width=device-width, initial-scale=1") find_body(tree)[0].set('onclick', 'hide_menu()') new_tree = merge_menu(tree, menu, basename) title = find_title_tag(new_tree) if title and title[0].text == 'lxml': title[0].text = "lxml - Processing XML and HTML with Python" heading = find_heading_tag(new_tree) if heading: heading[0].text = "lxml - XML and HTML with Python" new_tree.write(outpath)
def publish(dirname, lxml_path, release): if not os.path.exists(dirname): os.mkdir(dirname) doc_dir = os.path.join(lxml_path, 'doc') script = os.path.join(doc_dir, 'rest2html.py') pubkey = os.path.join(doc_dir, 'pubkey.asc') stylesheet_url = 'style.css' shutil.copy(pubkey, dirname) href_map = HREF_MAP.copy() changelog_basename = 'changes-%s' % release href_map['Release Changelog'] = changelog_basename + '.html' trees = {} menu = Element("div", {"class": "sidemenu"}) # build HTML pages and parse them back for section, text_files in SITE_STRUCTURE: section_head = make_menu_section_head(section, menu) for filename in text_files: if filename.startswith('@'): # special menu entry page_title = filename[1:] url = href_map[page_title] build_menu_entry(page_title, url, section_head) else: path = os.path.join(doc_dir, filename) basename = os.path.splitext(os.path.basename(filename))[0] basename = BASENAME_MAP.get(basename, basename) outname = basename + '.html' outpath = os.path.join(dirname, outname) rest2html(script, path, outpath, stylesheet_url) tree = parse(outpath) if filename == 'main.txt': # inject donation buttons #inject_flatter_button(tree) inject_donate_buttons(lxml_path, script, tree) trees[filename] = (tree, basename, outpath) build_menu(tree, basename, section_head) # also convert CHANGES.txt rest2html(script, os.path.join(lxml_path, 'CHANGES.txt'), os.path.join(dirname, 'changes-%s.html' % release), '') # generate sitemap from menu sitemap = XML('''\ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Sitemap of lxml.de - Processing XML and HTML with Python</title> <meta content="lxml - the most feature-rich and easy-to-use library for processing XML and HTML in the Python language" name="description" /> <meta content="Python XML, XML, XML processing, HTML, lxml, simple XML, ElementTree, etree, lxml.etree, objectify, XML parsing, XML validation, XPath, XSLT" name="keywords" /> </head> <body> <h1>Sitemap of lxml.de - Processing XML and HTML with Python</h1> </body> </html> '''.replace(' ', ' ')) sitemap_menu = copy.deepcopy(menu) SubElement(SubElement(sitemap_menu[-1], 'li'), 'a', href='http://lxml.de/files/').text = 'Download files' sitemap[-1].append(sitemap_menu) # append to body ElementTree(sitemap).write(os.path.join(dirname, 'sitemap.html')) # integrate sitemap into the menu SubElement(SubElement(menu[-1], 'li'), 'a', href='http://lxml.de/sitemap.html').text = 'Sitemap' # integrate menu into web pages for tree, basename, outpath in trees.itervalues(): new_tree = merge_menu(tree, menu, basename) title = find_title_tag(new_tree) if title and title[0].text == 'lxml': title[0].text = "lxml - Processing XML and HTML with Python" heading = find_heading_tag(new_tree) if heading: heading[0].text = "lxml - XML and HTML with Python" new_tree.write(outpath)
def publish(dirname, lxml_path, release): if not os.path.exists(dirname): os.mkdir(dirname) doc_dir = os.path.join(lxml_path, 'doc') script = os.path.join(doc_dir, 'rest2html.py') pubkey = os.path.join(doc_dir, 'pubkey.asc') stylesheet_url = 'style.css' shutil.copy(pubkey, dirname) href_map = HREF_MAP.copy() changelog_basename = 'changes-%s' % release href_map['Release Changelog'] = changelog_basename + '.html' trees = {} menu = Element("div", {"class":"sidemenu"}) # build HTML pages and parse them back for section, text_files in SITE_STRUCTURE: section_head = make_menu_section_head(section, menu) for filename in text_files: if filename.startswith('@'): # special menu entry page_title = filename[1:] url = href_map[page_title] build_menu_entry(page_title, url, section_head) else: path = os.path.join(doc_dir, filename) basename = os.path.splitext(os.path.basename(filename))[0] basename = BASENAME_MAP.get(basename, basename) outname = basename + '.html' outpath = os.path.join(dirname, outname) rest2html(script, path, outpath, stylesheet_url) tree = parse(outpath) if filename == 'main.txt': # inject donation buttons #inject_flatter_button(tree) inject_donate_buttons(lxml_path, script, tree) trees[filename] = (tree, basename, outpath) build_menu(tree, basename, section_head) # also convert CHANGES.txt rest2html(script, os.path.join(lxml_path, 'CHANGES.txt'), os.path.join(dirname, 'changes-%s.html' % release), '') # generate sitemap from menu sitemap = XML('''\ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Sitemap of lxml.de - Processing XML and HTML with Python</title> <meta content="lxml - the most feature-rich and easy-to-use library for processing XML and HTML in the Python language" name="description" /> <meta content="Python XML, XML, XML processing, HTML, lxml, simple XML, ElementTree, etree, lxml.etree, objectify, XML parsing, XML validation, XPath, XSLT" name="keywords" /> </head> <body> <h1>Sitemap of lxml.de - Processing XML and HTML with Python</h1> </body> </html> '''.replace(' ', ' ')) sitemap_menu = copy.deepcopy(menu) SubElement(SubElement(sitemap_menu[-1], 'li'), 'a', href='http://lxml.de/files/').text = 'Download files' sitemap[-1].append(sitemap_menu) # append to body ElementTree(sitemap).write(os.path.join(dirname, 'sitemap.html')) # integrate sitemap into the menu SubElement(SubElement(menu[-1], 'li'), 'a', href='http://lxml.de/sitemap.html').text = 'Sitemap' # integrate menu into web pages for tree, basename, outpath in trees.itervalues(): new_tree = merge_menu(tree, menu, basename) title = find_title_tag(new_tree) if title and title[0].text == 'lxml': title[0].text = "lxml - Processing XML and HTML with Python" heading = find_heading_tag(new_tree) if heading: heading[0].text = "lxml - XML and HTML with Python" new_tree.write(outpath)
def publish(dirname, lxml_path, release): if not os.path.exists(dirname): os.mkdir(dirname) doc_dir = os.path.join(lxml_path, 'doc') script = os.path.join(doc_dir, 'rest2html.py') pubkey = os.path.join(doc_dir, 'pubkey.asc') stylesheet_url = 'style.css' shutil.copy(pubkey, dirname) href_map = HREF_MAP.copy() changelog_basename = 'changes-%s' % release href_map['Release Changelog'] = changelog_basename + '.html' menu_js = textwrap.dedent(''' function trigger_menu(event) { var sidemenu = document.getElementById("sidemenu"); var classes = sidemenu.getAttribute("class"); classes = (classes.indexOf(" visible") === -1) ? classes + " visible" : classes.replace(" visible", ""); sidemenu.setAttribute("class", classes); event.preventDefault(); event.stopPropagation(); } function hide_menu() { var sidemenu = document.getElementById("sidemenu"); var classes = sidemenu.getAttribute("class"); if (classes.indexOf(" visible") !== -1) { sidemenu.setAttribute("class", classes.replace(" visible", "")); } } ''') trees = {} menu = Element("div", {'class': 'sidemenu', 'id': 'sidemenu'}) SubElement(menu, 'div', {'class': 'menutrigger', 'onclick': 'trigger_menu(event)'}).text = "Menu" menu_div = SubElement(menu, 'div', {'class': 'menu'}) # build HTML pages and parse them back for section, text_files in SITE_STRUCTURE: section_head = make_menu_section_head(section, menu_div) for filename in text_files: if filename.startswith('@'): # special menu entry page_title = filename[1:] url = href_map[page_title] build_menu_entry(page_title, url, section_head) else: path = os.path.join(doc_dir, filename) basename = os.path.splitext(os.path.basename(filename))[0] basename = BASENAME_MAP.get(basename, basename) outname = basename + '.html' outpath = os.path.join(dirname, outname) rest2html(script, path, outpath, stylesheet_url) tree = parse(outpath) if filename == 'main.txt': # inject donation buttons #inject_flatter_button(tree) inject_donate_buttons(lxml_path, script, tree) trees[filename] = (tree, basename, outpath) build_menu(tree, basename, section_head) # also convert CHANGES.txt convert_changelog(lxml_path, os.path.join(dirname, 'changes-%s.html' % release), script, stylesheet_url) # generate sitemap from menu sitemap = XML(textwrap.dedent('''\ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Sitemap of lxml.de - Processing XML and HTML with Python</title> <meta content="lxml - the most feature-rich and easy-to-use library for processing XML and HTML in the Python language" name="description" /> <meta content="Python XML, XML, XML processing, HTML, lxml, simple XML, ElementTree, etree, lxml.etree, objectify, XML parsing, XML validation, XPath, XSLT" name="keywords" /> </head> <body> <h1>Sitemap of lxml.de - Processing XML and HTML with Python</h1> </body> </html> ''')) sitemap_menu = copy.deepcopy(menu) SubElement(SubElement(sitemap_menu[-1], 'li'), 'a', href='http://lxml.de/files/').text = 'Download files' sitemap[-1].append(sitemap_menu) # append to body ElementTree(sitemap).write(os.path.join(dirname, 'sitemap.html')) # integrate sitemap into the menu SubElement(SubElement(menu_div[-1], 'li'), 'a', href='http://lxml.de/sitemap.html').text = 'Sitemap' # integrate menu into web pages for tree, basename, outpath in trees.itervalues(): head = find_head(tree)[0] SubElement(head, 'script', type='text/javascript').text = menu_js SubElement(head, 'meta', name='viewport', content="width=device-width, initial-scale=1") find_body(tree)[0].set('onclick', 'hide_menu()') new_tree = merge_menu(tree, menu, basename) title = find_title_tag(new_tree) if title and title[0].text == 'lxml': title[0].text = "lxml - Processing XML and HTML with Python" heading = find_heading_tag(new_tree) if heading: heading[0].text = "lxml - XML and HTML with Python" new_tree.write(outpath)