Joe, > Submit a patch to infrastructure@ plaese.
I would, but I am uncomfortable submitting untested code. I need some help setting up a version of the CMS for testing. I think that others here may have a similar need. Thanks. Anyway if you want to debug what I did here is a diff compared to mdx_elementid.py: --- mdx_elementid.py 2011-07-06 10:43:22.000000000 -0700 +++ mdx_classtag.py 2011-07-05 18:34:32.000000000 -0700 @@ -1,39 +1,39 @@ #! ''' -id Extension for Python-Markdown +classtag Extension for Python-Markdown ========================================== -This extension adds ids to block elements in Python-Markdown. +This extension adds class tags to block elements in Python-Markdown. Simple Usage: >>> import markdown >>> text = """ - ... list: {#list.1} + ... list: {.list.1} ... - ... 1. This is a test {#node1} - ... 2. Other {#node2} + ... 1. This is a test {.node1} + ... 2. Other {#.node2} ... ... More ... """ - >>> markdown.markdown(text, ['toc','elementid']) - u'<p id="list.1">list:</p>\\n<ol>\\n<li id="node1">This is a test</li>\\n<li id="node2">Other</li>\\n</ol>\\n<p>More</p>' - >>> text2 = u"""Spain {#el1} + >>> markdown.markdown(text, ['toc','classtag']) + u'<p class="list.1">list:</p>\\n<ol>\\n<li class="node1">This is a test</li>\\n<li class="node2">Other</li>\\n</ol>\\n<p>More</p>' + >>> text2 = u"""Spain {.el1} ... : Name of a country ... in the South West of Europe ... - ... Espa\xf1a {#el2} + ... Espa\xf1a {.el2} ... : Name of Spain ... in Spanish (contains non-ascii) ... ... End of definition list... ... """ - >>> markdown.markdown(text2, ['toc','elementid', 'def_list']) - u'<dl>\\n<dt id="el1">Spain</dt>\\n<dd>Name of a country\\n in the South West of Europe</dd>\\n<dt id="el2">Espa\\xf1a</dt>\\n<dd>Name of Spain\\n in Spanish (contains non-ascii)</dd>\\n</dl>\\n<p>End of definition list...</p>' - + >>> markdown.markdown(text2, ['toc','classtag', 'def_list']) + u'<dl>\\n<dt class="el1">Spain</dt>\\n<dd>Name of a country\\n in the South West of Europe</dd>\\n<dt class="el2">Espa\\xf1a</dt>\\n<dd>Name of Spain\\n in Spanish (contains non-ascii)</dd>\\n</dl>\\n<p>End of definition list...</p>' +Based on mdx_elementid.py Copyright 2010 * [Santiago Gala](http://memojo.com/~sgala/blog/) @@ -46,52 +46,52 @@ ID_RE = re.compile(r"""[ \t]* # optional whitespace [#]{0,6} # end of heading [ \t]* # optional whitespace - (?:[ \t]*\{[ \t]*\#(?P<id>[-._:a-zA-Z0-9]+)[ \t]*\}) + (?:[ \t]*\{[ \t]*\.(?P<classtag>[-._:a-zA-Z0-9]+)[ \t]*\}) [ \t]* # optional whitespace (\n|$) # ^^ group('id') = id attribute """, re.VERBOSE) -class IdTreeProcessor(markdown.treeprocessors.Treeprocessor): - """ Id Treeprocessor - parse text for id specs. """ +class ClasstagTreeProcessor(markdown.treeprocessors.Treeprocessor): + """ Classtag Treeprocessor - parse text for classtag specs. """ - def _parseID(self, element): - ''' recursively parse all {#idname}s at eol into ids ''' + def _parseClasstag(self, element): + ''' recursively parse all {.classtag}s at eol into ids ''' if markdown.isBlockLevel(element.tag) and element.tag not in ['code', 'pre']: #print element if (element.text and element.text.strip()): m = ID_RE.search(element.text) if m: - element.set('id',m.group('id')) + element.set('classtag',m.group('classtag')) element.text = element.text[:m.start()] for e in element: - self._parseID(e) + self._parseClasstag(e) return element def run(self, root): ''' - Find and remove all id specs references from the text, - and add them as the id attribute of the element. + Find and remove all classtag specs references from the text, + and add them as the class attribute of the element. ''' if markdown.isBlockLevel(root.tag) and root.tag not in ['code', 'pre']: - self._parseID(root) + self._parseClasstag(root) return root -class IdExtension(markdown.Extension): - """ Id Extension for Python-Markdown. """ +class ClasstagExtension(markdown.Extension): + """ Classtag Extension for Python-Markdown. """ def extendMarkdown(self, md, md_globals): - """ Insert IdTreeProcessor in tree processors. It should be before toc. """ - idext = IdTreeProcessor(md) - idext.config = self.config - md.treeprocessors.add("elid", idext, "_begin") + """ Insert ClasstagTreeProcessor in tree processors. It should be before toc. """ + classtagext = ClasstagTreeProcessor(md) + classtagext.config = self.config + md.treeprocessors.add("elid", classtagext, "_begin") def makeExtension(configs=None): - return IdExtension(configs=configs) + return ClasstagExtension(configs=configs) if __name__ == "__main__": import doctest Regards, Dave > > Sent from my iPhone > > On Jul 5, 2011, at 11:46 PM, Dave Fisher <dave2w...@comcast.net> wrote: > > Hi Joe, > > I've made what I think is an appropriate edit to create an mdx_classtag.py. > > (1) Basically id was converted to classtag all over. (class is a reserved > word.) > > (2) The appropriate # was changed to . in the regex (I hope) > > What would be my easiest strategy for testing it on my people.a.o account? > > Is it as simple as downloading the proper part of the repos? > > Regards, > Dave > > On Jul 5, 2011, at 2:11 PM, Joe Schaefer wrote: > > > > ----- Original Message ---- > From: Dave Fisher <dave2w...@comcast.net> > To: ooo-dev@incubator.apache.org > Cc: ooo-comm...@incubator.apache.org > Sent: Tue, July 5, 2011 4:57:36 PM > Subject: Re: svn commit: r1142819 - > /incubator/ooo/site/trunk/content/openofficeorg/people.mdtext > > Hi Joe, > > Thanks for all the CMS tips. > > I see from this commit that # {#foo} is inserted into the table header html > as > <th id="foo">. > > Would # {.bar} add class="bar"? > > Not as it's currently implemented, no. What you want to look at is the > source > for > mdx_elementid.py as it's a custom extension of our markdown impl. If you > hack > it > to do what you want, and your code doesn't suck, I'll apply the patch. The > source > is here > https://svn.apache.org/repos/infra/websites/cms/build/mdx_elementid.py . > >