def visit_moinpage_list(self, elem): attrib = Attributes(elem) attrib_new = attrib.convert() generate = attrib.get('item-label-generate') if generate: if generate == 'ordered': style = attrib.get('list-style-type') if style: if style == 'upper-alpha': attrib_new[html('class')] = 'moin-upperalpha-list' elif style == 'upper-roman': attrib_new[html('class')] = 'moin-upperroman-list' elif style == 'lower-roman': attrib_new[html('class')] = 'moin-lowerroman-list' elif style == 'lower-alpha': attrib_new[html('class')] = 'moin-loweralpha-list' start_number = attrib.get('list-start') if start_number: attrib_new[html('start')] = start_number ret = html.ol(attrib_new) elif generate == 'unordered': style = attrib.get('list-style-type') if style and style == 'no-bullet': attrib_new[html('class')] = 'moin-nobullet-list' ret = html.ul(attrib=attrib_new) else: raise ElementException( 'page:item-label-generate does not support "{0}"'.format( generate)) else: ret = html.dl(attrib=attrib_new) # TODO: ReST parser creates definition list classifiers but they are ignored here. # TODO: An extraneous "<dd></dd>" is created given " object::\n :: desc 1\n :: desc 2\n" -- moinwiki_in error? for item in elem: if isinstance(item, ET.Element): if item.tag.uri == moin_page and item.tag.name == 'list-item': if not generate: for label in item: if isinstance(label, ET.Element): if label.tag.uri == moin_page and label.tag.name == 'list-item-label': ret_label = self.new_copy(html.dt, label) ret.append(ret_label) for body in item: if isinstance(body, ET.Element): if body.tag.uri == moin_page and body.tag.name == 'list-item-body': if generate: ret_body = self.new_copy(html.li, body) else: ret_body = self.new_copy(html.dd, body) ret.append(ret_body) break return ret
def visit_moinpage_list(self, elem): attrib = Attributes(elem) attrib_new = attrib.convert() generate = attrib.get('item-label-generate') if generate: if generate == 'ordered': style = attrib.get('list-style-type') if style: if style == 'upper-alpha': attrib_new[html('class')] = 'moin-upperalpha-list' elif style == 'upper-roman': attrib_new[html('class')] = 'moin-upperroman-list' elif style == 'lower-roman': attrib_new[html('class')] = 'moin-lowerroman-list' elif style == 'lower-alpha': attrib_new[html('class')] = 'moin-loweralpha-list' start_number = attrib.get('list-start') if start_number: attrib_new[html('start')] = start_number ret = html.ol(attrib_new) elif generate == 'unordered': style = attrib.get('list-style-type') if style and style == 'no-bullet': attrib_new[html('class')] = 'moin-nobullet-list' ret = html.ul(attrib=attrib_new) else: raise ElementException('page:item-label-generate does not support "{0}"'.format(generate)) else: ret = html.dl(attrib=attrib_new) # TODO: ReST parser creates definition list classifiers but they are ignored here. # TODO: An extraneous "<dd></dd>" is created given " object::\n :: desc 1\n :: desc 2\n" -- moinwiki_in error? for item in elem: if isinstance(item, ET.Element): if item.tag.uri == moin_page and item.tag.name == 'list-item': if not generate: for label in item: if isinstance(label, ET.Element): if label.tag.uri == moin_page and label.tag.name == 'list-item-label': ret_label = self.new_copy(html.dt, label) ret.append(ret_label) for body in item: if isinstance(body, ET.Element): if body.tag.uri == moin_page and body.tag.name == 'list-item-body': if generate: ret_body = self.new_copy(html.li, body) else: ret_body = self.new_copy(html.dd, body) ret.append(ret_body) break return ret
def visit_moinpage_list(self, elem): attrib = Attributes(elem) attrib_new = attrib.convert() generate = attrib.get('item-label-generate') if generate: if generate == 'ordered': style = attrib.get('list-style-type') if style: if style == 'upper-alpha': attrib_new[html('class')] = 'moin-upperalpha-list' elif style == 'upper-roman': attrib_new[html('class')] = 'moin-upperroman-list' elif style == 'lower-roman': attrib_new[html('class')] = 'moin-lowerroman-list' elif style == 'lower-alpha': attrib_new[html('class')] = 'moin-loweralpha-list' start_number = attrib.get('list-start') if start_number: attrib_new[html('start')] = start_number ret = html.ol(attrib_new) elif generate == 'unordered': style = attrib.get('list-style-type') if style and style == 'no-bullet': attrib_new[html('class')] = 'moin-nobullet-list' ret = html.ul(attrib=attrib_new) else: raise ElementException( 'page:item-label-generate does not support "{0}"'.format( generate)) else: ret = html.dl(attrib=attrib_new) for item in elem: if isinstance(item, ET.Element): if item.tag.uri == moin_page and item.tag.name == 'list-item': if not generate: for label in item: if isinstance(label, ET.Element): if label.tag.uri == moin_page and label.tag.name == 'list-item-label': ret_label = self.new_copy(html.dt, label) ret.append(ret_label) for body in item: if isinstance(body, ET.Element): if body.tag.uri == moin_page and body.tag.name == 'list-item-body': if generate: ret_body = self.new_copy(html.li, body) else: ret_body = self.new_copy(html.dd, body) ret.append(ret_body) break return ret
def visit_moinpage_list(self, elem): attrib = Attributes(elem) attrib_new = attrib.convert() generate = attrib.get('item-label-generate') if generate: if generate == 'ordered': style = attrib.get('list-style-type') if style: if style == 'upper-alpha': attrib_new[html('class')] = 'moin-upperalpha-list' elif style == 'upper-roman': attrib_new[html('class')] = 'moin-upperroman-list' elif style == 'lower-roman': attrib_new[html('class')] = 'moin-lowerroman-list' elif style == 'lower-alpha': attrib_new[html('class')] = 'moin-loweralpha-list' start_number = attrib.get('list-start') if start_number: attrib_new[html('start')] = start_number ret = html.ol(attrib_new) elif generate == 'unordered': style = attrib.get('list-style-type') if style and style == 'no-bullet': attrib_new[html('class')] = 'moin-nobullet-list' ret = html.ul(attrib=attrib_new) else: raise ElementException('page:item-label-generate does not support "{0}"'.format(generate)) else: ret = html.dl(attrib=attrib_new) for item in elem: if isinstance(item, ET.Element): if item.tag.uri == moin_page and item.tag.name == 'list-item': if not generate: for label in item: if isinstance(label, ET.Element): if label.tag.uri == moin_page and label.tag.name == 'list-item-label': ret_label = self.new_copy(html.dt, label) ret.append(ret_label) for body in item: if isinstance(body, ET.Element): if body.tag.uri == moin_page and body.tag.name == 'list-item-body': if generate: ret_body = self.new_copy(html.li, body) else: ret_body = self.new_copy(html.dd, body) ret.append(ret_body) break return ret
def visit_moinpage_list(self, elem): attrib = Attributes(elem) attrib_new = attrib.convert() generate = attrib.get("item-label-generate") if generate: if generate == "ordered": style = attrib.get("list-style-type") if style: if style == "upper-alpha": attrib_new[html("class")] = "moin-upperalpha-list" elif style == "upper-roman": attrib_new[html("class")] = "moin-upperroman-list" elif style == "lower-roman": attrib_new[html("class")] = "moin-lowerroman-list" elif style == "lower-alpha": attrib_new[html("class")] = "moin-loweralpha-list" start_number = attrib.get("list-start") if start_number: attrib_new[html("start")] = start_number ret = html.ol(attrib_new) elif generate == "unordered": style = attrib.get("list-style-type") if style and style == "no-bullet": attrib_new[html("class")] = "moin-nobullet-list" ret = html.ul(attrib=attrib_new) else: raise ElementException('page:item-label-generate does not support "{0}"'.format(generate)) else: ret = html.dl(attrib=attrib_new) for item in elem: if isinstance(item, ET.Element): if item.tag.uri == moin_page and item.tag.name == "list-item": if not generate: for label in item: if isinstance(label, ET.Element): if label.tag.uri == moin_page and label.tag.name == "list-item-label": ret_label = self.new_copy(html.dt, label) ret.append(ret_label) for body in item: if isinstance(body, ET.Element): if body.tag.uri == moin_page and body.tag.name == "list-item-body": if generate: ret_body = self.new_copy(html.li, body) else: ret_body = self.new_copy(html.dd, body) ret.append(ret_body) break return ret
def __call__(self, element): special_root = SpecialPage() self._special = [special_root] self._special_stack = [special_root] self._id = SpecialId() ret = super(ConverterPage, self).__call__(element) special_root.root = ret for special in self._special: if special._footnotes: footnotes_div = self.create_footnotes(special) special.root.append(footnotes_div) for elem, headings in special.tocs(): headings = list(headings) maxlevel = max(h[1] for h in headings) headtogglelink = html.a(attrib={ html.class_: 'moin-showhide', html.href_: '#', html.onclick_: "$('.moin-table-of-contents ol').toggle();return false;", }, children=['[+]', ]) elem_h = html.div(attrib={html.class_: 'moin-table-of-contents-heading'}, children=[_('Contents'), headtogglelink]) elem.append(elem_h) stack = [elem] def stack_push(elem): stack[-1].append(elem) stack.append(elem) def stack_top_append(elem): stack[-1].append(elem) last_level = 0 old_toggle = "" for elem, level, id in headings: need_item = last_level >= level # Ignore the last character in the text so permalink icon doesn't show in TOC text = ''.join(elem.itertext())[:-1] while last_level > level: stack.pop() stack.pop() last_level -= 1 while last_level < level: if maxlevel != 1: stack_top_append(old_toggle) stack_push(html.ol()) stack_push(html.li({html.id_: 'li{0}'.format(id)})) last_level += 1 if need_item: stack.pop() stack_push(html.li({html.id_: 'li{0}'.format(id)})) togglelink = html.a(attrib={ html.href_: "#", html.onclick_: "$('#li{0} ol').toggle();return false;".format(id), html.class_: 'moin-showhide', }, children=["[+]", ]) elem_a = html.a(attrib={html.href: '#' + id}, children=[text, ]) stack_top_append(elem_a) old_toggle = togglelink return ret
def __call__(self, element): special_root = SpecialPage() self._special = [special_root] self._special_stack = [special_root] self._id = SpecialId() ret = super(ConverterPage, self).__call__(element) special_root.root = ret for special in self._special: if special._footnotes: footnotes_div = html.div({html.class_: "moin-footnotes"}) special.root.append(footnotes_div) for elem in special.footnotes(): footnotes_div.append(elem) for elem, headings in special.tocs(): headings = list(headings) maxlevel = max(h[1] for h in headings) headtogglelink = html.a(attrib={ html.class_: 'moin-showhide', html.href_: '#', html.onclick_: "$('.moin-table-of-contents ol').toggle();return false;", }, children=[('[+]'), ]) elem_h = html.div(attrib={html.class_: 'moin-table-of-contents-heading'}, children=[_('Contents'), headtogglelink]) elem.append(elem_h) stack = [elem] def stack_push(elem): stack[-1].append(elem) stack.append(elem) def stack_top_append(elem): stack[-1].append(elem) last_level = 0 old_toggle = "" for elem, level, id in headings: need_item = last_level >= level # Ignore the last character in the text so permalink icon doesn't show in TOC text = ''.join(elem.itertext())[:-1] while last_level > level: stack.pop() stack.pop() last_level -= 1 while last_level < level: if maxlevel != 1: stack_top_append(old_toggle) stack_push(html.ol()) stack_push(html.li({html.id_: 'li%s' % id})) last_level += 1 if need_item: stack.pop() stack_push(html.li({html.id_: 'li%s' % id})) togglelink = html.a(attrib={ html.href_: "#", html.onclick_: "$('#li%s ol').toggle();return false;" % id, html.class_: 'showhide', }, children=["[+]", ]) elem_a = html.a(attrib={html.href: '#' + id}, children=[text, ]) stack_top_append(elem_a) old_toggle = togglelink return ret
def __call__(self, element): special_root = SpecialPage() self._special = [special_root] self._special_stack = [special_root] self._id = SpecialId() ret = super(ConverterPage, self).__call__(element) special_root.root = ret for special in self._special: if special._footnotes: footnotes_div = self.create_footnotes(special) special.root.append(footnotes_div) for elem, headings in special.tocs(): headings = list(headings) headings_list = [h[1] for h in headings] if headings_list: maxlevel = max(headings_list) headtogglelink = html.a(attrib={ html.class_: 'moin-showhide', html.href_: '#', html.onclick_: "$('.moin-table-of-contents ol').toggle();return false;", }, children=[ '[+]', ]) elem_h = html.div( attrib={html.class_: 'moin-table-of-contents-heading'}, children=[_('Contents'), headtogglelink]) elem.append(elem_h) stack = [elem] def stack_push(elem): stack[-1].append(elem) stack.append(elem) def stack_top_append(elem): stack[-1].append(elem) last_level = 0 old_toggle = "" for elem, level, id in headings: need_item = last_level >= level text = ''.join(elem.itertext()) while last_level > level: stack.pop() stack.pop() last_level -= 1 while last_level < level: if maxlevel != 1: stack_top_append(old_toggle) stack_push(html.ol()) stack_push(html.li({html.id_: 'li{0}'.format(id)})) last_level += 1 if need_item: stack.pop() stack_push(html.li({html.id_: 'li{0}'.format(id)})) togglelink = html.a(attrib={ html.href_: "#", html.onclick_: "$('#li{0} ol').toggle();return false;".format(id), html.class_: 'moin-showhide', }, children=[ "[+]", ]) elem_a = html.a(attrib={html.href: '#' + id}, children=[ text, ]) stack_top_append(elem_a) old_toggle = togglelink return ret