- From: Michael Smith via cvs-syncmail <cvsmail@w3.org>
- Date: Sat, 21 Aug 2010 11:26:46 +0000
- To: public-html-commits@w3.org
Update of /sources/public/html5/spec-author-view In directory hutz:/tmp/cvs-serv20012 Modified Files: patch.anolis style.css Log Message: make some index improvements based on further feedback from Hixie Index: patch.anolis =================================================================== RCS file: /sources/public/html5/spec-author-view/patch.anolis,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -r1.9 -r1.10 --- patch.anolis 20 Aug 2010 18:16:57 -0000 1.9 +++ patch.anolis 21 Aug 2010 11:26:44 -0000 1.10 @@ -1,6 +1,6 @@ diff -r 16550726fd0d anolis --- a/anolis Sun Aug 30 16:53:19 2009 -0500 -+++ b/anolis Sat Aug 21 03:00:25 2010 +0900 ++++ b/anolis Sat Aug 21 20:25:39 2010 +0900 @@ -70,10 +70,10 @@ def getOptParser(): @@ -16,7 +16,7 @@ diff -r 16550726fd0d anolislib/processes/filter.py --- a/anolislib/processes/filter.py Sun Aug 30 16:53:19 2009 -0500 -+++ b/anolislib/processes/filter.py Sat Aug 21 03:00:25 2010 +0900 ++++ b/anolislib/processes/filter.py Sat Aug 21 20:25:39 2010 +0900 @@ -5,23 +5,4 @@ return selector = cssselect.CSSSelector(kwargs["filter"]) @@ -44,8 +44,8 @@ + element.drop_tree() diff -r 16550726fd0d anolislib/processes/terms.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ b/anolislib/processes/terms.py Sat Aug 21 03:00:25 2010 +0900 -@@ -0,0 +1,325 @@ ++++ b/anolislib/processes/terms.py Sat Aug 21 20:25:39 2010 +0900 +@@ -0,0 +1,362 @@ +# coding=UTF-8 +# Copyright (c) 2010 Michael(tm) Smith +# @@ -140,14 +140,8 @@ + term.tag = "span" + term.tail = "\n" + termName.append(term); -+ # we need a first letter so that we can build navigational -+ # links for the alphabetic nav bars injected into the index -+ termFirstLetter = term.text_content()[0].upper() -+ if termFirstLetter != prevTermFirstLetter and termFirstLetter.isalpha(): -+ firstLetters.append(termFirstLetter) -+ indexNavHelpers[termFirstLetter] = etree.Element(u"div",{u"class": "index-nav", u"id": "index-terms_"+termFirstLetter}) -+ prevTermFirstLetter = termFirstLetter -+ self.terms.append(indexNavHelpers[termFirstLetter]) ++ termName.tail= "\n" ++ indexEntry.append(termName) + # normalize the text content of each <dfn> in the document + # and then normalize the text content of this <dfn>, then + # do a case-insensitive comparison of them and count how @@ -158,15 +152,58 @@ + if ElementTree.xpath(expr, content = term.text_content()) > 1: + # we have more than one <dfn> in the document whose + # content is a case-insensitive match for the -+ # textContent of this <dfn>; so, we qualify the name of -+ # each such term in the index listing by appending the -+ # id of the <dfn> to it -+ indexEntryID = etree.Element(u"span",{u"class": u"index-id", u"title": u""}) -+ indexEntryID.text = "("+termID+")" -+ indexEntryID.tail = " " -+ termName.append(indexEntryID) -+ termName.tail= "\n" -+ indexEntry.append(termName) ++ # textContent of this <dfn>; so, we attempt to ++ # disambiguate them by copying the parent node of the ++ # <dfn> and including that in our output as an excerpt, ++ # to provide the context for the term ++ dfnContext = etree.Element(u"dd",{u"class": u"dfn-excerpt"}) ++ dfnContext.text = "\n" ++ dfnContext.tail = "\n" ++ dfnParentNode = deepcopy(dfn.getparent()) ++ # if length of the parent node isn't greater than 1, ++ # then the <dfn> is the only child node of its parent, ++ # and so there is no useful context we can provide, so ++ # we do nothing. Also, if the parent node is an h1-h6 ++ # heading, we are already listing it in the entry, to ++ # it'd be redundant to be it here too, so we don't ++ if len(dfnParentNode) > 1 and not re.match("^[hH][1-6]$",dfnParentNode.tag): ++ if not dfnParentNode[0].tag == "dfn": ++ dfnParentNode.text = "*** " ++ else: ++ dfnParentNode.text = "" ++ dfnParentNode.tag = "span" ++ # remove ID so that we don't duplicate it ++ if "id" in dfnParentNode.attrib: ++ del dfnParentNode.attrib["id"] ++ descendants = dfnParentNode.xpath(".//*[self::dfn or @id]") ++ for descendant in descendants: ++ # if the text content of this descendant is the ++ # same as the text content of the term, then we ++ # don't want to repeat it, but instead we ++ # replace it with ellipses ++ if descendant.text_content().lower() == term.text_content().lower(): ++ descendant.tag = "span" ++ tail = "" ++ if descendant.tail is not None: ++ tail = descendant.tail ++ # drop any children this element might have, ++ # and just put ellipsis in place of it ++ descendant.clear() ++ descendant.text = "..."+tail ++ elif descendant == descendants[0]: ++ dfnParentNode.text = "*** " ++ if "id" in descendant.attrib: ++ del descendant.attrib["id"] ++ dfnContext.append(dfnParentNode) ++ indexEntry.append(dfnContext) ++ # we need a first letter so that we can build navigational ++ # links for the alphabetic nav bars injected into the index ++ termFirstLetter = term.text_content()[0].upper() ++ if termFirstLetter != prevTermFirstLetter and termFirstLetter.isalpha(): ++ firstLetters.append(termFirstLetter) ++ indexNavHelpers[termFirstLetter] = etree.Element(u"div",{u"class": "index-nav", u"id": "index-terms_"+termFirstLetter}) ++ prevTermFirstLetter = termFirstLetter ++ self.terms.append(indexNavHelpers[termFirstLetter]) + # ######################################################### + # make a list of all the instances of terms in the document + # that are hyperlinked references back to the <dfn> term Index: style.css =================================================================== RCS file: /sources/public/html5/spec-author-view/style.css,v retrieving revision 1.11 retrieving revision 1.12 diff -u -d -r1.11 -r1.12 --- style.css 20 Aug 2010 18:16:57 -0000 1.11 +++ style.css 21 Aug 2010 11:26:44 -0000 1.12 @@ -95,3 +95,12 @@ html.chapter #index-filecontents { display: none; } +.dfn-excerpt { + font-style: italic; + margin-left: 0; + font-size: 95%; + white-space: nowrap; + text-overflow: ellipsis; + overflow:hidden; + display:block; +}
Received on Saturday, 21 August 2010 11:26:47 UTC