From: <ka...@us...> - 2010-07-05 18:55:21
|
Revision: 8697 http://docbook.svn.sourceforge.net/docbook/?rev=8697&view=rev Author: kasunbg Date: 2010-07-05 18:55:14 +0000 (Mon, 05 Jul 2010) Log Message: ----------- Changes for webhelp.xsl: added a unique id for a given documentation/docbook xml. Replaced non-i18n texts with i18n-compatible texts. improved page loading time. Modified css files for better appearence. Some small changes to search indexer. Modified Paths: -------------- branches/webhelp/xsl/webhelp/build.properties branches/webhelp/xsl/webhelp/docsrc/readme.xml branches/webhelp/xsl/webhelp/indexer/lib/nw-cms.jar branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/IndexerTask.java branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/SaxDocFileParser.java branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/TesterIndexer.java branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/WriteJSFiles.java branches/webhelp/xsl/webhelp/template/common/css/positioning.css branches/webhelp/xsl/webhelp/template/common/jquery/treeview/jquery.treeview.css branches/webhelp/xsl/webhelp/template/common/jquery/treeview/jquery.treeview.js branches/webhelp/xsl/webhelp/template/common/jquery/treeview/jquery.treeview.min.js branches/webhelp/xsl/webhelp/xsl/webhelp.xsl Modified: branches/webhelp/xsl/webhelp/build.properties =================================================================== --- branches/webhelp/xsl/webhelp/build.properties 2010-07-04 05:24:30 UTC (rev 8696) +++ branches/webhelp/xsl/webhelp/build.properties 2010-07-05 18:55:14 UTC (rev 8697) @@ -1,6 +1,6 @@ input-xml=docsrc/readme.xml frameset.base.dir=doc -xslt-processor=c:/workhead/export/saxon/6.5/lib/saxon.jar -#xslt-processor=/usr/bin/xsltproc -docbookx.dtd=c:/workhead/export/DocBookDTD/4.5/docbookx.dtd" -#docbookx.dtd=file:///media/DATA/ACADEMIC/GSOC/docbook/repository/docbook/trunk/defguide/en/schema/docbookx.dtd +#xslt-processor=c:/workhead/export/saxon/6.5/lib/saxon.jar +xslt-processor=/usr/bin/xsltproc +#docbookx.dtd=c:/workhead/export/DocBookDTD/4.5/docbookx.dtd" +docbookx.dtd=file:///media/DATA/ACADEMIC/GSOC/docbook/repository/docbook/trunk/defguide/en/schema/docbookx.dtd Modified: branches/webhelp/xsl/webhelp/docsrc/readme.xml =================================================================== --- branches/webhelp/xsl/webhelp/docsrc/readme.xml 2010-07-04 05:24:30 UTC (rev 8696) +++ branches/webhelp/xsl/webhelp/docsrc/readme.xml 2010-07-05 18:55:14 UTC (rev 8697) @@ -1,5 +1,6 @@ <?xml version="1.0"?> -<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "c:/workhead/export/DocBookDTD/4.5/docbookx.dtd"> +<!--DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "c:/workhead/export/DocBookDTD/4.5/docbookx.dtd"--> +<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "/media/DATA/ACADEMIC/GSOC/docbook/repository/docbook/trunk/defguide/en/schema/docbookx.dtd"> <!-- "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"--> <book> <title>Web-based Help from DocBook XML Readme</title> Modified: branches/webhelp/xsl/webhelp/indexer/lib/nw-cms.jar =================================================================== (Binary files differ) Modified: branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/IndexerTask.java =================================================================== --- branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/IndexerTask.java 2010-07-04 05:24:30 UTC (rev 8696) +++ branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/IndexerTask.java 2010-07-05 18:55:14 UTC (rev 8697) @@ -10,9 +10,11 @@ import java.util.Iterator; import java.util.Map; import java.util.Properties; +/* import org.apache.tools.ant.BuildException; import org.apache.tools.ant.Task; +*/ import com.nexwave.nsidita.DirList; @@ -24,8 +26,9 @@ * * @author N. Quaine */ -public class IndexerTask extends Task { - +//public class IndexerTask extends Task { +public class IndexerTask { + // messages private String txt_no_inputdir = "Input directory not found:"; private String txt_cannot_create_outputdir = "Cannot create output search directory."; @@ -55,7 +58,7 @@ } /** The setter for the "htmldir" attribute (parameter of the task) - * @param args + * @param htmldir * @throws InterruptedException */ public void setHtmldir(String htmldir) { @@ -66,8 +69,9 @@ /** * Implementation of the execute function (Task interface) */ - public void execute() throws BuildException { - + //public void execute() throws BuildException { + public void execute(){ + ArrayList<DocFileInfo> filesDescription = null; // list of information about the topic files ArrayList<File> htmlFiles = null; // topic files listed in the given directory ArrayList<String> htmlFilesPathRel = null; @@ -104,6 +108,7 @@ // check if outputdir defined if (outputDir == null) { + //set the output directory: path= {inputDir}/search outputDir = new String(inputDir.getPath().concat(File.separator).concat(searchdir)); } @@ -152,7 +157,7 @@ // Retrieve the clean-up properties for indexing RetrieveCleanUpProps(); - //System.out.print("clean"+" " +cleanUpStrings); + System.out.print("clean"+" " +cleanUpStrings); //create a default handler //SaxHTMLIndex spe = new SaxHTMLIndex (); // do not use clean-up props files @@ -240,10 +245,12 @@ String tempStr= new String(); File ftemp; Collection c = new ArrayList<String>(); - - // Get the list of the props file containing the words to remove (not the punctuation) + + //TODO punctuation files are located at webhelp/template/content/search/*.* But here, it refers to doc/content/search which does not exist. + + // Get the list of the props file containing the words to remove (not the punctuation) DirList props = new DirList(inputDir, "^(?!(punctuation)).*\\.props$", 1); - ArrayList<File>wordsList = props.getListFiles(); + ArrayList<File> wordsList = props.getListFiles(); System.out.println("props files:"+wordsList); Properties enProps =new Properties (); Modified: branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/SaxDocFileParser.java =================================================================== --- branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/SaxDocFileParser.java 2010-07-04 05:24:30 UTC (rev 8696) +++ branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/SaxDocFileParser.java 2010-07-05 18:55:14 UTC (rev 8697) @@ -81,7 +81,7 @@ try { //get a new instance of parser - SAXParser sp = (SAXParser)spf.newSAXParser(); + SAXParser sp = spf.newSAXParser(); // deactivate the validation sp.getXMLReader().setFeature("http://xml.org/sax/features/external-general-entities", false); sp.getXMLReader().setFeature( "http://apache.org/xml/features/nonvalidating/load-external-dtd", false); @@ -206,6 +206,11 @@ return null; } + /** + * Removes the validation in html files, such as xml version and DTDs + * @param file + * @return int: returns 0 if no IOException occurs, else 1. + */ public int RemoveValidationPI (File file) { try { Modified: branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/TesterIndexer.java =================================================================== --- branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/TesterIndexer.java 2010-07-04 05:24:30 UTC (rev 8696) +++ branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/TesterIndexer.java 2010-07-05 18:55:14 UTC (rev 8697) @@ -1,5 +1,7 @@ package com.nexwave.nquindexer; +import java.io.File; + /** * For running tests with the indexertask. * @@ -14,7 +16,9 @@ * @throws InterruptedException */ public static void main(String[] args) throws InterruptedException { - +// +// File file = new File("test"); +// System.out.println(file.getAbsolutePath()); System.out.println(args[0]); if (args.length == 0 ) { System.out.println("When using the TestIndexer class, you must give the directory of html files to parse as input"); Modified: branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/WriteJSFiles.java =================================================================== --- branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/WriteJSFiles.java 2010-07-04 05:24:30 UTC (rev 8696) +++ branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/WriteJSFiles.java 2010-07-05 18:55:14 UTC (rev 8697) @@ -50,6 +50,7 @@ OutputStreamWriter out = new OutputStreamWriter(bout, "UTF-8"); /*fl : file list*/ + out.write("//List of files which are indexed.\n"); out.write("fl = new Array();\n"); String temp; while ( it.hasNext ( ) ) { @@ -113,11 +114,11 @@ //Remove unwanted white char if (tempTitle != null ) { tempTitle = tempTitle.replaceAll("\\s+", " "); - tempTitle = tempTitle.replaceAll("['\x92\"]", " "); + tempTitle = tempTitle.replaceAll("['�\"]", " "); } if (tempShortdesc != null ) { tempShortdesc = tempShortdesc.replaceAll("\\s+", " "); - tempShortdesc = tempShortdesc.replaceAll("['\x92\"]", " "); + tempShortdesc = tempShortdesc.replaceAll("['�\"]", " "); } //System.out.println("temp : "+File.separatorChar+" "+tempShortdesc); out.write("fil[\""+i+"\"]"+"= \""+tempPath+"@@@"+tempTitle+"@@@"+tempShortdesc+"\";\n"); Modified: branches/webhelp/xsl/webhelp/template/common/css/positioning.css =================================================================== --- branches/webhelp/xsl/webhelp/template/common/css/positioning.css 2010-07-04 05:24:30 UTC (rev 8696) +++ branches/webhelp/xsl/webhelp/template/common/css/positioning.css 2010-07-05 18:55:14 UTC (rev 8697) @@ -10,11 +10,9 @@ h1 { font: bold 14pt Arial, Helvetica, geneva; } - h2 { font: bold 12pt Arial, Helvetica, geneva; } - #header { background: white url(../images/gov-header-bg.gif) repeat-x; position: fixed; @@ -27,17 +25,16 @@ border-bottom: 2px solid #cccccc; z-index: 2000; } - #leftnavigation { /* background-color:#91e7b3;*/ overflow: auto; position: fixed; height: auto; top: 80px; - bottom: 0px; + bottom: 0; left: 0; width: 230px; - margin: 0px 0px 0px 10px; + margin: 0 0 0 10px; overflow: auto; } @@ -53,9 +50,7 @@ padding-left: 5px; padding-right: 12px; color: #000000; - border-left: 2px solid #cccccc; /*overflow :scroll;*/ - background-image: url(../images/back.png); - background-repeat: repeat; + border-left: 2px solid #cccccc; /*overflow :scroll;*/ z-index: 1000; } Modified: branches/webhelp/xsl/webhelp/template/common/jquery/treeview/jquery.treeview.css =================================================================== --- branches/webhelp/xsl/webhelp/template/common/jquery/treeview/jquery.treeview.css 2010-07-04 05:24:30 UTC (rev 8696) +++ branches/webhelp/xsl/webhelp/template/common/jquery/treeview/jquery.treeview.css 2010-07-05 18:55:14 UTC (rev 8697) @@ -25,7 +25,7 @@ .treeview li { margin: 0; - padding: 3px 0pt 3px 16px; + padding: 3px 0 3px 16px; } .treeview a.selected { @@ -72,22 +72,13 @@ html>body { font-size: 16px; font-size: 68.75%; -} /* Reset Base Font Size */ - +}/* Reset Base Font Size */ + /* body { font-family: Verdana, helvetica, arial, sans-serif; font-size: 68.75%; background: #fff; color: #333; -} +} */ -h1, h2 { font-family: 'trebuchet ms', verdana, arial; padding: 10px; margin: 0 } -h1 { font-size: large } - -#banner { padding: 15px; background-color: #06b; color: white; font-size: large; border-bottom: 1px solid #ccc; - background: url(bg.gif) repeat-x; text-align: center } -#banner a { color: white; } - -#main { padding: 1em; } - a img { border: none; } \ No newline at end of file Modified: branches/webhelp/xsl/webhelp/template/common/jquery/treeview/jquery.treeview.js =================================================================== --- branches/webhelp/xsl/webhelp/template/common/jquery/treeview/jquery.treeview.js 2010-07-04 05:24:30 UTC (rev 8696) +++ branches/webhelp/xsl/webhelp/template/common/jquery/treeview/jquery.treeview.js 2010-07-05 18:55:14 UTC (rev 8697) @@ -92,9 +92,13 @@ this.find("div." + CLASSES.hitarea).click( toggler ); }, treeview: function(settings) { - + + if(typeof(window.treeCookieId) !== 'undefined' || window.treeCookieId === ""){ + treeCookieId = "treeview"; + } + settings = $.extend({ - cookieId: "treeview" + cookieId: treeCookieId }, settings); if (settings.add) { Modified: branches/webhelp/xsl/webhelp/template/common/jquery/treeview/jquery.treeview.min.js =================================================================== --- branches/webhelp/xsl/webhelp/template/common/jquery/treeview/jquery.treeview.min.js 2010-07-04 05:24:30 UTC (rev 8696) +++ branches/webhelp/xsl/webhelp/template/common/jquery/treeview/jquery.treeview.min.js 2010-07-05 18:55:14 UTC (rev 8697) @@ -12,4 +12,4 @@ * * Revision: $Id: jquery.treeview.js 4684 2008-02-07 19:08:06Z joern.zaefferer $ * - */;(function($){$.extend($.fn,{swapClass:function(c1,c2){var c1Elements=this.filter('.'+c1);this.filter('.'+c2).removeClass(c2).addClass(c1);c1Elements.removeClass(c1).addClass(c2);return this;},replaceClass:function(c1,c2){return this.filter('.'+c1).removeClass(c1).addClass(c2).end();},hoverClass:function(className){className=className||"hover";return this.hover(function(){$(this).addClass(className);},function(){$(this).removeClass(className);});},heightToggle:function(animated,callback){animated?this.animate({height:"toggle"},animated,callback):this.each(function(){jQuery(this)[jQuery(this).is(":hidden")?"show":"hide"]();if(callback)callback.apply(this,arguments);});},heightHide:function(animated,callback){if(animated){this.animate({height:"hide"},animated,callback);}else{this.hide();if(callback)this.each(callback);}},prepareBranches:function(settings){if(!settings.prerendered){this.filter(":last-child:not(ul)").addClass(CLASSES.last);this.filter((settings.collapsed?"":"."+CLASSES.closed)+":not(."+CLASSES.open+")").find(">ul").hide();}return this.filter(":has(>ul)");},applyClasses:function(settings,toggler){this.filter(":has(>ul):not(:has(>a))").find(">span").click(function(event){toggler.apply($(this).next());}).add($("a",this)).hoverClass();if(!settings.prerendered){this.filter(":has(>ul:hidden)").addClass(CLASSES.expandable).replaceClass(CLASSES.last,CLASSES.lastExpandable);this.not(":has(>ul:hidden)").addClass(CLASSES.collapsable).replaceClass(CLASSES.last,CLASSES.lastCollapsable);this.prepend("<div class=\""+CLASSES.hitarea+"\"/>").find("div."+CLASSES.hitarea).each(function(){var classes="";$.each($(this).parent().attr("class").split(" "),function(){classes+=this+"-hitarea ";});$(this).addClass(classes);});}this.find("div."+CLASSES.hitarea).click(toggler);},treeview:function(settings){settings=$.extend({cookieId:"treeview"},settings);if(settings.add){return this.trigger("add",[settings.add]);}if(settings.toggle){var callback=settings.toggle;settings.toggle=function(){return callback.apply($(this).parent()[0],arguments);};}function treeController(tree,control){function handler(filter){return function(){toggler.apply($("div."+CLASSES.hitarea,tree).filter(function(){return filter?$(this).parent("."+filter).length:true;}));return false;};}$("a:eq(0)",control).click(handler(CLASSES.collapsable));$("a:eq(1)",control).click(handler(CLASSES.expandable));$("a:eq(2)",control).click(handler());}function toggler(){$(this).parent().find(">.hitarea").swapClass(CLASSES.collapsableHitarea,CLASSES.expandableHitarea).swapClass(CLASSES.lastCollapsableHitarea,CLASSES.lastExpandableHitarea).end().swapClass(CLASSES.collapsable,CLASSES.expandable).swapClass(CLASSES.lastCollapsable,CLASSES.lastExpandable).find(">ul").heightToggle(settings.animated,settings.toggle);if(settings.unique){$(this).parent().siblings().find(">.hitarea").replaceClass(CLASSES.collapsableHitarea,CLASSES.expandableHitarea).replaceClass(CLASSES.lastCollapsableHitarea,CLASSES.lastExpandableHitarea).end().replaceClass(CLASSES.collapsable,CLASSES.expandable).replaceClass(CLASSES.lastCollapsable,CLASSES.lastExpandable).find(">ul").heightHide(settings.animated,settings.toggle);}}function serialize(){function binary(arg){return arg?1:0;}var data=[];branches.each(function(i,e){data[i]=$(e).is(":has(>ul:visible)")?1:0;});$.cookie(settings.cookieId,data.join(""));}function deserialize(){var stored=$.cookie(settings.cookieId);if(stored){var data=stored.split("");branches.each(function(i,e){$(e).find(">ul")[parseInt(data[i])?"show":"hide"]();});}}this.addClass("treeview");var branches=this.find("li").prepareBranches(settings);switch(settings.persist){case"cookie":var toggleCallback=settings.toggle;settings.toggle=function(){serialize();if(toggleCallback){toggleCallback.apply(this,arguments);}};deserialize();break;case"location":var current=this.find("a").filter(function(){return this.href.toLowerCase()==location.href.toLowerCase();});if(current.length){current.addClass("selected").parents("ul, li").add(current.next()).show();}break;}branches.applyClasses(settings,toggler);if(settings.control){treeController(this,settings.control);$(settings.control).show();}return this.bind("add",function(event,branches){$(branches).prev().removeClass(CLASSES.last).removeClass(CLASSES.lastCollapsable).removeClass(CLASSES.lastExpandable).find(">.hitarea").removeClass(CLASSES.lastCollapsableHitarea).removeClass(CLASSES.lastExpandableHitarea);$(branches).find("li").andSelf().prepareBranches(settings).applyClasses(settings,toggler);});}});var CLASSES=$.fn.treeview.classes={open:"open",closed:"closed",expandable:"expandable",expandableHitarea:"expandable-hitarea",lastExpandableHitarea:"lastExpandable-hitarea",collapsable:"collapsable",collapsableHitarea:"collapsable-hitarea",lastCollapsableHitarea:"lastCollapsable-hitarea",lastCollapsable:"lastCollapsable",lastExpandable:"lastExpandable",last:"last",hitarea:"hitarea"};$.fn.Treeview=$.fn.treeview;})(jQuery); \ No newline at end of file + */;(function($){$.extend($.fn,{swapClass:function(c1,c2){var c1Elements=this.filter('.'+c1);this.filter('.'+c2).removeClass(c2).addClass(c1);c1Elements.removeClass(c1).addClass(c2);return this;},replaceClass:function(c1,c2){return this.filter('.'+c1).removeClass(c1).addClass(c2).end();},hoverClass:function(className){className=className||"hover";return this.hover(function(){$(this).addClass(className);},function(){$(this).removeClass(className);});},heightToggle:function(animated,callback){animated?this.animate({height:"toggle"},animated,callback):this.each(function(){jQuery(this)[jQuery(this).is(":hidden")?"show":"hide"]();if(callback)callback.apply(this,arguments);});},heightHide:function(animated,callback){if(animated){this.animate({height:"hide"},animated,callback);}else{this.hide();if(callback)this.each(callback);}},prepareBranches:function(settings){if(!settings.prerendered){this.filter(":last-child:not(ul)").addClass(CLASSES.last);this.filter((settings.collapsed?"":"."+CLASSES.closed)+":not(."+CLASSES.open+")").find(">ul").hide();}return this.filter(":has(>ul)");},applyClasses:function(settings,toggler){this.filter(":has(>ul):not(:has(>a))").find(">span").click(function(event){toggler.apply($(this).next());}).add($("a",this)).hoverClass();if(!settings.prerendered){this.filter(":has(>ul:hidden)").addClass(CLASSES.expandable).replaceClass(CLASSES.last,CLASSES.lastExpandable);this.not(":has(>ul:hidden)").addClass(CLASSES.collapsable).replaceClass(CLASSES.last,CLASSES.lastCollapsable);this.prepend("<div class=\""+CLASSES.hitarea+"\"/>").find("div."+CLASSES.hitarea).each(function(){var classes="";$.each($(this).parent().attr("class").split(" "),function(){classes+=this+"-hitarea ";});$(this).addClass(classes);});}this.find("div."+CLASSES.hitarea).click(toggler);},treeview:function(settings){if(typeof(window.treeCookieId) === 'undefined' || window.treeCookieId === ""){treeCookieId = "treeview";} settings=$.extend({cookieId: treeCookieId},settings);if(settings.add){return this.trigger("add",[settings.add]);}if(settings.toggle){var callback=settings.toggle;settings.toggle=function(){return callback.apply($(this).parent()[0],arguments);};}function treeController(tree,control){function handler(filter){return function(){toggler.apply($("div."+CLASSES.hitarea,tree).filter(function(){return filter?$(this).parent("."+filter).length:true;}));return false;};}$("a:eq(0)",control).click(handler(CLASSES.collapsable));$("a:eq(1)",control).click(handler(CLASSES.expandable));$("a:eq(2)",control).click(handler());}function toggler(){$(this).parent().find(">.hitarea").swapClass(CLASSES.collapsableHitarea,CLASSES.expandableHitarea).swapClass(CLASSES.lastCollapsableHitarea,CLASSES.lastExpandableHitarea).end().swapClass(CLASSES.collapsable,CLASSES.expandable).swapClass(CLASSES.lastCollapsable,CLASSES.lastExpandable).find(">ul").heightToggle(settings.animated,settings.toggle);if(settings.unique){$(this).parent().siblings().find(">.hitarea").replaceClass(CLASSES.collapsableHitarea,CLASSES.expandableHitarea).replaceClass(CLASSES.lastCollapsableHitarea,CLASSES.lastExpandableHitarea).end().replaceClass(CLASSES.collapsable,CLASSES.expandable).replaceClass(CLASSES.lastCollapsable,CLASSES.lastExpandable).find(">ul").heightHide(settings.animated,settings.toggle);}}function serialize(){function binary(arg){return arg?1:0;}var data=[];branches.each(function(i,e){data[i]=$(e).is(":has(>ul:visible)")?1:0;});$.cookie(settings.cookieId,data.join(""));}function deserialize(){var stored=$.cookie(settings.cookieId);if(stored){var data=stored.split("");branches.each(function(i,e){$(e).find(">ul")[parseInt(data[i])?"show":"hide"]();});}}this.addClass("treeview");var branches=this.find("li").prepareBranches(settings);switch(settings.persist){case"cookie":var toggleCallback=settings.toggle;settings.toggle=function(){serialize();if(toggleCallback){toggleCallback.apply(this,arguments);}};deserialize();break;case"location":var current=this.find("a").filter(function(){return this.href.toLowerCase()==location.href.toLowerCase();});if(current.length){current.addClass("selected").parents("ul, li").add(current.next()).show();}break;}branches.applyClasses(settings,toggler);if(settings.control){treeController(this,settings.control);$(settings.control).show();}return this.bind("add",function(event,branches){$(branches).prev().removeClass(CLASSES.last).removeClass(CLASSES.lastCollapsable).removeClass(CLASSES.lastExpandable).find(">.hitarea").removeClass(CLASSES.lastCollapsableHitarea).removeClass(CLASSES.lastExpandableHitarea);$(branches).find("li").andSelf().prepareBranches(settings).applyClasses(settings,toggler);});}});var CLASSES=$.fn.treeview.classes={open:"open",closed:"closed",expandable:"expandable",expandableHitarea:"expandable-hitarea",lastExpandableHitarea:"lastExpandable-hitarea",collapsable:"collapsable",collapsableHitarea:"collapsable-hitarea",lastCollapsableHitarea:"lastCollapsable-hitarea",lastCollapsable:"lastCollapsable",lastExpandable:"lastExpandable",last:"last",hitarea:"hitarea"};$.fn.Treeview=$.fn.treeview;})(jQuery); \ No newline at end of file Modified: branches/webhelp/xsl/webhelp/xsl/webhelp.xsl =================================================================== --- branches/webhelp/xsl/webhelp/xsl/webhelp.xsl 2010-07-04 05:24:30 UTC (rev 8696) +++ branches/webhelp/xsl/webhelp/xsl/webhelp.xsl 2010-07-05 18:55:14 UTC (rev 8697) @@ -3,11 +3,13 @@ xmlns:exsl="http://exslt.org/common" xmlns:cf="http://docbook.sourceforge.net/xmlns/chunkfast/1.0" version="1.0" xmlns="http://www.w3.org/1999/xhtml"> - <xsl:import - href="c:/gsoc2010/docbook-webhelp/1Beta02/xsl/../../../docbook-xsl-1.75.2/xhtml/chunk.xsl"/> <!--<xsl:import href="http://docbook.sourceforge.net/release/xsl/current/xhtml/chunk.xsl"/>--> - + <!--xsl:import + href="c:/gsoc2010/docbook-webhelp/1Beta02/xsl/../../../docbook-xsl-1.75.2/xhtml/chunk.xsl"/--> + <xsl:import + href="file:///media/DATA/ACADEMIC/GSOC/docbook/repository/docbook/trunk/maven/docbook-xsl/target/docbook/xhtml/chunk.xsl"/> + <xsl:include href="keywords.xsl"/> <!--TODO check how html and xml behaves--> @@ -23,6 +25,9 @@ <xsl:param name="chunked.toc.all.open">1</xsl:param> <xsl:param name="frameset.base.dir">doc</xsl:param> <xsl:param name="generate.web.xml">0</xsl:param> + <xsl:param name="direction.align.start">left</xsl:param> + <xsl:param name="direction.align.end">right</xsl:param> + <xsl:variable name="tree.cookie.id" select="concat( 'treeview-', generate-id(.) )"/> <!-- Custom params! --> <xsl:param name="chunker.output.indent">no</xsl:param> @@ -59,6 +64,30 @@ </i18n> <xsl:template name="user.head.content"> + <!--xsl:message> + tree.cookie.id = <xsl:value-of select="$tree.cookie.id"/> + </xsl:message--> + <script type="text/javascript"> + //The id for tree cookie + var treeCookieId = "<xsl:value-of select="$tree.cookie.id"/>"; + + //Localization + txt_filesfound = '<xsl:call-template name="gentext"> + <xsl:with-param name="key" select="'txt_filesfound'"/> + </xsl:call-template>'; + txt_enter_at_least_1_char = "<xsl:call-template name="gentext"> + <xsl:with-param name="key" select="'txt_enter_at_least_1_char'"/> + </xsl:call-template>"; + txt_browser_not_supported = "<xsl:call-template name="gentext"> + <xsl:with-param name="key" select="'txt_browser_not_supported'"/> + </xsl:call-template>"; + txt_please_wait = "<xsl:call-template name="gentext"> + <xsl:with-param name="key" select="'txt_please_wait'"/> + </xsl:call-template>"; + txt_results_for = "<xsl:call-template name="gentext"> + <xsl:with-param name="key" select="'txt_results_for'"/> + </xsl:call-template>"; + </script> <style type="text/css"> input { margin-bottom: 5px; @@ -72,23 +101,12 @@ background: transparent url(../common/jquery/treeview/images/folder.gif) 0 0px no-repeat; } <!--[if IE]> - <style type="text/css"> input { margin-bottom: 5px; margin-top: 2px; } - </style><![endif]--> - </style> - <script type="text/javascript"> - <xsl:comment><![CDATA[ - var txt_filesfound = "Results"; - var txt_enter_at_least_1_char = "You must enter at least one character."; - var txt_browser_not_supported = "Your browser is not supported. Use of Mozilla Firefox is recommended."; - var txt_please_wait = "Please wait. Search in progress..."; - var txt_results_for = "Results for: "; - ]]></xsl:comment> - </script> - + <![endif]--> + </style> <link rel="stylesheet" type="text/css" href="../common/css/positioning.css"/> <link rel="stylesheet" type="text/css" href="../common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css"/> <link rel="stylesheet" type="text/css" href="../common/jquery/treeview/jquery.treeview.css"/> @@ -96,19 +114,15 @@ <script type="text/javascript" src="../common/jquery/jquery-1.4.2.min.js"> <xsl:comment></xsl:comment> </script> - <script type="text/javascript" src="../common/jquery/jquery-ui-1.8.2.custom.min.js"> <xsl:comment></xsl:comment> </script> - - <script type="text/javascript" src="../common/jquery/jquery.cookie.js"> <xsl:comment></xsl:comment> </script> <script type="text/javascript" src="../common/jquery/treeview/jquery.treeview.min.js"> <xsl:comment></xsl:comment> </script> - <!--Scripts/css stylesheets for Search--> <script type="text/javascript" src="search/addition.js"> <xsl:comment></xsl:comment> @@ -121,14 +135,11 @@ <script type="text/javascript" src="search/nwSearchFnt.js"> <xsl:comment></xsl:comment> </script> - - </xsl:template> - <xsl:template name="user.header.navigation"> - + <xsl:template name="user.header.navigation"> <xsl:call-template name="webhelpheader"/> - <xsl:call-template name="webhelptoc"/> + <!--xsl:call-template name="webhelptoc"/--> <!--testing toc in the content page> <xsl:call-template name="webhelptoctoc"/> @@ -138,7 +149,11 @@ </xsl:template> -<xsl:template name="header.navigation"> + <xsl:template name="user.footer.navigation"> + <xsl:call-template name="webhelptoc"/> + </xsl:template> + + <xsl:template name="header.navigation"> <xsl:param name="prev" select="/foo"/> <xsl:param name="next" select="/foo"/> <xsl:param name="nav.context"/> @@ -278,26 +293,26 @@ <xsl:call-template name="user.header.navigation"/> <div id="content"> - <xsl:call-template name="header.navigation"> - <xsl:with-param name="prev" select="$prev"/> - <xsl:with-param name="next" select="$next"/> - <xsl:with-param name="nav.context" select="$nav.context"/> - </xsl:call-template> + <xsl:call-template name="header.navigation"> + <xsl:with-param name="prev" select="$prev"/> + <xsl:with-param name="next" select="$next"/> + <xsl:with-param name="nav.context" select="$nav.context"/> + </xsl:call-template> - <xsl:call-template name="user.header.content"/> + <xsl:call-template name="user.header.content"/> - <xsl:copy-of select="$content"/> + <xsl:copy-of select="$content"/> - <xsl:call-template name="user.footer.content"/> + <xsl:call-template name="user.footer.content"/> - <xsl:call-template name="footer.navigation"> - <xsl:with-param name="prev" select="$prev"/> - <xsl:with-param name="next" select="$next"/> - <xsl:with-param name="nav.context" select="$nav.context"/> - </xsl:call-template> - + <xsl:call-template name="footer.navigation"> + <xsl:with-param name="prev" select="$prev"/> + <xsl:with-param name="next" select="$next"/> + <xsl:with-param name="nav.context" select="$nav.context"/> + </xsl:call-template> + </div> + <xsl:call-template name="user.footer.navigation"/> - </div> </body> </html> <xsl:value-of select="$chunk.append"/> @@ -507,13 +522,7 @@ <xsl:template name="user.footer.content"> <script type="text/javascript" src="../common/main.js"> <xsl:comment></xsl:comment> - </script> - <script type="text/javascript"> - <!--code for synching content page with the toc--> - - </script> - - + </script> </xsl:template> <xsl:template name="index.html"> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dc...@us...> - 2010-07-06 19:06:20
|
Revision: 8701 http://docbook.svn.sourceforge.net/docbook/?rev=8701&view=rev Author: dcramer Date: 2010-07-06 19:06:13 +0000 (Tue, 06 Jul 2010) Log Message: ----------- Fixing bug where current topic in toc wasn't highlighted but title was. Modified Paths: -------------- branches/webhelp/xsl/webhelp/template/common/main.js branches/webhelp/xsl/webhelp/xsl/webhelp.xsl Modified: branches/webhelp/xsl/webhelp/template/common/main.js =================================================================== --- branches/webhelp/xsl/webhelp/template/common/main.js 2010-07-06 14:43:19 UTC (rev 8700) +++ branches/webhelp/xsl/webhelp/template/common/main.js 2010-07-06 19:06:13 UTC (rev 8701) @@ -64,16 +64,20 @@ * @param id the node/element id which should be displayed when synching. */ function syncToc(id){ - var a = document.getElementById(id); + var a = document.getElementById("webhelp-currentid"); + var b = a.getElementsByTagName("a")[0]; //Setting the background for selected node. var style = a.getAttribute("style"); if(style != null && !style.match(/background-color: Background;/)){ - a.setAttribute("style", "background-color: Background; "+style); + a.setAttribute("style", "background-color: Background; "+style); + b.setAttribute("style", "color: white;"); } else if(style != null){ - a.setAttribute("style", "background-color: Background; " + style); + a.setAttribute("style", "background-color: Background; " + style); + b.setAttribute("style", "color: white;"); } else { - a.setAttribute("style", "background-color: Background; "); + a.setAttribute("style", "background-color: Background; "); + b.setAttribute("style", "color: white;"); } while (a.parentNode && a.parentNode.nodeName){ Modified: branches/webhelp/xsl/webhelp/xsl/webhelp.xsl =================================================================== --- branches/webhelp/xsl/webhelp/xsl/webhelp.xsl 2010-07-06 14:43:19 UTC (rev 8700) +++ branches/webhelp/xsl/webhelp/xsl/webhelp.xsl 2010-07-06 19:06:13 UTC (rev 8701) @@ -5,10 +5,10 @@ version="1.0" xmlns="http://www.w3.org/1999/xhtml"> <!--<xsl:import href="http://docbook.sourceforge.net/release/xsl/current/xhtml/chunk.xsl"/>--> + <xsl:import + href="c:/gsoc2010/docbook-xsl-1.75.2/xhtml/chunk.xsl"/> <!--xsl:import - href="c:/gsoc2010/docbook-webhelp/1Beta02/xsl/../../../docbook-xsl-1.75.2/xhtml/chunk.xsl"/--> - <xsl:import - href="file:///media/DATA/ACADEMIC/GSOC/docbook/repository/docbook/trunk/maven/docbook-xsl/target/docbook/xhtml/chunk.xsl"/> + href="file:///media/DATA/ACADEMIC/GSOC/docbook/repository/docbook/trunk/maven/docbook-xsl/target/docbook/xhtml/chunk.xsl"/--> <xsl:include href="keywords.xsl"/> @@ -150,7 +150,9 @@ </xsl:template> <xsl:template name="user.footer.navigation"> - <xsl:call-template name="webhelptoc"/> + <xsl:call-template name="webhelptoc"> + <xsl:with-param name="currentid" select="generate-id(.)"/> + </xsl:call-template> </xsl:template> <xsl:template name="header.navigation"> @@ -312,7 +314,7 @@ </xsl:call-template> </div> - <xsl:call-template name="user.footer.navigation"/> + <xsl:call-template name="user.footer.navigation"/> </body> </html> <xsl:value-of select="$chunk.append"/> @@ -344,6 +346,7 @@ </xsl:template> <xsl:template name="webhelptoc"> + <xsl:param name="currentid"/> <xsl:choose> <xsl:when test="$rootid != ''"> <xsl:variable name="title"> @@ -429,7 +432,9 @@ <img src="../common/images/loading.gif" alt="loading table of contents..." id="tocLoading" style="display:block;"/> <ul id="tree" class="filetree" style="display:none;"> - <xsl:apply-templates select="/*/*" mode="webhelptoc"/> + <xsl:apply-templates select="/*/*" mode="webhelptoc"> + <xsl:with-param name="currentid" select="$currentid"/> + </xsl:apply-templates> </ul> </div> <xsl:if test="$exclude.search.from.chunked.html != 'true'"> @@ -470,6 +475,7 @@ <xsl:template match="book|part|reference|preface|chapter|bibliography|appendix|article|glossary|section|simplesect|sect1|sect2|sect3|sect4|sect5|refentry|colophon|bibliodiv|index" mode="webhelptoc"> + <xsl:param name="currentid"/> <xsl:variable name="title"> <xsl:if test="$eclipse.autolabel=1"> <xsl:variable name="label.markup"> @@ -500,7 +506,10 @@ <xsl:if test="not(self::index) or (self::index and not($generate.index = 0))"> <!--li style="white-space: pre; line-height: 0em;"--> - <li id="{$id}"> + <li> + <xsl:if test="$id = $currentid"> + <xsl:attribute name="id">webhelp-currentid</xsl:attribute> + </xsl:if> <span class="file"> <a href="{substring-after($href,concat($frameset.base.dir,'/content/'))}"> <xsl:value-of select="$title"/> @@ -510,7 +519,9 @@ <ul> <xsl:apply-templates select="part|reference|preface|chapter|bibliography|appendix|article|glossary|section|simplesect|sect1|sect2|sect3|sect4|sect5|refentry|colophon|bibliodiv" - mode="webhelptoc"/> + mode="webhelptoc"> + <xsl:with-param name="currentid" select="$currentid"/> + </xsl:apply-templates> </ul> </xsl:if> </li> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ka...@us...> - 2010-07-06 20:35:01
|
Revision: 8702 http://docbook.svn.sourceforge.net/docbook/?rev=8702&view=rev Author: kasunbg Date: 2010-07-06 20:34:54 +0000 (Tue, 06 Jul 2010) Log Message: ----------- removed sync button as AutoSync is in effect. Made some other minor changes. Modified Paths: -------------- branches/webhelp/xsl/webhelp/template/common/main.js branches/webhelp/xsl/webhelp/xsl/webhelp.xsl Modified: branches/webhelp/xsl/webhelp/template/common/main.js =================================================================== --- branches/webhelp/xsl/webhelp/template/common/main.js 2010-07-06 19:06:13 UTC (rev 8701) +++ branches/webhelp/xsl/webhelp/template/common/main.js 2010-07-06 20:34:54 UTC (rev 8702) @@ -1,3 +1,10 @@ +/** + * main.js + * + * Developed by: Kasun Gajasinghe, David Cramer + * + */ + $(document).ready(function() { $(function() { @@ -41,45 +48,35 @@ //tabView.selectTab(0); } + syncToc(); + // $('#sync').click(); - $('#sync').click(); - - }); -/* -function tocTabClick(e) { - $.cookie('search', 'no'); -} - -function searchTabClick(e) { - $.cookie('search', 'yes'); -} -*/ - /** - * Synchronize with the tableOfContents - * @param id the node/element id which should be displayed when synching. + * Synchronize with the tableOfContents */ -function syncToc(id){ +function syncToc(){ var a = document.getElementById("webhelp-currentid"); var b = a.getElementsByTagName("a")[0]; //Setting the background for selected node. var style = a.getAttribute("style"); if(style != null && !style.match(/background-color: Background;/)){ - a.setAttribute("style", "background-color: Background; "+style); + a.setAttribute("style", "background-color: #6495ed; "+style); b.setAttribute("style", "color: white;"); } else if(style != null){ - a.setAttribute("style", "background-color: Background; " + style); + a.setAttribute("style", "background-color: #6495ed; " + style); b.setAttribute("style", "color: white;"); } else { - a.setAttribute("style", "background-color: Background; "); + a.setAttribute("style", "background-color: #6495ed; "); b.setAttribute("style", "color: white;"); } - + + //shows the node related to current content. + //goes a recursive call from current node to ancestor nodes, displaying all of them. while (a.parentNode && a.parentNode.nodeName){ var parentNode = a.parentNode; var nodeName = parentNode.nodeName; Modified: branches/webhelp/xsl/webhelp/xsl/webhelp.xsl =================================================================== --- branches/webhelp/xsl/webhelp/xsl/webhelp.xsl 2010-07-06 19:06:13 UTC (rev 8701) +++ branches/webhelp/xsl/webhelp/xsl/webhelp.xsl 2010-07-06 20:34:54 UTC (rev 8702) @@ -5,10 +5,10 @@ version="1.0" xmlns="http://www.w3.org/1999/xhtml"> <!--<xsl:import href="http://docbook.sourceforge.net/release/xsl/current/xhtml/chunk.xsl"/>--> - <xsl:import - href="c:/gsoc2010/docbook-xsl-1.75.2/xhtml/chunk.xsl"/> <!--xsl:import - href="file:///media/DATA/ACADEMIC/GSOC/docbook/repository/docbook/trunk/maven/docbook-xsl/target/docbook/xhtml/chunk.xsl"/--> + href="c:/gsoc2010/docbook-xsl-1.75.2/xhtml/chunk.xsl"/--> + <xsl:import + href="file:///media/DATA/ACADEMIC/GSOC/docbook/repository/docbook/trunk/maven/docbook-xsl/target/docbook/xhtml/chunk.xsl"/> <xsl:include href="keywords.xsl"/> @@ -27,12 +27,12 @@ <xsl:param name="generate.web.xml">0</xsl:param> <xsl:param name="direction.align.start">left</xsl:param> <xsl:param name="direction.align.end">right</xsl:param> - <xsl:variable name="tree.cookie.id" select="concat( 'treeview-', generate-id(.) )"/> + <xsl:variable name="tree.cookie.id" select="concat( 'treeview-', count(//node()) )"/> <!-- Custom params! --> <xsl:param name="chunker.output.indent">no</xsl:param> <xsl:param name="navig.showtitles">0</xsl:param> - + <xsl:param name="manifest.in.base.dir" select="0"/> <xsl:param name="base.dir" select="concat($frameset.base.dir,'/content/')"/> <xsl:param name="suppress.navigation">0</xsl:param> @@ -65,8 +65,8 @@ <xsl:template name="user.head.content"> <!--xsl:message> - tree.cookie.id = <xsl:value-of select="$tree.cookie.id"/> - </xsl:message--> + tree.cookie.id = <xsl:value-of select="$tree.cookie.id"/> +++ <xsl:value-of select="count(//node())"/> + </xsl:message--> <script type="text/javascript"> //The id for tree cookie var treeCookieId = "<xsl:value-of select="$tree.cookie.id"/>"; @@ -155,93 +155,6 @@ </xsl:call-template> </xsl:template> - <xsl:template name="header.navigation"> - <xsl:param name="prev" select="/foo"/> - <xsl:param name="next" select="/foo"/> - <xsl:param name="nav.context"/> - - <xsl:variable name="home" select="/*[1]"/> - <xsl:variable name="up" select="parent::*"/> - - <xsl:variable name="row1" select="$navig.showtitles != 0"/> - <xsl:variable name="row2" - select="count($prev) > 0 or (count($up) > 0 and generate-id($up) != generate-id($home) and $navig.showtitles != 0) or count($next) > 0"/> - - <xsl:if test="$suppress.navigation = '0' and $suppress.header.navigation = '0'"> - <div class="navheader"> - <xsl:if test="$row1 or $row2"> - <table width="100%" summary="Navigation header"> - <xsl:if test="$row1"> - <tr> - <th colspan="3" align="center"> - <xsl:apply-templates select="." mode="object.title.markup"/> - </th> - </tr> - </xsl:if> - - <xsl:if test="$row2"> - <tr> - <td width="20%" align="{$direction.align.start}"> - <xsl:if test="count($prev)>0"> - <a accesskey="p"> - <xsl:attribute name="href"> - <xsl:call-template name="href.target"> - <xsl:with-param name="object" select="$prev"/> - </xsl:call-template> - </xsl:attribute> - <xsl:call-template name="navig.content"> - <xsl:with-param name="direction" select="'prev'"/> - </xsl:call-template> - </a> - </xsl:if> - <xsl:text> </xsl:text> - </td> - <th width="60%" align="center"> - <xsl:choose> - <xsl:when test="count($up) > 0 and generate-id($up) != generate-id($home) and $navig.showtitles != 0"> - <xsl:apply-templates select="$up" mode="object.title.markup"/> - </xsl:when> - <xsl:otherwise> </xsl:otherwise> - </xsl:choose> - </th> - <td width="20%" align="{$direction.align.end}"> - <xsl:text> </xsl:text> - - <!--code for synching content page with the toc--> - <xsl:variable name="contentId" select="generate-id(.)"/> - <a href='#' id="sync">Sync</a> - <script type="text/javascript"> - <![CDATA[ - $('#sync').click(function() { - syncToc("]]><xsl:value-of select="$contentId"/><![CDATA["); - }); - ]]></script> - - <xsl:if test="count($next)>0"> - | - <a accesskey="n"> - <xsl:attribute name="href"> - <xsl:call-template name="href.target"> - <xsl:with-param name="object" select="$next"/> - </xsl:call-template> - </xsl:attribute> - <xsl:call-template name="navig.content"> - <xsl:with-param name="direction" select="'next'"/> - </xsl:call-template> - </a> - </xsl:if> - </td> - </tr> - </xsl:if> - </table> - </xsl:if> - <xsl:if test="$header.rule != 0"> - <hr/> - </xsl:if> - </div> - </xsl:if> -</xsl:template> - <xsl:template match="/"> <xsl:choose> <xsl:when test="$rootid != ''"> @@ -346,7 +259,7 @@ </xsl:template> <xsl:template name="webhelptoc"> - <xsl:param name="currentid"/> + <xsl:param name="currentid"/> <xsl:choose> <xsl:when test="$rootid != ''"> <xsl:variable name="title"> @@ -433,8 +346,8 @@ id="tocLoading" style="display:block;"/> <ul id="tree" class="filetree" style="display:none;"> <xsl:apply-templates select="/*/*" mode="webhelptoc"> - <xsl:with-param name="currentid" select="$currentid"/> - </xsl:apply-templates> + <xsl:with-param name="currentid" select="$currentid"/> + </xsl:apply-templates> </ul> </div> <xsl:if test="$exclude.search.from.chunked.html != 'true'"> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dc...@us...> - 2010-07-06 21:39:20
|
Revision: 8704 http://docbook.svn.sourceforge.net/docbook/?rev=8704&view=rev Author: dcramer Date: 2010-07-06 21:39:14 +0000 (Tue, 06 Jul 2010) Log Message: ----------- Use xml catalogs to point to docbook xsls Modified Paths: -------------- branches/webhelp/xsl/webhelp/build.properties branches/webhelp/xsl/webhelp/build.xml branches/webhelp/xsl/webhelp/xsl/webhelp.xsl Modified: branches/webhelp/xsl/webhelp/build.properties =================================================================== --- branches/webhelp/xsl/webhelp/build.properties 2010-07-06 20:57:06 UTC (rev 8703) +++ branches/webhelp/xsl/webhelp/build.properties 2010-07-06 21:39:14 UTC (rev 8704) @@ -1,6 +1,10 @@ input-xml=docsrc/readme.xml frameset.base.dir=doc -#xslt-processor=c:/workhead/export/saxon/6.5/lib/saxon.jar -xslt-processor=/usr/bin/xsltproc -#docbookx.dtd=c:/workhead/export/DocBookDTD/4.5/docbookx.dtd" +xslt-processor-classpath=c:/workhead/export/saxon/6.5/lib/saxon.jar +# To use this catalog, make sure the resolver is in your classpath. +# Download xml-commons-resolver from http://xml.apache.org/commons/dist/ +# and add it to your CLASSPATH. Then use the following property to point +# to your docbook xsl stylesheets' catalog +docbook-xsl-catalog=c:/gsoc2010/docbook-xsl-1.75.2/catalog.xml docbookx.dtd=file:///media/DATA/ACADEMIC/GSOC/docbook/repository/docbook/trunk/defguide/en/schema/docbookx.dtd +validate=true Modified: branches/webhelp/xsl/webhelp/build.xml =================================================================== --- branches/webhelp/xsl/webhelp/build.xml 2010-07-06 20:57:06 UTC (rev 8703) +++ branches/webhelp/xsl/webhelp/build.xml 2010-07-06 21:39:14 UTC (rev 8704) @@ -3,14 +3,16 @@ <loadproperties srcFile="build.properties"/> <xmlcatalog id="catalog"> - <dtd publicId="-//OASIS//DTD DocBook XML V4.5//EN" - location="${docbookx.dtd}"/> + <catalogpath> + <pathelement location="${docbook-xsl-catalog}"/> + </catalogpath> + <dtd publicId="-//OASIS//DTD DocBook XML V4.5//EN" location="${docbookx.dtd}"/> </xmlcatalog> <property environment="env"/> <property name="ant.jar" value="${env.ANT_HOME}/lib/ant.jar"/> - <target name="validate"> + <target name="validate" if="validate"> <xmlvalidate file="${input-xml}"> <xmlcatalog refid="catalog"/> </xmlvalidate> @@ -24,7 +26,7 @@ out="${frameset.base.dir}/dummy.html" style="xsl/webhelp.xsl" scanincludeddirectories="false" - classpath="${xslt-processor}"> + classpath="${xslt-processor-classpath}"> <xmlcatalog refid="catalog"/> <param name="chunked.toc.all.open" expression="${chunked.toc.all.open}" if="chunked.toc.all.open"/> <param name="exclude.search.from.chunked.html" expression="${exclude.search.from.chunked.html}" if="exclude.search.from.chunked.html"/> Modified: branches/webhelp/xsl/webhelp/xsl/webhelp.xsl =================================================================== --- branches/webhelp/xsl/webhelp/xsl/webhelp.xsl 2010-07-06 20:57:06 UTC (rev 8703) +++ branches/webhelp/xsl/webhelp/xsl/webhelp.xsl 2010-07-06 21:39:14 UTC (rev 8704) @@ -4,11 +4,7 @@ xmlns:cf="http://docbook.sourceforge.net/xmlns/chunkfast/1.0" version="1.0" xmlns="http://www.w3.org/1999/xhtml"> - <!--<xsl:import href="http://docbook.sourceforge.net/release/xsl/current/xhtml/chunk.xsl"/>--> - <!--xsl:import - href="c:/gsoc2010/docbook-xsl-1.75.2/xhtml/chunk.xsl"/--> - <xsl:import - href="file:///media/DATA/ACADEMIC/GSOC/docbook/repository/docbook/trunk/maven/docbook-xsl/target/docbook/xhtml/chunk.xsl"/> + <xsl:import href="http://docbook.sourceforge.net/release/xsl/current/xhtml/chunk.xsl"/> <xsl:include href="keywords.xsl"/> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ka...@us...> - 2010-07-10 11:53:59
|
Revision: 8711 http://docbook.svn.sourceforge.net/docbook/?rev=8711&view=rev Author: kasunbg Date: 2010-07-10 11:53:52 +0000 (Sat, 10 Jul 2010) Log Message: ----------- Added functionality to "indexer" to not to index the navigation contents. Now it indexes only contents under "content" <div> and some meta data. Modified Paths: -------------- branches/webhelp/xsl/webhelp/build.properties branches/webhelp/xsl/webhelp/build.xml branches/webhelp/xsl/webhelp/indexer/lib/nw-cms.jar branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/IndexerTask.java branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/SaxDocFileParser.java branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/SaxHTMLIndex.java branches/webhelp/xsl/webhelp/xsl/webhelp.xsl Modified: branches/webhelp/xsl/webhelp/build.properties =================================================================== --- branches/webhelp/xsl/webhelp/build.properties 2010-07-08 23:42:20 UTC (rev 8710) +++ branches/webhelp/xsl/webhelp/build.properties 2010-07-10 11:53:52 UTC (rev 8711) @@ -5,6 +5,7 @@ # Download xml-commons-resolver from http://xml.apache.org/commons/dist/ # and add it to your CLASSPATH. Then use the following property to point # to your docbook xsl stylesheets' catalog -docbook-xsl-catalog=c:/gsoc2010/docbook-xsl-1.75.2/catalog.xml +#docbook-xsl-catalog=c:/gsoc2010/docbook-xsl-1.75.2/catalog.xml +docbook-xsl-catalog=/media/DATA/ACADEMIC/GSOC/docbook/repository/docbook/trunk/maven/docbook-xsl/target/xsltmp/docbook-xsl-1.75.2/catalog.xml docbookx.dtd=file:///media/DATA/ACADEMIC/GSOC/docbook/repository/docbook/trunk/defguide/en/schema/docbookx.dtd validate=true Modified: branches/webhelp/xsl/webhelp/build.xml =================================================================== --- branches/webhelp/xsl/webhelp/build.xml 2010-07-08 23:42:20 UTC (rev 8710) +++ branches/webhelp/xsl/webhelp/build.xml 2010-07-10 11:53:52 UTC (rev 8711) @@ -13,7 +13,7 @@ <property environment="env"/> <property name="ant.jar" value="${env.ANT_HOME}/lib/ant.jar"/> - <target name="validate" if="validate"> + <target name="validate" if="validate"> <xmlvalidate file="${input-xml}"> <xmlcatalog refid="catalog"/> </xmlvalidate> Modified: branches/webhelp/xsl/webhelp/indexer/lib/nw-cms.jar =================================================================== (Binary files differ) Modified: branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/IndexerTask.java =================================================================== --- branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/IndexerTask.java 2010-07-08 23:42:20 UTC (rev 8710) +++ branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/IndexerTask.java 2010-07-10 11:53:52 UTC (rev 8711) @@ -43,7 +43,7 @@ private String searchdir = "search"; private File inputDir = null; private String outputDir = null; - private String projectDir = null; + private String projectDir = null; // ANT parameters private String htmldir=null; @@ -187,7 +187,7 @@ } int ad = 1; if (stemp.equals(projectDir)) ad = 0; - stemp = stemp.substring(i+projectDir.length()+ad); + stemp = stemp.substring(i+projectDir.length()+ad); //i is redundant (i==0 always) ftemp = new File (stemp); docFileInfoTemp.setFullpath(ftemp); @@ -242,17 +242,15 @@ // Files for punctuation (only one for now) String[] punctuationFiles = new String[] {"punctuation.props"}; FileInputStream input; - String tempStr= new String(); + String tempStr; File ftemp; Collection c = new ArrayList<String>(); - //TODO punctuation files are located at webhelp/template/content/search/*.* But here, it refers to doc/content/search which does not exist. - // Get the list of the props file containing the words to remove (not the punctuation) DirList props = new DirList(inputDir, "^(?!(punctuation)).*\\.props$", 1); ArrayList<File> wordsList = props.getListFiles(); System.out.println("props files:"+wordsList); - + //TODO all properties are taken toa single arraylist. does it ok?. Properties enProps =new Properties (); String propsDir = new String (inputDir.getPath().concat(File.separator).concat(searchdir)); Modified: branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/SaxDocFileParser.java =================================================================== --- branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/SaxDocFileParser.java 2010-07-08 23:42:20 UTC (rev 8710) +++ branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/SaxDocFileParser.java 2010-07-10 11:53:52 UTC (rev 8711) @@ -77,7 +77,8 @@ SAXParserFactory spf = SAXParserFactory.newInstance(); spf.setValidating(false); - + addContent = false; + divCount = 0; try { //get a new instance of parser @@ -109,20 +110,23 @@ ie.printStackTrace(); } } - + //kasun: TODO remove indexing of css styles + private boolean addContent = false; + private boolean addHeaderInfo = false; + private int divCount = 0; //SAX parser Event Handlers: public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { //dwc: capture current element name - currentElName = qName; + currentElName = qName; // dwc: Adding contents of some meta tags to the index if((qName.equalsIgnoreCase("meta")) ) { + addHeaderInfo = true; String attrName = attributes.getValue("name"); if(attrName != null && (attrName.equalsIgnoreCase("keywords") || attrName.equalsIgnoreCase("description"))){ strbf.append(" " + attributes.getValue("content") + " "); } - // dwc: adding this to make the docbook <abstract> element // (which becomes <meta name="description".../> in html) // into the brief description that shows up in search @@ -130,31 +134,46 @@ if(attrName != null && (attrName.equalsIgnoreCase("description"))){ fileDesc.setShortdesc(BlankRemover.rmWhiteSpace(attributes.getValue("content").replace('\n', ' '))); } - } - // dwc: End addition - - // dwc: commenting out DITA specific lines + } // dwc: End addition + + // dwc: commenting out DITA specific lines if((qName.equalsIgnoreCase("title")) || (qName.equalsIgnoreCase("shortdesc"))) { tempVal = new StringBuffer(); } - // dwc: Adding mechansim to grab <p class="summary"> etc. Powered by para.propagates.style etc. - if(qName.equalsIgnoreCase("div")||qName.equalsIgnoreCase("p")||qName.equalsIgnoreCase("span")) { - String stemp = attributes.getValue("class"); - if (stemp !=null && (stemp.equalsIgnoreCase("shortdesc")||stemp.equalsIgnoreCase("summary"))) { - shortdescBool = true; - } - tempVal = new StringBuffer(); - strbf.append(" "); - } - if (shortdescBool == true) { - shortTagCpt ++; - } - + if(qName.equalsIgnoreCase("meta") || qName.equalsIgnoreCase("title") || qName.equalsIgnoreCase("shortdesc")){ + addHeaderInfo = true; + } else { + addHeaderInfo = false; + } + + String elementId = attributes.getValue("id"); + if("content".equals(elementId)) addContent = true; + + if(addContent) { + //counts div tags starting from "content" div(inclusive). This will be used to track the end of content "div" tag. + //see #endElement() + if(qName.equalsIgnoreCase("div")){ + divCount++; + } + + // dwc: Adding mechansim to grab <p class="summary"> etc. Powered by para.propagates.style etc. + if (qName.equalsIgnoreCase("div") || qName.equalsIgnoreCase("p") || qName.equalsIgnoreCase("span")) { + String stemp = attributes.getValue("class"); + if (stemp != null && (stemp.equalsIgnoreCase("shortdesc") || stemp.equalsIgnoreCase("summary"))) { + shortdescBool = true; + } + tempVal = new StringBuffer(); + strbf.append(" "); + } + if (shortdescBool) { + shortTagCpt++; + } + } strbf.append(" "); + } - } - + //triggers when there's character data inside an element. public void characters(char[] ch, int start, int length) throws SAXException { // dwc: Bug fix. Don't index contents of script tag. @@ -162,7 +181,8 @@ // index certain elements. E.g. Use this to implement a // "titles only" index, say if you wanted to use <span/>s to // create space breaks in ja_JP lines to indicate word breaks. - if(! currentElName.equalsIgnoreCase("script")){ + + if((addContent || addHeaderInfo) && !currentElName.equalsIgnoreCase("script")){ String text = new String(ch,start,length); strbf.append(text); if (tempVal != null) { tempVal.append(text);} @@ -183,7 +203,14 @@ tempVal = null; shortdescBool = false; } - } + } + + if(qName.equalsIgnoreCase("div") && addContent){ + divCount--; + if (divCount == 0) { + addContent = false; + } + } } public void processingInstruction(String target, String data) throws SAXException { @@ -220,8 +247,9 @@ //PrintWriter pw = new PrintWriter(new FileOutputStream(new File("xx.html"))); PrintWriter pw = new PrintWriter(new OutputStreamWriter (new FileOutputStream(new File("xx.html")),"UTF-8")); - - + //writes the content to xx.html after removing validation. This temp file will be source to index the + // content of the particular html page. + while(true) { int i1, i2; Modified: branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/SaxHTMLIndex.java =================================================================== --- branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/SaxHTMLIndex.java 2010-07-08 23:42:20 UTC (rev 8710) +++ branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/SaxHTMLIndex.java 2010-07-10 11:53:52 UTC (rev 8711) @@ -1,10 +1,7 @@ package com.nexwave.nquindexer; import java.io.File; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.Iterator; -import java.util.Map; +import java.util.*; // specific dita ot @@ -72,13 +69,11 @@ String str = cleanBuffer(strbf); - //System.out.println(file.toString()+" "+ str +"\n"); + System.out.println(file.toString()+" "+ str +"\n"); String[] items = str.split("\\s"); //items: remove the duplicated strings first HashSet <String> tempSet = new HashSet<String>(); - for (String s : items) { - tempSet.add(s); - } + tempSet.addAll(Arrays.asList(items)); Iterator it = tempSet.iterator(); String s; while (it.hasNext()) { @@ -86,11 +81,11 @@ s = (String)it.next(); if (tempDico.containsKey(s)) { String temp = (String) tempDico.get(s); - temp = temp.concat(",").concat(new Integer(i).toString()); + temp = temp.concat(",").concat(Integer.toString(i)); //System.out.println("temp="+s+"="+temp); tempDico.put(s, temp); }else { - tempDico.put(s, new Integer(i).toString()); + tempDico.put(s, Integer.toString(i)); } } @@ -125,7 +120,7 @@ tempStrBuf.append("|\\byou\\b|\\bby\\b|\\bso\\b|\\bon\\b|\\byour\\b|\\bat\\b"); tempStrBuf.append("|\\b-or-\\b|\\bso\\b|\\bon\\b|\\byour\\b|\\bat\\b"); - str = str.replaceFirst("Copyright \xA9 1998-2007 NexWave Solutions.", " "); + str = str.replaceFirst("Copyright � 1998-2007 NexWave Solutions.", " "); //nqu 25.01.2008 str = str.replaceAll("\\b.\\b|\\\\", " "); Modified: branches/webhelp/xsl/webhelp/xsl/webhelp.xsl =================================================================== --- branches/webhelp/xsl/webhelp/xsl/webhelp.xsl 2010-07-08 23:42:20 UTC (rev 8710) +++ branches/webhelp/xsl/webhelp/xsl/webhelp.xsl 2010-07-10 11:53:52 UTC (rev 8711) @@ -369,7 +369,7 @@ </form> </div> <div id="searchResults"> - + <center> </center> </div> </div> </xsl:if> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ka...@us...> - 2010-07-10 22:41:38
|
Revision: 8713 http://docbook.svn.sourceforge.net/docbook/?rev=8713&view=rev Author: kasunbg Date: 2010-07-10 22:41:30 +0000 (Sat, 10 Jul 2010) Log Message: ----------- Added Stemming support for WebHelp. Currently support English only. Porter's Algorithm is used for stemming. http://tartarus.org/~martin/PorterStemmer/ stemming for the Index will happen in Java and querying will be processed by a javascript stemmer. Added new build-property indexer-language with the default set to "en". Did minor modifications to main.js and some search js files. Modified Paths: -------------- branches/webhelp/xsl/webhelp/build.properties branches/webhelp/xsl/webhelp/build.xml branches/webhelp/xsl/webhelp/indexer/lib/nw-cms.jar branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/IndexerTask.java branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/SaxDocFileParser.java branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/SaxHTMLIndex.java branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/TesterIndexer.java branches/webhelp/xsl/webhelp/template/common/css/positioning.css branches/webhelp/xsl/webhelp/template/common/jquery/treeview/jquery.treeview.css branches/webhelp/xsl/webhelp/template/common/main.js branches/webhelp/xsl/webhelp/template/content/search/nwSearchFnt.js branches/webhelp/xsl/webhelp/xsl/webhelp.xsl Added Paths: ----------- branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/ branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/EnglishStemmer.java branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/Stemmer.java branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/test.txt Modified: branches/webhelp/xsl/webhelp/build.properties =================================================================== --- branches/webhelp/xsl/webhelp/build.properties 2010-07-10 14:44:28 UTC (rev 8712) +++ branches/webhelp/xsl/webhelp/build.properties 2010-07-10 22:41:30 UTC (rev 8713) @@ -9,3 +9,7 @@ docbook-xsl-catalog=/media/DATA/ACADEMIC/GSOC/docbook/repository/docbook/trunk/maven/docbook-xsl/target/xsltmp/docbook-xsl-1.75.2/catalog.xml docbookx.dtd=file:///media/DATA/ACADEMIC/GSOC/docbook/repository/docbook/trunk/defguide/en/schema/docbookx.dtd validate=true +#indexe-language is used to tell the search indexer which language the docbook is written. +#This will be used to identify the correct stemmer, and punctuations that differs from language to language. +#see the documentation for details. en=English, cn=Chinese, jp=Japanese etc. +indexer-language=en Modified: branches/webhelp/xsl/webhelp/build.xml =================================================================== --- branches/webhelp/xsl/webhelp/build.xml 2010-07-10 14:44:28 UTC (rev 8712) +++ branches/webhelp/xsl/webhelp/build.xml 2010-07-10 22:41:30 UTC (rev 8713) @@ -33,6 +33,7 @@ <param name="exclude.search.from.chunked.html" expression="${exclude.search.from.chunked.html}" if="exclude.search.from.chunked.html"/> <param name="output_file_name" expression="${output_file_name}"/> <param name="frameset.base.dir" expression="${frameset.base.dir}" if="frameset.base.dir"/> + <param name="indexer.language" expression="${indexer-language}" if="indexer-language"/> </xslt> <delete file="${frameset.base.dir}/dummy.html"/> @@ -58,7 +59,7 @@ <echo>Indexing html files in ${frameset.base.dir}/content</echo> - <indexertask htmldir="${frameset.base.dir}/content"/> + <indexertask htmldir="${frameset.base.dir}/content" indexerLanguage="${indexer-language}"/> <delete> <fileset dir="${frameset.base.dir}/content/search" includes="*.props"/> Modified: branches/webhelp/xsl/webhelp/indexer/lib/nw-cms.jar =================================================================== (Binary files differ) Modified: branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/IndexerTask.java =================================================================== --- branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/IndexerTask.java 2010-07-10 14:44:28 UTC (rev 8712) +++ branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/IndexerTask.java 2010-07-10 22:41:30 UTC (rev 8713) @@ -10,24 +10,26 @@ import java.util.Iterator; import java.util.Map; import java.util.Properties; -/* + import org.apache.tools.ant.BuildException; import org.apache.tools.ant.Task; -*/ + import com.nexwave.nsidita.DirList; import com.nexwave.nsidita.DocFileInfo; + /** * Indexer ant task. * * @version 1.0 2008-02-26 * * @author N. Quaine + * @author Kasun Gajasinghe <http://kasunbg.blogspot.com> */ //public class IndexerTask extends Task { -public class IndexerTask { +public class IndexerTask extends Task { // messages private String txt_no_inputdir = "Input directory not found:"; @@ -47,7 +49,12 @@ // ANT parameters private String htmldir=null; + private String indexerLanguage="en"; + //supported languages: add new additions to this. don't include country codes to the end such as en_US or en_UK, + // as stemmers doesn't find a difference between them. + private String[] supportedLanguages= {"en", "fr", "cn" }; + // Indexing features: words to remove private ArrayList<String> cleanUpStrings = null; private ArrayList<String> cleanUpChars = null; @@ -65,23 +72,55 @@ this.htmldir = htmldir; } + /** + * setter for "indexerLanguage" attribute from ANT + * @param indexerLanguage language for the search indexer. Used to differerentiate which stemmer to be used. + * defaults to "en". + * @throws InterruptedException for ant + */ + public void setIndexerLanguage(String indexerLanguage){ + if(indexerLanguage !=null) { + int temp = indexerLanguage.indexOf('_'); + if( temp != -1){ + indexerLanguage = indexerLanguage.substring(0,temp); + } + int i=0; + for (;i<supportedLanguages.length;i++) { + if(indexerLanguage.equals(supportedLanguages[i])){ + this.indexerLanguage = supportedLanguages[i]; + break; + } + } + + //if not in supported language list, + if(i>=supportedLanguages.length){ + System.out.println("The given language, \""+indexerLanguage+"\", is not supported or specified in a bad format. " + + "Check documentation for details. Language now defaults to english."); + this.indexerLanguage = "en"; + } + } else { + this.indexerLanguage = "en"; + } + } + + /** * Implementation of the execute function (Task interface) */ - //public void execute() throws BuildException { - public void execute(){ + public void execute() throws BuildException { + //public void execute(){ ArrayList<DocFileInfo> filesDescription = null; // list of information about the topic files ArrayList<File> htmlFiles = null; // topic files listed in the given directory ArrayList<String> htmlFilesPathRel = null; - Map tempDico = new HashMap(); + Map<String, String> tempDico = new HashMap<String, String>(); Iterator it; //File name initialization - String htmlList = new String ("htmlFileList.js"); - String htmlInfoList = new String ("htmlFileInfoList.js"); - String indexName = new String(".js"); + String htmlList = "htmlFileList.js"; + String htmlInfoList = "htmlFileInfoList.js"; + String indexName = ".js"; //timing Date dateStart = new Date(); @@ -108,8 +147,8 @@ // check if outputdir defined if (outputDir == null) { - //set the output directory: path= {inputDir}/search - outputDir = new String(inputDir.getPath().concat(File.separator).concat(searchdir)); + //set the output directory: path= {inputDir}/search + outputDir = inputDir.getPath().concat(File.separator).concat(searchdir); } // check if outputdir exists @@ -124,7 +163,7 @@ // check if projdir is defined if (projectDir == null) { - projectDir = new String(inputDir.getPath()); + projectDir = inputDir.getPath(); } //end of init @@ -176,10 +215,10 @@ File ftemp = (File) it.next(); //tempMap.put(key, value); //The HTML file information are added in the list of FileInfoObject - DocFileInfo docFileInfoTemp = new DocFileInfo(spe.runExtractData(ftemp)); + DocFileInfo docFileInfoTemp = new DocFileInfo(spe.runExtractData(ftemp,indexerLanguage)); ftemp = docFileInfoTemp.getFullpath(); - String stemp = ftemp.toString(); + String stemp = ftemp.toString(); int i = stemp.indexOf(projectDir); if ( i != 0 ) { System.out.println("the documentation root does not match with the documentation input!"); Modified: branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/SaxDocFileParser.java =================================================================== --- branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/SaxDocFileParser.java 2010-07-10 14:44:28 UTC (rev 8712) +++ branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/SaxDocFileParser.java 2010-07-10 22:41:30 UTC (rev 8713) @@ -28,6 +28,7 @@ * @version 1.0 2008-02-26 * * @author N. Quaine + * @author Kasun Gajasinghe */ public class SaxDocFileParser extends DefaultHandler { @@ -113,6 +114,7 @@ //kasun: TODO remove indexing of css styles private boolean addContent = false; private boolean addHeaderInfo = false; + private boolean doNotIndex=false; private int divCount = 0; //SAX parser Event Handlers: public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { @@ -169,6 +171,13 @@ if (shortdescBool) { shortTagCpt++; } + + String accessKey = attributes.getValue("accesskey"); + if(accessKey!=null && ("n".equals(accessKey) || "p".equals(accessKey) || "h".equals(accessKey))){ + doNotIndex = true; + } else { + doNotIndex = false; + } } strbf.append(" "); } @@ -182,7 +191,7 @@ // "titles only" index, say if you wanted to use <span/>s to // create space breaks in ja_JP lines to indicate word breaks. - if((addContent || addHeaderInfo) && !currentElName.equalsIgnoreCase("script")){ + if((addContent || addHeaderInfo) && !doNotIndex && !currentElName.equalsIgnoreCase("script")){ String text = new String(ch,start,length); strbf.append(text); if (tempVal != null) { tempVal.append(text);} Modified: branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/SaxHTMLIndex.java =================================================================== --- branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/SaxHTMLIndex.java 2010-07-10 14:44:28 UTC (rev 8712) +++ branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/SaxHTMLIndex.java 2010-07-10 22:41:30 UTC (rev 8713) @@ -3,21 +3,26 @@ import java.io.File; import java.util.*; - // specific dita ot import com.nexwave.nsidita.DocFileInfo; +import com.nexwave.stemmer.*; + + /** * Parser for the html files generated by DITA-OT. - * Extracts the title, the shortdesc and all the text within tags + * Extracts the title, the shortdesc and the text within the "content" div tag. <div id="content"> * - * @version 1.0 2008-0226 + * @version 1.1 2010 * * @author N. Quaine + * @author Kasun Gajasinghe <http://kasunbg.blogspot.com> */ public class SaxHTMLIndex extends SaxDocFileParser{ //members - private Map tempDico; + //KasunBG: apparently tempDico stores all the keywords and a pointer to the files containing the index in a Map + //example: ("keyword1", "0,2,4"), ("docbook", "1,2,5") + private Map<String,String> tempDico; private int i = 0; private ArrayList <String> cleanUpList = null; private ArrayList <String> cleanUpPunctuation = null; @@ -48,7 +53,7 @@ /** * Initializer */ - public int init(Map tempMap){ + public int init(Map<String,String> tempMap){ tempDico = tempMap; return 0; } @@ -59,7 +64,7 @@ * @param file contains the fullpath of the document to parse * @return a DitaFileInfo object filled with data describing the file */ - public DocFileInfo runExtractData(File file) { + public DocFileInfo runExtractData(File file, String indexerLanguage) { //initialization fileDesc = new DocFileInfo(file); strbf = new StringBuffer(""); @@ -68,19 +73,39 @@ parseDocument(file); String str = cleanBuffer(strbf); + str = str.replaceAll("\\s+"," "); //there's still redundant spaces in the middle + System.out.println(file.toString()+" "+ str +"\n"); + String[] items = str.split("\\s"); //contains all the words in the array - System.out.println(file.toString()+" "+ str +"\n"); - String[] items = str.split("\\s"); + //get items one-by-one, tunnel through the stemmer, and get the stem. + //Then, add them to tempSet + //Do Stemming for words in items + //TODO currently, stemming support is for english only. Add support for other languages as well. + + Stemmer stemmer; + if(indexerLanguage.equals("en")){ + stemmer = new EnglishStemmer(); + } else if (indexerLanguage.equals("cn")){ + throw new UnsupportedOperationException("Chinese stemmer is not implemented yet."); + } else { + throw new UnsupportedOperationException("This stemmer is not implemented yet."); + } + + String[] stemmedItems = stemmer.doStem(items); + + for(String stemmedItem: stemmedItems){ + System.out.print(stemmedItem+"| "); + } + //items: remove the duplicated strings first HashSet <String> tempSet = new HashSet<String>(); - tempSet.addAll(Arrays.asList(items)); + tempSet.addAll(Arrays.asList(stemmedItems)); Iterator it = tempSet.iterator(); String s; while (it.hasNext()) { - //System.out.println(s); - s = (String)it.next(); + s = (String)it.next(); if (tempDico.containsKey(s)) { - String temp = (String) tempDico.get(s); + String temp = tempDico.get(s); temp = temp.concat(",").concat(Integer.toString(i)); //System.out.println("temp="+s+"="+temp); tempDico.put(s, temp); @@ -112,13 +137,14 @@ if ((cleanUpList == null) || (cleanUpList.isEmpty())){ // Default clean-up - // Il faut peut-etre eliminer les mots a la fin du tableau? - tempStrBuf.append("\\bthe\\b|\\ba\\b|\\ban\\b|\\bto\\b|\\band\\b|\\bor\\b"); + // Should perhaps eliminate the words at the end of the table? + tempStrBuf.append("(?i)\\bthe\\b|\\ba\\b|\\ban\\b|\\bto\\b|\\band\\b|\\bor\\b");//(?i) ignores the case tempStrBuf.append("|\\bis\\b|\\bare\\b|\\bin\\b|\\bwith\\b|\\bbe\\b|\\bcan\\b"); tempStrBuf.append("|\\beach\\b|\\bhas\\b|\\bhave\\b|\\bof\\b|\\b\\xA9\\b|\\bnot\\b"); tempStrBuf.append("|\\bfor\\b|\\bthis\\b|\\bas\\b|\\bit\\b|\\bhe\\b|\\bshe\\b"); tempStrBuf.append("|\\byou\\b|\\bby\\b|\\bso\\b|\\bon\\b|\\byour\\b|\\bat\\b"); tempStrBuf.append("|\\b-or-\\b|\\bso\\b|\\bon\\b|\\byour\\b|\\bat\\b"); + tempStrBuf.append("|\\bI\\b|\\bme\\b|\\bmy\\b"); str = str.replaceFirst("Copyright � 1998-2007 NexWave Solutions.", " "); Modified: branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/TesterIndexer.java =================================================================== --- branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/TesterIndexer.java 2010-07-10 14:44:28 UTC (rev 8712) +++ branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/TesterIndexer.java 2010-07-10 22:41:30 UTC (rev 8713) @@ -26,6 +26,7 @@ IT = new IndexerTask(); IT.setHtmldir(args[0]); + IT.setIndexerLanguage(args[1]); IT.execute(); } Added: branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/EnglishStemmer.java =================================================================== --- branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/EnglishStemmer.java (rev 0) +++ branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/EnglishStemmer.java 2010-07-10 22:41:30 UTC (rev 8713) @@ -0,0 +1,625 @@ +package com.nexwave.stemmer; + +/* + + Porter stemmer in Java. The original paper is in + + Porter, 1980, An algorithm for suffix stripping, Program, Vol. 14, + no. 3, pp 130-137, + + See also http://www.tartarus.org/~martin/PorterStemmer + + History: + + Release 1 + + Bug 1 (reported by Gonzalo Parra 16/10/99) fixed as marked below. + The words 'aed', 'eed', 'oed' leave k at 'a' for step 3, and b[k-1] + is then out outside the bounds of b. + + Release 2 + + Similarly, + + Bug 2 (reported by Steve Dyrdahl 22/2/00) fixed as marked below. + 'ion' by itself leaves j = -1 in the test for 'ion' in step 5, and + b[j] is then outside the bounds of b. + + Release 3 + + Considerably revised 4/9/00 in the light of many helpful suggestions + from Brian Goetz of Quiotix Corporation (br...@qu...). + + Release 4 + +*/ + +import java.io.*; + +/** + * Stemmer, implementing the Porter Stemming Algorithm + * <p/> + * The Stemmer class transforms a word into its root form. The input + * word can be provided a character at time (by calling add()), or at once + * by calling one of the various stem(something) methods. + */ + +public class EnglishStemmer extends Stemmer { + private char[] b; + private int i, /* offset into b */ + i_end, /* offset to end of stemmed word */ + j, k; + private static final int INC = 50; + /* unit of size whereby b is increased */ + + public EnglishStemmer() { + b = new char[INC]; + i = 0; + i_end = 0; + } + + /** + * Add a character to the word being stemmed. When you are finished + * adding characters, you can call stem(void) to stem the word. + */ + + public void add(char ch) { + if (i == b.length) { + char[] new_b = new char[i + INC]; + for (int c = 0; c < i; c++) new_b[c] = b[c]; + b = new_b; + } + b[i++] = ch; + } + + + /** + * Adds wLen characters to the word being stemmed contained in a portion + * of a char[] array. This is like repeated calls of add(char ch), but + * faster. + */ + + public void add(char[] w, int wLen) { + if (i + wLen >= b.length) { + char[] new_b = new char[i + wLen + INC]; + for (int c = 0; c < i; c++) new_b[c] = b[c]; + b = new_b; + } + for (int c = 0; c < wLen; c++) b[i++] = w[c]; + } + + /** + * After a word has been stemmed, it can be retrieved by toString(), + * or a reference to the internal buffer can be retrieved by getResultBuffer + * and getResultLength (which is generally more efficient.) + */ + public String toString() { + return new String(b, 0, i_end); + } + + /** + * Returns the length of the word resulting from the stemming process. + */ + public int getResultLength() { + return i_end; + } + + /** + * Returns a reference to a character buffer containing the results of + * the stemming process. You also need to consult getResultLength() + * to determine the length of the result. + */ + public char[] getResultBuffer() { + return b; + } + + /* cons(i) is true <=> b[i] is a consonant. */ + + private final boolean cons(int i) { + switch (b[i]) { + case 'a': + case 'e': + case 'i': + case 'o': + case 'u': + return false; + case 'y': + return (i == 0) ? true : !cons(i - 1); + default: + return true; + } + } + + /* m() measures the number of consonant sequences between 0 and j. if c is + a consonant sequence and v a vowel sequence, and <..> indicates arbitrary + presence, + + <c><v> gives 0 + <c>vc<v> gives 1 + <c>vcvc<v> gives 2 + <c>vcvcvc<v> gives 3 + .... + */ + + private final int m() { + int n = 0; + int i = 0; + while (true) { + if (i > j) return n; + if (!cons(i)) break; + i++; + } + i++; + while (true) { + while (true) { + if (i > j) return n; + if (cons(i)) break; + i++; + } + i++; + n++; + while (true) { + if (i > j) return n; + if (!cons(i)) break; + i++; + } + i++; + } + } + + /* vowelinstem() is true <=> 0,...j contains a vowel */ + + private final boolean vowelinstem() { + int i; + for (i = 0; i <= j; i++) if (!cons(i)) return true; + return false; + } + + /* doublec(j) is true <=> j,(j-1) contain a double consonant. */ + + private final boolean doublec(int j) { + if (j < 1) return false; + if (b[j] != b[j - 1]) return false; + return cons(j); + } + + /* cvc(i) is true <=> i-2,i-1,i has the form consonant - vowel - consonant + and also if the second c is not w,x or y. this is used when trying to + restore an e at the end of a short word. e.g. + + cav(e), lov(e), hop(e), crim(e), but + snow, box, tray. + + */ + + private final boolean cvc(int i) { + if (i < 2 || !cons(i) || cons(i - 1) || !cons(i - 2)) return false; + { + int ch = b[i]; + if (ch == 'w' || ch == 'x' || ch == 'y') return false; + } + return true; + } + + private final boolean ends(String s) { + int l = s.length(); + int o = k - l + 1; + if (o < 0) return false; + for (int i = 0; i < l; i++) if (b[o + i] != s.charAt(i)) return false; + j = k - l; + return true; + } + + /* setto(s) sets (j+1),...k to the characters in the string s, readjusting + k. */ + + private final void setto(String s) { + int l = s.length(); + int o = j + 1; + for (int i = 0; i < l; i++) b[o + i] = s.charAt(i); + k = j + l; + } + + /* r(s) is used further down. */ + + private final void r(String s) { + if (m() > 0) setto(s); + } + + /* step1() gets rid of plurals and -ed or -ing. e.g. + + caresses -> caress + ponies -> poni + ties -> ti + caress -> caress + cats -> cat + + feed -> feed + agreed -> agree + disabled -> disable + + matting -> mat + mating -> mate + meeting -> meet + milling -> mill + messing -> mess + + meetings -> meet + + */ + + private final void step1() { + if (b[k] == 's') { + if (ends("sses")) k -= 2; + else if (ends("ies")) setto("i"); + else if (b[k - 1] != 's') k--; + } + if (ends("eed")) { + if (m() > 0) k--; + } else if ((ends("ed") || ends("ing")) && vowelinstem()) { + k = j; + if (ends("at")) setto("ate"); + else if (ends("bl")) setto("ble"); + else if (ends("iz")) setto("ize"); + else if (doublec(k)) { + k--; + { + int ch = b[k]; + if (ch == 'l' || ch == 's' || ch == 'z') k++; + } + } else if (m() == 1 && cvc(k)) setto("e"); + } + } + + /* step2() turns terminal y to i when there is another vowel in the stem. */ + + private final void step2() { + if (ends("y") && vowelinstem()) b[k] = 'i'; + } + + /* step3() maps double suffices to single ones. so -ization ( = -ize plus + -ation) maps to -ize etc. note that the string before the suffix must give + m() > 0. */ + + private final void step3() { + if (k == 0) return; /* For Bug 1 */ + switch (b[k - 1]) { + case 'a': + if (ends("ational")) { + r("ate"); + break; + } + if (ends("tional")) { + r("tion"); + break; + } + break; + case 'c': + if (ends("enci")) { + r("ence"); + break; + } + if (ends("anci")) { + r("ance"); + break; + } + break; + case 'e': + if (ends("izer")) { + r("ize"); + break; + } + break; + case 'l': + if (ends("bli")) { + r("ble"); + break; + } + if (ends("alli")) { + r("al"); + break; + } + if (ends("entli")) { + r("ent"); + break; + } + if (ends("eli")) { + r("e"); + break; + } + if (ends("ousli")) { + r("ous"); + break; + } + break; + case 'o': + if (ends("ization")) { + r("ize"); + break; + } + if (ends("ation")) { + r("ate"); + break; + } + if (ends("ator")) { + r("ate"); + break; + } + break; + case 's': + if (ends("alism")) { + r("al"); + break; + } + if (ends("iveness")) { + r("ive"); + break; + } + if (ends("fulness")) { + r("ful"); + break; + } + if (ends("ousness")) { + r("ous"); + break; + } + break; + case 't': + if (ends("aliti")) { + r("al"); + break; + } + if (ends("iviti")) { + r("ive"); + break; + } + if (ends("biliti")) { + r("ble"); + break; + } + break; + case 'g': + if (ends("logi")) { + r("log"); + break; + } + } + } + + /* step4() deals with -ic-, -full, -ness etc. similar strategy to step3. */ + + private final void step4() { + switch (b[k]) { + case 'e': + if (ends("icate")) { + r("ic"); + break; + } + if (ends("ative")) { + r(""); + break; + } + if (ends("alize")) { + r("al"); + break; + } + break; + case 'i': + if (ends("iciti")) { + r("ic"); + break; + } + break; + case 'l': + if (ends("ical")) { + r("ic"); + break; + } + if (ends("ful")) { + r(""); + break; + } + break; + case 's': + if (ends("ness")) { + r(""); + break; + } + break; + } + } + + /* step5() takes off -ant, -ence etc., in context <c>vcvc<v>. */ + + private final void step5() { + if (k == 0) return; /* for Bug 1 */ + switch (b[k - 1]) { + case 'a': + if (ends("al")) break; + return; + case 'c': + if (ends("ance")) break; + if (ends("ence")) break; + return; + case 'e': + if (ends("er")) break; + return; + case 'i': + if (ends("ic")) break; + return; + case 'l': + if (ends("able")) break; + if (ends("ible")) break; + return; + case 'n': + if (ends("ant")) break; + if (ends("ement")) break; + if (ends("ment")) break; + /* element etc. not stripped before the m */ + if (ends("ent")) break; + return; + case 'o': + if (ends("ion") && j >= 0 && (b[j] == 's' || b[j] == 't')) break; + /* j >= 0 fixes Bug 2 */ + if (ends("ou")) break; + return; + /* takes care of -ous */ + case 's': + if (ends("ism")) break; + return; + case 't': + if (ends("ate")) break; + if (ends("iti")) break; + return; + case 'u': + if (ends("ous")) break; + return; + case 'v': + if (ends("ive")) break; + return; + case 'z': + if (ends("ize")) break; + return; + default: + return; + } + if (m() > 1) k = j; + } + + /* step6() removes a final -e if m() > 1. */ + + private final void step6() { + j = k; + if (b[k] == 'e') { + int a = m(); + if (a > 1 || a == 1 && !cvc(k - 1)) k--; + } + if (b[k] == 'l' && doublec(k) && m() > 1) k--; + } + + /** + * Stem the word placed into the Stemmer buffer through calls to add(). + * Returns true if the stemming process resulted in a word different + * from the input. You can retrieve the result with + * getResultLength()/getResultBuffer() or toString(). + */ + public void stem() { + k = i - 1; + if (k > 1) { + step1(); + step2(); + step3(); + step4(); + step5(); + step6(); + } + i_end = k + 1; + i = 0; + } + + /** + * stems a given word and returns the stemmed output as a string. converts the word to lowercase before stem. + * + * @param word the word that needs to be stemmed ex: Technical + * @return stemmed word ex: technic + */ + public String doStem(String word) { + word = word.trim().toLowerCase(); + add(word.toCharArray(), word.length()); + stem(); + + return this.toString(); + } + + /** + * stems a given array of words and returns the stemmed output as a string array. converts the words to lowercase before stem. + * + * @param words string array words that needs to be stemmed ex: {"Technical", "publications"} + * @return stemmed array ex: {"technic", "public"} + */ + public String[] doStem(String[] words) { + String[] stemmedWords = new String[words.length]; + for (int i = 0; i < words.length; i++) { + String word = words[i]; + word = word.trim().toLowerCase(); + add(word.toCharArray(), word.length()); + stem(); + stemmedWords[i] = this.toString(); + + } + return stemmedWords; + } + + /** + * Test program for demonstrating the Stemmer. It reads text from a + * a list of files, stems each word, and writes the result to standard + * output. Note that the word stemmed is expected to be in lower case: + * forcing lower case must be done outside the Stemmer class. + * Usage: Stemmer file-name file-name ... + */ + public static void main(String[] args) { + EnglishStemmer s = new EnglishStemmer(); + + String[] words = "common use requirement for Technical publications groups is to produce a Web-based help format that includes a table of contents pane, a search feature".split("\\s+"); + for (String word : words) { + System.out.print(s.doStem(word) + " "); + } + + System.out.println("Test2========================================="); + + char[] w = new char[501]; + //for each file, + for (int i = 0; i < args.length; i++) + try { + FileInputStream in = new FileInputStream(args[i]); + + try { + while (true) + + { + int ch = in.read(); + if (Character.isLetter((char) ch)) { + int j = 0; + while (true) { + ch = Character.toLowerCase((char) ch); + w[j] = (char) ch; + if (j < 500) j++; + ch = in.read(); + if (!Character.isLetter((char) ch)) { + /* to test add(char ch) */ + for (int c = 0; c < j; c++) s.add(w[c]); + + /* or, to test add(char[] w, int j) */ + /* s.add(w, j); */ + + s.stem(); + { + String u; + + // and now, to test toString() : + u = s.toString(); + + // to test getResultBuffer(), getResultLength() : + u = new String(s.getResultBuffer(), 0, s.getResultLength()); + + System.out.print(u); + } + break; + } + } + } + if (ch < 0) break; + System.out.print((char) ch); + } + } + catch (IOException e) { + System.out.println("error reading " + args[i]); + break; + } + } + catch (FileNotFoundException e) { + System.out.println("file " + args[i] + " not found"); + break; + } + } +} Property changes on: branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/EnglishStemmer.java ___________________________________________________________________ Added: svn:executable + * Added: branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/Stemmer.java =================================================================== --- branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/Stemmer.java (rev 0) +++ branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/Stemmer.java 2010-07-10 22:41:30 UTC (rev 8713) @@ -0,0 +1,23 @@ +package com.nexwave.stemmer; + +/** + * Abstract class for all the language specific stemmers. + * @author Kasun Gajasinghe + * Date: Jul 11, 2010 + * Time: 12:59:47 AM + */ +public abstract class Stemmer { + + public abstract void stem(); + + public abstract void add(char[] w, int wLen); + + public abstract void add(char ch); + + public abstract String doStem(String word); + + public abstract String[] doStem(String[] word); + + public abstract String toString(); + +} Property changes on: branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/Stemmer.java ___________________________________________________________________ Added: svn:executable + * Added: branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/test.txt =================================================================== --- branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/test.txt (rev 0) +++ branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/test.txt 2010-07-10 22:41:30 UTC (rev 8713) @@ -0,0 +1,9 @@ +common use requirement for technical publications groups is to produce a Web-based help format that includes a table of contents pane, a search feature, + +and an index similar to what you get from the Microsoft HTML Help (.chm) format or Eclipse help. If the content is help for a Web application that is not + +exposed to the Internet or requires that the user be logged in, then it is impossible to use services like Google to add search. + +You must use xhtml output because the search indexer cannot index html. + +No support for stemming. If you search for "start" it will not find "started" and vice versa. Property changes on: branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/test.txt ___________________________________________________________________ Added: svn:executable + * Modified: branches/webhelp/xsl/webhelp/template/common/css/positioning.css =================================================================== --- branches/webhelp/xsl/webhelp/template/common/css/positioning.css 2010-07-10 14:44:28 UTC (rev 8712) +++ branches/webhelp/xsl/webhelp/template/common/css/positioning.css 2010-07-10 22:41:30 UTC (rev 8713) @@ -62,4 +62,8 @@ bottom: 2%; content: attr; } + +.searchFieldSet { + font-size: 68.75%; +} \ No newline at end of file Modified: branches/webhelp/xsl/webhelp/template/common/jquery/treeview/jquery.treeview.css =================================================================== --- branches/webhelp/xsl/webhelp/template/common/jquery/treeview/jquery.treeview.css 2010-07-10 14:44:28 UTC (rev 8712) +++ branches/webhelp/xsl/webhelp/template/common/jquery/treeview/jquery.treeview.css 2010-07-10 22:41:30 UTC (rev 8713) @@ -69,10 +69,11 @@ html, body {height:100%; margin: 0; padding: 0; } +/* html>body { font-size: 16px; font-size: 68.75%; -}/* Reset Base Font Size */ +} Reset Base Font Size */ /* body { font-family: Verdana, helvetica, arial, sans-serif; Modified: branches/webhelp/xsl/webhelp/template/common/main.js =================================================================== --- branches/webhelp/xsl/webhelp/template/common/main.js 2010-07-10 14:44:28 UTC (rev 8712) +++ branches/webhelp/xsl/webhelp/template/common/main.js 2010-07-10 22:41:30 UTC (rev 8713) @@ -7,6 +7,7 @@ $(document).ready(function() { + //Generate tabs in nav-pane with JQuery $(function() { $("#tabs").tabs({ cookie: { @@ -15,7 +16,8 @@ } }); }); - + + //Generate the tree $("#tree").treeview({ collapsed: true, animated: "medium", @@ -23,36 +25,27 @@ persist: "cookie" }); + //after toc fully styled, display it. Until loading, a 'loading' image will be displayed $("#tocLoading").attr("style","display:none;"); $("#tree").attr("style","display:block;"); + //.searchButton is the css class applied to 'Go' button $(function() { $("button", ".searchButton").button(); $("button", ".searchButton").click(function() { return false; }); }); - /*var tabView = new YAHOO.widget.TabView('tabs'); - var tab0 = tabView.getTab(0); //TOC tab - var tab1 = tabView.getTab(1); //Search tab - - tab0.addListener('click', tocTabClick); - tab1.addListener('click', searchTabClick); - */ + //'ui-tabs-1' is the cookie name which is used for the persistence of the tabs.(Content/Search tab) if ($.cookie('ui-tabs-1') === '1') { - if ($.cookie('textToSearch').length > 0) { + if ($.cookie('textToSearch') != undefined && $.cookie('textToSearch').length > 0) { document.getElementById('textToSearch').value = $.cookie('textToSearch'); Verifie('diaSearch_Form'); } - } else { - //tabView.selectTab(0); } - syncToc(); - - // $('#sync').click(); - - + syncToc(); //Synchronize the toc tree with the content pane, when loading the page. + $("#doSearch").button(); //add jquery button styling to 'Go' button }); /** @@ -60,33 +53,37 @@ */ function syncToc(){ var a = document.getElementById("webhelp-currentid"); - var b = a.getElementsByTagName("a")[0]; + if (a != undefined) { + var b = a.getElementsByTagName("a")[0]; - //Setting the background for selected node. - var style = a.getAttribute("style"); - if(style != null && !style.match(/background-color: Background;/)){ - a.setAttribute("style", "background-color: #6495ed; "+style); - b.setAttribute("style", "color: white;"); - } else if(style != null){ - a.setAttribute("style", "background-color: #6495ed; " + style); - b.setAttribute("style", "color: white;"); - } else { - a.setAttribute("style", "background-color: #6495ed; "); - b.setAttribute("style", "color: white;"); - } + if (b != undefined) { + //Setting the background for selected node. + var style = a.getAttribute("style"); + if (style != null && !style.match(/background-color: Background;/)) { + a.setAttribute("style", "background-color: #6495ed; " + style); + b.setAttribute("style", "color: white;"); + } else if (style != null) { + a.setAttribute("style", "background-color: #6495ed; " + style); + b.setAttribute("style", "color: white;"); + } else { + a.setAttribute("style", "background-color: #6495ed; "); + b.setAttribute("style", "color: white;"); + } + } - //shows the node related to current content. - //goes a recursive call from current node to ancestor nodes, displaying all of them. - while (a.parentNode && a.parentNode.nodeName){ - var parentNode = a.parentNode; - var nodeName = parentNode.nodeName; + //shows the node related to current content. + //goes a recursive call from current node to ancestor nodes, displaying all of them. + while (a.parentNode && a.parentNode.nodeName) { + var parentNode = a.parentNode; + var nodeName = parentNode.nodeName; - if(nodeName.toLowerCase() == "ul"){ - parentNode.setAttribute("style", "display: block;"); - } else if(nodeName.toLocaleLowerCase() == "li"){ - parentNode.setAttribute("class", "collapsable"); - parentNode.firstChild.setAttribute("class", "hitarea collapsable-hitarea "); - } - a = parentNode; - } + if (nodeName.toLowerCase() == "ul") { + parentNode.setAttribute("style", "display: block;"); + } else if (nodeName.toLocaleLowerCase() == "li") { + parentNode.setAttribute("class", "collapsable"); + parentNode.firstChild.setAttribute("class", "hitarea collapsable-hitarea "); + } + a = parentNode; + } + } } \ No newline at end of file Modified: branches/webhelp/xsl/webhelp/template/content/search/nwSearchFnt.js =================================================================== --- branches/webhelp/xsl/webhelp/template/content/search/nwSearchFnt.js 2010-07-10 14:44:28 UTC (rev 8712) +++ branches/webhelp/xsl/webhelp/template/content/search/nwSearchFnt.js 2010-07-10 22:41:30 UTC (rev 8713) @@ -60,6 +60,7 @@ scriptLetterTab = new scriptfirstchar(); // Array containing the first letter of each word to look for var scriptsarray = new Array(); // Array with the name of the scripts to load var wordsList = new Array(); // Array with the words to look for + var stemmedWordsList = new Array(); // Array with the words to look for var cleanwordsList = new Array(); // Array with the words to look for after removing spaces var listNumerosDesFicStr = ""; var ou_recherche = true; @@ -73,15 +74,23 @@ searchFor = searchFor.replace(/ +/g, " ") searchFor = searchFor.replace(/ $/, "").replace(/^ /, "") - wordsList = searchFor.split(" ") - wordsList.sort(); - /* wordsList est la liste des mots de la recherhces separes par des espaces*/ - for (t in wordsList) { - wordsList[t] = wordsList[t].replace(/(%22)|^-/g, "") - if (wordsList[t] != "%20") { - scriptLetterTab.add(wordsList[t].charAt(0)); - cleanwordsList.push(wordsList[t]); + wordsList = searchFor.split(" "); + + //Do the stemming using Porter's stemming algorithm + for(var i=0;i<wordsList.length;i++){ + var stemWord = stemmer(wordsList[i]); + stemmedWordsList.push(stemWord); + } + + stemmedWordsList.sort(); + + //stemmedWordsList is the stemmed list of words separated by spaces. + for (t in stemmedWordsList) { + stemmedWordsList[t] = stemmedWordsList[t].replace(/(%22)|^-/g, "") + if (stemmedWordsList[t] != "%20") { + scriptLetterTab.add(stemmedWordsList[t].charAt(0)); + cleanwordsList.push(stemmedWordsList[t]); } } //load the scripts with the indices: the following lines do not work on the server. To be corrected Modified: branches/webhelp/xsl/webhelp/xsl/webhelp.xsl =================================================================== --- branches/webhelp/xsl/webhelp/xsl/webhelp.xsl 2010-07-10 14:44:28 UTC (rev 8712) +++ branches/webhelp/xsl/webhelp/xsl/webhelp.xsl 2010-07-10 22:41:30 UTC (rev 8713) @@ -40,7 +40,7 @@ <xsl:param name="chunk.first.sections" select="1"/> <xsl:param name="chapter.autolabel" select="0"/> <xsl:param name="section.autolabel" select="0"/> - <xsl:param name="generate.toc">book toc</xsl:param> + <!--xsl:param name="generate.toc">book toc</xsl:param--> <i18n xmlns="http://docbook.sourceforge.net/xmlns/l10n/1.0"> <l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="en"> @@ -131,6 +131,9 @@ <script type="text/javascript" src="search/nwSearchFnt.js"> <xsl:comment></xsl:comment> </script> + <script type="text/javascript" src="search/stemmers/stemmer.js"> + <xsl:comment>//make this scalable to other languages as well.</xsl:comment> + </script> </xsl:template> <xsl:template name="user.header.navigation"> @@ -141,8 +144,7 @@ <xsl:call-template name="webhelptoctoc"/> <xsl:if test="$exclude.search.from.chunked.html != 'true'"> <xsl:call-template name="search"/> - </xsl:if--> - + </xsl:if--> </xsl:template> <xsl:template name="user.footer.navigation"> @@ -152,6 +154,9 @@ </xsl:template> <xsl:template match="/"> + <xsl:message>language: + <xsl:value-of select="$l10n.gentext.language"/> + </xsl:message> <xsl:choose> <xsl:when test="$rootid != ''"> <xsl:choose> @@ -363,7 +368,7 @@ class="searchText"/> <input onclick="Verifie(ditaSearch_Form)" type="button" class="searchButton" - value="Go"/> + value="Go" id="doSearch"/> </center> </fieldset> </form> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dc...@us...> - 2010-07-12 20:49:18
|
Revision: 8716 http://docbook.svn.sourceforge.net/docbook/?rev=8716&view=rev Author: dcramer Date: 2010-07-12 20:49:12 +0000 (Mon, 12 Jul 2010) Log Message: ----------- Add a switch so that they can omit the search tab. Fix the validate property so it can be set to true or false (rather than needing to to be true or unset). Modified Paths: -------------- branches/webhelp/xsl/webhelp/build.properties branches/webhelp/xsl/webhelp/build.xml Modified: branches/webhelp/xsl/webhelp/build.properties =================================================================== --- branches/webhelp/xsl/webhelp/build.properties 2010-07-11 11:46:20 UTC (rev 8715) +++ branches/webhelp/xsl/webhelp/build.properties 2010-07-12 20:49:12 UTC (rev 8716) @@ -1,14 +1,25 @@ input-xml=docsrc/readme.xml frameset.base.dir=doc + +# Modify this so that it points to your copy of the Saxon 6.5 jar. xslt-processor-classpath=c:/workhead/export/saxon/6.5/lib/saxon.jar + # To use this catalog, make sure the resolver is in your classpath. # Download xml-commons-resolver from http://xml.apache.org/commons/dist/ # and add it to your CLASSPATH. Then use the following property to point # to your docbook xsl stylesheets' catalog -#docbook-xsl-catalog=c:/gsoc2010/docbook-xsl-1.75.2/catalog.xml docbook-xsl-catalog=/media/DATA/ACADEMIC/GSOC/docbook/repository/docbook/trunk/maven/docbook-xsl/target/xsltmp/docbook-xsl-1.75.2/catalog.xml + +# If you wish to have the ant script validate the document before +# building it, set this property to the location +# of your DocBook DTD. The sample document is +# a DocBook 4.5 document and uncomment the line validate=true. docbookx.dtd=file:///media/DATA/ACADEMIC/GSOC/docbook/repository/docbook/trunk/defguide/en/schema/docbookx.dtd validate=true + +# Set this to true if you don't need a search tab. +exclude.search.from.chunked.html=false + #indexe-language is used to tell the search indexer which language the docbook is written. #This will be used to identify the correct stemmer, and punctuations that differs from language to language. #see the documentation for details. en=English, cn=Chinese, jp=Japanese etc. Modified: branches/webhelp/xsl/webhelp/build.xml =================================================================== --- branches/webhelp/xsl/webhelp/build.xml 2010-07-11 11:46:20 UTC (rev 8715) +++ branches/webhelp/xsl/webhelp/build.xml 2010-07-12 20:49:12 UTC (rev 8716) @@ -13,7 +13,14 @@ <property environment="env"/> <property name="ant.jar" value="${env.ANT_HOME}/lib/ant.jar"/> - <target name="validate" if="validate"> + <condition property="perform-validation"> + <equals arg1="${validate}" arg2="true"/> + </condition> + <condition property="skip-search-indexing"> + <equals arg1="${exclude.search.from.chunked.html}" arg2="true"/> + </condition> + + <target name="validate" if="perform-validation"> <xmlvalidate file="${input-xml}"> <xmlcatalog refid="catalog"/> </xmlvalidate> @@ -33,6 +40,7 @@ <param name="exclude.search.from.chunked.html" expression="${exclude.search.from.chunked.html}" if="exclude.search.from.chunked.html"/> <param name="output_file_name" expression="${output_file_name}"/> <param name="frameset.base.dir" expression="${frameset.base.dir}" if="frameset.base.dir"/> + <param name="exclude.search.from.chunked.html" expression="${exclude.search.from.chunked.html}" if="exclude.search.from.chunked.html"/> <param name="indexer.language" expression="${indexer-language}" if="indexer-language"/> </xslt> @@ -46,7 +54,7 @@ </copy> </target> - <target name="index"> + <target name="index" unless="skip-search-indexing"> <path id="nw-cms.jar.path"> <pathelement location="${ant.file.dir}/indexer/lib/nw-cms.jar" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ka...@us...> - 2010-07-13 22:03:11
|
Revision: 8720 http://docbook.svn.sourceforge.net/docbook/?rev=8720&view=rev Author: kasunbg Date: 2010-07-13 22:03:04 +0000 (Tue, 13 Jul 2010) Log Message: ----------- Added a show/hide TOC button. Put next/prev buttons in the banner header. Modified Paths: -------------- branches/webhelp/xsl/webhelp/template/common/css/positioning.css branches/webhelp/xsl/webhelp/template/common/main.js branches/webhelp/xsl/webhelp/xsl/webhelp.xsl Modified: branches/webhelp/xsl/webhelp/template/common/css/positioning.css =================================================================== --- branches/webhelp/xsl/webhelp/template/common/css/positioning.css 2010-07-13 18:10:49 UTC (rev 8719) +++ branches/webhelp/xsl/webhelp/template/common/css/positioning.css 2010-07-13 22:03:04 UTC (rev 8720) @@ -17,7 +17,7 @@ background: white url(../images/gov-header-bg.gif) repeat-x; position: fixed; width: 100%; - height: 80px; + height: 88px; top: 0; right: 0; bottom: auto; @@ -30,7 +30,7 @@ overflow: auto; position: fixed; height: auto; - top: 80px; + top: 88px; bottom: 0; left: 0; width: 230px; @@ -40,10 +40,10 @@ #content { position: relative; - top: 80px; - left: auto; + top: 88px; + /* left: 240px;*/ right: auto; - bottom: 20px; + /* bottom: 20px; */ margin: 0px 0px 0px 240px; width: auto; height: inherit; @@ -59,11 +59,24 @@ } .navfooter { - bottom: 2%; - content: attr; + bottom: 2%; } .searchFieldSet { font-size: 68.75%; } - \ No newline at end of file + +.pointLeft{ + background:url("../images/showHideTreeIcons.png") 0 0 no-repeat ; + height:28px; + width:15px; + display:block; + font-size:0; +} + +.pointRight{ + background: url("../images/showHideTreeIcons.png") -15px 0 no-repeat; + height:28px; + display:block; + font-size:0; +} \ No newline at end of file Modified: branches/webhelp/xsl/webhelp/template/common/main.js =================================================================== --- branches/webhelp/xsl/webhelp/template/common/main.js 2010-07-13 18:10:49 UTC (rev 8719) +++ branches/webhelp/xsl/webhelp/template/common/main.js 2010-07-13 22:03:04 UTC (rev 8720) @@ -86,4 +86,28 @@ a = parentNode; } } +} + +/** + * Code for Show/Hide TOC + * + */ +function showHideToc() { + var showHideButton = $("#showHideButton"); + var leftNavigation = $("#leftnavigation"); + var content = $("#content"); + + if (showHideButton != undefined && showHideButton.hasClass("pointLeft")) { + //Hide TOC + showHideButton.removeClass('pointLeft').addClass('pointRight'); + content.css("margin", "0 0 0 0"); + leftNavigation.css("display","none"); + showHideButton.attr("title", "Hide the TOC tree"); + } else { + //Show the TOC + showHideButton.removeClass('pointRight').addClass('pointLeft'); + content.css("margin", "0 0 0 240px"); + leftNavigation.css("display","block"); + showHideButton.attr("title", "Show the TOC Tree"); + } } \ No newline at end of file Modified: branches/webhelp/xsl/webhelp/xsl/webhelp.xsl =================================================================== --- branches/webhelp/xsl/webhelp/xsl/webhelp.xsl 2010-07-13 18:10:49 UTC (rev 8719) +++ branches/webhelp/xsl/webhelp/xsl/webhelp.xsl 2010-07-13 22:03:04 UTC (rev 8720) @@ -82,7 +82,7 @@ </xsl:call-template>"; txt_results_for = "<xsl:call-template name="gentext"> <xsl:with-param name="key" select="'txt_results_for'"/> - </xsl:call-template>"; + </xsl:call-template>"; </script> <style type="text/css"> input { @@ -136,8 +136,15 @@ </script> </xsl:template> - <xsl:template name="user.header.navigation"> - <xsl:call-template name="webhelpheader"/> + <xsl:template name="user.header.navigation"> + <xsl:param name="prev"/> + <xsl:param name="next"/> + <xsl:param name="nav.context"/> + <xsl:call-template name="webhelpheader"> + <xsl:with-param name="prev" select="$prev"/> + <xsl:with-param name="next" select="$next"/> + <xsl:with-param name="nav.context" select="$nav.context"/> + </xsl:call-template> <!--xsl:call-template name="webhelptoc"/--> <!--testing toc in the content page> @@ -147,6 +154,12 @@ </xsl:if--> </xsl:template> + <xsl:template name="user.header.content"> + <div> + <a id="showHideButton" onclick="showHideToc();" class="pointLeft" title="Hide TOC tree">.</a> + </div> + </xsl:template> + <xsl:template name="user.footer.navigation"> <xsl:call-template name="webhelptoc"> <xsl:with-param name="currentid" select="generate-id(.)"/> @@ -206,14 +219,14 @@ <body> <xsl:call-template name="body.attributes"/> - <xsl:call-template name="user.header.navigation"/> + <xsl:call-template name="user.header.navigation"> + <xsl:with-param name="prev" select="$prev"/> + <xsl:with-param name="next" select="$next"/> + <xsl:with-param name="nav.context" select="$nav.context"/> + </xsl:call-template> + <div id="content"> - <xsl:call-template name="header.navigation"> - <xsl:with-param name="prev" select="$prev"/> - <xsl:with-param name="next" select="$next"/> - <xsl:with-param name="nav.context" select="$nav.context"/> - </xsl:call-template> <xsl:call-template name="user.header.content"/> @@ -236,13 +249,16 @@ <!-- The Header with the company logo --> <xsl:template name="webhelpheader"> + <xsl:param name="prev"/> + <xsl:param name="next"/> + <xsl:param name="nav.context"/> - <xsl:variable name="home" select="/*[1]"/> + <xsl:variable name="home" select="/*[1]"/> <xsl:variable name="up" select="parent::*"/> <div id="header"> <img style='margin-right: 2px; height: 59px; padding-right: 25px; padding-top: 8px' align="right" - src='../common/images/logo.png' alt="DocBook"/> + src='../common/images/logo.png' alt="Company Logo"/> <!-- Display the page title and the main heading(parent) of it--> <h1 align="center"> @@ -256,6 +272,66 @@ <xsl:otherwise> </xsl:otherwise> </xsl:choose> </h1> + + <!-- Prev and Next links generation--> + <div id="navheader" align="right"> + <!--xsl:with-param name="prev" select="$prev"/> + <xsl:with-param name="next" select="$next"/> + <xsl:with-param name="nav.context" select="$nav.context"/--> + <xsl:if test="count($prev) > 0 + or (count($up) > 0 + and generate-id($up) != generate-id($home) + and $navig.showtitles != 0) + or count($next) > 0"> + <xsl:if test="count($prev)>0"> + <a accesskey="p"> + <xsl:attribute name="href"> + <xsl:call-template name="href.target"> + <xsl:with-param name="object" select="$prev"/> + </xsl:call-template> + </xsl:attribute> + <xsl:call-template name="navig.content"> + <xsl:with-param name="direction" select="'prev'"/> + </xsl:call-template> + </a> + </xsl:if> + + <!-- "Up" link--> + <xsl:choose> + <xsl:when test="count($up)>0 + and generate-id($up) != generate-id($home)"> + | + <a accesskey="u"> + <xsl:attribute name="href"> + <xsl:call-template name="href.target"> + <xsl:with-param name="object" select="$up"/> + </xsl:call-template> + </xsl:attribute> + <xsl:call-template name="navig.content"> + <xsl:with-param name="direction" select="'up'"/> + </xsl:call-template> + </a> + </xsl:when> + <xsl:otherwise> </xsl:otherwise> + </xsl:choose> + + + <xsl:if test="count($next)>0"> + | + <a accesskey="n"> + <xsl:attribute name="href"> + <xsl:call-template name="href.target"> + <xsl:with-param name="object" select="$next"/> + </xsl:call-template> + </xsl:attribute> + <xsl:call-template name="navig.content"> + <xsl:with-param name="direction" select="'next'"/> + </xsl:call-template> + </a> + </xsl:if> + </xsl:if> + </div> + </div> </xsl:template> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ka...@us...> - 2010-07-17 14:17:51
|
Revision: 8734 http://docbook.svn.sourceforge.net/docbook/?rev=8734&view=rev Author: kasunbg Date: 2010-07-17 14:17:42 +0000 (Sat, 17 Jul 2010) Log Message: ----------- Added stemmers for other languages. -German Stemmer is fully implemented and is supported. -Stemming support for 16 languages added for indexing(written in Java). These can't be used until JavaScript version of them are implemented. For more details, refer: http://snowball.tartarus.org/ Fixed some bugs in the UI Reformatted the code. Modified Paths: -------------- branches/webhelp/xsl/webhelp/build.properties branches/webhelp/xsl/webhelp/build.xml branches/webhelp/xsl/webhelp/indexer/lib/nw-cms.jar branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/IndexerTask.java branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/SaxHTMLIndex.java branches/webhelp/xsl/webhelp/template/common/css/positioning.css branches/webhelp/xsl/webhelp/xsl/webhelp.xsl Added Paths: ----------- branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/snowball/ branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/snowball/Among.java branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/snowball/SnowballProgram.java branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/snowball/SnowballStemmer.java branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/snowball/TestApp.java branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/snowball/ext/ branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/snowball/ext/EnglishStemmer.java branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/snowball/ext/GermanStemmer.java branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/snowball/ext/danishStemmer.java branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/snowball/ext/dutchStemmer.java branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/snowball/ext/finnishStemmer.java branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/snowball/ext/frenchStemmer.java branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/snowball/ext/hungarianStemmer.java branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/snowball/ext/italianStemmer.java branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/snowball/ext/norwegianStemmer.java branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/snowball/ext/porterStemmer.java branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/snowball/ext/portugueseStemmer.java branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/snowball/ext/romanianStemmer.java branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/snowball/ext/russianStemmer.java branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/snowball/ext/spanishStemmer.java branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/snowball/ext/swedishStemmer.java branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/snowball/ext/turkishStemmer.java Removed Paths: ------------- branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/Stemmer.java branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/test.txt Modified: branches/webhelp/xsl/webhelp/build.properties =================================================================== --- branches/webhelp/xsl/webhelp/build.properties 2010-07-16 16:35:37 UTC (rev 8733) +++ branches/webhelp/xsl/webhelp/build.properties 2010-07-17 14:17:42 UTC (rev 8734) @@ -20,7 +20,8 @@ # Set this to true if you don't need a search tab. exclude.search.from.chunked.html=false -#indexe-language is used to tell the search indexer which language the docbook is written. +#indexer-language is used to tell the search indexer which language the docbook is written. #This will be used to identify the correct stemmer, and punctuations that differs from language to language. -#see the documentation for details. en=English, cn=Chinese, jp=Japanese etc. -indexer-language=en +#see the documentation for details. en=English, de=German, cn=Chinese, jp=Japanese etc. +#Country codes are available at: http://www.uspto.gov/patft/help/helpctry.htm +indexer-language=de Modified: branches/webhelp/xsl/webhelp/build.xml =================================================================== --- branches/webhelp/xsl/webhelp/build.xml 2010-07-16 16:35:37 UTC (rev 8733) +++ branches/webhelp/xsl/webhelp/build.xml 2010-07-17 14:17:42 UTC (rev 8734) @@ -40,8 +40,8 @@ <param name="exclude.search.from.chunked.html" expression="${exclude.search.from.chunked.html}" if="exclude.search.from.chunked.html"/> <param name="output_file_name" expression="${output_file_name}"/> <param name="frameset.base.dir" expression="${frameset.base.dir}" if="frameset.base.dir"/> - <param name="exclude.search.from.chunked.html" expression="${exclude.search.from.chunked.html}" if="exclude.search.from.chunked.html"/> <param name="indexer.language" expression="${indexer-language}" if="indexer-language"/> + <param name="chunk.frameset.start.filename" expression="${chunk.frameset.start.filename}" if="chunk.frameset.start.filename"/> </xslt> <delete file="${frameset.base.dir}/dummy.html"/> Modified: branches/webhelp/xsl/webhelp/indexer/lib/nw-cms.jar =================================================================== (Binary files differ) Modified: branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/IndexerTask.java =================================================================== --- branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/IndexerTask.java 2010-07-16 16:35:37 UTC (rev 8733) +++ branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/IndexerTask.java 2010-07-17 14:17:42 UTC (rev 8734) @@ -11,10 +11,12 @@ import java.util.Map; import java.util.Properties; +/* import org.apache.tools.ant.BuildException; import org.apache.tools.ant.Task; +*/ import com.nexwave.nsidita.DirList; @@ -28,8 +30,8 @@ * @author N. Quaine * @author Kasun Gajasinghe <http://kasunbg.blogspot.com> */ +public class IndexerTask{ //public class IndexerTask extends Task { -public class IndexerTask extends Task { // messages private String txt_no_inputdir = "Input directory not found:"; @@ -53,7 +55,7 @@ //supported languages: add new additions to this. don't include country codes to the end such as en_US or en_UK, // as stemmers doesn't find a difference between them. - private String[] supportedLanguages= {"en", "fr", "cn" }; + private String[] supportedLanguages= {"en", "de"}; //currently English & German only. Chinese(cn) to be added shortly. // Indexing features: words to remove private ArrayList<String> cleanUpStrings = null; @@ -108,8 +110,8 @@ /** * Implementation of the execute function (Task interface) */ - public void execute() throws BuildException { - //public void execute(){ +// public void execute() throws BuildException { + public void execute(){ ArrayList<DocFileInfo> filesDescription = null; // list of information about the topic files ArrayList<File> htmlFiles = null; // topic files listed in the given directory Modified: branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/SaxHTMLIndex.java =================================================================== --- branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/SaxHTMLIndex.java 2010-07-16 16:35:37 UTC (rev 8733) +++ branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/SaxHTMLIndex.java 2010-07-17 14:17:42 UTC (rev 8734) @@ -5,7 +5,9 @@ // specific dita ot import com.nexwave.nsidita.DocFileInfo; -import com.nexwave.stemmer.*; +import com.nexwave.stemmer.snowball.SnowballStemmer; +import com.nexwave.stemmer.snowball.ext.EnglishStemmer; +import com.nexwave.stemmer.snowball.ext.GermanStemmer; /** @@ -61,7 +63,8 @@ /** * Parses the file to extract all the words for indexing and * some data characterizing the file. - * @param file contains the fullpath of the document to parse + * @param file contains the fullpath of the document to parse + * @param indexerLanguage this will be used to tell the program which stemmer to be used. * @return a DitaFileInfo object filled with data describing the file */ public DocFileInfo runExtractData(File file, String indexerLanguage) { @@ -81,18 +84,22 @@ //Then, add them to tempSet //Do Stemming for words in items //TODO currently, stemming support is for english only. Add support for other languages as well. - - Stemmer stemmer; + + SnowballStemmer stemmer; if(indexerLanguage.equals("en")){ stemmer = new EnglishStemmer(); - } else if (indexerLanguage.equals("cn")){ - throw new UnsupportedOperationException("Chinese stemmer is not implemented yet."); + } else if (indexerLanguage.equals("de")){ + stemmer= new GermanStemmer(); } else { - throw new UnsupportedOperationException("This stemmer is not implemented yet."); + stemmer = null;//Languages which stemming is not yet supproted.So, No stemmers will be used. } - String[] stemmedItems = stemmer.doStem(items); - + String[] stemmedItems; + if(stemmer != null) //If a stemmer available + stemmedItems = stemmer.doStem(items); + else //if no stemmer available for the particular language + stemmedItems = items; + for(String stemmedItem: stemmedItems){ System.out.print(stemmedItem+"| "); } Deleted: branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/Stemmer.java =================================================================== --- branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/Stemmer.java 2010-07-16 16:35:37 UTC (rev 8733) +++ branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/Stemmer.java 2010-07-17 14:17:42 UTC (rev 8734) @@ -1,23 +0,0 @@ -package com.nexwave.stemmer; - -/** - * Abstract class for all the language specific stemmers. - * @author Kasun Gajasinghe - * Date: Jul 11, 2010 - * Time: 12:59:47 AM - */ -public abstract class Stemmer { - - public abstract void stem(); - - public abstract void add(char[] w, int wLen); - - public abstract void add(char ch); - - public abstract String doStem(String word); - - public abstract String[] doStem(String[] word); - - public abstract String toString(); - -} Added: branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/snowball/Among.java =================================================================== --- branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/snowball/Among.java (rev 0) +++ branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/snowball/Among.java 2010-07-17 14:17:42 UTC (rev 8734) @@ -0,0 +1,31 @@ +package com.nexwave.stemmer.snowball; + +import java.lang.reflect.Method; + +public class Among { + public Among (String s, int substring_i, int result, + String methodname, SnowballProgram methodobject) { + this.s_size = s.length(); + this.s = s.toCharArray(); + this.substring_i = substring_i; + this.result = result; + this.methodobject = methodobject; + if (methodname.length() == 0) { + this.method = null; + } else { + try { + this.method = methodobject.getClass(). + getDeclaredMethod(methodname, new Class[0]); + } catch (NoSuchMethodException e) { + throw new RuntimeException(e); + } + } + } + + public final int s_size; /* search string */ + public final char[] s; /* search string */ + public final int substring_i; /* index to longest matching substring */ + public final int result; /* result of the lookup */ + public final Method method; /* method to use if substring matches */ + public final SnowballProgram methodobject; /* object to invoke method on */ +}; Property changes on: branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/snowball/Among.java ___________________________________________________________________ Added: svn:executable + * Added: branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/snowball/SnowballProgram.java =================================================================== --- branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/snowball/SnowballProgram.java (rev 0) +++ branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/snowball/SnowballProgram.java 2010-07-17 14:17:42 UTC (rev 8734) @@ -0,0 +1,432 @@ + +package com.nexwave.stemmer.snowball; +import java.lang.reflect.InvocationTargetException; + +public class SnowballProgram { + protected SnowballProgram() + { + current = new StringBuffer(); + setCurrent(""); + } + + /** + * Set the current string. + */ + public void setCurrent(String value) + { + current.replace(0, current.length(), value); + cursor = 0; + limit = current.length(); + limit_backward = 0; + bra = cursor; + ket = limit; + } + + /** + * Get the current string. + */ + public String getCurrent() + { + String result = current.toString(); + // Make a new StringBuffer. If we reuse the old one, and a user of + // the library keeps a reference to the buffer returned (for example, + // by converting it to a String in a way which doesn't force a copy), + // the buffer size will not decrease, and we will risk wasting a large + // amount of memory. + // Thanks to Wolfram Esser for spotting this problem. + current = new StringBuffer(); + return result; + } + + // current string + protected StringBuffer current; + + protected int cursor; + protected int limit; + protected int limit_backward; + protected int bra; + protected int ket; + + protected void copy_from(SnowballProgram other) + { + current = other.current; + cursor = other.cursor; + limit = other.limit; + limit_backward = other.limit_backward; + bra = other.bra; + ket = other.ket; + } + + protected boolean in_grouping(char [] s, int min, int max) + { + if (cursor >= limit) return false; + char ch = current.charAt(cursor); + if (ch > max || ch < min) return false; + ch -= min; + if ((s[ch >> 3] & (0X1 << (ch & 0X7))) == 0) return false; + cursor++; + return true; + } + + protected boolean in_grouping_b(char [] s, int min, int max) + { + if (cursor <= limit_backward) return false; + char ch = current.charAt(cursor - 1); + if (ch > max || ch < min) return false; + ch -= min; + if ((s[ch >> 3] & (0X1 << (ch & 0X7))) == 0) return false; + cursor--; + return true; + } + + protected boolean out_grouping(char [] s, int min, int max) + { + if (cursor >= limit) return false; + char ch = current.charAt(cursor); + if (ch > max || ch < min) { + cursor++; + return true; + } + ch -= min; + if ((s[ch >> 3] & (0X1 << (ch & 0X7))) == 0) { + cursor ++; + return true; + } + return false; + } + + protected boolean out_grouping_b(char [] s, int min, int max) + { + if (cursor <= limit_backward) return false; + char ch = current.charAt(cursor - 1); + if (ch > max || ch < min) { + cursor--; + return true; + } + ch -= min; + if ((s[ch >> 3] & (0X1 << (ch & 0X7))) == 0) { + cursor--; + return true; + } + return false; + } + + protected boolean in_range(int min, int max) + { + if (cursor >= limit) return false; + char ch = current.charAt(cursor); + if (ch > max || ch < min) return false; + cursor++; + return true; + } + + protected boolean in_range_b(int min, int max) + { + if (cursor <= limit_backward) return false; + char ch = current.charAt(cursor - 1); + if (ch > max || ch < min) return false; + cursor--; + return true; + } + + protected boolean out_range(int min, int max) + { + if (cursor >= limit) return false; + char ch = current.charAt(cursor); + if (!(ch > max || ch < min)) return false; + cursor++; + return true; + } + + protected boolean out_range_b(int min, int max) + { + if (cursor <= limit_backward) return false; + char ch = current.charAt(cursor - 1); + if(!(ch > max || ch < min)) return false; + cursor--; + return true; + } + + protected boolean eq_s(int s_size, String s) + { + if (limit - cursor < s_size) return false; + int i; + for (i = 0; i != s_size; i++) { + if (current.charAt(cursor + i) != s.charAt(i)) return false; + } + cursor += s_size; + return true; + } + + protected boolean eq_s_b(int s_size, String s) + { + if (cursor - limit_backward < s_size) return false; + int i; + for (i = 0; i != s_size; i++) { + if (current.charAt(cursor - s_size + i) != s.charAt(i)) return false; + } + cursor -= s_size; + return true; + } + + protected boolean eq_v(CharSequence s) + { + return eq_s(s.length(), s.toString()); + } + + protected boolean eq_v_b(CharSequence s) + { return eq_s_b(s.length(), s.toString()); + } + + protected int find_among(Among v[], int v_size) + { + int i = 0; + int j = v_size; + + int c = cursor; + int l = limit; + + int common_i = 0; + int common_j = 0; + + boolean first_key_inspected = false; + + while(true) { + int k = i + ((j - i) >> 1); + int diff = 0; + int common = common_i < common_j ? common_i : common_j; // smaller + Among w = v[k]; + int i2; + for (i2 = common; i2 < w.s_size; i2++) { + if (c + common == l) { + diff = -1; + break; + } + diff = current.charAt(c + common) - w.s[i2]; + if (diff != 0) break; + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) break; // v->s has been inspected + if (j == i) break; // only one item in v + + // - but now we need to go round once more to get + // v->s inspected. This looks messy, but is actually + // the optimal approach. + + if (first_key_inspected) break; + first_key_inspected = true; + } + } + while(true) { + Among w = v[i]; + if (common_i >= w.s_size) { + cursor = c + w.s_size; + if (w.method == null) return w.result; + boolean res; + try { + Object resobj = w.method.invoke(w.methodobject, + new Object[0]); + res = resobj.toString().equals("true"); + } catch (InvocationTargetException e) { + res = false; + // FIXME - debug message + } catch (IllegalAccessException e) { + res = false; + // FIXME - debug message + } + cursor = c + w.s_size; + if (res) return w.result; + } + i = w.substring_i; + if (i < 0) return 0; + } + } + + // find_among_b is for backwards processing. Same comments apply + protected int find_among_b(Among v[], int v_size) + { + int i = 0; + int j = v_size; + + int c = cursor; + int lb = limit_backward; + + int common_i = 0; + int common_j = 0; + + boolean first_key_inspected = false; + + while(true) { + int k = i + ((j - i) >> 1); + int diff = 0; + int common = common_i < common_j ? common_i : common_j; + Among w = v[k]; + int i2; + for (i2 = w.s_size - 1 - common; i2 >= 0; i2--) { + if (c - common == lb) { + diff = -1; + break; + } + diff = current.charAt(c - 1 - common) - w.s[i2]; + if (diff != 0) break; + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) break; + if (j == i) break; + if (first_key_inspected) break; + first_key_inspected = true; + } + } + while(true) { + Among w = v[i]; + if (common_i >= w.s_size) { + cursor = c - w.s_size; + if (w.method == null) return w.result; + + boolean res; + try { + Object resobj = w.method.invoke(w.methodobject, + new Object[0]); + res = resobj.toString().equals("true"); + } catch (InvocationTargetException e) { + res = false; + // FIXME - debug message + } catch (IllegalAccessException e) { + res = false; + // FIXME - debug message + } + cursor = c - w.s_size; + if (res) return w.result; + } + i = w.substring_i; + if (i < 0) return 0; + } + } + + /* to replace chars between c_bra and c_ket in current by the + * chars in s. + */ + protected int replace_s(int c_bra, int c_ket, String s) + { + int adjustment = s.length() - (c_ket - c_bra); + current.replace(c_bra, c_ket, s); + limit += adjustment; + if (cursor >= c_ket) cursor += adjustment; + else if (cursor > c_bra) cursor = c_bra; + return adjustment; + } + + protected void slice_check() + { + if (bra < 0 || + bra > ket || + ket > limit || + limit > current.length()) // this line could be removed + { + System.err.println("faulty slice operation"); + // FIXME: report error somehow. + /* + fprintf(stderr, "faulty slice operation:\n"); + debug(z, -1, 0); + exit(1); + */ + } + } + + protected void slice_from(String s) + { + slice_check(); + replace_s(bra, ket, s); + } + + protected void slice_from(CharSequence s) + { + slice_from(s.toString()); + } + + protected void slice_del() + { + slice_from(""); + } + + protected void insert(int c_bra, int c_ket, String s) + { + int adjustment = replace_s(c_bra, c_ket, s); + if (c_bra <= bra) bra += adjustment; + if (c_bra <= ket) ket += adjustment; + } + + protected void insert(int c_bra, int c_ket, CharSequence s) + { + insert(c_bra, c_ket, s.toString()); + } + + /* Copy the slice into the supplied StringBuffer */ + protected StringBuffer slice_to(StringBuffer s) + { + slice_check(); + int len = ket - bra; + s.replace(0, s.length(), current.substring(bra, ket)); + return s; + } + + /* Copy the slice into the supplied StringBuilder */ + protected StringBuilder slice_to(StringBuilder s) + { + slice_check(); + int len = ket - bra; + s.replace(0, s.length(), current.substring(bra, ket)); + return s; + } + + protected StringBuffer assign_to(StringBuffer s) + { + s.replace(0, s.length(), current.substring(0, limit)); + return s; + } + + protected StringBuilder assign_to(StringBuilder s) + { + s.replace(0, s.length(), current.substring(0, limit)); + return s; + } + +/* +extern void debug(struct SN_env * z, int number, int line_count) +{ int i; + int limit = SIZE(z->p); + //if (number >= 0) printf("%3d (line %4d): '", number, line_count); + if (number >= 0) printf("%3d (line %4d): [%d]'", number, line_count,limit); + for (i = 0; i <= limit; i++) + { if (z->lb == i) printf("{"); + if (z->bra == i) printf("["); + if (z->c == i) printf("|"); + if (z->ket == i) printf("]"); + if (z->l == i) printf("}"); + if (i < limit) + { int ch = z->p[i]; + if (ch == 0) ch = '#'; + printf("%c", ch); + } + } + printf("'\n"); +} +*/ + +}; Property changes on: branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/snowball/SnowballProgram.java ___________________________________________________________________ Added: svn:executable + * Added: branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/snowball/SnowballStemmer.java =================================================================== --- branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/snowball/SnowballStemmer.java (rev 0) +++ branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/snowball/SnowballStemmer.java 2010-07-17 14:17:42 UTC (rev 8734) @@ -0,0 +1,27 @@ + +package com.nexwave.stemmer.snowball; +import java.lang.reflect.InvocationTargetException; + +public abstract class SnowballStemmer extends SnowballProgram { + public abstract boolean stem(); + + /** + * Do stemming of a given String array and returns the stemmed set of words as an array. + * @param words Word set to be stemmed + * @return stemmed word array + */ + public String[] doStem(String[] words){ + String[] stemmedWords = new String[words.length]; + for (int i = 0; i < words.length; i++) { + String word = words[i]; + word = word.trim().toLowerCase(); + + //Do the stemming of the given word. + setCurrent(word); //set the word to be stemmed + stem(); //tell stemmer to stem + + stemmedWords[i] = getCurrent(); //Get the stemmed word and add it to the stemmedWords array + } + return stemmedWords; + } +} Property changes on: branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/snowball/SnowballStemmer.java ___________________________________________________________________ Added: svn:executable + * Added: branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/snowball/TestApp.java =================================================================== --- branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/snowball/TestApp.java (rev 0) +++ branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/snowball/TestApp.java 2010-07-17 14:17:42 UTC (rev 8734) @@ -0,0 +1,72 @@ + + +package com.nexwave.stemmer.snowball; +import com.nexwave.stemmer.snowball.ext.EnglishStemmer; + +public class TestApp { + private static void usage() + { + System.err.println("Usage: TestApp <algorithm> <input file> [-o <output file>]"); + } + + public static void main(String [] args) throws Throwable { +/* if (args.length < 2) { + usage(); + return; + } + + Class stemClass = Class.forName("com.nexwave.stemmer.snowball.ext." + + args[0] + "Stemmer");*/ + // SnowballStemmer stemmer = (SnowballStemmer) stemClass.newInstance(); + SnowballStemmer stemmer =new EnglishStemmer();//= new GermanStemmer(); + + StringBuffer input = new StringBuffer(); + /*Reader reader; + reader = new InputStreamReader(new FileInputStream(args[1])); + reader = new BufferedReader(reader); + + StringBuffer input = new StringBuffer(); + + OutputStream outstream; + + if (args.length > 2) { + if (args.length >= 4 && args[2].equals("-o")) { + outstream = new FileOutputStream(args[3]); + } else { + usage(); + return; + } + } else { + outstream = System.out; + } + Writer output = new OutputStreamWriter(outstream); + output = new BufferedWriter(output); + + int repeat = 1; + if (args.length > 4) { + repeat = Integer.parseInt(args[4]); + }*/ + + Object [] emptyArgs = new Object[0]; + char[] charArr = "testing runnable dogs ".toCharArray(); +// int character; + for (char ch : charArr) { + // char ch = (char) character; + if (Character.isWhitespace((char) ch)) { + if (input.length() > 0) { + stemmer.setCurrent(input.toString()); + + stemmer.stem(); + + System.out.print(stemmer.getCurrent()+" "); + /* output.write(stemmer.getCurrent()); + output.write('\n');*/ + input.delete(0, input.length()); + } + } else { + input.append(Character.toLowerCase(ch)); + } + } +// output.flush(); + } +} Property changes on: branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/snowball/TestApp.java ___________________________________________________________________ Added: svn:executable + * Added: branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/snowball/ext/EnglishStemmer.java =================================================================== --- branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/snowball/ext/EnglishStemmer.java (rev 0) +++ branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/snowball/ext/EnglishStemmer.java 2010-07-17 14:17:42 UTC (rev 8734) @@ -0,0 +1,1330 @@ +// This file was generated automatically by the Snowball to Java compiler + +package com.nexwave.stemmer.snowball.ext; + +import com.nexwave.stemmer.snowball.Among; + + /** + * This class was automatically generated by a Snowball to Java compiler + * It implements the stemming algorithm defined by a snowball script. + */ + +public class EnglishStemmer extends com.nexwave.stemmer.snowball.SnowballStemmer { + +private static final long serialVersionUID = 1L; + + private final static EnglishStemmer METHOD_OBJECT = new EnglishStemmer(); + + private final static Among a_0[] = { + new Among ( "arsen", -1, -1, "", METHOD_OBJECT), + new Among ( "commun", -1, -1, "", METHOD_OBJECT), + new Among ( "gener", -1, -1, "", METHOD_OBJECT) + }; + + private final static Among a_1[] = { + new Among ( "'", -1, 1, "", METHOD_OBJECT), + new Among ( "'s'", 0, 1, "", METHOD_OBJECT), + new Among ( "'s", -1, 1, "", METHOD_OBJECT) + }; + + private final static Among a_2[] = { + new Among ( "ied", -1, 2, "", METHOD_OBJECT), + new Among ( "s", -1, 3, "", METHOD_OBJECT), + new Among ( "ies", 1, 2, "", METHOD_OBJECT), + new Among ( "sses", 1, 1, "", METHOD_OBJECT), + new Among ( "ss", 1, -1, "", METHOD_OBJECT), + new Among ( "us", 1, -1, "", METHOD_OBJECT) + }; + + private final static Among a_3[] = { + new Among ( "", -1, 3, "", METHOD_OBJECT), + new Among ( "bb", 0, 2, "", METHOD_OBJECT), + new Among ( "dd", 0, 2, "", METHOD_OBJECT), + new Among ( "ff", 0, 2, "", METHOD_OBJECT), + new Among ( "gg", 0, 2, "", METHOD_OBJECT), + new Among ( "bl", 0, 1, "", METHOD_OBJECT), + new Among ( "mm", 0, 2, "", METHOD_OBJECT), + new Among ( "nn", 0, 2, "", METHOD_OBJECT), + new Among ( "pp", 0, 2, "", METHOD_OBJECT), + new Among ( "rr", 0, 2, "", METHOD_OBJECT), + new Among ( "at", 0, 1, "", METHOD_OBJECT), + new Among ( "tt", 0, 2, "", METHOD_OBJECT), + new Among ( "iz", 0, 1, "", METHOD_OBJECT) + }; + + private final static Among a_4[] = { + new Among ( "ed", -1, 2, "", METHOD_OBJECT), + new Among ( "eed", 0, 1, "", METHOD_OBJECT), + new Among ( "ing", -1, 2, "", METHOD_OBJECT), + new Among ( "edly", -1, 2, "", METHOD_OBJECT), + new Among ( "eedly", 3, 1, "", METHOD_OBJECT), + new Among ( "ingly", -1, 2, "", METHOD_OBJECT) + }; + + private final static Among a_5[] = { + new Among ( "anci", -1, 3, "", METHOD_OBJECT), + new Among ( "enci", -1, 2, "", METHOD_OBJECT), + new Among ( "ogi", -1, 13, "", METHOD_OBJECT), + new Among ( "li", -1, 16, "", METHOD_OBJECT), + new Among ( "bli", 3, 12, "", METHOD_OBJECT), + new Among ( "abli", 4, 4, "", METHOD_OBJECT), + new Among ( "alli", 3, 8, "", METHOD_OBJECT), + new Among ( "fulli", 3, 14, "", METHOD_OBJECT), + new Among ( "lessli", 3, 15, "", METHOD_OBJECT), + new Among ( "ousli", 3, 10, "", METHOD_OBJECT), + new Among ( "entli", 3, 5, "", METHOD_OBJECT), + new Among ( "aliti", -1, 8, "", METHOD_OBJECT), + new Among ( "biliti", -1, 12, "", METHOD_OBJECT), + new Among ( "iviti", -1, 11, "", METHOD_OBJECT), + new Among ( "tional", -1, 1, "", METHOD_OBJECT), + new Among ( "ational", 14, 7, "", METHOD_OBJECT), + new Among ( "alism", -1, 8, "", METHOD_OBJECT), + new Among ( "ation", -1, 7, "", METHOD_OBJECT), + new Among ( "ization", 17, 6, "", METHOD_OBJECT), + new Among ( "izer", -1, 6, "", METHOD_OBJECT), + new Among ( "ator", -1, 7, "", METHOD_OBJECT), + new Among ( "iveness", -1, 11, "", METHOD_OBJECT), + new Among ( "fulness", -1, 9, "", METHOD_OBJECT), + new Among ( "ousness", -1, 10, "", METHOD_OBJECT) + }; + + private final static Among a_6[] = { + new Among ( "icate", -1, 4, "", METHOD_OBJECT), + new Among ( "ative", -1, 6, "", METHOD_OBJECT), + new Among ( "alize", -1, 3, "", METHOD_OBJECT), + new Among ( "iciti", -1, 4, "", METHOD_OBJECT), + new Among ( "ical", -1, 4, "", METHOD_OBJECT), + new Among ( "tional", -1, 1, "", METHOD_OBJECT), + new Among ( "ational", 5, 2, "", METHOD_OBJECT), + new Among ( "ful", -1, 5, "", METHOD_OBJECT), + new Among ( "ness", -1, 5, "", METHOD_OBJECT) + }; + + private final static Among a_7[] = { + new Among ( "ic", -1, 1, "", METHOD_OBJECT), + new Among ( "ance", -1, 1, "", METHOD_OBJECT), + new Among ( "ence", -1, 1, "", METHOD_OBJECT), + new Among ( "able", -1, 1, "", METHOD_OBJECT), + new Among ( "ible", -1, 1, "", METHOD_OBJECT), + new Among ( "ate", -1, 1, "", METHOD_OBJECT), + new Among ( "ive", -1, 1, "", METHOD_OBJECT), + new Among ( "ize", -1, 1, "", METHOD_OBJECT), + new Among ( "iti", -1, 1, "", METHOD_OBJECT), + new Among ( "al", -1, 1, "", METHOD_OBJECT), + new Among ( "ism", -1, 1, "", METHOD_OBJECT), + new Among ( "ion", -1, 2, "", METHOD_OBJECT), + new Among ( "er", -1, 1, "", METHOD_OBJECT), + new Among ( "ous", -1, 1, "", METHOD_OBJECT), + new Among ( "ant", -1, 1, "", METHOD_OBJECT), + new Among ( "ent", -1, 1, "", METHOD_OBJECT), + new Among ( "ment", 15, 1, "", METHOD_OBJECT), + new Among ( "ement", 16, 1, "", METHOD_OBJECT) + }; + + private final static Among a_8[] = { + new Among ( "e", -1, 1, "", METHOD_OBJECT), + new Among ( "l", -1, 2, "", METHOD_OBJECT) + }; + + private final static Among a_9[] = { + new Among ( "succeed", -1, -1, "", METHOD_OBJECT), + new Among ( "proceed", -1, -1, "", METHOD_OBJECT), + new Among ( "exceed", -1, -1, "", METHOD_OBJECT), + new Among ( "canning", -1, -1, "", METHOD_OBJECT), + new Among ( "inning", -1, -1, "", METHOD_OBJECT), + new Among ( "earring", -1, -1, "", METHOD_OBJECT), + new Among ( "herring", -1, -1, "", METHOD_OBJECT), + new Among ( "outing", -1, -1, "", METHOD_OBJECT) + }; + + private final static Among a_10[] = { + new Among ( "andes", -1, -1, "", METHOD_OBJECT), + new Among ( "atlas", -1, -1, "", METHOD_OBJECT), + new Among ( "bias", -1, -1, "", METHOD_OBJECT), + new Among ( "cosmos", -1, -1, "", METHOD_OBJECT), + new Among ( "dying", -1, 3, "", METHOD_OBJECT), + new Among ( "early", -1, 9, "", METHOD_OBJECT), + new Among ( "gently", -1, 7, "", METHOD_OBJECT), + new Among ( "howe", -1, -1, "", METHOD_OBJECT), + new Among ( "idly", -1, 6, "", METHOD_OBJECT), + new Among ( "lying", -1, 4, "", METHOD_OBJECT), + new Among ( "news", -1, -1, "", METHOD_OBJECT), + new Among ( "only", -1, 10, "", METHOD_OBJECT), + new Among ( "singly", -1, 11, "", METHOD_OBJECT), + new Among ( "skies", -1, 2, "", METHOD_OBJECT), + new Among ( "skis", -1, 1, "", METHOD_OBJECT), + new Among ( "sky", -1, -1, "", METHOD_OBJECT), + new Among ( "tying", -1, 5, "", METHOD_OBJECT), + new Among ( "ugly", -1, 8, "", METHOD_OBJECT) + }; + + private static final char g_v[] = {17, 65, 16, 1 }; + + private static final char g_v_WXY[] = {1, 17, 65, 208, 1 }; + + private static final char g_valid_LI[] = {55, 141, 2 }; + + private boolean B_Y_found; + private int I_p2; + private int I_p1; + + private void copy_from(EnglishStemmer other) { + B_Y_found = other.B_Y_found; + I_p2 = other.I_p2; + I_p1 = other.I_p1; + super.copy_from(other); + } + + private boolean r_prelude() { + int v_1; + int v_2; + int v_3; + int v_4; + int v_5; + // (, line 25 + // unset Y_found, line 26 + B_Y_found = false; + // do, line 27 + v_1 = cursor; + lab0: do { + // (, line 27 + // [, line 27 + bra = cursor; + // literal, line 27 + if (!(eq_s(1, "'"))) + { + break lab0; + } + // ], line 27 + ket = cursor; + // delete, line 27 + slice_del(); + } while (false); + cursor = v_1; + // do, line 28 + v_2 = cursor; + lab1: do { + // (, line 28 + // [, line 28 + bra = cursor; + // literal, line 28 + if (!(eq_s(1, "y"))) + { + break lab1; + } + // ], line 28 + ket = cursor; + // <-, line 28 + slice_from("Y"); + // set Y_found, line 28 + B_Y_found = true; + } while (false); + cursor = v_2; + // do, line 29 + v_3 = cursor; + lab2: do { + // repeat, line 29 + replab3: while(true) + { + v_4 = cursor; + lab4: do { + // (, line 29 + // goto, line 29 + golab5: while(true) + { + v_5 = cursor; + lab6: do { + // (, line 29 + if (!(in_grouping(g_v, 97, 121))) + { + break lab6; + } + // [, line 29 + bra = cursor; + // literal, line 29 + if (!(eq_s(1, "y"))) + { + break lab6; + } + // ], line 29 + ket = cursor; + cursor = v_5; + break golab5; + } while (false); + cursor = v_5; + if (cursor >= limit) + { + break lab4; + } + cursor++; + } + // <-, line 29 + slice_from("Y"); + // set Y_found, line 29 + B_Y_found = true; + continue replab3; + } while (false); + cursor = v_4; + break replab3; + } + } while (false); + cursor = v_3; + return true; + } + + private boolean r_mark_regions() { + int v_1; + int v_2; + // (, line 32 + I_p1 = limit; + I_p2 = limit; + // do, line 35 + v_1 = cursor; + lab0: do { + // (, line 35 + // or, line 41 + lab1: do { + v_2 = cursor; + lab2: do { + // among, line 36 + if (find_among(a_0, 3) == 0) + { + break lab2; + } + break lab1; + } while (false); + cursor = v_2; + // (, line 41 + // gopast, line 41 + golab3: while(true) + { + lab4: do { + if (!(in_grouping(g_v, 97, 121))) + { + break lab4; + } + break golab3; + } while (false); + if (cursor >= limit) + { + break lab0; + } + cursor++; + } + // gopast, line 41 + golab5: while(true) + { + lab6: do { + if (!(out_grouping(g_v, 97, 121))) + { + break lab6; + } + break golab5; + } while (false); + if (cursor >= limit) + { + break lab0; + } + cursor++; + } + } while (false); + // setmark p1, line 42 + I_p1 = cursor; + // gopast, line 43 + golab7: while(true) + { + lab8: do { + if (!(in_grouping(g_v, 97, 121))) + { + break lab8; + } + break golab7; + } while (false); + if (cursor >= limit) + { + break lab0; + } + cursor++; + } + // gopast, line 43 + golab9: while(true) + { + lab10: do { + if (!(out_grouping(g_v, 97, 121))) + { + break lab10; + } + break golab9; + } while (false); + if (cursor >= limit) + { + break lab0; + } + cursor++; + } + // setmark p2, line 43 + I_p2 = cursor; + } while (false); + cursor = v_1; + return true; + } + + private boolean r_shortv() { + int v_1; + // (, line 49 + // or, line 51 + lab0: do { + v_1 = limit - cursor; + lab1: do { + // (, line 50 + if (!(out_grouping_b(g_v_WXY, 89, 121))) + { + break lab1; + } + if (!(in_grouping_b(g_v, 97, 121))) + { + break lab1; + } + if (!(out_grouping_b(g_v, 97, 121))) + { + break lab1; + } + break lab0; + } while (false); + cursor = limit - v_1; + // (, line 52 + if (!(out_grouping_b(g_v, 97, 121))) + { + return false; + } + if (!(in_grouping_b(g_v, 97, 121))) + { + return false; + } + // atlimit, line 52 + if (cursor > limit_backward) + { + return false; + } + } while (false); + return true; + } + + private boolean r_R1() { + if (!(I_p1 <= cursor)) + { + return false; + } + return true; + } + + private boolean r_R2() { + if (!(I_p2 <= cursor)) + { + return false; + } + return true; + } + + private boolean r_Step_1a() { + int among_var; + int v_1; + int v_2; + // (, line 58 + // try, line 59 + v_1 = limit - cursor; + lab0: do { + // (, line 59 + // [, line 60 + ket = cursor; + // substring, line 60 + among_var = find_among_b(a_1, 3); + if (among_var == 0) + { + cursor = limit - v_1; + break lab0; + } + // ], line 60 + bra = cursor; + switch(among_var) { + case 0: + cursor = limit - v_1; + break lab0; + case 1: + // (, line 62 + // delete, line 62 + slice_del(); + break; + } + } while (false); + // [, line 65 + ket = cursor; + // substring, line 65 + among_var = find_among_b(a_2, 6); + if (among_var == 0) + { + return false; + } + // ], line 65 + bra = cursor; + switch(among_var) { + case 0: + return false; + case 1: + // (, line 66 + // <-, line 66 + slice_from("ss"); + break; + case 2: + // (, line 68 + // or, line 68 + lab1: do { + v_2 = limit - cursor; + lab2: do { + // (, line 68 + // hop, line 68 + { + int c = cursor - 2; + if (limit_backward > c || c > limit) + { + break lab2; + } + cursor = c; + } + // <-, line 68 + slice_from("i"); + break lab1; + } while (false); + cursor = limit - v_2; + // <-, line 68 + slice_from("ie"); + } while (false); + break; + case 3: + // (, line 69 + // next, line 69 + if (cursor <= limit_backward) + { + return false; + } + cursor--; + // gopast, line 69 + golab3: while(true) + { + lab4: do { + if (!(in_grouping_b(g_v, 97, 121))) + { + break lab4; + } + break golab3; + } while (false); + if (cursor <= limit_backward) + { + return false; + } + cursor--; + } + // delete, line 69 + slice_del(); + break; + } + return true; + } + + private boolean r_Step_1b() { + int among_var; + int v_1; + int v_3; + int v_4; + // (, line 74 + // [, line 75 + ket = cursor; + // substring, line 75 + among_var = find_among_b(a_4, 6); + if (among_var == 0) + { + return false; + } + // ], line 75 + bra = cursor; + switch(among_var) { + case 0: + return false; + case 1: + // (, line 77 + // call R1, line 77 + if (!r_R1()) + { + return false; + } + // <-, line 77 + slice_from("ee"); + break; + case 2: + // (, line 79 + // test, line 80 + v_1 = limit - cursor; + // gopast, line 80 + golab0: while(true) + { + lab1: do { + if (!(in_grouping_b(g_v, 97, 121))) + { + break lab1; + } + break golab0; + } while (false); + if (cursor <= limit_backward) + { + return false; + } + cursor--; + } + cursor = limit - v_1; + // delete, line 80 + slice_del(); + // test, line 81 + v_3 = limit - cursor; + // substring, line 81 + among_var = find_among_b(a_3, 13); + if (among_var == 0) + { + return false; + } + cursor = limit - v_3; + switch(among_var) { + case 0: + return false; + case 1: + // (, line 83 + // <+, line 83 + { + int c = cursor; + insert(cursor, cursor, "e"); + cursor = c; + } + break; + case 2: + // (, line 86 + // [, line 86 + ket = cursor; + // next, line 86 + if (cursor <= limit_backward) + { + return false; + } + cursor--; + // ], line 86 + bra = cursor; + // delete, line 86 + slice_del(); + break; + case 3: + // (, line 87 + // atmark, line 87 + if (cursor != I_p1) + { + return false; + } + // test, line 87 + v_4 = limit - cursor; + // call shortv, line 87 + if (!r_shortv()) + { + return false; + } + cursor = limit - v_4; + // <+, line 87 + { + int c = cursor; + insert(cursor, cursor, "e"); + cursor = c; + } + break; + } + break; + } + return true; + } + + private boolean r_Step_1c() { + int v_1; + int v_2; + // (, line 93 + // [, line 94 + ket = cursor; + // or, line 94 + lab0: do { + v_1 = limit - cursor; + lab1: do { + // literal, line 94 + if (!(eq_s_b(1, "y"))) + { + break lab1; + } + break lab0; + } while (false); + cursor = limit - v_1; + // literal, line 94 + if (!(eq_s_b(1, "Y"))) + { + return false; + } + } while (false); + // ], line 94 + bra = cursor; + if (!(out_grouping_b(g_v, 97, 121))) + { + return false; + } + // not, line 95 + { + v_2 = limit - cursor; + lab2: do { + // atlimit, line 95 + if (cursor > limit_backward) + { + break lab2; + } + return false; + } while (false); + cursor = limit - v_2; + } + // <-, line 96 + slice_from("i"); + return true; + } + + private boolean r_Step_2() { + int among_var; + // (, line 99 + // [, line 100 + ket = cursor; + // substring, line 100 + among_var = find_among_b(a_5, 24); + if (among_var == 0) + { + return false; + } + // ], line 100 + bra = cursor; + // call R1, line 100 + if (!r_R1()) + { + return false; + } + switch(among_var) { + case 0: + return false; + case 1: + // (, line 101 + // <-, line 101 + slice_from("tion"); + break; + case 2: + // (, line 102 + // <-, line 102 + slice_from("ence"); + break; + case 3: + // (, line 103 + // <-, line 103 + slice_from("ance"); + break; + case 4: + // (, line 104 + // <-, line 104 + slice_from("able"); + break; + case 5: + // (, line 105 + // <-, line 105 + ... [truncated message content] |
From: <ka...@us...> - 2010-07-17 19:48:13
|
Revision: 8735 http://docbook.svn.sourceforge.net/docbook/?rev=8735&view=rev Author: kasunbg Date: 2010-07-17 19:48:06 +0000 (Sat, 17 Jul 2010) Log Message: ----------- Improvements and some fixes for web interface. javascript stemming improvements. --KasunBG Modified Paths: -------------- branches/webhelp/xsl/webhelp/build.properties branches/webhelp/xsl/webhelp/build.xml branches/webhelp/xsl/webhelp/indexer/lib/nw-cms.jar branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/IndexerTask.java branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/SaxHTMLIndex.java branches/webhelp/xsl/webhelp/template/common/css/positioning.css branches/webhelp/xsl/webhelp/template/common/main.js branches/webhelp/xsl/webhelp/template/content/search/nwSearchFnt.js Removed Paths: ------------- branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/EnglishStemmer.java Modified: branches/webhelp/xsl/webhelp/build.properties =================================================================== --- branches/webhelp/xsl/webhelp/build.properties 2010-07-17 14:17:42 UTC (rev 8734) +++ branches/webhelp/xsl/webhelp/build.properties 2010-07-17 19:48:06 UTC (rev 8735) @@ -24,4 +24,4 @@ #This will be used to identify the correct stemmer, and punctuations that differs from language to language. #see the documentation for details. en=English, de=German, cn=Chinese, jp=Japanese etc. #Country codes are available at: http://www.uspto.gov/patft/help/helpctry.htm -indexer-language=de +indexer-language=en Modified: branches/webhelp/xsl/webhelp/build.xml =================================================================== --- branches/webhelp/xsl/webhelp/build.xml 2010-07-17 14:17:42 UTC (rev 8734) +++ branches/webhelp/xsl/webhelp/build.xml 2010-07-17 19:48:06 UTC (rev 8735) @@ -1,117 +1,125 @@ <project default="help" name="mainbuild"> - <loadproperties srcFile="build.properties"/> - <dirname property="ant.file.dir" file="${ant.file.mainbuild}"/> + <loadproperties srcFile="build.properties"/> + <dirname property="ant.file.dir" file="${ant.file.mainbuild}"/> - <xmlcatalog id="catalog"> - <catalogpath> - <pathelement location="${docbook-xsl-catalog}"/> - </catalogpath> - <dtd publicId="-//OASIS//DTD DocBook XML V4.5//EN" location="${docbookx.dtd}"/> - </xmlcatalog> + <xmlcatalog id="catalog"> + <catalogpath> + <pathelement location="${docbook-xsl-catalog}"/> + </catalogpath> + <dtd publicId="-//OASIS//DTD DocBook XML V4.5//EN" location="${docbookx.dtd}"/> + </xmlcatalog> - <property environment="env"/> - <property name="ant.jar" value="${env.ANT_HOME}/lib/ant.jar"/> + <property environment="env"/> + <property name="ant.jar" value="${env.ANT_HOME}/lib/ant.jar"/> - <condition property="perform-validation"> - <equals arg1="${validate}" arg2="true"/> - </condition> - <condition property="skip-search-indexing"> - <equals arg1="${exclude.search.from.chunked.html}" arg2="true"/> - </condition> + <condition property="perform-validation"> + <equals arg1="${validate}" arg2="true"/> + </condition> + <condition property="skip-search-indexing"> + <equals arg1="${exclude.search.from.chunked.html}" arg2="true"/> + </condition> - <target name="validate" if="perform-validation"> - <xmlvalidate file="${input-xml}"> - <xmlcatalog refid="catalog"/> - </xmlvalidate> - </target> + <target name="validate" if="perform-validation"> + <xmlvalidate file="${input-xml}"> + <xmlcatalog refid="catalog"/> + </xmlvalidate> + </target> - <target name="chunk" depends="clean"> + <target name="chunk" depends="clean"> - <mkdir dir="${frameset.base.dir}"/> - <xslt - in="${input-xml}" - out="${frameset.base.dir}/dummy.html" - style="${ant.file.dir}/xsl/webhelp.xsl" - scanincludeddirectories="false" - classpath="${xslt-processor-classpath}"> - <xmlcatalog refid="catalog"/> - <param name="chunked.toc.all.open" expression="${chunked.toc.all.open}" if="chunked.toc.all.open"/> - <param name="exclude.search.from.chunked.html" expression="${exclude.search.from.chunked.html}" if="exclude.search.from.chunked.html"/> - <param name="output_file_name" expression="${output_file_name}"/> - <param name="frameset.base.dir" expression="${frameset.base.dir}" if="frameset.base.dir"/> - <param name="indexer.language" expression="${indexer-language}" if="indexer-language"/> - <param name="chunk.frameset.start.filename" expression="${chunk.frameset.start.filename}" if="chunk.frameset.start.filename"/> - </xslt> + <mkdir dir="${frameset.base.dir}"/> + <xslt + in="${input-xml}" + out="${frameset.base.dir}/dummy.html" + style="${ant.file.dir}/xsl/webhelp.xsl" + scanincludeddirectories="false" + classpath="${xslt-processor-classpath}"> + <xmlcatalog refid="catalog"/> + <param name="chunked.toc.all.open" expression="${chunked.toc.all.open}" if="chunked.toc.all.open"/> + <param name="exclude.search.from.chunked.html" expression="${exclude.search.from.chunked.html}" + if="exclude.search.from.chunked.html"/> + <param name="output_file_name" expression="${output_file_name}"/> + <param name="frameset.base.dir" expression="${frameset.base.dir}" if="frameset.base.dir"/> + <param name="indexer.language" expression="${indexer-language}" if="indexer-language"/> + <param name="chunk.frameset.start.filename" expression="${chunk.frameset.start.filename}" + if="chunk.frameset.start.filename"/> + </xslt> - <delete file="${frameset.base.dir}/dummy.html"/> + <delete file="${frameset.base.dir}/dummy.html"/> -<!-- Copy common content such as js files of tree, css etc. to template folder. They will be copied to doc folder. They are NOT page specific! --> - <copy todir="${frameset.base.dir}"> - <fileset dir="${ant.file.dir}/template"> - <include name="**/*"/> - </fileset> - </copy> - </target> + <!-- Copy common content such as js files of tree, css etc. to template folder. They will be copied to doc folder. They are NOT page specific! --> + <copy todir="${frameset.base.dir}"> + <fileset dir="${ant.file.dir}/template"> + <include name="**/*"/> + </fileset> + </copy> - <target name="index" unless="skip-search-indexing"> + <!--Deletes all the stemmers that are copied to doc/ folder. Then, adds only the needed stemmer--> + <delete dir="${frameset.base.dir}/content/search/stemmers"/> + <copy todir="doc/content/search/stemmers/" + file="template/content/search/stemmers/${indexer-language}_stemmer.js"/> - <path id="nw-cms.jar.path"> - <pathelement location="${ant.file.dir}/indexer/lib/nw-cms.jar" /> - </path> + </target> - <taskdef name="indexertask" - classname="com.nexwave.nquindexer.IndexerTask"> - <classpath refid="nw-cms.jar.path" /> - </taskdef> + <target name="index" unless="skip-search-indexing"> - <echo>Indexing html files in ${frameset.base.dir}/content</echo> + <path id="nw-cms.jar.path"> + <pathelement location="${ant.file.dir}/indexer/lib/nw-cms.jar"/> + </path> - <indexertask htmldir="${frameset.base.dir}/content" indexerLanguage="${indexer-language}"/> + <taskdef name="indexertask" + classname="com.nexwave.nquindexer.IndexerTask"> + <classpath refid="nw-cms.jar.path"/> + </taskdef> - <delete> - <fileset dir="${frameset.base.dir}/content/search" includes="*.props"/> - </delete> + <echo>Indexing html files in ${frameset.base.dir}/content</echo> - <delete file="xx.html"/> - - </target> + <indexertask htmldir="${frameset.base.dir}/content" indexerLanguage="${indexer-language}"/> - <target name="webhelp" depends="validate,chunk,index"/> + <delete> + <fileset dir="${frameset.base.dir}/content/search" includes="*.props"/> + </delete> - <target name="build-indexer"> + <delete file="xx.html"/> - <javac - srcdir="indexer/src" - destdir="indexer/lib" - includes="com/nexwave/nsidita/*.java com/nexwave/nquindexer/*.java" - classpath="${ant.jar}"/> - - <jar - destfile="indexer/lib/nw-cms.jar" - basedir="indexer/lib" - includes="com/**"/> - - <delete dir="indexer/lib/com"/> - - </target> + </target> - <target name="zip" depends="webhelp"> - <zip destfile="../docbook-webhelp.zip" - basedir=".." - includes="docbook-webhelp/**"/> - </target> + <target name="webhelp" depends="validate,chunk,index"/> - <target name="clean"> - <delete dir="${frameset.base.dir}"/> - </target> + <target name="build-indexer"> - <target name="help"> - <echo>Usage:</echo> - <echo>doc: Generate the documentation in the doc dir and index it.</echo> - <echo>chunk: Generate the frameset.</echo> - <echo>index: Index the content.</echo> - <echo>build-indexer: Rebuilds the indexer.</echo> - </target> + <javac + srcdir="indexer/src" + destdir="indexer/lib" + includes="com/nexwave/nsidita/*.java com/nexwave/nquindexer/*.java" + classpath="${ant.jar}"/> + <jar + destfile="indexer/lib/nw-cms.jar" + basedir="indexer/lib" + includes="com/**"/> + + <delete dir="indexer/lib/com"/> + + </target> + + <target name="zip" depends="webhelp"> + <zip destfile="../docbook-webhelp.zip" + basedir=".." + includes="docbook-webhelp/**"/> + </target> + + <target name="clean"> + <delete dir="${frameset.base.dir}"/> + </target> + + <target name="help"> + <echo>Usage:</echo> + <echo>doc: Generate the documentation in the doc dir and index it.</echo> + <echo>chunk: Generate the frameset.</echo> + <echo>index: Index the content.</echo> + <echo>build-indexer: Rebuilds the indexer.</echo> + </target> + </project> Modified: branches/webhelp/xsl/webhelp/indexer/lib/nw-cms.jar =================================================================== (Binary files differ) Modified: branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/IndexerTask.java =================================================================== --- branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/IndexerTask.java 2010-07-17 14:17:42 UTC (rev 8734) +++ branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/IndexerTask.java 2010-07-17 19:48:06 UTC (rev 8735) @@ -253,7 +253,10 @@ //perf measurement Date dateEnd = new Date(); long diff = dateEnd.getTime() - dateStart.getTime(); - System.out.println("Delay = " + diff/1000 + " sec"); + if(diff<1000) + System.out.println("Delay = " + diff + " milliseconds"); + else + System.out.println("Delay = " + diff/1000 + " seconds"); }else { System.out.println(txt_wrong_dita_basedir); return; @@ -290,10 +293,10 @@ // Get the list of the props file containing the words to remove (not the punctuation) DirList props = new DirList(inputDir, "^(?!(punctuation)).*\\.props$", 1); ArrayList<File> wordsList = props.getListFiles(); - System.out.println("props files:"+wordsList); - //TODO all properties are taken toa single arraylist. does it ok?. +// System.out.println("props files:"+wordsList); + //TODO all properties are taken to a single arraylist. does it ok?. Properties enProps =new Properties (); - String propsDir = new String (inputDir.getPath().concat(File.separator).concat(searchdir)); + String propsDir = inputDir.getPath().concat(File.separator).concat(searchdir); // Init the lists which will contain the words and chars to remove cleanUpStrings = new ArrayList<String>(); @@ -301,30 +304,29 @@ try { // Retrieve words to remove - for (int i =0; i<wordsList.size(); i++) - { - ftemp = wordsList.get(i); - if (ftemp.exists()){ - enProps.load(input = new FileInputStream(ftemp.getAbsolutePath())); - input.close(); - c = enProps.values(); - cleanUpStrings.addAll(c); - enProps.clear(); - } - } + for (File aWordsList : wordsList) { + ftemp = aWordsList; + if (ftemp.exists()) { + enProps.load(input = new FileInputStream(ftemp.getAbsolutePath())); + input.close(); + c = enProps.values(); + cleanUpStrings.addAll(c); + enProps.clear(); + } + } // Retrieve char to remove (punctuation for ex.) - for (int i =0; i<punctuationFiles.length; i++) - { - tempStr = propsDir.concat(File.separator).concat(punctuationFiles[i]); - ftemp = new File (tempStr); - if (ftemp.exists()){ - enProps.load(input = new FileInputStream(tempStr)); - input.close(); - c = enProps.values(); - cleanUpChars.addAll(c); - enProps.clear(); } - } + for (String punctuationFile : punctuationFiles) { + tempStr = propsDir.concat(File.separator).concat(punctuationFile); + ftemp = new File(tempStr); + if (ftemp.exists()) { + enProps.load(input = new FileInputStream(tempStr)); + input.close(); + c = enProps.values(); + cleanUpChars.addAll(c); + enProps.clear(); + } + } } catch (IOException e) { e.printStackTrace(); Modified: branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/SaxHTMLIndex.java =================================================================== --- branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/SaxHTMLIndex.java 2010-07-17 14:17:42 UTC (rev 8734) +++ branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/SaxHTMLIndex.java 2010-07-17 19:48:06 UTC (rev 8735) @@ -77,7 +77,7 @@ String str = cleanBuffer(strbf); str = str.replaceAll("\\s+"," "); //there's still redundant spaces in the middle - System.out.println(file.toString()+" "+ str +"\n"); +// System.out.println(file.toString()+" "+ str +"\n"); String[] items = str.split("\\s"); //contains all the words in the array //get items one-by-one, tunnel through the stemmer, and get the stem. @@ -100,9 +100,9 @@ else //if no stemmer available for the particular language stemmedItems = items; - for(String stemmedItem: stemmedItems){ + /* for(String stemmedItem: stemmedItems){ System.out.print(stemmedItem+"| "); - } + }*/ //items: remove the duplicated strings first HashSet <String> tempSet = new HashSet<String>(); Deleted: branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/EnglishStemmer.java =================================================================== --- branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/EnglishStemmer.java 2010-07-17 14:17:42 UTC (rev 8734) +++ branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/EnglishStemmer.java 2010-07-17 19:48:06 UTC (rev 8735) @@ -1,625 +0,0 @@ -package com.nexwave.stemmer; - -/* - - Porter stemmer in Java. The original paper is in - - Porter, 1980, An algorithm for suffix stripping, Program, Vol. 14, - no. 3, pp 130-137, - - See also http://www.tartarus.org/~martin/PorterStemmer - - History: - - Release 1 - - Bug 1 (reported by Gonzalo Parra 16/10/99) fixed as marked below. - The words 'aed', 'eed', 'oed' leave k at 'a' for step 3, and b[k-1] - is then out outside the bounds of b. - - Release 2 - - Similarly, - - Bug 2 (reported by Steve Dyrdahl 22/2/00) fixed as marked below. - 'ion' by itself leaves j = -1 in the test for 'ion' in step 5, and - b[j] is then outside the bounds of b. - - Release 3 - - Considerably revised 4/9/00 in the light of many helpful suggestions - from Brian Goetz of Quiotix Corporation (br...@qu...). - - Release 4 - -*/ - -import java.io.*; - -/** - * Stemmer, implementing the Porter Stemming Algorithm - * <p/> - * The Stemmer class transforms a word into its root form. The input - * word can be provided a character at time (by calling add()), or at once - * by calling one of the various stem(something) methods. - */ - -public class EnglishStemmer extends Stemmer { - private char[] b; - private int i, /* offset into b */ - i_end, /* offset to end of stemmed word */ - j, k; - private static final int INC = 50; - /* unit of size whereby b is increased */ - - public EnglishStemmer() { - b = new char[INC]; - i = 0; - i_end = 0; - } - - /** - * Add a character to the word being stemmed. When you are finished - * adding characters, you can call stem(void) to stem the word. - */ - - public void add(char ch) { - if (i == b.length) { - char[] new_b = new char[i + INC]; - for (int c = 0; c < i; c++) new_b[c] = b[c]; - b = new_b; - } - b[i++] = ch; - } - - - /** - * Adds wLen characters to the word being stemmed contained in a portion - * of a char[] array. This is like repeated calls of add(char ch), but - * faster. - */ - - public void add(char[] w, int wLen) { - if (i + wLen >= b.length) { - char[] new_b = new char[i + wLen + INC]; - for (int c = 0; c < i; c++) new_b[c] = b[c]; - b = new_b; - } - for (int c = 0; c < wLen; c++) b[i++] = w[c]; - } - - /** - * After a word has been stemmed, it can be retrieved by toString(), - * or a reference to the internal buffer can be retrieved by getResultBuffer - * and getResultLength (which is generally more efficient.) - */ - public String toString() { - return new String(b, 0, i_end); - } - - /** - * Returns the length of the word resulting from the stemming process. - */ - public int getResultLength() { - return i_end; - } - - /** - * Returns a reference to a character buffer containing the results of - * the stemming process. You also need to consult getResultLength() - * to determine the length of the result. - */ - public char[] getResultBuffer() { - return b; - } - - /* cons(i) is true <=> b[i] is a consonant. */ - - private final boolean cons(int i) { - switch (b[i]) { - case 'a': - case 'e': - case 'i': - case 'o': - case 'u': - return false; - case 'y': - return (i == 0) ? true : !cons(i - 1); - default: - return true; - } - } - - /* m() measures the number of consonant sequences between 0 and j. if c is - a consonant sequence and v a vowel sequence, and <..> indicates arbitrary - presence, - - <c><v> gives 0 - <c>vc<v> gives 1 - <c>vcvc<v> gives 2 - <c>vcvcvc<v> gives 3 - .... - */ - - private final int m() { - int n = 0; - int i = 0; - while (true) { - if (i > j) return n; - if (!cons(i)) break; - i++; - } - i++; - while (true) { - while (true) { - if (i > j) return n; - if (cons(i)) break; - i++; - } - i++; - n++; - while (true) { - if (i > j) return n; - if (!cons(i)) break; - i++; - } - i++; - } - } - - /* vowelinstem() is true <=> 0,...j contains a vowel */ - - private final boolean vowelinstem() { - int i; - for (i = 0; i <= j; i++) if (!cons(i)) return true; - return false; - } - - /* doublec(j) is true <=> j,(j-1) contain a double consonant. */ - - private final boolean doublec(int j) { - if (j < 1) return false; - if (b[j] != b[j - 1]) return false; - return cons(j); - } - - /* cvc(i) is true <=> i-2,i-1,i has the form consonant - vowel - consonant - and also if the second c is not w,x or y. this is used when trying to - restore an e at the end of a short word. e.g. - - cav(e), lov(e), hop(e), crim(e), but - snow, box, tray. - - */ - - private final boolean cvc(int i) { - if (i < 2 || !cons(i) || cons(i - 1) || !cons(i - 2)) return false; - { - int ch = b[i]; - if (ch == 'w' || ch == 'x' || ch == 'y') return false; - } - return true; - } - - private final boolean ends(String s) { - int l = s.length(); - int o = k - l + 1; - if (o < 0) return false; - for (int i = 0; i < l; i++) if (b[o + i] != s.charAt(i)) return false; - j = k - l; - return true; - } - - /* setto(s) sets (j+1),...k to the characters in the string s, readjusting - k. */ - - private final void setto(String s) { - int l = s.length(); - int o = j + 1; - for (int i = 0; i < l; i++) b[o + i] = s.charAt(i); - k = j + l; - } - - /* r(s) is used further down. */ - - private final void r(String s) { - if (m() > 0) setto(s); - } - - /* step1() gets rid of plurals and -ed or -ing. e.g. - - caresses -> caress - ponies -> poni - ties -> ti - caress -> caress - cats -> cat - - feed -> feed - agreed -> agree - disabled -> disable - - matting -> mat - mating -> mate - meeting -> meet - milling -> mill - messing -> mess - - meetings -> meet - - */ - - private final void step1() { - if (b[k] == 's') { - if (ends("sses")) k -= 2; - else if (ends("ies")) setto("i"); - else if (b[k - 1] != 's') k--; - } - if (ends("eed")) { - if (m() > 0) k--; - } else if ((ends("ed") || ends("ing")) && vowelinstem()) { - k = j; - if (ends("at")) setto("ate"); - else if (ends("bl")) setto("ble"); - else if (ends("iz")) setto("ize"); - else if (doublec(k)) { - k--; - { - int ch = b[k]; - if (ch == 'l' || ch == 's' || ch == 'z') k++; - } - } else if (m() == 1 && cvc(k)) setto("e"); - } - } - - /* step2() turns terminal y to i when there is another vowel in the stem. */ - - private final void step2() { - if (ends("y") && vowelinstem()) b[k] = 'i'; - } - - /* step3() maps double suffices to single ones. so -ization ( = -ize plus - -ation) maps to -ize etc. note that the string before the suffix must give - m() > 0. */ - - private final void step3() { - if (k == 0) return; /* For Bug 1 */ - switch (b[k - 1]) { - case 'a': - if (ends("ational")) { - r("ate"); - break; - } - if (ends("tional")) { - r("tion"); - break; - } - break; - case 'c': - if (ends("enci")) { - r("ence"); - break; - } - if (ends("anci")) { - r("ance"); - break; - } - break; - case 'e': - if (ends("izer")) { - r("ize"); - break; - } - break; - case 'l': - if (ends("bli")) { - r("ble"); - break; - } - if (ends("alli")) { - r("al"); - break; - } - if (ends("entli")) { - r("ent"); - break; - } - if (ends("eli")) { - r("e"); - break; - } - if (ends("ousli")) { - r("ous"); - break; - } - break; - case 'o': - if (ends("ization")) { - r("ize"); - break; - } - if (ends("ation")) { - r("ate"); - break; - } - if (ends("ator")) { - r("ate"); - break; - } - break; - case 's': - if (ends("alism")) { - r("al"); - break; - } - if (ends("iveness")) { - r("ive"); - break; - } - if (ends("fulness")) { - r("ful"); - break; - } - if (ends("ousness")) { - r("ous"); - break; - } - break; - case 't': - if (ends("aliti")) { - r("al"); - break; - } - if (ends("iviti")) { - r("ive"); - break; - } - if (ends("biliti")) { - r("ble"); - break; - } - break; - case 'g': - if (ends("logi")) { - r("log"); - break; - } - } - } - - /* step4() deals with -ic-, -full, -ness etc. similar strategy to step3. */ - - private final void step4() { - switch (b[k]) { - case 'e': - if (ends("icate")) { - r("ic"); - break; - } - if (ends("ative")) { - r(""); - break; - } - if (ends("alize")) { - r("al"); - break; - } - break; - case 'i': - if (ends("iciti")) { - r("ic"); - break; - } - break; - case 'l': - if (ends("ical")) { - r("ic"); - break; - } - if (ends("ful")) { - r(""); - break; - } - break; - case 's': - if (ends("ness")) { - r(""); - break; - } - break; - } - } - - /* step5() takes off -ant, -ence etc., in context <c>vcvc<v>. */ - - private final void step5() { - if (k == 0) return; /* for Bug 1 */ - switch (b[k - 1]) { - case 'a': - if (ends("al")) break; - return; - case 'c': - if (ends("ance")) break; - if (ends("ence")) break; - return; - case 'e': - if (ends("er")) break; - return; - case 'i': - if (ends("ic")) break; - return; - case 'l': - if (ends("able")) break; - if (ends("ible")) break; - return; - case 'n': - if (ends("ant")) break; - if (ends("ement")) break; - if (ends("ment")) break; - /* element etc. not stripped before the m */ - if (ends("ent")) break; - return; - case 'o': - if (ends("ion") && j >= 0 && (b[j] == 's' || b[j] == 't')) break; - /* j >= 0 fixes Bug 2 */ - if (ends("ou")) break; - return; - /* takes care of -ous */ - case 's': - if (ends("ism")) break; - return; - case 't': - if (ends("ate")) break; - if (ends("iti")) break; - return; - case 'u': - if (ends("ous")) break; - return; - case 'v': - if (ends("ive")) break; - return; - case 'z': - if (ends("ize")) break; - return; - default: - return; - } - if (m() > 1) k = j; - } - - /* step6() removes a final -e if m() > 1. */ - - private final void step6() { - j = k; - if (b[k] == 'e') { - int a = m(); - if (a > 1 || a == 1 && !cvc(k - 1)) k--; - } - if (b[k] == 'l' && doublec(k) && m() > 1) k--; - } - - /** - * Stem the word placed into the Stemmer buffer through calls to add(). - * Returns true if the stemming process resulted in a word different - * from the input. You can retrieve the result with - * getResultLength()/getResultBuffer() or toString(). - */ - public void stem() { - k = i - 1; - if (k > 1) { - step1(); - step2(); - step3(); - step4(); - step5(); - step6(); - } - i_end = k + 1; - i = 0; - } - - /** - * stems a given word and returns the stemmed output as a string. converts the word to lowercase before stem. - * - * @param word the word that needs to be stemmed ex: Technical - * @return stemmed word ex: technic - */ - public String doStem(String word) { - word = word.trim().toLowerCase(); - add(word.toCharArray(), word.length()); - stem(); - - return this.toString(); - } - - /** - * stems a given array of words and returns the stemmed output as a string array. converts the words to lowercase before stem. - * - * @param words string array words that needs to be stemmed ex: {"Technical", "publications"} - * @return stemmed array ex: {"technic", "public"} - */ - public String[] doStem(String[] words) { - String[] stemmedWords = new String[words.length]; - for (int i = 0; i < words.length; i++) { - String word = words[i]; - word = word.trim().toLowerCase(); - add(word.toCharArray(), word.length()); - stem(); - stemmedWords[i] = this.toString(); - - } - return stemmedWords; - } - - /** - * Test program for demonstrating the Stemmer. It reads text from a - * a list of files, stems each word, and writes the result to standard - * output. Note that the word stemmed is expected to be in lower case: - * forcing lower case must be done outside the Stemmer class. - * Usage: Stemmer file-name file-name ... - */ - public static void main(String[] args) { - EnglishStemmer s = new EnglishStemmer(); - - String[] words = "common use requirement for Technical publications groups is to produce a Web-based help format that includes a table of contents pane, a search feature".split("\\s+"); - for (String word : words) { - System.out.print(s.doStem(word) + " "); - } - - System.out.println("Test2========================================="); - - char[] w = new char[501]; - //for each file, - for (int i = 0; i < args.length; i++) - try { - FileInputStream in = new FileInputStream(args[i]); - - try { - while (true) - - { - int ch = in.read(); - if (Character.isLetter((char) ch)) { - int j = 0; - while (true) { - ch = Character.toLowerCase((char) ch); - w[j] = (char) ch; - if (j < 500) j++; - ch = in.read(); - if (!Character.isLetter((char) ch)) { - /* to test add(char ch) */ - for (int c = 0; c < j; c++) s.add(w[c]); - - /* or, to test add(char[] w, int j) */ - /* s.add(w, j); */ - - s.stem(); - { - String u; - - // and now, to test toString() : - u = s.toString(); - - // to test getResultBuffer(), getResultLength() : - u = new String(s.getResultBuffer(), 0, s.getResultLength()); - - System.out.print(u); - } - break; - } - } - } - if (ch < 0) break; - System.out.print((char) ch); - } - } - catch (IOException e) { - System.out.println("error reading " + args[i]); - break; - } - } - catch (FileNotFoundException e) { - System.out.println("file " + args[i] + " not found"); - break; - } - } -} Modified: branches/webhelp/xsl/webhelp/template/common/css/positioning.css =================================================================== --- branches/webhelp/xsl/webhelp/template/common/css/positioning.css 2010-07-17 14:17:42 UTC (rev 8734) +++ branches/webhelp/xsl/webhelp/template/common/css/positioning.css 2010-07-17 19:48:06 UTC (rev 8735) @@ -35,20 +35,20 @@ top: 90px; bottom: 0; left: 0; - width: 230px; - margin: 0 0 0 10px; + width: 280px; z-index: 1500; + border-right:2px solid #CCCCCC; } #content { position: relative; top: 90px; /* left: 240px;*/ right: auto; /* bottom: 20px; */ - margin: 0px 0px 0px 240px; + margin: 0px 0px 0px 280px; width: auto; height: inherit; padding-left: 5px; - padding-right: 12px; + padding-right: 30px; color: #000000; border-left: 2px solid #cccccc; /*overflow :scroll;*/ z-index: 1000; @@ -57,9 +57,11 @@ #content h1, #content h2 { color: #cc0000; } + .navfooter { bottom: 2%; } + .pointLeft { background: url("../images/showHideTreeIcons.png") 0 0 no-repeat; height: 28px; @@ -67,9 +69,54 @@ display: block; font-size: 0; } + .pointRight { background: url("../images/showHideTreeIcons.png") -15px 0 no-repeat; height: 28px; display: block; font-size: 0; -} \ No newline at end of file +} + +/* Search results */ + +.searchExpression { + color: #0050A0; + background-color: #EBEFF8; + font-size: 12pt; + +} + +ul.searchresult li a { + text-decoration: none; + color: #0050A0; + +} + +ul.searchresult li { + color: #0050A0; +} + +.shortdesc { + color: #0053AC; + margin-bottom: 30px; + margin-left: 20px; +} + +.shortdesclink { + color: gray; + font-size: 9pt; +} + +.searchText { + border: #BFCEE9 solid 1pt; + width: 11em +} + +.searchButton { + background: #EBEFF8; + color: #0050A0; + border: #BFCEE9 solid 1pt; + font-weight: bold; + font-size: 10pt +} + Modified: branches/webhelp/xsl/webhelp/template/common/main.js =================================================================== --- branches/webhelp/xsl/webhelp/template/common/main.js 2010-07-17 14:17:42 UTC (rev 8734) +++ branches/webhelp/xsl/webhelp/template/common/main.js 2010-07-17 19:48:06 UTC (rev 8735) @@ -106,7 +106,7 @@ } else { //Show the TOC showHideButton.removeClass('pointRight').addClass('pointLeft'); - content.css("margin", "0 0 0 240px"); + content.css("margin", "0 0 0 280px"); leftNavigation.css("display","block"); showHideButton.attr("title", "Show the TOC Tree"); } Modified: branches/webhelp/xsl/webhelp/template/content/search/nwSearchFnt.js =================================================================== --- branches/webhelp/xsl/webhelp/template/content/search/nwSearchFnt.js 2010-07-17 14:17:42 UTC (rev 8734) +++ branches/webhelp/xsl/webhelp/template/content/search/nwSearchFnt.js 2010-07-17 19:48:06 UTC (rev 8735) @@ -27,12 +27,12 @@ expressionInput = document.ditaSearch_Form.textToSearch.value //Set a cookie to store the searched keywords - $.cookie('textToSearch', expressionInput); + $.cookie('textToSearch', expressionInput); if (expressionInput.length < 1) { - // expression invalide (vide) + // expression invalide (vide) alert(txt_enter_at_least_1_char); // reactive la fenetre de search (utile car cadres) document.ditaSearch_Form.textToSearch.focus(); @@ -47,6 +47,7 @@ } } +var stemQueryMap = new Array(); // A hashtable which maps stems to query words /* This function parses the search expression, loads the indices and displays the results*/ function Effectuer_recherche(expressionInput) { @@ -60,8 +61,8 @@ scriptLetterTab = new scriptfirstchar(); // Array containing the first letter of each word to look for var scriptsarray = new Array(); // Array with the name of the scripts to load var wordsList = new Array(); // Array with the words to look for - var stemmedWordsList = new Array(); // Array with the words to look for - var cleanwordsList = new Array(); // Array with the words to look for after removing spaces + var cleanwordsList = new Array(); // Array with the words to look for + var stemmedWordsList = new Array(); // Array with the words to look for after removing spaces var listNumerosDesFicStr = ""; var ou_recherche = true; var linkTab = new Array(); @@ -69,56 +70,64 @@ var fileAndWordList = new Array(); var txt_wordsnotfound = ""; + /*nqu: expressionInput, la recherche est lower cased, plus remplacement des char speciaux*/ searchFor = expressionInput.toLowerCase().replace(/<\//g, "_st_").replace(/\$_/g, "_di_").replace(/\.|%2C|%3B|%21|%3A|@|\/|\*/g, " ").replace(/(%20)+/g, " ").replace(/_st_/g, "</").replace(/_di_/g, "%24_") - searchFor = searchFor.replace(/ +/g, " ") - searchFor = searchFor.replace(/ $/, "").replace(/^ /, "") + searchFor = searchFor.replace(/ +/g, " "); + searchFor = searchFor.replace(/ $/, "").replace(/^ /, ""); wordsList = searchFor.split(" "); + wordsList.sort(); + for(var j in wordsList){ + var word = wordsList[j]; + stemQueryMap[stemmer(word)] = word; + } + + //stemmedWordsList is the stemmed list of words separated by spaces. + for (t in wordsList) { + wordsList[t] = wordsList[t].replace(/(%22)|^-/g, "") + if (wordsList[t] != "%20") { + scriptLetterTab.add(wordsList[t].charAt(0)); + cleanwordsList.push(wordsList[t]); + } + } + //Do the stemming using Porter's stemming algorithm - for(var i=0;i<wordsList.length;i++){ - var stemWord = stemmer(wordsList[i]); + for (var i = 0; i < cleanwordsList.length; i++) { + var stemWord = stemmer(cleanwordsList[i]); stemmedWordsList.push(stemWord); } - - stemmedWordsList.sort(); - //stemmedWordsList is the stemmed list of words separated by spaces. - for (t in stemmedWordsList) { - stemmedWordsList[t] = stemmedWordsList[t].replace(/(%22)|^-/g, "") - if (stemmedWordsList[t] != "%20") { - scriptLetterTab.add(stemmedWordsList[t].charAt(0)); - cleanwordsList.push(stemmedWordsList[t]); - } - } //load the scripts with the indices: the following lines do not work on the server. To be corrected /*if (IEBrowser) { scriptsarray = loadTheIndexScripts (scriptLetterTab); } */ - + /** + * Compare with the indexed words (in the w[] array), and push words that are in it to tempTab. + */ var tempTab = new Array(); - for (t in cleanwordsList) { - if (w[cleanwordsList[t].toString()] == undefined) { - txt_wordsnotfound += cleanwordsList[t] + " "; + for (t in stemmedWordsList) { + if (w[stemmedWordsList[t].toString()] == undefined) { + txt_wordsnotfound += stemmedWordsList[t] + " "; } else { - tempTab.push(cleanwordsList[t]); + tempTab.push(stemmedWordsList[t]); } } - cleanwordsList = tempTab; + stemmedWordsList = tempTab; - if (cleanwordsList.length) { + if (stemmedWordsList.length) { // recherche 'et' et 'ou' en une fois - fileAndWordList = SortResults(cleanwordsList); + fileAndWordList = SortResults(stemmedWordsList); cpt = fileAndWordList.length; for (i = cpt - 1; i >= 0; i--) { if (fileAndWordList[i] != undefined) { - linkTab.push("<p>" + txt_results_for + " " + "<span class=\"searchExpression\">" + fileAndWordList[i][0].motsliste + "</span>" + "</p>"); + linkTab.push("<p>" + txt_results_for + " " + "<span class=\"searchExpression\">" + fileAndWordList[i][0].motslisteDisplay + "</span>" + "</p>"); linkTab.push("<ul class='searchresult'>"); for (t in fileAndWordList[i]) { @@ -148,7 +157,7 @@ } } } - + var results=""; if (linkTab.length > 0) { @@ -374,7 +383,7 @@ //alert ("listNumerosDesFicStr "+listNumerosDesFicStr); tab = listNumerosDesFicStr.split(","); - //for each file (file's index): + //for each file (file's index): for (t2 in tab) { temp = tab[t2].toString(); if (fileAndWordList[temp] == undefined) { @@ -393,16 +402,23 @@ var temptab = new Array(); for (t in fileAndWordList) { tab = fileAndWordList[t].split(','); - temptab.push(new resultPerFile(t, fileAndWordList[t], tab.length)); + + var tempDisplay = new Array(); + for (var x in tab) { + tempDisplay.push(stemQueryMap[tab[x]]); //get the original word from the stem word. + } + var tempDispString = tempDisplay.join(", "); + + temptab.push(new resultPerFile(t, fileAndWordList[t], tab.length, tempDispString)); fileAndWordListValuesOnly.push(fileAndWordList[t]); } - //alert("t"+fileAndWordListValuesOnly.toString()); + //alert("t"+fileAndWordListValuesOnly.toString()); fileAndWordListValuesOnly = unique(fileAndWordListValuesOnly); fileAndWordListValuesOnly = fileAndWordListValuesOnly.sort(compare_nbMots); - //alert("t: "+fileAndWordListValuesOnly.join(';')); + //alert("t: "+fileAndWordListValuesOnly.join(';')); var listToOutput = new Array(); @@ -422,10 +438,11 @@ return listToOutput; } -function resultPerFile(filenb, motsliste, motsnb) { +function resultPerFile(filenb, motsliste, motsnb, motslisteDisplay) { this.filenb = filenb; this.motsliste = motsliste; this.motsnb = motsnb; + this.motslisteDisplay= motslisteDisplay; } function compare_nbMots(s1, s2) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dc...@us...> - 2010-07-18 04:25:38
|
Revision: 8739 http://docbook.svn.sourceforge.net/docbook/?rev=8739&view=rev Author: dcramer Date: 2010-07-18 04:25:31 +0000 (Sun, 18 Jul 2010) Log Message: ----------- Copy doc images from source tree if they're in a folder named images. Only copy the *.props file, default.props, and punctuation.props, not all of them Modified Paths: -------------- branches/webhelp/xsl/webhelp/build.xml branches/webhelp/xsl/webhelp/docsrc/readme.xml Modified: branches/webhelp/xsl/webhelp/build.xml =================================================================== --- branches/webhelp/xsl/webhelp/build.xml 2010-07-17 21:10:20 UTC (rev 8738) +++ branches/webhelp/xsl/webhelp/build.xml 2010-07-18 04:25:31 UTC (rev 8739) @@ -1,125 +1,141 @@ <project default="help" name="mainbuild"> - <loadproperties srcFile="build.properties"/> - <dirname property="ant.file.dir" file="${ant.file.mainbuild}"/> + <loadproperties srcFile="build.properties"/> + <dirname property="ant.file.dir" file="${ant.file.mainbuild}"/> - <xmlcatalog id="catalog"> - <catalogpath> - <pathelement location="${docbook-xsl-catalog}"/> - </catalogpath> - <dtd publicId="-//OASIS//DTD DocBook XML V4.5//EN" location="${docbookx.dtd}"/> - </xmlcatalog> + <xmlcatalog id="catalog"> + <catalogpath> + <pathelement location="${docbook-xsl-catalog}"/> + </catalogpath> + <dtd publicId="-//OASIS//DTD DocBook XML V4.5//EN" location="${docbookx.dtd}"/> + </xmlcatalog> - <property environment="env"/> - <property name="ant.jar" value="${env.ANT_HOME}/lib/ant.jar"/> + <property environment="env"/> + <property name="ant.jar" value="${env.ANT_HOME}/lib/ant.jar"/> - <condition property="perform-validation"> - <equals arg1="${validate}" arg2="true"/> - </condition> - <condition property="skip-search-indexing"> - <equals arg1="${exclude.search.from.chunked.html}" arg2="true"/> - </condition> + <condition property="perform-validation"> + <equals arg1="${validate}" arg2="true"/> + </condition> + <condition property="skip-search-indexing"> + <equals arg1="${exclude.search.from.chunked.html}" arg2="true"/> + </condition> - <target name="validate" if="perform-validation"> - <xmlvalidate file="${input-xml}"> - <xmlcatalog refid="catalog"/> - </xmlvalidate> - </target> + <target name="validate" if="perform-validation"> + <xmlvalidate file="${input-xml}"> + <xmlcatalog refid="catalog"/> + </xmlvalidate> + </target> - <target name="chunk" depends="clean"> + <target name="chunk" depends="clean"> + + <mkdir dir="${frameset.base.dir}"/> + <xslt + in="${input-xml}" + out="${frameset.base.dir}/dummy.html" + style="${ant.file.dir}/xsl/webhelp.xsl" + scanincludeddirectories="false" + classpath="${xslt-processor-classpath}"> + <xmlcatalog refid="catalog"/> + <param name="chunked.toc.all.open" expression="${chunked.toc.all.open}" if="chunked.toc.all.open"/> + <param name="exclude.search.from.chunked.html" expression="${exclude.search.from.chunked.html}" + if="exclude.search.from.chunked.html"/> + <param name="output_file_name" expression="${output_file_name}"/> + <param name="frameset.base.dir" expression="${frameset.base.dir}" if="frameset.base.dir"/> + <param name="indexer.language" expression="${indexer-language}" if="indexer-language"/> + <param name="chunk.frameset.start.filename" expression="${chunk.frameset.start.filename}" + if="chunk.frameset.start.filename"/> + </xslt> + + <delete file="${frameset.base.dir}/dummy.html"/> - <mkdir dir="${frameset.base.dir}"/> - <xslt - in="${input-xml}" - out="${frameset.base.dir}/dummy.html" - style="${ant.file.dir}/xsl/webhelp.xsl" - scanincludeddirectories="false" - classpath="${xslt-processor-classpath}"> - <xmlcatalog refid="catalog"/> - <param name="chunked.toc.all.open" expression="${chunked.toc.all.open}" if="chunked.toc.all.open"/> - <param name="exclude.search.from.chunked.html" expression="${exclude.search.from.chunked.html}" - if="exclude.search.from.chunked.html"/> - <param name="output_file_name" expression="${output_file_name}"/> - <param name="frameset.base.dir" expression="${frameset.base.dir}" if="frameset.base.dir"/> - <param name="indexer.language" expression="${indexer-language}" if="indexer-language"/> - <param name="chunk.frameset.start.filename" expression="${chunk.frameset.start.filename}" - if="chunk.frameset.start.filename"/> - </xslt> + <!-- Copy common content such as js files of tree, css etc. to template folder. They will be copied to doc folder. They are NOT page specific! --> + <copy todir="${frameset.base.dir}"> + <fileset dir="${ant.file.dir}/template"> + <include name="**/*"/> + <exclude name="**/content/search/*.props"/> + </fileset> + </copy> + <!-- We separate this out so we only copy the stopwords list for the indexer language --> + <copy todir="${frameset.base.dir}"> + <fileset dir="${ant.file.dir}/template"> + <include name="**/content/search/default.props"/> + <include name="**/content/search/punctuation.props"/> + <include name="**/content/search/${indexer-language}*.props"/> + </fileset> + </copy> + + <!--Deletes all the stemmers that are copied to doc/ folder. Then, adds only the needed stemmer--> + <delete dir="${frameset.base.dir}/content/search/stemmers"/> + <copy todir="doc/content/search/stemmers/" + file="template/content/search/stemmers/${indexer-language}_stemmer.js"/> - <delete file="${frameset.base.dir}/dummy.html"/> + <!-- Very simple-minded copy to handle the source document's images --> + <!-- TODO: Look at html help code that produces a manifest file...list of images --> + <!-- Customize webhelp.xsl to produce ant file to copy images used? --> + <copy todir="${frameset.base.dir}/content" failonerror="false"> + <fileset dir="${input-images-dir}"/> + </copy> - <!-- Copy common content such as js files of tree, css etc. to template folder. They will be copied to doc folder. They are NOT page specific! --> - <copy todir="${frameset.base.dir}"> - <fileset dir="${ant.file.dir}/template"> - <include name="**/*"/> - </fileset> - </copy> + </target> - <!--Deletes all the stemmers that are copied to doc/ folder. Then, adds only the needed stemmer--> - <delete dir="${frameset.base.dir}/content/search/stemmers"/> - <copy todir="doc/content/search/stemmers/" - file="template/content/search/stemmers/${indexer-language}_stemmer.js"/> + <target name="index" unless="skip-search-indexing"> - </target> + <path id="nw-cms.jar.path"> + <pathelement location="${ant.file.dir}/indexer/lib/nw-cms.jar"/> + </path> - <target name="index" unless="skip-search-indexing"> + <taskdef name="indexertask" + classname="com.nexwave.nquindexer.IndexerTask"> + <classpath refid="nw-cms.jar.path"/> + </taskdef> - <path id="nw-cms.jar.path"> - <pathelement location="${ant.file.dir}/indexer/lib/nw-cms.jar"/> - </path> + <echo>Indexing html files in ${frameset.base.dir}/content</echo> - <taskdef name="indexertask" - classname="com.nexwave.nquindexer.IndexerTask"> - <classpath refid="nw-cms.jar.path"/> - </taskdef> + <indexertask htmldir="${frameset.base.dir}/content" indexerLanguage="${indexer-language}"/> - <echo>Indexing html files in ${frameset.base.dir}/content</echo> + <delete> + <fileset dir="${frameset.base.dir}/content/search" includes="*.props"/> + </delete> - <indexertask htmldir="${frameset.base.dir}/content" indexerLanguage="${indexer-language}"/> + <delete file="xx.html"/> - <delete> - <fileset dir="${frameset.base.dir}/content/search" includes="*.props"/> - </delete> + </target> - <delete file="xx.html"/> + <target name="webhelp" depends="validate,chunk,index"/> - </target> + <target name="build-indexer"> - <target name="webhelp" depends="validate,chunk,index"/> + <javac + srcdir="indexer/src" + destdir="indexer/lib" + includes="com/nexwave/nsidita/*.java com/nexwave/nquindexer/*.java" + classpath="${ant.jar}"/> - <target name="build-indexer"> + <jar + destfile="indexer/lib/nw-cms.jar" + basedir="indexer/lib" + includes="com/**"/> - <javac - srcdir="indexer/src" - destdir="indexer/lib" - includes="com/nexwave/nsidita/*.java com/nexwave/nquindexer/*.java" - classpath="${ant.jar}"/> + <delete dir="indexer/lib/com"/> - <jar - destfile="indexer/lib/nw-cms.jar" - basedir="indexer/lib" - includes="com/**"/> + </target> - <delete dir="indexer/lib/com"/> + <target name="zip" depends="webhelp"> + <zip destfile="../webhelp-gsoc2010-beta.zip" + basedir=".." + includes="webhelp/**"/> + </target> - </target> + <target name="clean"> + <delete dir="${frameset.base.dir}"/> + </target> - <target name="zip" depends="webhelp"> - <zip destfile="../docbook-webhelp.zip" - basedir=".." - includes="docbook-webhelp/**"/> - </target> + <target name="help"> + <echo>Usage:</echo> + <echo>doc: Generate the documentation in the doc dir and index it.</echo> + <echo>chunk: Generate the frameset.</echo> + <echo>index: Index the content.</echo> + <echo>build-indexer: Rebuilds the indexer.</echo> + </target> - <target name="clean"> - <delete dir="${frameset.base.dir}"/> - </target> - - <target name="help"> - <echo>Usage:</echo> - <echo>doc: Generate the documentation in the doc dir and index it.</echo> - <echo>chunk: Generate the frameset.</echo> - <echo>index: Index the content.</echo> - <echo>build-indexer: Rebuilds the indexer.</echo> - </target> - </project> Modified: branches/webhelp/xsl/webhelp/docsrc/readme.xml =================================================================== --- branches/webhelp/xsl/webhelp/docsrc/readme.xml 2010-07-17 21:10:20 UTC (rev 8738) +++ branches/webhelp/xsl/webhelp/docsrc/readme.xml 2010-07-18 04:25:31 UTC (rev 8739) @@ -1,280 +1,436 @@ -<?xml version="1.0"?> -<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"> +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" +"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"> <book> <title>Web-based Help from DocBook XML Readme</title> + <bookinfo> <legalnotice> <para>Permission is hereby granted, free of charge, to any person - obtaining a copy of this software and associated documentation - files (the <quote>Software</quote>), to deal in the Software without - restriction, including without limitation the rights to use, - copy, modify, merge, publish, distribute, sublicense, and/or - sell copies of the Software, and to permit persons to whom the - Software is furnished to do so, subject to the following - conditions: <itemizedlist> + obtaining a copy of this software and associated documentation files + (the <quote>Software</quote>), to deal in the Software without + restriction, including without limitation the rights to use, copy, + modify, merge, publish, distribute, sublicense, and/or sell copies of + the Software, and to permit persons to whom the Software is furnished to + do so, subject to the following conditions: <itemizedlist> <listitem> - <para>The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software.</para> + <para>The above copyright notice and this permission notice shall + be included in all copies or substantial portions of the + Software.</para> </listitem> + <listitem> <para>Except as contained in this notice, the names of individuals - credited with contribution to this software shall not be used in - advertising or otherwise to promote the sale, use or other - dealings in this Software without prior written authorization - from the individuals in question.</para> + credited with contribution to this software shall not be used in + advertising or otherwise to promote the sale, use or other + dealings in this Software without prior written authorization from + the individuals in question.</para> </listitem> + <listitem> <para>Any stylesheet derived from this Software that is publically - distributed will be identified with a different name and the - version strings in any derived Software will be changed so that - no possibility of confusion between the derived package and this - Software will exist.</para> + distributed will be identified with a different name and the + version strings in any derived Software will be changed so that no + possibility of confusion between the derived package and this + Software will exist.</para> </listitem> - </itemizedlist> - </para> + </itemizedlist></para> + <formalpara> <title>Warranty:</title> + <para>THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL NORMAN WALSH OR ANY OTHER - CONTRIBUTOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE.</para> + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL NORMAN WALSH OR ANY OTHER CONTRIBUTOR BE LIABLE FOR + ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF + CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</para> </formalpara> - <para>This package is maintained by Kasun Gajasinghe, <email>kasunbg AT gmail DOT com</email> and David Cramer, <email>david AT thingbag DOT net</email>.</para> - <para>This package also includes the following software written and copyrighted by others:<itemizedlist> + + <para>This package is maintained by Kasun Gajasinghe, <email>kasunbg AT + gmail DOT com</email> and David Cramer, <email>david AT thingbag DOT + net</email>.</para> + + <para>This package also includes the following software written and + copyrighted by others:<itemizedlist> <listitem> - <para>Files in <filename class="directory">template/common/jquery</filename> are copyrighted by <ulink url="http://jquery.com/">JQuery</ulink> under the MIT License. The file <filename>jquery.cookie.js</filename> Copyright (c) 2006 Klaus Hartl under the MIT license.</para> + <para>Files in <filename + class="directory">template/common/jquery</filename> are + copyrighted by <ulink url="http://jquery.com/">JQuery</ulink> + under the MIT License. The file + <filename>jquery.cookie.js</filename> Copyright (c) 2006 Klaus + Hartl under the MIT license.</para> + <indexterm> <primary>jquery</primary> </indexterm> </listitem> + <listitem> - <para>All files in <filename class="directory">template/content/search</filename> and <filename class="directory">indexer</filename> are part of N. Quaine's htmlsearch DITA plugin, with modifications to fix bugs and make it work better with DocBook content. The htmlsearch DITA plugin is available from the <ulink url="http://tech.groups.yahoo.com/group/dita-users/files/Demos/">files page</ulink> of the DITA-users yahoogroup. The htmlsearch plugin was released under a BSD-style license. See <filename>indexer/license.txt</filename> for details. - <indexterm> - <primary>htmlsearch</primary> - </indexterm> - <indexterm> - <primary>DITA</primary> - <secondary>htmlsearch plugin</secondary> - </indexterm> - </para> + <para>All files in <filename + class="directory">template/content/search</filename> and <filename + class="directory">indexer</filename> are part of N. Quaine's + htmlsearch DITA plugin, with modifications to fix bugs and make it + work better with DocBook content. The htmlsearch DITA plugin is + available from the <ulink + url="http://tech.groups.yahoo.com/group/dita-users/files/Demos/">files + page</ulink> of the DITA-users yahoogroup. The htmlsearch plugin + was released under a BSD-style license. See + <filename>indexer/license.txt</filename> for details. <indexterm> + <primary>htmlsearch</primary> + </indexterm> <indexterm> + <primary>DITA</primary> + + <secondary>htmlsearch plugin</secondary> + </indexterm></para> </listitem> - </itemizedlist> - </para> + </itemizedlist></para> </legalnotice> + <releaseinfo>Version .01/Alpha</releaseinfo> + <copyright> <year>2008-2010</year> - <holder>Kasun Gajasinghe</holder> + + <holder>Kasun Gajasinghe</holder> + <holder>David Cramer</holder> </copyright> + <author> <firstname>David</firstname> + <surname>Cramer</surname> + <email>dcramer AT motive DOT com</email> + <email>david AT thingbag DOT net</email> </author> - <author> - <firstname>Kasun</firstname> - <surname>Gajasinghe</surname> - <email>kasunbg AT gmail DOT com</email> - </author> + + <author> + <firstname>Kasun</firstname> + + <surname>Gajasinghe</surname> + + <email>kasunbg AT gmail DOT com</email> + </author> + <pubdate>July 2010</pubdate> </bookinfo> + <chapter> <chapterinfo> <abstract> <!-- This becomes the brief description that appears in search results UNLESS there's a para or phrase with role="summary". If there is, then the role="summary" text wins. --> + <para>Overview of the package.</para> </abstract> </chapterinfo> + <title>Introduction</title> - <para>A common requirement for technical publications groups is to produce a Web-based help format that includes a table of contents pane, a search feature, and an index similar to what you get from the Microsoft HTML Help (.chm) format or Eclipse help. If the content is help for a Web application that is not exposed to the Internet or requires that the user be logged in, then it is impossible to use services like Google to add search. - <itemizedlist> + + <para>A common requirement for technical publications groups is to produce + a Web-based help format that includes a table of contents pane, a search + feature, and an index similar to what you get from the Microsoft HTML Help + (.chm) format or Eclipse help. If the content is help for a Web + application that is not exposed to the Internet or requires that the user + be logged in, then it is impossible to use services like Google to add + search. <itemizedlist> <title>Features</title> + <listitem> + <para>Full text search with stemming support for English and German. + Stemming support can be added for other languages if a stemmer is + implemented.</para> + </listitem> + + <listitem> + <para>Search results can include brief descriptions of the + target.</para> + </listitem> + + <listitem> <para>Table of contents pane with collapsable toc tree.</para> </listitem> + <listitem> - <para>Full-text search. Search results can include brief descriptions of the target. </para> + <para>Autosynchronization of content pane and TOC.</para> </listitem> + <listitem> - <para>Support for deep linking by simply linking to the page since no frameset is used.</para> + <para>TOC and search pane implemented without the use of a frameset. + </para> </listitem> + <listitem> - <para>An Ant <filename>build.xml</filename> file to generate output. You can use this build file by importing it into your own or use it as a model for integrating this output format into your own build system.</para> + <para>An Ant <filename>build.xml</filename> file to generate output. + You can use this build file by importing it into your own or use it + as a model for integrating this output format into your own build + system.</para> </listitem> - </itemizedlist> - <!--itemizedlist> - <title>Limitations and annoyances</title> - <listitem> - <para>You must use xhtml output because the search indexer cannot index html.</para> - </listitem> + </itemizedlist><itemizedlist> + <title>Enhancements planned as part of GSOC 2010</title> + <listitem> - <para>No support for stemming. If you search for "start" it will not find "started" and vice versa.</para> + <para>[DONE] Implement the toc and serach pane without using + frames.</para> </listitem> - <listitem> - <para>No support for boolean operators in the search.</para> - </listitem> + <listitem> - <para>Limited support for Asian languages. The search is limited to terms that appear as <sgmltag>keyword</sgmltag>s or in <sgmltag>indexterm</sgmltag>s.</para> + <para>[DONE] Add autosynchronization to the toc.</para> </listitem> + <listitem> - <para>A customization to the xsls is included to put any <sgmltag>indexterm</sgmltag>s in the <sgmltag class="emptytag">meta name="keywords"...</sgmltag> element. The main reason for doing this is to improve support for Asian languages and help compensate for the lack of stemming in the indexer. As implmented, this customization only supports situations where all sections or sect* elements are chunked. For example, if you have chunk.first.sections set to 0, any indexterms in the first sections will not be appended to the keywords list. </para> + <para>[DONE] Add stemmming support for English and one major + non-Asian language.</para> </listitem> - <listitem> - <para>By design, the indexer does not index <filename>index.html</filename> or <filename>ix01.html</filename>. Unfortunately, this is currently hard coded in the indexer. </para> - </listitem> - </itemizedlist--> - <itemizedlist> - <title>Enhancements planned as part of GSOC 2010</title> - <listitem> - <para>Add stemmming support for English and one major non-Asian language.</para> - </listitem> - <listitem> - <para>Improve the support for Japanese and Chinese.</para> - </listitem> - <listitem> - <para>Search highlighting.</para> - </listitem> - <listitem> - <para>Documentation for skinning and customization options.</para> - </listitem> - <listitem> - <para>A show/hide toc button.</para> - </listitem> - <listitem> - <para>Parameterize width of the TOC pane OR make the TOC pane resizable by the user.</para> - </listitem> - <listitem> - <para>Support for ns and non-ns DocBook stylesheets.</para> - </listitem> - <listitem> - <para>Skipping of next and prev links in the footer and header.</para> - </listitem> - <listitem> - <para>Moving of the header Next and Prev links to the banner</para> - </listitem> - </itemizedlist> - <itemizedlist> + + <listitem> + <para>[DONE] Add a show/hide toc button.</para> + </listitem> + + <listitem> + <para>[DONE] Move the header Next and Prev links to the + banner</para> + </listitem> + + <listitem> + <para>[DONE] Make indexer skip next and prev links in the footer and + header.</para> + </listitem> + + <listitem> + <para>Improve the support for Japanese and Chinese.</para> + </listitem> + + <listitem> + <para>Add search highlighting.</para> + </listitem> + + <listitem> + <para>Document skinning and customization options.</para> + </listitem> + + <listitem> + <para>Support 5.x/ns and 4.x/non-ns DocBook stylesheets.</para> + </listitem> + </itemizedlist><itemizedlist> <title>Future enhancements</title> - <listitem> - <para>Add "Expand all" and "Collapse all" buttons to the toc. </para> - </listitem> - <listitem> - <para>Add an option to use Lucene for server-side searches with toc state persisted on the server.</para> - </listitem> - <listitem> - <para>Sort search results based on relevance</para> - </listitem> + <listitem> - <para>Automate search results summary text:</para> - <itemizedlist> - <listitem> - <para>Automatically use the first non-heading content as the summary in the search results.</para> - </listitem> - <listitem> - <para>Automatically limit the size of the search description to something 140 characters.</para> - </listitem> - </itemizedlist> + <para>Add "Expand all" and "Collapse all" buttons to the toc.</para> </listitem> + <listitem> + <para>Add an option to use Lucene for server-side searches with toc + state persisted on the server.</para> + </listitem> + + <listitem> + <para>Sort search results based on relevance</para> + </listitem> + + <listitem> + <para>Parameterize width of the TOC pane OR make the TOC pane + resizable by the user.</para> + </listitem> + + <listitem> + <para>Automate search results summary text:</para> + + <itemizedlist> + <listitem> + <para>Automatically use the first non-heading content as the + summary in the search results.</para> + </listitem> + + <listitem> + <para>Automatically limit the size of the search description to + something 140 characters.</para> + </listitem> + </itemizedlist> + </listitem> + + <listitem> <para>Support boolean operators in search.</para> </listitem> - <listitem> - <para>Improve performance by moving the table of contents div out of each page and into a separate JavaScript file which then adds it to the page. </para> - </listitem> + <listitem> - <para>Add to the indexer the ability to specify a list of files or file patterns not to index. Currently it does not index <filename>index.html</filename> or <filename>ix01.html</filename>, which is generally appropriate, but it should be up to the user to decide.</para> + <para>Parameterize list of files to exclude from indexing. Currently + it's hard coded that we don't index <filename>index.html + </filename>and <filename>ix01.html</filename> (the legal notice and + index topics). It should be smarter and automatically not index the + index file even if it's not named + <filename>ix01.html</filename>.</para> </listitem> - <listitem> - <para>Add a parameter to make it possible to disable the search tab if it is not required.</para> - </listitem> - <listitem> - <para>Add an (optional) index tab populated by a separate JavaScript file.</para> - </listitem> - </itemizedlist> - </para> + + <listitem> + <para>Improve performance by moving the table of contents div out of + each page and into a separate JavaScript file which then adds it to + the page.</para> + </listitem> + + <listitem> + <para>Add to the indexer the ability to specify a list of files or + file patterns not to index. Currently it does not index + <filename>index.html</filename> or <filename>ix01.html</filename>, + which is generally appropriate, but it should be up to the user to + decide.</para> + </listitem> + + <listitem> + <para>Add a parameter to make it possible to disable the search tab + if it is not required.</para> + </listitem> + + <listitem> + <para>Add an (optional) index tab populated by a separate JavaScript + file.</para> + </listitem> + </itemizedlist></para> </chapter> + <chapter> <title>Using the package</title> - <para role="summary">The following sections describe how to install and use the package on Windows.</para> + + <para role="summary">The following sections describe how to install and + use the package on Windows.</para> + <section> <sectioninfo> <abstract> <para>Installation instructions</para> </abstract> </sectioninfo> - <title>Installation</title> + + <title>Obtaining, installing, and running the package</title> + <procedure> <title>To install the package on Windows</title> - <note> - <para>The examples in this procedure assume a Windows installation, but the process is the same in other environments, <foreignphrase>mutatis mutandis</foreignphrase>.</para> - </note> - <step> - <para>If necessary, install <ulink url="http://www.java.com/en/download/manual.jsp">Java 1.5</ulink> or higher. </para> - <substeps> - <step> - <para>Confirm that Java is installed and in your <envar>PATH</envar> by typing the following at a command prompt: <programlisting>java -version</programlisting></para> - </step> - </substeps> - </step> + + <note> + <para>The examples in this procedure assume a Windows installation, + but the process is the same in other environments, + <foreignphrase>mutatis mutandis</foreignphrase>.</para> + </note> + <step> - <para>If necessary, install <ulink url="http://ant.apache.org/bindownload.cgi">Apache Ant 1.6.5</ulink> or higher.</para> - <substeps> - <step> - <para>Unzip the Ant binary distribution to a convenient location on your system. For example: <filename>c:\Program Files</filename>.</para> - </step> - <step> - <para>Set the environment variable <envar>ANT_HOME</envar> to the top-level Ant directory. For example: <filename>c:\Program Files\apache-ant-1.7.1</filename>. <tip> - <para>See <ulink url="http://support.microsoft.com/kb/310519">How To Manage Environment Variables in Windows XP</ulink> for information on setting environment variables.</para> - </tip> -</para> - </step> - <step> - <para>Add the Ant <filename>bin</filename> directory to your <envar>PATH</envar>. For example: <filename>c:\Program Files\apache-ant-1.7.1\bin</filename></para> - </step> - <step> - <para>Confirm that Ant is installed by typing the following at a command prompt: <programlisting>ant -version</programlisting></para> - <note> - <para>If you see a message about the file <filename>tools.jar</filename> being missing, you can safely ignore it.</para> - </note> - </step> - </substeps> + <para>If necessary, install <ulink + url="http://www.java.com/en/download/manual.jsp">Java 1.5</ulink> or + higher.</para> + + <substeps> + <step> + <para>Confirm that Java is installed and in your + <envar>PATH</envar> by typing the following at a command prompt: + <programlisting>java -version</programlisting></para> + </step> + </substeps> </step> + <step> - <para>If necessary, download <ulink url="http://xml.apache.org/commons/dist">xml-commons-resolver.jar</ulink> and add it to your <envar>CLASSPATH</envar>. - <tip> - <para>When adding jar files to your <envar>CLASSPATH</envar>, be sure to include the jar file. For example: <filename>C:\programs\xml-commons-resolver-1.2\resolver.jar</filename>. Note that on Windows, the <envar>CLASSPATH</envar> is a semicolon delimited list of jar files and paths to java class files.</para> - </tip> - </para> + <para>If necessary, install <ulink + url="http://ant.apache.org/bindownload.cgi">Apache Ant 1.6.5</ulink> + or higher.</para> + + <substeps> + <step> + <para>Unzip the Ant binary distribution to a convenient location + on your system. For example: <filename>c:\Program + Files</filename>.</para> + </step> + + <step> + <para>Set the environment variable <envar>ANT_HOME</envar> to + the top-level Ant directory. For example: <filename>c:\Program + Files\apache-ant-1.7.1</filename>. <tip> + <para>See <ulink + url="http://support.microsoft.com/kb/310519">How To Manage + Environment Variables in Windows XP</ulink> for information + on setting environment variables.</para> + </tip></para> + </step> + + <step> + <para>Add the Ant <filename>bin</filename> directory to your + <envar>PATH</envar>. For example: <filename>c:\Program + Files\apache-ant-1.7.1\bin</filename></para> + </step> + + <step> + <para>Confirm that Ant is installed by typing the following at a + command prompt: <programlisting>ant -version</programlisting></para> + + <note> + <para>If you see a message about the file + <filename>tools.jar</filename> being missing, you can safely + ignore it.</para> + </note> + </step> + </substeps> </step> - <step> - <para>Download <ulink url="http://prdownloads.sourceforge.net/saxon/saxon6-5-5.zip">Saxon 6.5.x</ulink> and unzip the distribution to a convenient location on your filesystem. You will use the path to <filename>saxon.jar</filename> in <xref linkend="edit-build-properties"/> below.</para> - </step> + <step> - <para>Obtain the package. <!--ulink url="http://www.thingbag.net/docbook/docbook-webhelp.zip">docbook-webhelp.zip</ulink--> Currently, the webhelp package is only available through Subversion.</para> - <substeps> - <step> - <para>If necessary, install a <ulink url="http://en.wikipedia.org/wiki/Comparison_of_Subversion_clients">Subversion client</ulink>.</para> - </step> - <step> - <para>In a convenient location on your system, run the command <programlisting>svn co https://docbook.svn.sourceforge.net/svnroot/docbook/branches/webhelp/xsl/webhelp webhelp</programlisting></para> - </step> - </substeps> + <para>If necessary, download <ulink + url="http://xml.apache.org/commons/dist">xml-commons-resolver.jar</ulink> + and add it to your <envar>CLASSPATH</envar>. <tip> + <para>When adding jar files to your <envar>CLASSPATH</envar>, be + sure to include the jar file. For example: + <filename>C:\programs\xml-commons-resolver-1.2\resolver.jar</filename>. + Note that on Windows, the <envar>CLASSPATH</envar> is a + semicolon delimited list of jar files and paths to java class + files.</para> + </tip></para> </step> - <step> - <para>To improve performance, download and extract DocBook XSLs to a convenient location on your file system. Currently, this package supports <ulink url="http://sourceforge.net/projects/docbook/files/#files">docbook-xsl</ulink> (i.e. it does not yet support the namespace version of the xsls and does not yet strip the namespace from DocBook 5.x documents. - <note> - <para>If you see the message <screen>Warning: catalogpath listing external catalogs will be ignored</screen> when you generate output, this indicates that your catalog resolver is not installed correctly and is not being used.</para> - </note> - </para> - </step> - <step id="edit-build-properties"> - <para>In a text editor, edit the <filename>build.properties</filename> file in the webhelp directory and make the changes indicated by the comments:<programlisting>input-xml=docsrc/readme.xml + + <step> + <para>Download <ulink + url="http://prdownloads.sourceforge.net/saxon/saxon6-5-5.zip">Saxon + 6.5.x</ulink> and unzip the distribution to a convenient location on + your filesystem. You will use the path to + <filename>saxon.jar</filename> in <xref + linkend="edit-build-properties" /> below.</para> + </step> + + <step> + <para>Obtain the package in one of two ways:</para> + + <itemizedlist> + <listitem> + <para>Download the <ulink + url="http://www.thingbag.net/docbook/gsoc2010/webhelp-gsoc2010-beta.zip">beta + version of the package</ulink>.</para> + </listitem> + + <listitem> + <para>OR, if you prefer to have the bleeding edge, you can use a + <ulink + url="http://en.wikipedia.org/wiki/Comparison_of_Subversion_clients">Subversion + client</ulink> to download it directly from Subversion: + <programlisting>svn co https://docbook.svn.sourceforge.net/svnroot/docbook/branches/webhelp/xsl/webhelp webhelp</programlisting></para> + </listitem> + </itemizedlist> + </step> + + <step> + <para>To improve performance, download and extract DocBook XSLs to a + convenient location on your file system. Currently, this package + supports <ulink + url="http://sourceforge.net/projects/docbook/files/#files">docbook-xsl</ulink> + (i.e. it does not yet support the namespace version of the xsls and + does not yet strip the namespace from DocBook 5.x documents. <note> + <para>If you see the message <screen>Warning: catalogpath listing external catalogs will be ignored</screen> + when you generate output, this indicates that your catalog + resolver is not installed correctly and is not being + used.</para> + </note></para> + </step> + + <step id="edit-build-properties"> + <para>In a text editor, edit the + <filename>build.properties</filename> file in the webhelp directory + and make the changes indicated by the comments:<programlisting>input-xml=docsrc/readme.xml frameset.base.dir=doc # Modify this so that it points to your copy of the Saxon 6.5 jar. @@ -300,82 +456,132 @@ #This will be used to identify the correct stemmer, and punctuations that differs from language to language. #see the documentation for details. en=English, cn=Chinese, jp=Japanese etc. indexer-language=en</programlisting></para> - </step> + </step> + <step> - <para>Test the package by running the command <code>ant webhelp</code> at the command line in the webhelp directory. It should generate a copy of this documentation in the <filename class="directory">doc</filename> directory. Type <code>start doc\index.html</code> to open the output in a browser.</para> + <para>Test the package by running the command <code>ant + webhelp</code> at the command line in the webhelp directory. It + should generate a copy of this documentation in the <filename + class="directory">doc</filename> directory. Type <code>start + doc\index.html</code> to open the output in a browser.</para> </step> + <step> - <para>To process your own content: </para> - <substeps> - <step> - <para> - create a new <filename>build.xml</filename> file that defines the name of your source file, the desired output directory, and imports the <filename>build.xml</filename> from this package. For example: - <programlisting><project> - <property name="input-xml" value="<replaceable>path-to/yourfile.xml</replaceable>"/> - <property name="frameset.base.dir" value="<replaceable>path-to/desired-output-dir</replaceable>"/> - <import file="<replaceable>path-to/docbook-webhelp/</replaceable>build.xml"/> -</project></programlisting> - </para> - </step> - <step> - <para>From the directory containing your newly created <filename>build.xml</filename> file, type <code>ant webhelp</code> to build your document. </para> - </step> - <step> - <para>Add some code to the main ant script to copy your images to the output directory.</para> - </step> - </substeps> - </step> + <para>To process your own content:</para> + + <substeps> + <step> + <para>create a new <filename>build.xml</filename> file that + defines the name of your source file, the desired output + directory, and imports the <filename>build.xml</filename> from + this package. For example: <programlisting><project> + <property name="input-xml" value="<replaceable>path-to/yourfile.xml</replaceable>"/> + <property name="frameset.base.dir" value="<replaceable>path-to/desired-output-dir</replaceable>"/> + <import file="<replaceable>path-to/docbook-webhelp/</replaceable>build.xml"/> +</project></programlisting></para> + </step> + + <step> + <para>From the directory containing your newly created + <filename>build.xml</filename> file, type <code>ant + webhelp</code> to build your document.</para> + </step> + + <step> + <para>Add some code to the main ant script to copy your images + to the output directory.</para> + </step> + </substeps> + </step> </procedure> </section> + <section> - <title>Using and customizing the output</title> - <para>To deep link to a topic inside the help set, simply link directly to the page. This help system uses no frameset, so nothing further is necessary. <tip> - <para>See <ulink url="http://www.sagehill.net/docbookxsl/Chunking.html">Chunking into multiple HTML files</ulink> in Bob Stayton's <ulink url="http://www.sagehill.net/docbookxsl/index.html">DocBook XSL: The Complete Guide</ulink> for information on controlling output file names in DocBook.</para> - </tip> -</para> - <para>When you perform a search, the results can include brief summaries. These are populated in one of two ways:<itemizedlist> - <listitem> - <para>By adding <sgmltag>role="summary"</sgmltag> to a <sgmltag>para</sgmltag> or <sgmltag>phrase</sgmltag> in the <sgmltag>chapter</sgmltag> or <sgmltag>section</sgmltag>.</para> - </listitem> - <listitem> - <para>By adding an <sgmltag>abstract</sgmltag> to the <sgmltag>chapterinfo</sgmltag> or <sgmltag>sectioninfo</sgmltag> element.</para> - </listitem> - </itemizedlist> - </para> - <para>TODO: Document Apache config changes to improve performance of very long documents. </para> + <title>Using and customizing the output</title> + + <para>To deep link to a topic inside the help set, simply link directly + to the page. This help system uses no frameset, so nothing further is + necessary. <tip> + <para>See <ulink + url="http://www.sagehill.net/docbookxsl/Chunking.html">Chunking into + multiple HTML files</ulink> in Bob Stayton's <ulink + url="http://www.sagehill.net/docbookxsl/index.html">DocBook XSL: The + Complete Guide</ulink> for information on controlling output file + names in DocBook.</para> + </tip></para> + + <para>When you perform a search, the results can include brief + summaries. These are populated in one of two ways:<itemizedlist> + <listitem> + <para>By adding <sgmltag>role="summary"</sgmltag> to a + <sgmltag>para</sgmltag> or <sgmltag>phrase</sgmltag> in the + <sgmltag>chapter</sgmltag> or <sgmltag>section</sgmltag>.</para> + </listitem> + + <listitem> + <para>By adding an <sgmltag>abstract</sgmltag> to the + <sgmltag>chapterinfo</sgmltag> or <sgmltag>sectioninfo</sgmltag> + element.</para> + </listitem> + </itemizedlist></para> + + <para>TODO: Document Apache config changes to improve performance of + very long documents.</para> </section> + <section> <title>Building the indexer</title> - <para role="summary">To build the indexer, you must have installed the JDK version 1.5 or higher and set the <envar>ANT_HOME</envar> environment variable. Run <code>ant build-indexer</code> to recompile <filename>nw-cms.jar</filename></para> + + <para role="summary">To build the indexer, you must have installed the + JDK version 1.5 or higher and set the ANT_HOME environment variable. Run + <code>ant build-indexer</code> to recompile + <filename>nw-cms.jar</filename></para> + <indexterm> <primary>ANT_HOME</primary> </indexterm> + <indexterm> <primary>indexer</primary> + <secondary>building</secondary> </indexterm> </section> </chapter> + <chapter> - <title>Design</title> - <para>This chapter provides an overview of how webhelp is implemented. <remark>WRITEME</remark></para> - <para>TODO: Document details about cookie use.</para> + <title>Design</title> + + <para>This chapter provides an overview of how webhelp is implemented. + <remark>WRITEME</remark></para> + + <para>TODO: Document details about cookie use.</para> </chapter> + <chapter> - <chapterinfo> - <abstract> - <para>Demo of Japanese text: ネットワークに接続されているコンピュータ。加入者コンピュータは<emphasis>クライアント ホスト</emphasis>であり、プロバイダ システムは<emphasis>サーバー ホスト</emphasis>です。</para> - </abstract> - </chapterinfo> - <title>ホスト</title> - <indexterm> - <primary>ホスト</primary> - </indexterm> - <para>To test this page, search for the term: ホスト</para> - <formalpara> - <title>ホスト</title> - <para>ネットワークに接続されているコンピュータ。加入者コンピュータは<emphasis>クライアント ホスト</emphasis>であり、プロバイダ システムは<emphasis>サーバー ホスト</emphasis>です。 </para> - </formalpara> + <chapterinfo> + <abstract> + <para>Demo of Japanese text: + ネットワークに接続されているコンピュータ。加入者コンピュータは<emphasis>クライアント + ホスト</emphasis>であり、プロバイダ システムは<emphasis>サーバー ホスト</emphasis>です。</para> + </abstract> + </chapterinfo> + + <title>ホスト</title> + + <indexterm> + <primary>ホスト</primary> + </indexterm> + + <para>To test this page, search for the term: ホスト</para> + + <formalpara> + <title>ホスト</title> + + <para>ネットワークに接続されているコンピュータ。加入者コンピュータは<emphasis>クライアント + ホスト</emphasis>であり、プロバイダ システムは<emphasis>サーバー ホスト</emphasis>です。</para> + </formalpara> </chapter> - <index/> + + <index></index> </book> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ka...@us...> - 2010-07-18 11:37:03
|
Revision: 8741 http://docbook.svn.sourceforge.net/docbook/?rev=8741&view=rev Author: kasunbg Date: 2010-07-18 11:36:57 +0000 (Sun, 18 Jul 2010) Log Message: ----------- ndexer: Removed the creation of separate js file for each alphabetic letter. Now only three js files used for the index. Index is equally distributed between these three files. Having three files will help in parall downloading, hence faster loading. Removed un Brought build property names to a standard convention. New property "stylesheet-path". --Kasun Gajasinghe Modified Paths: -------------- branches/webhelp/xsl/webhelp/build.properties branches/webhelp/xsl/webhelp/build.xml branches/webhelp/xsl/webhelp/indexer/lib/nw-cms.jar branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/SaxHTMLIndex.java branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/WriteJSFiles.java branches/webhelp/xsl/webhelp/template/common/css/positioning.css branches/webhelp/xsl/webhelp/xsl/webhelp.xsl Removed Paths: ------------- branches/webhelp/xsl/webhelp/template/content/search/addition.js branches/webhelp/xsl/webhelp/template/content/search/indexLoader.js Modified: branches/webhelp/xsl/webhelp/build.properties =================================================================== --- branches/webhelp/xsl/webhelp/build.properties 2010-07-18 04:32:20 UTC (rev 8740) +++ branches/webhelp/xsl/webhelp/build.properties 2010-07-18 11:36:57 UTC (rev 8741) @@ -1,6 +1,9 @@ input-xml=docsrc/readme.xml -frameset.base.dir=doc +stylesheet-path=xsl/webhelp.xsl +# Output directory +base-dir=doc + # Modify this so that it points to your copy of the Saxon 6.5 jar. xslt-processor-classpath=c:/workhead/export/saxon/6.5/lib/saxon.jar Modified: branches/webhelp/xsl/webhelp/build.xml =================================================================== --- branches/webhelp/xsl/webhelp/build.xml 2010-07-18 04:32:20 UTC (rev 8740) +++ branches/webhelp/xsl/webhelp/build.xml 2010-07-18 11:36:57 UTC (rev 8741) @@ -28,10 +28,10 @@ <target name="chunk" depends="clean"> - <mkdir dir="${frameset.base.dir}"/> + <mkdir dir="${base-dir}"/> <xslt in="${input-xml}" - out="${frameset.base.dir}/dummy.html" + out="${base-dir}/dummy.html" style="${ant.file.dir}/xsl/webhelp.xsl" scanincludeddirectories="false" classpath="${xslt-processor-classpath}"> @@ -40,23 +40,23 @@ <param name="exclude.search.from.chunked.html" expression="${exclude.search.from.chunked.html}" if="exclude.search.from.chunked.html"/> <param name="output_file_name" expression="${output_file_name}"/> - <param name="frameset.base.dir" expression="${frameset.base.dir}" if="frameset.base.dir"/> + <param name="webhelp.base.dir" expression="${base-dir}" if="base-dir"/> <param name="indexer.language" expression="${indexer-language}" if="indexer-language"/> <param name="chunk.frameset.start.filename" expression="${chunk.frameset.start.filename}" if="chunk.frameset.start.filename"/> </xslt> - <delete file="${frameset.base.dir}/dummy.html"/> + <delete file="${base-dir}/dummy.html"/> <!-- Copy common content such as js files of tree, css etc. to template folder. They will be copied to doc folder. They are NOT page specific! --> - <copy todir="${frameset.base.dir}"> + <copy todir="${base-dir}"> <fileset dir="${ant.file.dir}/template"> <include name="**/*"/> <exclude name="**/content/search/*.props"/> </fileset> </copy> <!-- We separate this out so we only copy the stopwords list for the indexer language --> - <copy todir="${frameset.base.dir}"> + <copy todir="${base-dir}"> <fileset dir="${ant.file.dir}/template"> <include name="**/content/search/default.props"/> <include name="**/content/search/punctuation.props"/> @@ -65,14 +65,14 @@ </copy> <!--Deletes all the stemmers that are copied to doc/ folder. Then, adds only the needed stemmer--> - <delete dir="${frameset.base.dir}/content/search/stemmers"/> + <delete dir="${base-dir}/content/search/stemmers"/> <copy todir="doc/content/search/stemmers/" file="template/content/search/stemmers/${indexer-language}_stemmer.js"/> <!-- Very simple-minded copy to handle the source document's images --> <!-- TODO: Look at html help code that produces a manifest file...list of images --> <!-- Customize webhelp.xsl to produce ant file to copy images used? --> - <copy todir="${frameset.base.dir}/content" failonerror="false"> + <copy todir="${base-dir}/content" failonerror="false"> <fileset dir="${input-images-dir}"/> </copy> @@ -89,12 +89,12 @@ <classpath refid="nw-cms.jar.path"/> </taskdef> - <echo>Indexing html files in ${frameset.base.dir}/content</echo> + <echo>Indexing html files in ${base-dir}/content</echo> - <indexertask htmldir="${frameset.base.dir}/content" indexerLanguage="${indexer-language}"/> + <indexertask htmldir="${base-dir}/content" indexerLanguage="${indexer-language}"/> <delete> - <fileset dir="${frameset.base.dir}/content/search" includes="*.props"/> + <fileset dir="${base-dir}/content/search" includes="*.props"/> </delete> <delete file="xx.html"/> @@ -127,7 +127,7 @@ </target> <target name="clean"> - <delete dir="${frameset.base.dir}"/> + <delete dir="${base-dir}"/> </target> <target name="help"> Modified: branches/webhelp/xsl/webhelp/indexer/lib/nw-cms.jar =================================================================== (Binary files differ) Modified: branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/SaxHTMLIndex.java =================================================================== --- branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/SaxHTMLIndex.java 2010-07-18 04:32:20 UTC (rev 8740) +++ branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/SaxHTMLIndex.java 2010-07-18 11:36:57 UTC (rev 8741) @@ -5,6 +5,8 @@ // specific dita ot import com.nexwave.nsidita.DocFileInfo; + +//Stemmers import com.nexwave.stemmer.snowball.SnowballStemmer; import com.nexwave.stemmer.snowball.ext.EnglishStemmer; import com.nexwave.stemmer.snowball.ext.GermanStemmer; @@ -20,8 +22,7 @@ * @author Kasun Gajasinghe <http://kasunbg.blogspot.com> */ public class SaxHTMLIndex extends SaxDocFileParser{ - - //members + //KasunBG: apparently tempDico stores all the keywords and a pointer to the files containing the index in a Map //example: ("keyword1", "0,2,4"), ("docbook", "1,2,5") private Map<String,String> tempDico; Modified: branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/WriteJSFiles.java =================================================================== --- branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/WriteJSFiles.java 2010-07-18 04:32:20 UTC (rev 8740) +++ branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/WriteJSFiles.java 2010-07-18 11:36:57 UTC (rev 8741) @@ -162,113 +162,47 @@ tstr = (String)keyIt.next(); File fileOut= new File(fileOutStr); - - /* if the key is not a letter, - * create an index file called 0.js in the output directory - */ - if (tstr.matches("^[^a-z]{1}.*$")) { - - try { - // open a outputstream, here a file - fOut= new FileOutputStream(fileOut.getParent()+ File.separator + "0" + fileOut.getName()); - // open a buffer output stream - bout= new BufferedOutputStream(fOut); - // open a streamwriter - out = new OutputStreamWriter(bout, "UTF-8"); - - /* Populate a javascript hashmap: - The key is a word to look for in the index, - The value is the numbers of the files in which the word exists. - Example: w["key"]="file1,file2,file3";*/ - out.write("\n"); - while ((keyIt.hasNext()) && (tstr.matches("^[^a-z]{1}.*$"))) { - out.write("w[\""+tstr+"\"]"+"= \""+indexMap.get(tstr)+"\";\n"); - tstr = (String) keyIt.next(); - } - out.write("\n"); - out.flush(); // Don't forget to flush! - out.close(); - } - - catch (UnsupportedEncodingException e) { - System.out.println(txt_VM_encoding_not_supported); - } - catch (IOException e) { - System.out.println(e.getMessage()); - } - } - - - /* If the key is a letter, - * create an index file called letter.js in the output directory + /* Writes the index to Three JS files, namely: index-1.js, index-2.js, index-3.js + * Index will be distributed evenly in these three files. * tstr is the current key - * keyIt is the iterator of the key set*/ - - char tempLetter = tstr.charAt(0); - while (keyIt.hasNext() && (tstr.matches("^[a-z]{1}.*$")) ) { - - try { - // open a outputstream, here a file - fOut= new FileOutputStream(fileOut.getParent()+ File.separator + tempLetter + fileOut.getName()); - bout= new BufferedOutputStream(fOut); - out = new OutputStreamWriter(bout, "UTF-8"); - - /* Populate a javascript hashmap: - The key is a word to look for in the index, - The value is the numbers of the files in which the word exists. - Example: w["key"]="file1,file2,file3";*/ - out.write("\n"); - while ((keyIt.hasNext()) && (tempLetter == tstr.charAt(0))) { - - out.write("w[\""+tstr+"\"]"+"= \""+indexMap.get(tstr)+"\";\n"); - tstr = (String) keyIt.next(); - } - tempLetter = tstr.charAt(0); - out.write("\n"); - out.flush(); // Don't forget to flush! - out.close(); - } - catch (UnsupportedEncodingException e) { - System.out.println(txt_VM_encoding_not_supported); - } - catch (IOException e) { - System.out.println(e.getMessage()); - } - } - - /* After processing the keys starting with a letter, - * do a last pass for other remaining char. - */ - - try { - // open a outputstream, here a file - fOut= new FileOutputStream(fileOut.getParent()+ File.separator + "1" + fileOut.getName()); - bout= new BufferedOutputStream(fOut); - out = new OutputStreamWriter(bout, "UTF-8"); - - /* Populate a javascript hashmap: - The key is a word to look for in the index, - The value is the numbers of the files in which the word exists. - Example: w["key"]="file1,file2,file3";*/ - out.write("\n"); - while ((keyIt.hasNext())) { - out.write("w[\""+tstr+"\"]"+"= \""+indexMap.get(tstr)+"\";\n"); - tstr = (String) keyIt.next(); - } - out.write("w[\""+tstr+"\"]"+"= \""+indexMap.get(tstr)+"\";\n"); - tempLetter = tstr.charAt(0); - out.write("\n"); - out.flush(); // Don't forget to flush! - out.close(); - } - catch (UnsupportedEncodingException e) { - System.out.println(txt_VM_encoding_not_supported); - } - catch (IOException e) { - System.out.println(e.getMessage()); - } + * keyIt is the iterator of the key set + * */ + int indexSize = sortedKeys.size(); + for (int i = 1; i <= 3; i++) { + try { + // open a outputstream, here a file + fOut = new FileOutputStream(fileOut.getParent() + File.separator + "index-" + i + fileOut.getName()); + bout = new BufferedOutputStream(fOut); + out = new OutputStreamWriter(bout, "UTF-8"); + try { + /* Populate a javascript hashmap: + The key is a word to look for in the index, + The value is the numbers of the files in which the word exists. + Example: w["key"]="file1,file2,file3";*/ + int count = 0; + out.write("//Auto generated index for searching.\n"); + while (keyIt.hasNext()) { //&& (tempLetter == tstr.charAt(0)) + out.write("w[\"" + tstr + "\"]" + "=\"" + indexMap.get(tstr) + "\";\n"); + tstr = (String) keyIt.next(); + count++; + if (indexSize / count < 3){ + break; + } + } + out.write("\n"); + out.flush(); // Don't forget to flush! + out.close(); + } + catch (UnsupportedEncodingException e) { + System.out.println(txt_VM_encoding_not_supported); + } + } + catch (IOException e) { + System.out.println(e.getMessage()); + } + } System.out.println(txt_indices_location + fileOutStr); } } Modified: branches/webhelp/xsl/webhelp/template/common/css/positioning.css =================================================================== --- branches/webhelp/xsl/webhelp/template/common/css/positioning.css 2010-07-18 04:32:20 UTC (rev 8740) +++ branches/webhelp/xsl/webhelp/template/common/css/positioning.css 2010-07-18 11:36:57 UTC (rev 8741) @@ -1,19 +1,8 @@ -body { - font: 12px Verdana, Geneva, sans-serif; -} +body { font: 12px Verdana, Geneva, sans-serif; } +p, ul, ol, li { font: 10pt Verdana, Geneva, sans-serif; } +h1 { font: bold 15pt Arial, Helvetica, geneva; } +h2 { font: bold 14pt Arial, Helvetica, geneva; } -p, ul, ol, li { - font: 10pt Verdana, Geneva, sans-serif; -} - -h1 { - font: bold 15pt Arial, Helvetica, geneva; -} - -h2 { - font: bold 14pt Arial, Helvetica, geneva; -} - #header { background: white url(../images/gov-header-bg.gif) repeat-x; position: fixed; @@ -54,20 +43,19 @@ z-index: 1000; } -#content h1, #content h2 { - color: #cc0000; -} +#content h1, #content h2 { color: #cc0000; } -.navfooter { - bottom: 2%; -} +.navfooter { bottom: 2%; } +/* Show Hide TOC tree */ + .pointLeft { background: url("../images/showHideTreeIcons.png") 0 0 no-repeat; height: 28px; width: 15px; display: block; font-size: 0; + cursor: pointer; } .pointRight { @@ -75,48 +63,37 @@ height: 28px; display: block; font-size: 0; -} + cursor: pointer; +} -/* Search results */ +/* Search results Styling */ .searchExpression { color: #0050A0; background-color: #EBEFF8; font-size: 12pt; - } -ul.searchresult li a { +.searchresult li a { text-decoration: none; color: #0050A0; - } -ul.searchresult li { +.searchresult li { color: #0050A0; } - -.shortdesc { - color: #0053AC; - margin-bottom: 30px; - margin-left: 20px; -} - .shortdesclink { color: gray; font-size: 9pt; } - .searchText { border: #BFCEE9 solid 1pt; width: 11em } - .searchButton { background: #EBEFF8; color: #0050A0; border: #BFCEE9 solid 1pt; font-weight: bold; font-size: 10pt -} - +} \ No newline at end of file Deleted: branches/webhelp/xsl/webhelp/template/content/search/addition.js =================================================================== --- branches/webhelp/xsl/webhelp/template/content/search/addition.js 2010-07-18 04:32:20 UTC (rev 8740) +++ branches/webhelp/xsl/webhelp/template/content/search/addition.js 2010-07-18 11:36:57 UTC (rev 8741) @@ -1,26 +0,0 @@ -/*---------------------------------------------------------------------------- - * NexWave javascript for NSI search - *---------------------------------------------------------------------------- - This file is part of the htmlsearch plugin for the DITA-OT - adapted for NSI documentation. - Copyright (c) 2007-2008 NexWave Solutions All Rights Reserved. - www.nexwave.biz Nadege Quaine -*/ -var w = new Object(); - -var mzBrowser; -var IEBrowser; - -if (navigator.appName.indexOf("Netscape") >= 0) { - mzBrowser = true; - IEBrowser = false; - -}else if (navigator.appName.indexOf("Internet Explorer") >=0) { - mzBrowser = false; - IEBrowser = true; -}else if (navigator.appName.indexOf("Opera") >=0) { - operaBrowser = true; -}else{ - alert(txt_browser_not_supported) -} - Deleted: branches/webhelp/xsl/webhelp/template/content/search/indexLoader.js =================================================================== --- branches/webhelp/xsl/webhelp/template/content/search/indexLoader.js 2010-07-18 04:32:20 UTC (rev 8740) +++ branches/webhelp/xsl/webhelp/template/content/search/indexLoader.js 2010-07-18 11:36:57 UTC (rev 8741) @@ -1,27 +0,0 @@ -/*---------------------------------------------------------------------------- - * NexWave javascript for NSI search - *---------------------------------------------------------------------------- - This file is part of the htmlsearch plugin for the DITA-OT - adapted for NSI documentation. - Copyright (c) 2007-2008 NexWave Solutions All Rights Reserved. - www.nexwave.biz Nadege Quaine -*/ -if (true) { - var tab = new Array("htmlFileList","htmlFileInfoList","0","1","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"); - - var headEl = document.getElementsByTagName('head').item(0); - for (el in tab) { - script = document.createElement('script'); - - var scriptTag = document.getElementById('loadScript' + tab[el]); - if(scriptTag) headEl.removeChild(scriptTag); - - script.src = "search/" + tab[el]+ ".js"; - script.id = 'loadScript'+tab[el]; - script.type = 'text/javascript'; - script.defer = true; - headEl.appendChild(script); - } -} - - Modified: branches/webhelp/xsl/webhelp/xsl/webhelp.xsl =================================================================== --- branches/webhelp/xsl/webhelp/xsl/webhelp.xsl 2010-07-18 04:32:20 UTC (rev 8740) +++ branches/webhelp/xsl/webhelp/xsl/webhelp.xsl 2010-07-18 11:36:57 UTC (rev 8741) @@ -19,7 +19,7 @@ <xsl:param name="chunk.frameset.start.filename">index.html</xsl:param> <xsl:param name="output_file_name">readme</xsl:param> <xsl:param name="chunked.toc.all.open">1</xsl:param> - <xsl:param name="frameset.base.dir">doc</xsl:param> + <xsl:param name="webhelp.base.dir">doc</xsl:param> <xsl:param name="generate.web.xml">0</xsl:param> <xsl:param name="direction.align.start">left</xsl:param> <xsl:param name="direction.align.end">right</xsl:param> @@ -31,7 +31,7 @@ <xsl:param name="navig.showtitles">0</xsl:param> <xsl:param name="manifest.in.base.dir" select="0"/> - <xsl:param name="base.dir" select="concat($frameset.base.dir,'/content/')"/> + <xsl:param name="base.dir" select="concat($webhelp.base.dir,'/content/')"/> <xsl:param name="suppress.navigation">0</xsl:param> <xsl:param name="generate.index" select="1"/> <xsl:param name="inherit.keywords" select="'0'"/> @@ -69,7 +69,7 @@ //The id for tree cookie var treeCookieId = "<xsl:value-of select="$tree.cookie.id"/>"; var language = "<xsl:value-of select="$indexer.language"/>"; - + var w = new Object(); //Localization txt_filesfound = '<xsl:call-template name="gentext"> <xsl:with-param name="key" select="'txt_filesfound'"/> @@ -111,30 +111,36 @@ <link rel="stylesheet" type="text/css" href="../common/jquery/treeview/jquery.treeview.css"/> <script type="text/javascript" src="../common/jquery/jquery-1.4.2.min.js"> - <xsl:comment></xsl:comment> + <xsl:comment> </xsl:comment> </script> <script type="text/javascript" src="../common/jquery/jquery-ui-1.8.2.custom.min.js"> - <xsl:comment></xsl:comment> + <xsl:comment> </xsl:comment> </script> <script type="text/javascript" src="../common/jquery/jquery.cookie.js"> - <xsl:comment></xsl:comment> + <xsl:comment> </xsl:comment> </script> <script type="text/javascript" src="../common/jquery/treeview/jquery.treeview.min.js"> - <xsl:comment></xsl:comment> + <xsl:comment> </xsl:comment> </script> <!--Scripts/css stylesheets for Search--> - <script type="text/javascript" src="search/addition.js"> - <xsl:comment></xsl:comment> + <script type="text/javascript" src="search/htmlFileList.js"> + <xsl:comment> </xsl:comment> </script> - - <script type="text/javascript" src="search/indexLoader.js"> - <xsl:comment></xsl:comment> + <script type="text/javascript" src="search/htmlFileInfoList.js"> + <xsl:comment> </xsl:comment> </script> - <script type="text/javascript" src="search/nwSearchFnt.js"> + <xsl:comment> </xsl:comment> + </script> + + <!--script type="text/javascript" src="search/addition.js"> <xsl:comment></xsl:comment> </script> + <script type="text/javascript" src="search/indexLoader.js"> + <xsl:comment></xsl:comment> + </script--> + <!-- NOTE: Stemmer javascript files should be in format <language>_stemmer.js. For example, for English(en), source should be: "search/stemmers/en_stemmer.js" @@ -144,6 +150,20 @@ <script type="text/javascript" src="{concat('search/stemmers/',$indexer.language,'_stemmer.js')}"> <xsl:comment>//make this scalable to other languages as well.</xsl:comment> </script> + + <!--Index Files: + Index is broken in to three equal sized(number of index items) files. This is to help parallel downloading + of files to make it faster.--> + <script type="text/javascript" src="search/index-1.js"> + <xsl:comment> </xsl:comment> + </script> + <script type="text/javascript" src="search/index-2.js"> + <xsl:comment> </xsl:comment> + </script> + <script type="text/javascript" src="search/index-3.js"> + <xsl:comment> </xsl:comment> + </script> + <!--End of index files --> </xsl:template> <xsl:template name="user.header.navigation"> @@ -165,9 +185,8 @@ </xsl:template> <xsl:template name="user.header.content"> - <div> - <a id="showHideButton" onclick="showHideToc();" class="pointLeft" title="Hide TOC tree">.</a> - </div> + <a id="showHideButton" onclick="showHideToc();" + class="pointLeft" title="Hide TOC tree" style="padding-top:3px; padding-bottom:3px;">.</a> </xsl:template> <xsl:template name="user.footer.navigation"> @@ -509,7 +528,7 @@ <xsl:attribute name="id">webhelp-currentid</xsl:attribute> </xsl:if> <span class="file"> - <a href="{substring-after($href,concat($frameset.base.dir,'/content/'))}"> + <a href="{substring-after($href,concat($webhelp.base.dir,'/content/'))}"> <xsl:value-of select="$title"/> </a> </span> @@ -566,7 +585,7 @@ <!-- </xsl:if> --> <xsl:choose> <xsl:when test="$chunk.frameset.start.filename"> - <xsl:value-of select="concat($frameset.base.dir,'/',$chunk.frameset.start.filename)"/> + <xsl:value-of select="concat($webhelp.base.dir,'/',$chunk.frameset.start.filename)"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="'index.html'"/> @@ -593,7 +612,7 @@ <xsl:template name="web.xml"> <xsl:call-template name="write.chunk"> <xsl:with-param name="filename"> - <xsl:value-of select="concat($frameset.base.dir,'/web.xml')"/> + <xsl:value-of select="concat($webhelp.base.dir,'/web.xml')"/> </xsl:with-param> <xsl:with-param name="method" select="'xml'"/> <xsl:with-param name="encoding" select="'utf-8'"/> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ka...@us...> - 2010-07-18 14:34:22
|
Revision: 8742 http://docbook.svn.sourceforge.net/docbook/?rev=8742&view=rev Author: kasunbg Date: 2010-07-18 14:34:15 +0000 (Sun, 18 Jul 2010) Log Message: ----------- Added search highlighting feature. Modified Paths: -------------- branches/webhelp/xsl/webhelp/template/common/css/positioning.css branches/webhelp/xsl/webhelp/template/common/jquery/jquery-ui-1.8.2.custom.min.js branches/webhelp/xsl/webhelp/template/common/main.js branches/webhelp/xsl/webhelp/template/content/search/nwSearchFnt.js branches/webhelp/xsl/webhelp/xsl/webhelp.xsl Modified: branches/webhelp/xsl/webhelp/template/common/css/positioning.css =================================================================== --- branches/webhelp/xsl/webhelp/template/common/css/positioning.css 2010-07-18 11:36:57 UTC (rev 8741) +++ branches/webhelp/xsl/webhelp/template/common/css/positioning.css 2010-07-18 14:34:15 UTC (rev 8742) @@ -44,11 +44,11 @@ } #content h1, #content h2 { color: #cc0000; } - .navfooter { bottom: 2%; } +.highlight { background-color: #FFFF88; } +.highlightButton{ font-size: 0; } /* Show Hide TOC tree */ - .pointLeft { background: url("../images/showHideTreeIcons.png") 0 0 no-repeat; height: 28px; @@ -57,7 +57,6 @@ font-size: 0; cursor: pointer; } - .pointRight { background: url("../images/showHideTreeIcons.png") -15px 0 no-repeat; height: 28px; @@ -67,18 +66,15 @@ } /* Search results Styling */ - .searchExpression { color: #0050A0; background-color: #EBEFF8; font-size: 12pt; } - .searchresult li a { text-decoration: none; color: #0050A0; } - .searchresult li { color: #0050A0; } Modified: branches/webhelp/xsl/webhelp/template/common/jquery/jquery-ui-1.8.2.custom.min.js =================================================================== --- branches/webhelp/xsl/webhelp/template/common/jquery/jquery-ui-1.8.2.custom.min.js 2010-07-18 11:36:57 UTC (rev 8741) +++ branches/webhelp/xsl/webhelp/template/common/jquery/jquery-ui-1.8.2.custom.min.js 2010-07-18 14:34:15 UTC (rev 8742) @@ -122,260 +122,6 @@ * jquery.ui.mouse.js * jquery.ui.widget.js */ -(function($) { - -$.widget("ui.selectable", $.ui.mouse, { - options: { - appendTo: 'body', - autoRefresh: true, - distance: 0, - filter: '*', - tolerance: 'touch' - }, - _create: function() { - var self = this; - - this.element.addClass("ui-selectable"); - - this.dragged = false; - - // cache selectee children based on filter - var selectees; - this.refresh = function() { - selectees = $(self.options.filter, self.element[0]); - selectees.each(function() { - var $this = $(this); - var pos = $this.offset(); - $.data(this, "selectable-item", { - element: this, - $element: $this, - left: pos.left, - top: pos.top, - right: pos.left + $this.outerWidth(), - bottom: pos.top + $this.outerHeight(), - startselected: false, - selected: $this.hasClass('ui-selected'), - selecting: $this.hasClass('ui-selecting'), - unselecting: $this.hasClass('ui-unselecting') - }); - }); - }; - this.refresh(); - - this.selectees = selectees.addClass("ui-selectee"); - - this._mouseInit(); - - this.helper = $("<div class='ui-selectable-helper'></div>"); - }, - - destroy: function() { - this.selectees - .removeClass("ui-selectee") - .removeData("selectable-item"); - this.element - .removeClass("ui-selectable ui-selectable-disabled") - .removeData("selectable") - .unbind(".selectable"); - this._mouseDestroy(); - - return this; - }, - - _mouseStart: function(event) { - var self = this; - - this.opos = [event.pageX, event.pageY]; - - if (this.options.disabled) - return; - - var options = this.options; - - this.selectees = $(options.filter, this.element[0]); - - this._trigger("start", event); - - $(options.appendTo).append(this.helper); - // position helper (lasso) - this.helper.css({ - "z-index": 100, - "position": "absolute", - "left": event.clientX, - "top": event.clientY, - "width": 0, - "height": 0 - }); - - if (options.autoRefresh) { - this.refresh(); - } - - this.selectees.filter('.ui-selected').each(function() { - var selectee = $.data(this, "selectable-item"); - selectee.startselected = true; - if (!event.metaKey) { - selectee.$element.removeClass('ui-selected'); - selectee.selected = false; - selectee.$element.addClass('ui-unselecting'); - selectee.unselecting = true; - // selectable UNSELECTING callback - self._trigger("unselecting", event, { - unselecting: selectee.element - }); - } - }); - - $(event.target).parents().andSelf().each(function() { - var selectee = $.data(this, "selectable-item"); - if (selectee) { - var doSelect = !event.metaKey || !selectee.$element.hasClass('ui-selected'); - selectee.$element - .removeClass(doSelect ? "ui-unselecting" : "ui-selected") - .addClass(doSelect ? "ui-selecting" : "ui-unselecting"); - selectee.unselecting = !doSelect; - selectee.selecting = doSelect; - selectee.selected = doSelect; - // selectable (UN)SELECTING callback - if (doSelect) { - self._trigger("selecting", event, { - selecting: selectee.element - }); - } else { - self._trigger("unselecting", event, { - unselecting: selectee.element - }); - } - return false; - } - }); - - }, - - _mouseDrag: function(event) { - var self = this; - this.dragged = true; - - if (this.options.disabled) - return; - - var options = this.options; - - var x1 = this.opos[0], y1 = this.opos[1], x2 = event.pageX, y2 = event.pageY; - if (x1 > x2) { var tmp = x2; x2 = x1; x1 = tmp; } - if (y1 > y2) { var tmp = y2; y2 = y1; y1 = tmp; } - this.helper.css({left: x1, top: y1, width: x2-x1, height: y2-y1}); - - this.selectees.each(function() { - var selectee = $.data(this, "selectable-item"); - //prevent helper from being selected if appendTo: selectable - if (!selectee || selectee.element == self.element[0]) - return; - var hit = false; - if (options.tolerance == 'touch') { - hit = ( !(selectee.left > x2 || selectee.right < x1 || selectee.top > y2 || selectee.bottom < y1) ); - } else if (options.tolerance == 'fit') { - hit = (selectee.left > x1 && selectee.right < x2 && selectee.top > y1 && selectee.bottom < y2); - } - - if (hit) { - // SELECT - if (selectee.selected) { - selectee.$element.removeClass('ui-selected'); - selectee.selected = false; - } - if (selectee.unselecting) { - selectee.$element.removeClass('ui-unselecting'); - selectee.unselecting = false; - } - if (!selectee.selecting) { - selectee.$element.addClass('ui-selecting'); - selectee.selecting = true; - // selectable SELECTING callback - self._trigger("selecting", event, { - selecting: selectee.element - }); - } - } else { - // UNSELECT - if (selectee.selecting) { - if (event.metaKey && selectee.startselected) { - selectee.$element.removeClass('ui-selecting'); - selectee.selecting = false; - selectee.$element.addClass('ui-selected'); - selectee.selected = true; - } else { - selectee.$element.removeClass('ui-selecting'); - selectee.selecting = false; - if (selectee.startselected) { - selectee.$element.addClass('ui-unselecting'); - selectee.unselecting = true; - } - // selectable UNSELECTING callback - self._trigger("unselecting", event, { - unselecting: selectee.element - }); - } - } - if (selectee.selected) { - if (!event.metaKey && !selectee.startselected) { - selectee.$element.removeClass('ui-selected'); - selectee.selected = false; - - selectee.$element.addClass('ui-unselecting'); - selectee.unselecting = true; - // selectable UNSELECTING callback - self._trigger("unselecting", event, { - unselecting: selectee.element - }); - } - } - } - }); - - return false; - }, - - _mouseStop: function(event) { - var self = this; - - this.dragged = false; - - var options = this.options; - - $('.ui-unselecting', this.element[0]).each(function() { - var selectee = $.data(this, "selectable-item"); - selectee.$element.removeClass('ui-unselecting'); - selectee.unselecting = false; - selectee.startselected = false; - self._trigger("unselected", event, { - unselected: selectee.element - }); - }); - $('.ui-selecting', this.element[0]).each(function() { - var selectee = $.data(this, "selectable-item"); - selectee.$element.removeClass('ui-selecting').addClass('ui-selected'); - selectee.selecting = false; - selectee.selected = true; - selectee.startselected = true; - self._trigger("selected", event, { - selected: selectee.element - }); - }); - this._trigger("stop", event); - - this.helper.remove(); - - return false; - } - -}); - -$.extend($.ui.selectable, { - version: "1.8.2" -}); - -})(jQuery); (function(e){e.widget("ui.selectable",e.ui.mouse,{options:{appendTo:"body",autoRefresh:true,distance:0,filter:"*",tolerance:"touch"},_create:function(){var c=this;this.element.addClass("ui-selectable");this.dragged=false;var f;this.refresh=function(){f=e(c.options.filter,c.element[0]);f.each(function(){var d=e(this),b=d.offset();e.data(this,"selectable-item",{element:this,$element:d,left:b.left,top:b.top,right:b.left+d.outerWidth(),bottom:b.top+d.outerHeight(),startselected:false,selected:d.hasClass("ui-selected"), selecting:d.hasClass("ui-selecting"),unselecting:d.hasClass("ui-unselecting")})})};this.refresh();this.selectees=f.addClass("ui-selectee");this._mouseInit();this.helper=e("<div class='ui-selectable-helper'></div>")},destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item");this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable");this._mouseDestroy();return this},_mouseStart:function(c){var f=this;this.opos=[c.pageX, c.pageY];if(!this.options.disabled){var d=this.options;this.selectees=e(d.filter,this.element[0]);this._trigger("start",c);e(d.appendTo).append(this.helper);this.helper.css({"z-index":100,position:"absolute",left:c.clientX,top:c.clientY,width:0,height:0});d.autoRefresh&&this.refresh();this.selectees.filter(".ui-selected").each(function(){var b=e.data(this,"selectable-item");b.startselected=true;if(!c.metaKey){b.$element.removeClass("ui-selected");b.selected=false;b.$element.addClass("ui-unselecting"); @@ -384,6 +130,15 @@ a.selected=false}if(a.unselecting){a.$element.removeClass("ui-unselecting");a.unselecting=false}if(!a.selecting){a.$element.addClass("ui-selecting");a.selecting=true;f._trigger("selecting",c,{selecting:a.element})}}else{if(a.selecting)if(c.metaKey&&a.startselected){a.$element.removeClass("ui-selecting");a.selecting=false;a.$element.addClass("ui-selected");a.selected=true}else{a.$element.removeClass("ui-selecting");a.selecting=false;if(a.startselected){a.$element.addClass("ui-unselecting");a.unselecting= true}f._trigger("unselecting",c,{unselecting:a.element})}if(a.selected)if(!c.metaKey&&!a.startselected){a.$element.removeClass("ui-selected");a.selected=false;a.$element.addClass("ui-unselecting");a.unselecting=true;f._trigger("unselecting",c,{unselecting:a.element})}}}});return false}},_mouseStop:function(c){var f=this;this.dragged=false;e(".ui-unselecting",this.element[0]).each(function(){var d=e.data(this,"selectable-item");d.$element.removeClass("ui-unselecting");d.unselecting=false;d.startselected= false;f._trigger("unselected",c,{unselected:d.element})});e(".ui-selecting",this.element[0]).each(function(){var d=e.data(this,"selectable-item");d.$element.removeClass("ui-selecting").addClass("ui-selected");d.selecting=false;d.selected=true;d.startselected=true;f._trigger("selected",c,{selected:d.element})});this._trigger("stop",c);this.helper.remove();return false}});e.extend(e.ui.selectable,{version:"1.8.2"})})(jQuery); + +(function(e){e.widget("ui.selectable",e.ui.mouse,{options:{appendTo:"body",autoRefresh:true,distance:0,filter:"*",tolerance:"touch"},_create:function(){var c=this;this.element.addClass("ui-selectable");this.dragged=false;var f;this.refresh=function(){f=e(c.options.filter,c.element[0]);f.each(function(){var d=e(this),b=d.offset();e.data(this,"selectable-item",{element:this,$element:d,left:b.left,top:b.top,right:b.left+d.outerWidth(),bottom:b.top+d.outerHeight(),startselected:false,selected:d.hasClass("ui-selected"), +selecting:d.hasClass("ui-selecting"),unselecting:d.hasClass("ui-unselecting")})})};this.refresh();this.selectees=f.addClass("ui-selectee");this._mouseInit();this.helper=e("<div class='ui-selectable-helper'></div>")},destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item");this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable");this._mouseDestroy();return this},_mouseStart:function(c){var f=this;this.opos=[c.pageX, +c.pageY];if(!this.options.disabled){var d=this.options;this.selectees=e(d.filter,this.element[0]);this._trigger("start",c);e(d.appendTo).append(this.helper);this.helper.css({"z-index":100,position:"absolute",left:c.clientX,top:c.clientY,width:0,height:0});d.autoRefresh&&this.refresh();this.selectees.filter(".ui-selected").each(function(){var b=e.data(this,"selectable-item");b.startselected=true;if(!c.metaKey){b.$element.removeClass("ui-selected");b.selected=false;b.$element.addClass("ui-unselecting"); +b.unselecting=true;f._trigger("unselecting",c,{unselecting:b.element})}});e(c.target).parents().andSelf().each(function(){var b=e.data(this,"selectable-item");if(b){var g=!c.metaKey||!b.$element.hasClass("ui-selected");b.$element.removeClass(g?"ui-unselecting":"ui-selected").addClass(g?"ui-selecting":"ui-unselecting");b.unselecting=!g;b.selecting=g;(b.selected=g)?f._trigger("selecting",c,{selecting:b.element}):f._trigger("unselecting",c,{unselecting:b.element});return false}})}},_mouseDrag:function(c){var f= +this;this.dragged=true;if(!this.options.disabled){var d=this.options,b=this.opos[0],g=this.opos[1],h=c.pageX,i=c.pageY;if(b>h){var j=h;h=b;b=j}if(g>i){j=i;i=g;g=j}this.helper.css({left:b,top:g,width:h-b,height:i-g});this.selectees.each(function(){var a=e.data(this,"selectable-item");if(!(!a||a.element==f.element[0])){var k=false;if(d.tolerance=="touch")k=!(a.left>h||a.right<b||a.top>i||a.bottom<g);else if(d.tolerance=="fit")k=a.left>b&&a.right<h&&a.top>g&&a.bottom<i;if(k){if(a.selected){a.$element.removeClass("ui-selected"); +a.selected=false}if(a.unselecting){a.$element.removeClass("ui-unselecting");a.unselecting=false}if(!a.selecting){a.$element.addClass("ui-selecting");a.selecting=true;f._trigger("selecting",c,{selecting:a.element})}}else{if(a.selecting)if(c.metaKey&&a.startselected){a.$element.removeClass("ui-selecting");a.selecting=false;a.$element.addClass("ui-selected");a.selected=true}else{a.$element.removeClass("ui-selecting");a.selecting=false;if(a.startselected){a.$element.addClass("ui-unselecting");a.unselecting= +true}f._trigger("unselecting",c,{unselecting:a.element})}if(a.selected)if(!c.metaKey&&!a.startselected){a.$element.removeClass("ui-selected");a.selected=false;a.$element.addClass("ui-unselecting");a.unselecting=true;f._trigger("unselecting",c,{unselecting:a.element})}}}});return false}},_mouseStop:function(c){var f=this;this.dragged=false;e(".ui-unselecting",this.element[0]).each(function(){var d=e.data(this,"selectable-item");d.$element.removeClass("ui-unselecting");d.unselecting=false;d.startselected= +false;f._trigger("unselected",c,{unselected:d.element})});e(".ui-selecting",this.element[0]).each(function(){var d=e.data(this,"selectable-item");d.$element.removeClass("ui-selecting").addClass("ui-selected");d.selecting=false;d.selected=true;d.startselected=true;f._trigger("selected",c,{selected:d.element})});this._trigger("stop",c);this.helper.remove();return false}});e.extend(e.ui.selectable,{version:"1.8.2"})})(jQuery); ;/* * jQuery UI Autocomplete 1.8.2 * @@ -555,17 +310,12 @@ (function(c){c.effects.fold=function(a){return this.queue(function(){var b=c(this),j=["position","top","left"],d=c.effects.setMode(b,a.options.mode||"hide"),g=a.options.size||15,h=!!a.options.horizFirst,k=a.duration?a.duration/2:c.fx.speeds._default/2;c.effects.save(b,j);b.show();var e=c.effects.createWrapper(b).css({overflow:"hidden"}),f=d=="show"!=h,l=f?["width","height"]:["height","width"];f=f?[e.width(),e.height()]:[e.height(),e.width()];var i=/([0-9]+)%/.exec(g);if(i)g=parseInt(i[1],10)/100* f[d=="hide"?0:1];if(d=="show")e.css(h?{height:0,width:g}:{height:g,width:0});h={};i={};h[l[0]]=d=="show"?f[0]:g;i[l[1]]=d=="show"?f[1]:0;e.animate(h,k,a.options.easing).animate(i,k,a.options.easing,function(){d=="hide"&&b.hide();c.effects.restore(b,j);c.effects.removeWrapper(b);a.callback&&a.callback.apply(b[0],arguments);b.dequeue()})})}})(jQuery); ;/* - * jQuery UI Effects Highlight 1.8.2 - * - * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT (MIT-LICENSE.txt) - * and GPL (GPL-LICENSE.txt) licenses. - * - * http://docs.jquery.com/UI/Effects/Highlight - * - * Depends: - * jquery.effects.core.js + * jQuery Highlight plugin + * Based on highlight v3 by Johann Burkard + * http://johannburkard.de/blog/programming/javascript/highlight-javascript-text-higlighting-jquery-plugin.html + * Copyright (c) 2009 Bartek Szopka http://bartaz.github.com/sandbox.js/jquery.highlight.html + * Licensed under MIT license. */ -(function(b){b.effects.highlight=function(c){return this.queue(function(){var a=b(this),e=["backgroundImage","backgroundColor","opacity"],d=b.effects.setMode(a,c.options.mode||"show"),f={backgroundColor:a.css("backgroundColor")};if(d=="hide")f.opacity=0;b.effects.save(a,e);a.show().css({backgroundImage:"none",backgroundColor:c.options.color||"#ffff99"}).animate(f,{queue:false,duration:c.duration,easing:c.options.easing,complete:function(){d=="hide"&&a.hide();b.effects.restore(a,e);d=="show"&&!b.support.opacity&& -this.style.removeAttribute("filter");c.callback&&c.callback.apply(this,arguments);a.dequeue()}})})}})(jQuery); -; \ No newline at end of file +jQuery.extend({highlight:function(a,c,b,e){if(a.nodeType===3){if(c=a.data.match(c)){b=document.createElement(b||"span");b.className=e||"highlight";a=a.splitText(c.index);a.splitText(c[0].length);e=a.cloneNode(true);b.appendChild(e);a.parentNode.replaceChild(b,a);return 1}}else if(a.nodeType===1&&a.childNodes&&!/(script|style)/i.test(a.tagName)&&!(a.tagName===b.toUpperCase()&&a.className===e))for(var d=0;d<a.childNodes.length;d++)d+=jQuery.highlight(a.childNodes[d],c,b,e);return 0}}); +jQuery.fn.unhighlight=function(a){var c={className:"highlight",element:"span"};jQuery.extend(c,a);return this.find(c.element+"."+c.className).each(function(){var b=this.parentNode;b.replaceChild(this.firstChild,this);b.normalize()}).end()}; +jQuery.fn.highlight=function(a,c){var b={className:"highlight",element:"span",caseSensitive:false,wordsOnly:false};jQuery.extend(b,c);if(a.constructor===String)a=[a];a=jQuery.grep(a,function(f){return f!=""});if(a.length==0)return this;var e=b.caseSensitive?"":"i",d="("+a.join("|")+")";if(b.wordsOnly)d="\\b"+d+"\\b";var g=RegExp(d,e);return this.each(function(){jQuery.highlight(this,g,b.element,b.className)})}; \ No newline at end of file Modified: branches/webhelp/xsl/webhelp/template/common/main.js =================================================================== --- branches/webhelp/xsl/webhelp/template/common/main.js 2010-07-18 11:36:57 UTC (rev 8741) +++ branches/webhelp/xsl/webhelp/template/common/main.js 2010-07-18 14:34:15 UTC (rev 8742) @@ -5,8 +5,8 @@ * */ -$(document).ready(function() { - +$(document).ready(function() { + $("#showHideHighlight").button(); //add jquery button styling to 'Go' button //Generate tabs in nav-pane with JQuery $(function() { $("#tabs").tabs({ @@ -37,12 +37,14 @@ }); //'ui-tabs-1' is the cookie name which is used for the persistence of the tabs.(Content/Search tab) - if ($.cookie('ui-tabs-1') === '1') { + if ($.cookie('ui-tabs-1') === '1') { //search tab is visible if ($.cookie('textToSearch') != undefined && $.cookie('textToSearch').length > 0) { document.getElementById('textToSearch').value = $.cookie('textToSearch'); Verifie('diaSearch_Form'); + searchHighlight($.cookie('textToSearch')); + $("#showHideHighlight").css("display","block"); } - } + } syncToc(); //Synchronize the toc tree with the content pane, when loading the page. $("#doSearch").button(); //add jquery button styling to 'Go' button @@ -110,4 +112,45 @@ leftNavigation.css("display","block"); showHideButton.attr("title", "Show the TOC Tree"); } +} + +/** + * Code for searh highlighting + */ +var highlightOn = true; +function searchHighlight(searchText) { + highlightOn = true; + if (searchText != undefined) { + var wList; + var sList = new Array(); //stem list + //Highlight the search terms + searchText = searchText.toLowerCase().replace(/<\//g, "_st_").replace(/\$_/g, "_di_").replace(/\.|%2C|%3B|%21|%3A|@|\/|\*/g, " ").replace(/(%20)+/g, " ").replace(/_st_/g, "</").replace(/_di_/g, "%24_") + searchText = searchText.replace(/ +/g, " "); + searchText = searchText.replace(/ $/, "").replace(/^ /, ""); + + wList = searchText.split(" "); + $("#content").highlight(wList); //Highlight the search input + + //Highlight the stems + for (var i = 0; i < wList.length; i++) { + var stemW = stemmer(wList[i]); + sList.push(stemW); + } + $("#content").highlight(sList); //Highlight the search input's all stems + } +} + +function searchUnhighlight(){ + highlightOn = false; + //unhighlight the search input's all stems + $("#content").unhighlight(); + $("#content").unhighlight(); +} + +function toggleHighlight(){ + if(highlightOn) { + searchUnhighlight(); + } else { + searchHighlight($.cookie('textToSearch')); + } } \ No newline at end of file Modified: branches/webhelp/xsl/webhelp/template/content/search/nwSearchFnt.js =================================================================== --- branches/webhelp/xsl/webhelp/template/content/search/nwSearchFnt.js 2010-07-18 11:36:57 UTC (rev 8741) +++ branches/webhelp/xsl/webhelp/template/content/search/nwSearchFnt.js 2010-07-18 14:34:15 UTC (rev 8742) @@ -56,7 +56,7 @@ //DisplayWaitingMessage(); /*data initialisation*/ - searchFor = "" // expression en lowercase et sans les caracteres speciaux + searchFor = ""; // expression en lowercase et sans les caracteres speciaux //w = new Object(); // hashtable, key=word, value = list of the index of the html files scriptLetterTab = new scriptfirstchar(); // Array containing the first letter of each word to look for var scriptsarray = new Array(); // Array with the name of the scripts to load Modified: branches/webhelp/xsl/webhelp/xsl/webhelp.xsl =================================================================== --- branches/webhelp/xsl/webhelp/xsl/webhelp.xsl 2010-07-18 11:36:57 UTC (rev 8741) +++ branches/webhelp/xsl/webhelp/xsl/webhelp.xsl 2010-07-18 14:34:15 UTC (rev 8742) @@ -185,8 +185,20 @@ </xsl:template> <xsl:template name="user.header.content"> - <a id="showHideButton" onclick="showHideToc();" - class="pointLeft" title="Hide TOC tree" style="padding-top:3px; padding-bottom:3px;">.</a> + <table> + <tr> + <td> + <a id="showHideButton" onclick="showHideToc();" + class="pointLeft" title="Hide TOC tree" style="padding-top:3px; padding-bottom:3px;">. + </a> + </td> + <td> + <input type="button" id="showHideHighlight" + style="display:none;padding-top:3px; padding-bottom:3px;" + class="highlightButton" value="H" onclick="toggleHighlight();"/> + </td> + </tr> + </table> </xsl:template> <xsl:template name="user.footer.navigation"> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dc...@us...> - 2010-07-18 14:42:12
|
Revision: 8743 http://docbook.svn.sourceforge.net/docbook/?rev=8743&view=rev Author: dcramer Date: 2010-07-18 14:42:03 +0000 (Sun, 18 Jul 2010) Log Message: ----------- Moving copy of indexer stuff to index target. Adding support for copying doc images to the output directory based on properties set in build.properties. Modified Paths: -------------- branches/webhelp/xsl/webhelp/build.properties branches/webhelp/xsl/webhelp/build.xml Modified: branches/webhelp/xsl/webhelp/build.properties =================================================================== --- branches/webhelp/xsl/webhelp/build.properties 2010-07-18 14:34:15 UTC (rev 8742) +++ branches/webhelp/xsl/webhelp/build.properties 2010-07-18 14:42:03 UTC (rev 8743) @@ -1,8 +1,16 @@ input-xml=docsrc/readme.xml +output-dir=doc stylesheet-path=xsl/webhelp.xsl -# Output directory -base-dir=doc +# If your document has image directories that need to be copied +# to the output directory, you can list patterns here. +# See the Ant documentation for fileset for documentation +# on patterns. +#input-images-dirs=images/** figures/** graphics/** +# By default, the ant script assumes your images are stored +# in the same directory as the input-xml. If you store your +# image directories in another directory, specify it here. +#input-images-basedir=/path/to/image/location # Modify this so that it points to your copy of the Saxon 6.5 jar. xslt-processor-classpath=c:/workhead/export/saxon/6.5/lib/saxon.jar @@ -11,20 +19,24 @@ # Download xml-commons-resolver from http://xml.apache.org/commons/dist/ # and add it to your CLASSPATH. Then use the following property to point # to your docbook xsl stylesheets' catalog -docbook-xsl-catalog=/media/DATA/ACADEMIC/GSOC/docbook/repository/docbook/trunk/maven/docbook-xsl/target/xsltmp/docbook-xsl-1.75.2/catalog.xml +docbook-xsl-catalog=c:/gsoc2010/docbook-xsl-1.75.2/catalog.xml +#docbook-xsl-catalog=/media/DATA/ACADEMIC/GSOC/docbook/repository/docbook/trunk/maven/docbook-xsl/target/xsltmp/docbook-xsl-1.75.2/catalog.xml # If you wish to have the ant script validate the document before # building it, set this property to the location # of your DocBook DTD. The sample document is # a DocBook 4.5 document and uncomment the line validate=true. -docbookx.dtd=file:///media/DATA/ACADEMIC/GSOC/docbook/repository/docbook/trunk/defguide/en/schema/docbookx.dtd +docbookx.dtd=c:/workhead/export/DocBookDTD/4.5/docbookx.dtd +#docbookx.dtd=file:///media/DATA/ACADEMIC/GSOC/docbook/repository/docbook/trunk/defguide/en/schema/docbookx.dtd validate=true # Set this to true if you don't need a search tab. exclude.search.from.chunked.html=false -#indexer-language is used to tell the search indexer which language the docbook is written. -#This will be used to identify the correct stemmer, and punctuations that differs from language to language. -#see the documentation for details. en=English, de=German, cn=Chinese, jp=Japanese etc. -#Country codes are available at: http://www.uspto.gov/patft/help/helpctry.htm +# indexer-language is used to tell the search indexer which language +# the docbook is written. This will be used to identify the correct +# stemmer, and punctuations that differs from language to language. +# see the documentation for details. en=English, de=German, +# cn=Chinese, jp=Japanese etc. Country codes are available at: +# http://www.uspto.gov/patft/help/helpctry.htm indexer-language=en Modified: branches/webhelp/xsl/webhelp/build.xml =================================================================== --- branches/webhelp/xsl/webhelp/build.xml 2010-07-18 14:34:15 UTC (rev 8742) +++ branches/webhelp/xsl/webhelp/build.xml 2010-07-18 14:42:03 UTC (rev 8743) @@ -28,10 +28,10 @@ <target name="chunk" depends="clean"> - <mkdir dir="${base-dir}"/> + <mkdir dir="${output-dir}"/> <xslt in="${input-xml}" - out="${base-dir}/dummy.html" + out="${output-dir}/dummy.html" style="${ant.file.dir}/xsl/webhelp.xsl" scanincludeddirectories="false" classpath="${xslt-processor-classpath}"> @@ -40,46 +40,51 @@ <param name="exclude.search.from.chunked.html" expression="${exclude.search.from.chunked.html}" if="exclude.search.from.chunked.html"/> <param name="output_file_name" expression="${output_file_name}"/> - <param name="webhelp.base.dir" expression="${base-dir}" if="base-dir"/> + <param name="webhelp.base.dir" expression="${output-dir}" if="output-dir"/> <param name="indexer.language" expression="${indexer-language}" if="indexer-language"/> <param name="chunk.frameset.start.filename" expression="${chunk.frameset.start.filename}" if="chunk.frameset.start.filename"/> </xslt> - <delete file="${base-dir}/dummy.html"/> + <delete file="${output-dir}/dummy.html"/> <!-- Copy common content such as js files of tree, css etc. to template folder. They will be copied to doc folder. They are NOT page specific! --> - <copy todir="${base-dir}"> + <copy todir="${output-dir}"> <fileset dir="${ant.file.dir}/template"> <include name="**/*"/> + <exclude name="**/content/search/**"/> + </fileset> + </copy> + + <!-- Very simple-minded copy to handle the source document's images --> + <!-- TODO: Look at html help code that produces a manifest file...list of images --> + <!-- Customize webhelp.xsl to produce ant file to copy images actually used? --> + <dirname property="input-images-basedir" file="${input-xml}"/> + <copy todir="${output-dir}/content" failonerror="false"> + <fileset dir="${input-images-basedir}" includes="${input-images-dirs}" /> + </copy> + </target> + + <target name="index" unless="skip-search-indexing"> + + <copy todir="${output-dir}"> + <fileset dir="${ant.file.dir}/template"> + <include name="**/*"/> <exclude name="**/content/search/*.props"/> + <exclude name="**/content/search/stemmers/*"/> </fileset> </copy> - <!-- We separate this out so we only copy the stopwords list for the indexer language --> - <copy todir="${base-dir}"> + + <!-- We separate this out so we only copy the stopwords list and stemmer for the indexer language --> + <copy todir="${output-dir}"> <fileset dir="${ant.file.dir}/template"> <include name="**/content/search/default.props"/> <include name="**/content/search/punctuation.props"/> <include name="**/content/search/${indexer-language}*.props"/> + <include name="**/content/search/stemmers/${indexer-language}_stemmer.js"/> </fileset> </copy> - - <!--Deletes all the stemmers that are copied to doc/ folder. Then, adds only the needed stemmer--> - <delete dir="${base-dir}/content/search/stemmers"/> - <copy todir="doc/content/search/stemmers/" - file="template/content/search/stemmers/${indexer-language}_stemmer.js"/> - <!-- Very simple-minded copy to handle the source document's images --> - <!-- TODO: Look at html help code that produces a manifest file...list of images --> - <!-- Customize webhelp.xsl to produce ant file to copy images used? --> - <copy todir="${base-dir}/content" failonerror="false"> - <fileset dir="${input-images-dir}"/> - </copy> - - </target> - - <target name="index" unless="skip-search-indexing"> - <path id="nw-cms.jar.path"> <pathelement location="${ant.file.dir}/indexer/lib/nw-cms.jar"/> </path> @@ -89,12 +94,12 @@ <classpath refid="nw-cms.jar.path"/> </taskdef> - <echo>Indexing html files in ${base-dir}/content</echo> + <echo>Indexing html files in ${output-dir}/content</echo> - <indexertask htmldir="${base-dir}/content" indexerLanguage="${indexer-language}"/> + <indexertask htmldir="${output-dir}/content" indexerLanguage="${indexer-language}"/> <delete> - <fileset dir="${base-dir}/content/search" includes="*.props"/> + <fileset dir="${output-dir}/content/search" includes="*.props"/> </delete> <delete file="xx.html"/> @@ -127,13 +132,12 @@ </target> <target name="clean"> - <delete dir="${base-dir}"/> + <delete dir="${output-dir}"/> </target> <target name="help"> <echo>Usage:</echo> - <echo>doc: Generate the documentation in the doc dir and index it.</echo> - <echo>chunk: Generate the frameset.</echo> + <echo>webhelp: Generate the document in webhelp format.</echo> <echo>index: Index the content.</echo> <echo>build-indexer: Rebuilds the indexer.</echo> </target> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dc...@us...> - 2010-07-18 14:53:43
|
Revision: 8744 http://docbook.svn.sourceforge.net/docbook/?rev=8744&view=rev Author: dcramer Date: 2010-07-18 14:53:37 +0000 (Sun, 18 Jul 2010) Log Message: ----------- Renaming exclude.search.from.chunked.html to exclude.search.from.webhelp Modified Paths: -------------- branches/webhelp/xsl/webhelp/build.properties branches/webhelp/xsl/webhelp/build.xml branches/webhelp/xsl/webhelp/xsl/webhelp.xsl Modified: branches/webhelp/xsl/webhelp/build.properties =================================================================== --- branches/webhelp/xsl/webhelp/build.properties 2010-07-18 14:42:03 UTC (rev 8743) +++ branches/webhelp/xsl/webhelp/build.properties 2010-07-18 14:53:37 UTC (rev 8744) @@ -31,7 +31,7 @@ validate=true # Set this to true if you don't need a search tab. -exclude.search.from.chunked.html=false +exclude.search.from.webhelp=false # indexer-language is used to tell the search indexer which language # the docbook is written. This will be used to identify the correct Modified: branches/webhelp/xsl/webhelp/build.xml =================================================================== --- branches/webhelp/xsl/webhelp/build.xml 2010-07-18 14:42:03 UTC (rev 8743) +++ branches/webhelp/xsl/webhelp/build.xml 2010-07-18 14:53:37 UTC (rev 8744) @@ -17,7 +17,7 @@ <equals arg1="${validate}" arg2="true"/> </condition> <condition property="skip-search-indexing"> - <equals arg1="${exclude.search.from.chunked.html}" arg2="true"/> + <equals arg1="${exclude.search.from.webhelp}" arg2="true"/> </condition> <target name="validate" if="perform-validation"> @@ -37,8 +37,8 @@ classpath="${xslt-processor-classpath}"> <xmlcatalog refid="catalog"/> <param name="chunked.toc.all.open" expression="${chunked.toc.all.open}" if="chunked.toc.all.open"/> - <param name="exclude.search.from.chunked.html" expression="${exclude.search.from.chunked.html}" - if="exclude.search.from.chunked.html"/> + <param name="exclude.search.from.webhelp" expression="${exclude.search.from.webhelp}" + if="exclude.search.from.webhelp"/> <param name="output_file_name" expression="${output_file_name}"/> <param name="webhelp.base.dir" expression="${output-dir}" if="output-dir"/> <param name="indexer.language" expression="${indexer-language}" if="indexer-language"/> Modified: branches/webhelp/xsl/webhelp/xsl/webhelp.xsl =================================================================== --- branches/webhelp/xsl/webhelp/xsl/webhelp.xsl 2010-07-18 14:42:03 UTC (rev 8743) +++ branches/webhelp/xsl/webhelp/xsl/webhelp.xsl 2010-07-18 14:53:37 UTC (rev 8744) @@ -15,7 +15,7 @@ cdata-section-elements=""/> <!-- Custom params! --> - <xsl:param name="exclude.search.from.chunked.html">false</xsl:param> + <xsl:param name="exclude.search.from.webhelp">false</xsl:param> <xsl:param name="chunk.frameset.start.filename">index.html</xsl:param> <xsl:param name="output_file_name">readme</xsl:param> <xsl:param name="chunked.toc.all.open">1</xsl:param> @@ -179,7 +179,7 @@ <!--testing toc in the content page> <xsl:call-template name="webhelptoctoc"/> - <xsl:if test="$exclude.search.from.chunked.html != 'true'"> + <xsl:if test="$exclude.search.from.webhelp != 'true'"> <xsl:call-template name="search"/> </xsl:if--> </xsl:template> @@ -445,7 +445,7 @@ </em> </a> </li> - <xsl:if test="$exclude.search.from.chunked.html != 'true'"> + <xsl:if test="$exclude.search.from.webhelp != 'true'"> <li> <a href="#searchDiv"> <em> @@ -466,7 +466,7 @@ </xsl:apply-templates> </ul> </div> - <xsl:if test="$exclude.search.from.chunked.html != 'true'"> + <xsl:if test="$exclude.search.from.webhelp != 'true'"> <div id="searchDiv"> <div id="search"> <form onsubmit="Verifie(ditaSearch_Form);return false" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dc...@us...> - 2010-07-18 17:51:28
|
Revision: 8745 http://docbook.svn.sourceforge.net/docbook/?rev=8745&view=rev Author: dcramer Date: 2010-07-18 17:51:19 +0000 (Sun, 18 Jul 2010) Log Message: ----------- Documentation updates Modified Paths: -------------- branches/webhelp/xsl/webhelp/build.properties branches/webhelp/xsl/webhelp/docsrc/readme.xml Modified: branches/webhelp/xsl/webhelp/build.properties =================================================================== --- branches/webhelp/xsl/webhelp/build.properties 2010-07-18 14:53:37 UTC (rev 8744) +++ branches/webhelp/xsl/webhelp/build.properties 2010-07-18 17:51:19 UTC (rev 8745) @@ -6,10 +6,12 @@ # to the output directory, you can list patterns here. # See the Ant documentation for fileset for documentation # on patterns. + #input-images-dirs=images/** figures/** graphics/** # By default, the ant script assumes your images are stored # in the same directory as the input-xml. If you store your # image directories in another directory, specify it here. +# and uncomment this line. #input-images-basedir=/path/to/image/location # Modify this so that it points to your copy of the Saxon 6.5 jar. Modified: branches/webhelp/xsl/webhelp/docsrc/readme.xml =================================================================== --- branches/webhelp/xsl/webhelp/docsrc/readme.xml 2010-07-18 14:53:37 UTC (rev 8744) +++ branches/webhelp/xsl/webhelp/docsrc/readme.xml 2010-07-18 17:51:19 UTC (rev 8745) @@ -68,12 +68,11 @@ </listitem> <listitem> - <para>All files in <filename + <para>Some files in the <filename class="directory">template/content/search</filename> and <filename - class="directory">indexer</filename> are part of N. Quaine's - htmlsearch DITA plugin, with modifications to fix bugs and make it - work better with DocBook content. The htmlsearch DITA plugin is - available from the <ulink + class="directory">indexer</filename> directories were originally + part of N. Quaine's htmlsearch DITA plugin. The htmlsearch DITA + plugin is available from the <ulink url="http://tech.groups.yahoo.com/group/dita-users/files/Demos/">files page</ulink> of the DITA-users yahoogroup. The htmlsearch plugin was released under a BSD-style license. See @@ -142,18 +141,47 @@ (.chm) format or Eclipse help. If the content is help for a Web application that is not exposed to the Internet or requires that the user be logged in, then it is impossible to use services like Google to add - search. <itemizedlist> + search. <indexterm class="singular"> + <primary>features</primary> + </indexterm><itemizedlist> <title>Features</title> <listitem> - <para>Full text search with stemming support for English and German. - Stemming support can be added for other languages if a stemmer is - implemented.</para> - </listitem> + <para>Full text search.<indexterm class="singular"> + <primary>search</primary> - <listitem> - <para>Search results can include brief descriptions of the - target.</para> + <secondary>features</secondary> + </indexterm></para> + + <itemizedlist> + <listitem> + <para>Stemming support for English and German. Stemming support + can be added for other languages by implementing a + stemmer.<indexterm class="singular"> + <primary>search</primary> + + <secondary>stemming</secondary> + </indexterm></para> + </listitem> + + <listitem> + <para>Search highlighting shows where the searched for term + appears in the results.<indexterm class="singular"> + <primary>search</primary> + + <secondary>highlighting</secondary> + </indexterm></para> + </listitem> + + <listitem> + <para>Search results can include brief descriptions of the + target.<indexterm class="singular"> + <primary>search</primary> + + <secondary>descriptions</secondary> + </indexterm></para> + </listitem> + </itemizedlist> </listitem> <listitem> @@ -179,7 +207,7 @@ <title>Enhancements planned as part of GSOC 2010</title> <listitem> - <para>[DONE] Implement the toc and serach pane without using + <para>[DONE] Implement the toc and search pane without using frames.</para> </listitem> @@ -207,11 +235,12 @@ </listitem> <listitem> - <para>Improve the support for Japanese and Chinese.</para> + <para>[DONE] Add search highlighting with a button to toggle it on + an off.</para> </listitem> <listitem> - <para>Add search highlighting.</para> + <para>Improve the support for Japanese and Chinese.</para> </listitem> <listitem> @@ -229,8 +258,19 @@ </listitem> <listitem> - <para>Add an option to use Lucene for server-side searches with toc - state persisted on the server.</para> + <para>Add other search options:</para> + + <itemizedlist> + <listitem> + <para>Add an option to use Lucene for server-side searches with + toc state persisted on the server.</para> + </listitem> + + <listitem> + <para>Add a simple form that uses a Google site:my.domain.com + based search.</para> + </listitem> + </itemizedlist> </listitem> <listitem> @@ -438,8 +478,21 @@ <para>In a text editor, edit the <filename>build.properties</filename> file in the webhelp directory and make the changes indicated by the comments:<programlisting>input-xml=docsrc/readme.xml -frameset.base.dir=doc +output-dir=doc +stylesheet-path=xsl/webhelp.xsl +# If your document has image directories that need to be copied +# to the output directory, you can list patterns here. +# See the Ant documentation for fileset for documentation +# on patterns. +#input-images-dirs=images/** figures/** graphics/** + +# By default, the ant script assumes your images are stored +# in the same directory as the input-xml. If you store your +# image directories in another directory, specify it here. +# and uncomment this line. +#input-images-basedir=/path/to/image/location + # Modify this so that it points to your copy of the Saxon 6.5 jar. xslt-processor-classpath=c:/workhead/export/saxon/6.5/lib/saxon.jar @@ -457,12 +510,16 @@ validate=true # Set this to true if you don't need a search tab. -exclude.search.from.chunked.html=false +exclude.search.from.webhelp=false -#indexer-language is used to tell the search indexer which language the docbook is written. -#This will be used to identify the correct stemmer, and punctuations that differs from language to language. -#see the documentation for details. en=English, cn=Chinese, jp=Japanese etc. -indexer-language=en</programlisting></para> +# indexer-language is used to tell the search indexer which language +# the docbook is written. This will be used to identify the correct +# stemmer, and punctuations that differs from language to language. +# see the documentation for details. en=English, de=German, +# cn=Chinese, jp=Japanese etc. Country codes are available at: +# http://www.uspto.gov/patft/help/helpctry.htm +indexer-language=en +</programlisting></para> </step> <step> @@ -483,7 +540,8 @@ directory, and imports the <filename>build.xml</filename> from this package. For example: <programlisting><project> <property name="input-xml" value="<replaceable>path-to/yourfile.xml</replaceable>"/> - <property name="frameset.base.dir" value="<replaceable>path-to/desired-output-dir</replaceable>"/> + <property name="input-images-dirs" value="<replaceable>images/** figures/** graphics/**</replaceable>"/> + <property name="output-dir" value="<replaceable>path-to/desired-output-dir</replaceable>"/> <import file="<replaceable>path-to/docbook-webhelp/</replaceable>build.xml"/> </project></programlisting></para> </step> @@ -493,11 +551,6 @@ <filename>build.xml</filename> file, type <code>ant webhelp</code> to build your document.</para> </step> - - <step> - <para>Add some code to the main ant script to copy your images - to the output directory.</para> - </step> </substeps> </step> </procedure> @@ -514,7 +567,7 @@ multiple HTML files</ulink> in Bob Stayton's <ulink url="http://www.sagehill.net/docbookxsl/index.html">DocBook XSL: The Complete Guide</ulink> for information on controlling output file - names in DocBook.</para> + names and which files are chunked in DocBook.</para> </tip></para> <para>When you perform a search, the results can include brief @@ -554,6 +607,12 @@ <secondary>building</secondary> </indexterm> </section> + + <section> + <title>Adding support for other languages</title> + + <para>Currently, </para> + </section> </chapter> <chapter> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dc...@us...> - 2010-07-18 18:13:09
|
Revision: 8746 http://docbook.svn.sourceforge.net/docbook/?rev=8746&view=rev Author: dcramer Date: 2010-07-18 18:13:03 +0000 (Sun, 18 Jul 2010) Log Message: ----------- Adding some docs to build.properties. Adjusting stylesheet-path so by default it is relative to the main antbuild (so you can import build.xml in another build.xml and have it 'just work' Modified Paths: -------------- branches/webhelp/xsl/webhelp/build.properties branches/webhelp/xsl/webhelp/build.xml Modified: branches/webhelp/xsl/webhelp/build.properties =================================================================== --- branches/webhelp/xsl/webhelp/build.properties 2010-07-18 17:51:19 UTC (rev 8745) +++ branches/webhelp/xsl/webhelp/build.properties 2010-07-18 18:13:03 UTC (rev 8746) @@ -1,7 +1,16 @@ +# The path (relative to the build.xml file) to your input document. +# To use your own input document, create a build.xml file of your own +# and import this build.xml. input-xml=docsrc/readme.xml + +# The directory in which to put the output files. +# This directory is created if it does not exist. output-dir=doc -stylesheet-path=xsl/webhelp.xsl +# If you are using a customization layer that imports webhelp.xsl, use +# this property to point to it. +stylesheet-path=${ant.file.dir}/xsl/webhelp.xsl + # If your document has image directories that need to be copied # to the output directory, you can list patterns here. # See the Ant documentation for fileset for documentation Modified: branches/webhelp/xsl/webhelp/build.xml =================================================================== --- branches/webhelp/xsl/webhelp/build.xml 2010-07-18 17:51:19 UTC (rev 8745) +++ branches/webhelp/xsl/webhelp/build.xml 2010-07-18 18:13:03 UTC (rev 8746) @@ -1,7 +1,7 @@ <project default="help" name="mainbuild"> + <dirname property="ant.file.dir" file="${ant.file.mainbuild}"/> <loadproperties srcFile="build.properties"/> - <dirname property="ant.file.dir" file="${ant.file.mainbuild}"/> <xmlcatalog id="catalog"> <catalogpath> @@ -32,7 +32,7 @@ <xslt in="${input-xml}" out="${output-dir}/dummy.html" - style="${ant.file.dir}/xsl/webhelp.xsl" + style="${stylesheet-path}" scanincludeddirectories="false" classpath="${xslt-processor-classpath}"> <xmlcatalog refid="catalog"/> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dc...@us...> - 2010-07-19 01:55:17
|
Revision: 8749 http://docbook.svn.sourceforge.net/docbook/?rev=8749&view=rev Author: dcramer Date: 2010-07-19 01:55:10 +0000 (Mon, 19 Jul 2010) Log Message: ----------- Documentation updates Modified Paths: -------------- branches/webhelp/xsl/webhelp/build.properties branches/webhelp/xsl/webhelp/docsrc/readme.xml Property Changed: ---------------- branches/webhelp/xsl/webhelp/ Property changes on: branches/webhelp/xsl/webhelp ___________________________________________________________________ Added: svn:ignore + doc publish.sh Modified: branches/webhelp/xsl/webhelp/build.properties =================================================================== --- branches/webhelp/xsl/webhelp/build.properties 2010-07-18 20:19:52 UTC (rev 8748) +++ branches/webhelp/xsl/webhelp/build.properties 2010-07-19 01:55:10 UTC (rev 8749) @@ -29,7 +29,8 @@ # To use this catalog, make sure the resolver is in your classpath. # Download xml-commons-resolver from http://xml.apache.org/commons/dist/ # and add it to your CLASSPATH. Then use the following property to point -# to your docbook xsl stylesheets' catalog +# to your docbook xsl stylesheets' catalog. Alternatively, +# you can list the catalog file in your CatalogManager.properties file. docbook-xsl-catalog=c:/gsoc2010/docbook-xsl-1.75.2/catalog.xml #docbook-xsl-catalog=/media/DATA/ACADEMIC/GSOC/docbook/repository/docbook/trunk/maven/docbook-xsl/target/xsltmp/docbook-xsl-1.75.2/catalog.xml @@ -37,6 +38,8 @@ # building it, set this property to the location # of your DocBook DTD. The sample document is # a DocBook 4.5 document and uncomment the line validate=true. +# Alternatively, you can list the DTD's catalog file in your +# CatalogManager.properties file. docbookx.dtd=c:/workhead/export/DocBookDTD/4.5/docbookx.dtd #docbookx.dtd=file:///media/DATA/ACADEMIC/GSOC/docbook/repository/docbook/trunk/defguide/en/schema/docbookx.dtd validate=true Modified: branches/webhelp/xsl/webhelp/docsrc/readme.xml =================================================================== --- branches/webhelp/xsl/webhelp/docsrc/readme.xml 2010-07-18 20:19:52 UTC (rev 8748) +++ branches/webhelp/xsl/webhelp/docsrc/readme.xml 2010-07-19 01:55:10 UTC (rev 8749) @@ -419,19 +419,6 @@ </step> <step> - <para>If necessary, download <ulink - url="http://xml.apache.org/commons/dist">xml-commons-resolver.jar</ulink> - and add it to your <envar>CLASSPATH</envar>. <tip> - <para>When adding jar files to your <envar>CLASSPATH</envar>, be - sure to include the jar file. For example: - <filename>C:\programs\xml-commons-resolver-1.2\resolver.jar</filename>. - Note that on Windows, the <envar>CLASSPATH</envar> is a - semicolon delimited list of jar files and paths to java class - files.</para> - </tip></para> - </step> - - <step> <para>Download <ulink url="http://prdownloads.sourceforge.net/saxon/saxon6-5-5.zip">Saxon 6.5.x</ulink> and unzip the distribution to a convenient location on @@ -461,36 +448,71 @@ </step> <step> - <para>To improve performance, download and extract DocBook XSLs to a - convenient location on your file system. Currently, this package - supports <ulink - url="http://sourceforge.net/projects/docbook/files/#files">docbook-xsl</ulink> - (i.e. it does not yet support the namespace version of the xsls and - does not yet strip the namespace from DocBook 5.x documents. <note> - <para>If you see the message <screen>Warning: catalogpath listing external catalogs will be ignored</screen> - when you generate output, this indicates that your catalog - resolver is not installed correctly and is not being - used.</para> - </note></para> + <para>To improve performance, you should use a catalog resolver to + cause webhelp.xsl to import a local version of the DocBook XSL + stylesheets. Alternatively, you can edit the <sgmltag + class="attribute">href</sgmltag> attribute in the + <sgmltag>xsl:import</sgmltag> element in + <filename>webhelp.xsl</filename>.</para> + + <substeps> + <step> + <para>If necessary, download <ulink + url="http://xml.apache.org/commons/dist">xml-commons-resolver.jar</ulink> + and add it to your <envar>CLASSPATH</envar>. <tip> + <para>When adding jar files to your + <envar>CLASSPATH</envar>, be sure to include the jar file. + For example: + <filename>C:\programs\xml-commons-resolver-1.2\resolver.jar</filename>. + Note that on Windows, the <envar>CLASSPATH</envar> is a + semicolon delimited list of jar files and paths to java + class files.</para> + </tip></para> + </step> + + <step> + <para> Download and extract DocBook XSLs to a convenient + location on your file system. Currently, this package supports + <ulink + url="http://sourceforge.net/projects/docbook/files/#files">docbook-xsl</ulink> + (i.e. it does not yet support the namespace version of the xsls + and does not yet strip the namespace from DocBook 5.x documents. + <note> + <para>If you see the message <screen>Warning: catalogpath listing external catalogs will be ignored</screen> + when you generate output, this indicates that your catalog + resolver is not installed correctly and is not being + used.</para> + </note></para> + </step> + </substeps> </step> <step id="edit-build-properties"> <para>In a text editor, edit the <filename>build.properties</filename> file in the webhelp directory - and make the changes indicated by the comments:<programlisting>input-xml=docsrc/readme.xml + and make the changes indicated by the comments:<programlisting># The path (relative to the build.xml file) to your input document. +# To use your own input document, create a build.xml file of your own +# and import this build.xml. +input-xml=docsrc/readme.xml + +# The directory in which to put the output files. +# This directory is created if it does not exist. output-dir=doc -stylesheet-path=xsl/webhelp.xsl +# If you are using a customization layer that imports webhelp.xsl, use +# this property to point to it. +stylesheet-path=${ant.file.dir}/xsl/webhelp.xsl + # If your document has image directories that need to be copied # to the output directory, you can list patterns here. # See the Ant documentation for fileset for documentation # on patterns. + #input-images-dirs=images/** figures/** graphics/** - # By default, the ant script assumes your images are stored # in the same directory as the input-xml. If you store your # image directories in another directory, specify it here. -# and uncomment this line. +# and uncomment this line. #input-images-basedir=/path/to/image/location # Modify this so that it points to your copy of the Saxon 6.5 jar. @@ -499,14 +521,19 @@ # To use this catalog, make sure the resolver is in your classpath. # Download xml-commons-resolver from http://xml.apache.org/commons/dist/ # and add it to your CLASSPATH. Then use the following property to point -# to your docbook xsl stylesheets' catalog +# to your docbook xsl stylesheets' catalog. Alternatively, +# you can list the catalog file in your CatalogManager.properties file. docbook-xsl-catalog=c:/gsoc2010/docbook-xsl-1.75.2/catalog.xml +#docbook-xsl-catalog=/media/DATA/ACADEMIC/GSOC/docbook/repository/docbook/trunk/maven/docbook-xsl/target/xsltmp/docbook-xsl-1.75.2/catalog.xml # If you wish to have the ant script validate the document before # building it, set this property to the location # of your DocBook DTD. The sample document is # a DocBook 4.5 document and uncomment the line validate=true. +# Alternatively, you can list the DTD's catalog file in your +# CatalogManager.properties file. docbookx.dtd=c:/workhead/export/DocBookDTD/4.5/docbookx.dtd +#docbookx.dtd=file:///media/DATA/ACADEMIC/GSOC/docbook/repository/docbook/trunk/defguide/en/schema/docbookx.dtd validate=true # Set this to true if you don't need a search tab. @@ -531,11 +558,13 @@ </step> <step> - <para>To process your own content:</para> + <para>To process your own content you simply refer to this package + from another <filename>build.xml</filename> in arbitrary location on + your system.</para> <substeps> <step> - <para>create a new <filename>build.xml</filename> file that + <para>Create a new <filename>build.xml</filename> file that defines the name of your source file, the desired output directory, and imports the <filename>build.xml</filename> from this package. For example: <programlisting><project> @@ -585,16 +614,88 @@ </listitem> </itemizedlist></para> - <para>TODO: Document Apache config changes to improve performance of - very long documents.</para> + <para>To customize the look and feel of the help, study the following + css files:<itemizedlist> + <listitem> + <para><filename>doc/common/css/positioning.css</filename>: This + handles the Positioning of DIVs in appropriate positions. For + example, it causes the <code>leftnavigation</code> div to appear + on the left, the header on top, and so on. Use this if you need to + change the relative positions or need to change the width/height + etc.</para> + </listitem> + + <listitem> + <para><filename>doc/common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css</filename>: + This is the theming part which adds colors and stuff. This is a + default theme comes with <ulink + url="http://jqueryui.com/download">jqueryui</ulink> unchanged. You + can get any theme based your interest from this. (Themes are on + right navigation bar.) Then replace the css theme folder + (theme-redmond) with it, and change the xsl to point to the new + css.</para> + </listitem> + + <listitem> + <para><filename>doc/common/jquery/treeview/jquery.treeview.css</filename>: + This styles the toc Tree. Generally, you don't have to edit this + file.</para> + </listitem> + </itemizedlist></para> + + <section> + <title>Recommended Apache configurations</title> + + <para>If you are serving a long document from an Apache web server, we + recommend you make the following additions or changes to your + <filename>httpd.conf</filename> or <filename>.htaccess</filename> + file. <remark>TODO: Explain what each thing + does.</remark><programlisting>AddDefaultCharSet UTF-8 + +# 480 weeks +<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$"> +Header set Cache-Control "max-age=290304000, public" +</FilesMatch> + +# 2 DAYS +<FilesMatch "\.(xml|txt)$"> +Header set Cache-Control "max-age=172800, public, must-revalidate" +</FilesMatch> + +# 2 HOURS +<FilesMatch "\.(html|htm)$"> +Header set Cache-Control "max-age=7200, must-revalidate" +</FilesMatch> + +ErrorDocument 404 http://www.thingbag.net/404.html + +IndexIgnore * + +# compress text, html, javascript, css, xml: +AddOutputFilterByType DEFLATE text/plain +AddOutputFilterByType DEFLATE text/html +AddOutputFilterByType DEFLATE text/xml +AddOutputFilterByType DEFLATE text/css +AddOutputFilterByType DEFLATE application/xml +AddOutputFilterByType DEFLATE application/xhtml+xml +AddOutputFilterByType DEFLATE application/rss+xml +AddOutputFilterByType DEFLATE application/javascript +AddOutputFilterByType DEFLATE application/x-javascript + +# Or, compress certain file types by extension: +<Files *.html> +SetOutputFilter DEFLATE +</Files> +</programlisting></para> + </section> </section> <section> <title>Building the indexer</title> <para role="summary">To build the indexer, you must have installed the - JDK version 1.5 or higher and set the ANT_HOME environment variable. Run - <code>ant build-indexer</code> to recompile + JDK version 1.5 or higher and set the <envar>ANT_HOME</envar> + environment variable. Run <code>ant build-indexer</code> to recompile <filename>nw-cms.jar</filename></para> <indexterm> @@ -609,45 +710,86 @@ </section> <section> - <title>Adding support for other languages</title> + <title>Adding support for other (non-CJKV) languages</title> - <para>Currently, </para> - </section> - </chapter> + <para>To support stemming for a language, the search mechanism requires + a stemmer implemented in both Java and JavaScript. The Java version is + used by the indexer and the JavaScript verison is used to stem the + user's input on the search form. Currently the search mechanism supports + stemming for English and German. In addition, Java stemmers are included + for the following languages. Therefore, to support these languages, you + only need to implement the stemmer in JavaScript and add it to the + template. If you do undertake this task, please consider contributing + the JavaScript version back to this project and to <ulink + url="http://snowball.tartarus.org/texts/stemmersoverview.html">Martin + Porter's project</ulink>.<itemizedlist> + <listitem> + <para>Danish</para> + </listitem> - <chapter> - <title>Design</title> + <listitem> + <para>Dutch</para> + </listitem> - <para>This chapter provides an overview of how webhelp is implemented. - <remark>WRITEME</remark></para> + <listitem> + <para>Finnish</para> + </listitem> - <para>TODO: Document details about cookie use.</para> - </chapter> + <listitem> + <para>French</para> + </listitem> - <chapter> - <chapterinfo> - <abstract> - <para>Demo of Japanese text: - ネットワークに接続されているコンピュータ。加入者コンピュータは<emphasis>クライアント - ホスト</emphasis>であり、プロバイダ システムは<emphasis>サーバー ホスト</emphasis>です。</para> - </abstract> - </chapterinfo> + <listitem> + <para>Hungarian</para> + </listitem> - <title>ホスト</title> + <listitem> + <para>Italian</para> + </listitem> - <indexterm> - <primary>ホスト</primary> - </indexterm> + <listitem> + <para>Norwegian</para> + </listitem> - <para>To test this page, search for the term: ホスト</para> + <listitem> + <para>Portuguese</para> + </listitem> - <formalpara> - <title>ホスト</title> + <listitem> + <para>Romanian</para> + </listitem> - <para>ネットワークに接続されているコンピュータ。加入者コンピュータは<emphasis>クライアント - ホスト</emphasis>であり、プロバイダ システムは<emphasis>サーバー ホスト</emphasis>です。</para> - </formalpara> + <listitem> + <para>Russian</para> + </listitem> + + <listitem> + <para>Spanish</para> + </listitem> + + <listitem> + <para>Swedish</para> + </listitem> + + <listitem> + <para>Turkish</para> + </listitem> + </itemizedlist></para> + </section> </chapter> - <index></index> + <chapter> + <title>Design</title> + + <para>This chapter provides an overview of how webhelp is implemented. + <remark>WRITEME</remark></para> + + <para>The table of contents and search panes are implemented as divs and + rendered as if they were the left pane in a frameset. As a result, the + page must save the state of the table of contents and the search in + cookies when you navigate away from a page. When you load a new page, the + page reads these cookies and restores the state of the table of contents + tree and search. The result is that the help system behaves exactly as if + it were a frameset. </para> + </chapter> </book> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ka...@us...> - 2010-07-20 03:23:29
|
Revision: 8751 http://docbook.svn.sourceforge.net/docbook/?rev=8751&view=rev Author: kasunbg Date: 2010-07-20 03:23:22 +0000 (Tue, 20 Jul 2010) Log Message: ----------- bug fix: show toc tree button is not visible in firefox. Modified Paths: -------------- branches/webhelp/xsl/webhelp/build.properties branches/webhelp/xsl/webhelp/xsl/webhelp.xsl Modified: branches/webhelp/xsl/webhelp/build.properties =================================================================== --- branches/webhelp/xsl/webhelp/build.properties 2010-07-19 08:27:23 UTC (rev 8750) +++ branches/webhelp/xsl/webhelp/build.properties 2010-07-20 03:23:22 UTC (rev 8751) @@ -31,8 +31,8 @@ # and add it to your CLASSPATH. Then use the following property to point # to your docbook xsl stylesheets' catalog. Alternatively, # you can list the catalog file in your CatalogManager.properties file. -docbook-xsl-catalog=c:/gsoc2010/docbook-xsl-1.75.2/catalog.xml -#docbook-xsl-catalog=/media/DATA/ACADEMIC/GSOC/docbook/repository/docbook/trunk/maven/docbook-xsl/target/xsltmp/docbook-xsl-1.75.2/catalog.xml +#docbook-xsl-catalog=c:/gsoc2010/docbook-xsl-1.75.2/catalog.xml +docbook-xsl-catalog=/media/DATA/ACADEMIC/GSOC/docbook/repository/docbook/trunk/maven/docbook-xsl/target/xsltmp/docbook-xsl-1.75.2/catalog.xml # If you wish to have the ant script validate the document before # building it, set this property to the location Modified: branches/webhelp/xsl/webhelp/xsl/webhelp.xsl =================================================================== --- branches/webhelp/xsl/webhelp/xsl/webhelp.xsl 2010-07-19 08:27:23 UTC (rev 8750) +++ branches/webhelp/xsl/webhelp/xsl/webhelp.xsl 2010-07-20 03:23:22 UTC (rev 8751) @@ -188,7 +188,7 @@ <xsl:template name="user.header.content"> <table> <tr> - <td> + <td style="height: 28px; width: 16px;"> <a id="showHideButton" onclick="showHideToc();" class="pointLeft" title="Hide TOC tree" style="padding-top:3px; padding-bottom:3px;">. </a> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ka...@us...> - 2010-07-22 02:30:55
|
Revision: 8764 http://docbook.svn.sourceforge.net/docbook/?rev=8764&view=rev Author: kasunbg Date: 2010-07-22 02:30:48 +0000 (Thu, 22 Jul 2010) Log Message: ----------- Added icon to the webhelp Fixed the issue of scrolling, which occurs when there is only one page of data is available Modified Paths: -------------- branches/webhelp/xsl/webhelp/template/common/css/positioning.css branches/webhelp/xsl/webhelp/template/common/jquery/treeview/jquery.treeview.min.js branches/webhelp/xsl/webhelp/xsl/webhelp.xsl Added Paths: ----------- branches/webhelp/xsl/webhelp/template/favicon.ico Modified: branches/webhelp/xsl/webhelp/template/common/css/positioning.css =================================================================== --- branches/webhelp/xsl/webhelp/template/common/css/positioning.css 2010-07-22 02:12:39 UTC (rev 8763) +++ branches/webhelp/xsl/webhelp/template/common/css/positioning.css 2010-07-22 02:30:48 UTC (rev 8764) @@ -39,8 +39,11 @@ padding-left: 5px; padding-right: 30px; color: #000000; - border-left: 2px solid #cccccc; /*overflow :scroll;*/ + /*border-left: 2px solid #cccccc; overflow :scroll;*/ z-index: 1000; + + max-width: 70em; + min-width:800px; } #content h1, #content h2 { color: #cc0000; } Modified: branches/webhelp/xsl/webhelp/template/common/jquery/treeview/jquery.treeview.min.js =================================================================== --- branches/webhelp/xsl/webhelp/template/common/jquery/treeview/jquery.treeview.min.js 2010-07-22 02:12:39 UTC (rev 8763) +++ branches/webhelp/xsl/webhelp/template/common/jquery/treeview/jquery.treeview.min.js 2010-07-22 02:30:48 UTC (rev 8764) @@ -11,5 +11,6 @@ * http://www.gnu.org/licenses/gpl.html * * Revision: $Id: jquery.treeview.js 4684 2008-02-07 19:08:06Z joern.zaefferer $ + * kasunbg: changed the cookieid name * */;(function($){$.extend($.fn,{swapClass:function(c1,c2){var c1Elements=this.filter('.'+c1);this.filter('.'+c2).removeClass(c2).addClass(c1);c1Elements.removeClass(c1).addClass(c2);return this;},replaceClass:function(c1,c2){return this.filter('.'+c1).removeClass(c1).addClass(c2).end();},hoverClass:function(className){className=className||"hover";return this.hover(function(){$(this).addClass(className);},function(){$(this).removeClass(className);});},heightToggle:function(animated,callback){animated?this.animate({height:"toggle"},animated,callback):this.each(function(){jQuery(this)[jQuery(this).is(":hidden")?"show":"hide"]();if(callback)callback.apply(this,arguments);});},heightHide:function(animated,callback){if(animated){this.animate({height:"hide"},animated,callback);}else{this.hide();if(callback)this.each(callback);}},prepareBranches:function(settings){if(!settings.prerendered){this.filter(":last-child:not(ul)").addClass(CLASSES.last);this.filter((settings.collapsed?"":"."+CLASSES.closed)+":not(."+CLASSES.open+")").find(">ul").hide();}return this.filter(":has(>ul)");},applyClasses:function(settings,toggler){this.filter(":has(>ul):not(:has(>a))").find(">span").click(function(event){toggler.apply($(this).next());}).add($("a",this)).hoverClass();if(!settings.prerendered){this.filter(":has(>ul:hidden)").addClass(CLASSES.expandable).replaceClass(CLASSES.last,CLASSES.lastExpandable);this.not(":has(>ul:hidden)").addClass(CLASSES.collapsable).replaceClass(CLASSES.last,CLASSES.lastCollapsable);this.prepend("<div class=\""+CLASSES.hitarea+"\"/>").find("div."+CLASSES.hitarea).each(function(){var classes="";$.each($(this).parent().attr("class").split(" "),function(){classes+=this+"-hitarea ";});$(this).addClass(classes);});}this.find("div."+CLASSES.hitarea).click(toggler);},treeview:function(settings){if(typeof(window.treeCookieId) === 'undefined' || window.treeCookieId === ""){treeCookieId = "treeview";} settings=$.extend({cookieId: treeCookieId},settings);if(settings.add){return this.trigger("add",[settings.add]);}if(settings.toggle){var callback=settings.toggle;settings.toggle=function(){return callback.apply($(this).parent()[0],arguments);};}function treeController(tree,control){function handler(filter){return function(){toggler.apply($("div."+CLASSES.hitarea,tree).filter(function(){return filter?$(this).parent("."+filter).length:true;}));return false;};}$("a:eq(0)",control).click(handler(CLASSES.collapsable));$("a:eq(1)",control).click(handler(CLASSES.expandable));$("a:eq(2)",control).click(handler());}function toggler(){$(this).parent().find(">.hitarea").swapClass(CLASSES.collapsableHitarea,CLASSES.expandableHitarea).swapClass(CLASSES.lastCollapsableHitarea,CLASSES.lastExpandableHitarea).end().swapClass(CLASSES.collapsable,CLASSES.expandable).swapClass(CLASSES.lastCollapsable,CLASSES.lastExpandable).find(">ul").heightToggle(settings.animated,settings.toggle);if(settings.unique){$(this).parent().siblings().find(">.hitarea").replaceClass(CLASSES.collapsableHitarea,CLASSES.expandableHitarea).replaceClass(CLASSES.lastCollapsableHitarea,CLASSES.lastExpandableHitarea).end().replaceClass(CLASSES.collapsable,CLASSES.expandable).replaceClass(CLASSES.lastCollapsable,CLASSES.lastExpandable).find(">ul").heightHide(settings.animated,settings.toggle);}}function serialize(){function binary(arg){return arg?1:0;}var data=[];branches.each(function(i,e){data[i]=$(e).is(":has(>ul:visible)")?1:0;});$.cookie(settings.cookieId,data.join(""));}function deserialize(){var stored=$.cookie(settings.cookieId);if(stored){var data=stored.split("");branches.each(function(i,e){$(e).find(">ul")[parseInt(data[i])?"show":"hide"]();});}}this.addClass("treeview");var branches=this.find("li").prepareBranches(settings);switch(settings.persist){case"cookie":var toggleCallback=settings.toggle;settings.toggle=function(){serialize();if(toggleCallback){toggleCallback.apply(this,arguments);}};deserialize();break;case"location":var current=this.find("a").filter(function(){return this.href.toLowerCase()==location.href.toLowerCase();});if(current.length){current.addClass("selected").parents("ul, li").add(current.next()).show();}break;}branches.applyClasses(settings,toggler);if(settings.control){treeController(this,settings.control);$(settings.control).show();}return this.bind("add",function(event,branches){$(branches).prev().removeClass(CLASSES.last).removeClass(CLASSES.lastCollapsable).removeClass(CLASSES.lastExpandable).find(">.hitarea").removeClass(CLASSES.lastCollapsableHitarea).removeClass(CLASSES.lastExpandableHitarea);$(branches).find("li").andSelf().prepareBranches(settings).applyClasses(settings,toggler);});}});var CLASSES=$.fn.treeview.classes={open:"open",closed:"closed",expandable:"expandable",expandableHitarea:"expandable-hitarea",lastExpandableHitarea:"lastExpandable-hitarea",collapsable:"collapsable",collapsableHitarea:"collapsable-hitarea",lastCollapsableHitarea:"lastCollapsable-hitarea",lastCollapsable:"lastCollapsable",lastExpandable:"lastExpandable",last:"last",hitarea:"hitarea"};$.fn.Treeview=$.fn.treeview;})(jQuery); \ No newline at end of file Added: branches/webhelp/xsl/webhelp/template/favicon.ico =================================================================== (Binary files differ) Property changes on: branches/webhelp/xsl/webhelp/template/favicon.ico ___________________________________________________________________ Added: svn:executable + * Added: svn:mime-type + application/octet-stream Modified: branches/webhelp/xsl/webhelp/xsl/webhelp.xsl =================================================================== --- branches/webhelp/xsl/webhelp/xsl/webhelp.xsl 2010-07-22 02:12:39 UTC (rev 8763) +++ branches/webhelp/xsl/webhelp/xsl/webhelp.xsl 2010-07-22 02:30:48 UTC (rev 8764) @@ -107,6 +107,7 @@ } <![endif]--> </style> + <link rel="shortcut icon" href="../favicon.ico" type="image/x-icon"/> <link rel="stylesheet" type="text/css" href="../common/css/positioning.css"/> <link rel="stylesheet" type="text/css" href="../common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css"/> <link rel="stylesheet" type="text/css" href="../common/jquery/treeview/jquery.treeview.css"/> @@ -315,6 +316,10 @@ <!-- Prev and Next links generation--> <div id="navheader" align="right"> + <xsl:comment> + <!-- keep this code. In case of neither prev nor next links are available, this will help to + keep the integrity of the DOM tree--> + </xsl:comment> <!--xsl:with-param name="prev" select="$prev"/> <xsl:with-param name="next" select="$next"/> <xsl:with-param name="nav.context" select="$nav.context"/--> @@ -611,6 +616,7 @@ <xsl:with-param name="content"> <html> <head> + <link rel="shortcut icon" href="favicon.ico"/> <meta http-equiv="Refresh" content="0; URL=content/ch01.html"/> <title><xsl:value-of select="//title[1]"/>  </title> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ka...@us...> - 2010-08-07 09:08:07
|
Revision: 8795 http://docbook.svn.sourceforge.net/docbook/?rev=8795&view=rev Author: kasunbg Date: 2010-08-07 09:08:00 +0000 (Sat, 07 Aug 2010) Log Message: ----------- Added Chinese, Japanese, Korean (CJK) support for better searching. Uses Lucene's CJKAnalyzer. New classpath attr in build.xml to reflect new additions. Few fixes to client-side js files for better use of new languages(no-stem langs) Modified Paths: -------------- branches/webhelp/xsl/webhelp/build.xml branches/webhelp/xsl/webhelp/indexer/lib/nw-cms.jar branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/IndexerTask.java branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/SaxHTMLIndex.java branches/webhelp/xsl/webhelp/template/common/main.js branches/webhelp/xsl/webhelp/template/content/search/nwSearchFnt.js Added Paths: ----------- branches/webhelp/xsl/webhelp/indexer/lib/lucene-analyzers-3.0.0.jar branches/webhelp/xsl/webhelp/indexer/lib/lucene-core-3.0.0.jar Modified: branches/webhelp/xsl/webhelp/build.xml =================================================================== --- branches/webhelp/xsl/webhelp/build.xml 2010-08-03 11:43:36 UTC (rev 8794) +++ branches/webhelp/xsl/webhelp/build.xml 2010-08-07 09:08:00 UTC (rev 8795) @@ -13,6 +13,13 @@ <property environment="env"/> <property name="ant.jar" value="${env.ANT_HOME}/lib/ant.jar"/> + <path id="classpath"> + <pathelement location="${ant.file.dir}/indexer/lib/nw-cms.jar"/> + <pathelement location="${ant.file.dir}/indexer/lib/lucene-analyzers-3.0.0.jar"/> + <pathelement location="${ant.file.dir}/indexer/lib/lucene-core-3.0.0.jar"/> + <pathelement path="${ant.jar}"/> + </path> + <condition property="perform-validation"> <equals arg1="${validate}" arg2="true"/> </condition> @@ -84,14 +91,10 @@ <include name="**/content/search/stemmers/${indexer-language}_stemmer.js"/> </fileset> </copy> - - <path id="nw-cms.jar.path"> - <pathelement location="${ant.file.dir}/indexer/lib/nw-cms.jar"/> - </path> - + <taskdef name="indexertask" classname="com.nexwave.nquindexer.IndexerTask"> - <classpath refid="nw-cms.jar.path"/> + <classpath refid="classpath"/> </taskdef> <echo>Indexing html files in ${output-dir}/content</echo> @@ -110,18 +113,20 @@ <target name="build-indexer"> + <mkdir dir="indexer/lib/htmlsearch"/> <javac srcdir="indexer/src" - destdir="indexer/lib" - includes="com/nexwave/nsidita/*.java com/nexwave/nquindexer/*.java" - classpath="${ant.jar}"/> + destdir="indexer/lib/htmlsearch" + includes="com/nexwave/nsidita/*.java com/nexwave/nquindexer/*.java"> + <classpath refid="classpath"/> + </javac> <jar destfile="indexer/lib/nw-cms.jar" - basedir="indexer/lib" + basedir="indexer/lib/htmlsearch" includes="com/**"/> - <delete dir="indexer/lib/com"/> + <delete dir="indexer/lib/htmlsearch"/> </target> Added: branches/webhelp/xsl/webhelp/indexer/lib/lucene-analyzers-3.0.0.jar =================================================================== (Binary files differ) Property changes on: branches/webhelp/xsl/webhelp/indexer/lib/lucene-analyzers-3.0.0.jar ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: branches/webhelp/xsl/webhelp/indexer/lib/lucene-core-3.0.0.jar =================================================================== (Binary files differ) Property changes on: branches/webhelp/xsl/webhelp/indexer/lib/lucene-core-3.0.0.jar ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Modified: branches/webhelp/xsl/webhelp/indexer/lib/nw-cms.jar =================================================================== (Binary files differ) Modified: branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/IndexerTask.java =================================================================== --- branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/IndexerTask.java 2010-08-03 11:43:36 UTC (rev 8794) +++ branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/IndexerTask.java 2010-08-07 09:08:00 UTC (rev 8795) @@ -55,7 +55,8 @@ //supported languages: add new additions to this. don't include country codes to the end such as en_US or en_UK, // as stemmers doesn't find a difference between them. - private String[] supportedLanguages= {"en", "de"}; //currently English & German only. Chinese(cn) to be added shortly. + private String[] supportedLanguages= {"en", "de", "cn", "ja", "ko"}; //currently extended support available for + // English, German, and CJK (Chinese, Japanese, Korean) languages only. // Indexing features: words to remove private ArrayList<String> cleanUpStrings = null; @@ -96,8 +97,9 @@ //if not in supported language list, if(i>=supportedLanguages.length){ - System.out.println("The given language, \""+indexerLanguage+"\", is not supported or specified in a bad format. " + - "Check documentation for details. Language now defaults to english."); + System.out.println("The given language, \""+indexerLanguage+"\", does not have extensive support for " + + "searching or language code is specified in a bad format. Check documentation for details. " + + "Language now defaults to english."); this.indexerLanguage = "en"; } } else { @@ -198,7 +200,7 @@ // Retrieve the clean-up properties for indexing RetrieveCleanUpProps(); - System.out.print("clean"+" " +cleanUpStrings); + // System.out.print("clean"+" " +cleanUpStrings); //create a default handler //SaxHTMLIndex spe = new SaxHTMLIndex (); // do not use clean-up props files Modified: branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/SaxHTMLIndex.java =================================================================== --- branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/SaxHTMLIndex.java 2010-08-03 11:43:36 UTC (rev 8794) +++ branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/SaxHTMLIndex.java 2010-08-07 09:08:00 UTC (rev 8795) @@ -1,7 +1,10 @@ package com.nexwave.nquindexer; import java.io.File; +import java.io.IOException; +import java.io.Reader; import java.util.*; +import java.io.StringReader; // specific dita ot import com.nexwave.nsidita.DocFileInfo; @@ -11,13 +14,21 @@ import com.nexwave.stemmer.snowball.ext.EnglishStemmer; import com.nexwave.stemmer.snowball.ext.GermanStemmer; +//CJK Tokenizing +import org.apache.lucene.analysis.Token; +import org.apache.lucene.analysis.TokenStream; +import org.apache.lucene.analysis.cjk.CJKAnalyzer; +import org.apache.lucene.analysis.cjk.CJKTokenizer; +import org.apache.lucene.analysis.tokenattributes.OffsetAttribute; +import org.apache.lucene.analysis.tokenattributes.TermAttribute; + /** * Parser for the html files generated by DITA-OT. * Extracts the title, the shortdesc and the text within the "content" div tag. <div id="content"> - * + * * @version 1.1 2010 - * + * * @author N. Quaine * @author Kasun Gajasinghe <http://kasunbg.blogspot.com> */ @@ -52,18 +63,18 @@ cleanUpList = cleanUpStrings; cleanUpPunctuation = cleanUpChars; } - + /** * Initializer */ public int init(Map<String,String> tempMap){ tempDico = tempMap; - return 0; + return 0; } /** - * Parses the file to extract all the words for indexing and - * some data characterizing the file. + * Parses the file to extract all the words for indexing and + * some data characterizing the file. * @param file contains the fullpath of the document to parse * @param indexerLanguage this will be used to tell the program which stemmer to be used. * @return a DitaFileInfo object filled with data describing the file @@ -72,10 +83,10 @@ //initialization fileDesc = new DocFileInfo(file); strbf = new StringBuffer(""); - + // Fill strbf by parsing the file parseDocument(file); - + String str = cleanBuffer(strbf); str = str.replaceAll("\\s+"," "); //there's still redundant spaces in the middle // System.out.println(file.toString()+" "+ str +"\n"); @@ -84,34 +95,60 @@ //get items one-by-one, tunnel through the stemmer, and get the stem. //Then, add them to tempSet //Do Stemming for words in items - //TODO currently, stemming support is for english only. Add support for other languages as well. - - SnowballStemmer stemmer; - if(indexerLanguage.equals("en")){ - stemmer = new EnglishStemmer(); - } else if (indexerLanguage.equals("de")){ - stemmer= new GermanStemmer(); + //TODO currently, stemming support is for english and german only. Add support for other languages as well. + + String[] tokenizedItems; + if(indexerLanguage.equalsIgnoreCase("jp") || indexerLanguage.equalsIgnoreCase("cn") + || indexerLanguage.equalsIgnoreCase("ko")){ + LinkedList<String> tokens = new LinkedList<String>(); + try{ + CJKAnalyzer analyzer = new CJKAnalyzer(org.apache.lucene.util.Version.LUCENE_30); + Reader reader = new StringReader(str); + TokenStream stream = analyzer.tokenStream("", reader); + TermAttribute termAtt = (TermAttribute) stream.addAttribute(TermAttribute.class); + OffsetAttribute offAtt = (OffsetAttribute) stream.addAttribute(OffsetAttribute.class); + + while (stream.incrementToken()) { + String term = termAtt.term(); + tokens.add(term); +// System.out.println(term + " " + offAtt.startOffset() + " " + offAtt.endOffset()); + } + + tokenizedItems = tokens.toArray(new String[tokens.size()]); + + }catch (IOException ex){ + tokenizedItems = items; + System.out.println("Error tokenizing content using CJK Analyzer. IOException"); + ex.printStackTrace(); + } + } else { - stemmer = null;//Languages which stemming is not yet supproted.So, No stemmers will be used. + SnowballStemmer stemmer; + if(indexerLanguage.equalsIgnoreCase("en")){ + stemmer = new EnglishStemmer(); + } else if (indexerLanguage.equalsIgnoreCase("de")){ + stemmer= new GermanStemmer(); + } else { + stemmer = null;//Languages which stemming is not yet supproted.So, No stemmers will be used. + } + if(stemmer != null) //If a stemmer available + tokenizedItems = stemmer.doStem(items); + else //if no stemmer available for the particular language + tokenizedItems = items; + } - String[] stemmedItems; - if(stemmer != null) //If a stemmer available - stemmedItems = stemmer.doStem(items); - else //if no stemmer available for the particular language - stemmedItems = items; - - /* for(String stemmedItem: stemmedItems){ + /* for(String stemmedItem: tokenizedItems){ System.out.print(stemmedItem+"| "); }*/ - + //items: remove the duplicated strings first HashSet <String> tempSet = new HashSet<String>(); - tempSet.addAll(Arrays.asList(stemmedItems)); + tempSet.addAll(Arrays.asList(tokenizedItems)); Iterator it = tempSet.iterator(); String s; while (it.hasNext()) { - s = (String)it.next(); + s = (String)it.next(); if (tempDico.containsKey(s)) { String temp = tempDico.get(s); temp = temp.concat(",").concat(Integer.toString(i)); @@ -121,22 +158,22 @@ tempDico.put(s, Integer.toString(i)); } } - + i++; return fileDesc; } /** - * Cleans the string buffer containing all the text retrieved from - * the html file: remove punctuation, clean white spaces, remove the words + * Cleans the string buffer containing all the text retrieved from + * the html file: remove punctuation, clean white spaces, remove the words * which you do not want to index. * NOTE: You may customize this function: - * This version takes into account english and japanese. Depending on your - * needs, - * you may have to add/remove some characters/words through props files + * This version takes into account english and japanese. Depending on your + * needs, + * you may have to add/remove some characters/words through props files * or by modifying tte default code, - * you may want to separate the language processing (doc only in japanese, - * doc only in english, check the language metadata ...). + * you may want to separate the language processing (doc only in japanese, + * doc only in english, check the language metadata ...). */ private String cleanBuffer (StringBuffer strbf) { String str = strbf.toString().toLowerCase(); @@ -144,7 +181,7 @@ StringBuffer tempCharBuf = new StringBuffer(""); if ((cleanUpList == null) || (cleanUpList.isEmpty())){ // Default clean-up - + // Should perhaps eliminate the words at the end of the table? tempStrBuf.append("(?i)\\bthe\\b|\\ba\\b|\\ban\\b|\\bto\\b|\\band\\b|\\bor\\b");//(?i) ignores the case tempStrBuf.append("|\\bis\\b|\\bare\\b|\\bin\\b|\\bwith\\b|\\bbe\\b|\\bcan\\b"); @@ -155,11 +192,11 @@ tempStrBuf.append("|\\bI\\b|\\bme\\b|\\bmy\\b"); str = str.replaceFirst("Copyright � 1998-2007 NexWave Solutions.", " "); - + //nqu 25.01.2008 str = str.replaceAll("\\b.\\b|\\\\", " "); // remove contiguous white charaters - //nqu 25.01.2008 str = str.replaceAll("\\s+", " "); + //nqu 25.01.2008 str = str.replaceAll("\\s+", " "); }else { // Clean-up using the props files tempStrBuf.append("\\ba\\b"); @@ -179,10 +216,10 @@ str = minimalClean(str, tempStrBuf, tempCharBuf); return str; } - + private String minimalClean(String str, StringBuffer tempStrBuf, StringBuffer tempCharBuf) { String tempPunctuation = new String(tempCharBuf); - + str = str.replaceAll("\\s+", " "); str = str.replaceAll("->", " "); str = str.replaceAll(IndexerConstants.EUPUNCTUATION1, " "); @@ -197,13 +234,13 @@ //remove useless words str = str.replaceAll(tempStrBuf.toString(), " "); - + // Redo punctuation after removing some words: (TODO: useful?) str = str.replaceAll(IndexerConstants.EUPUNCTUATION1, " "); str = str.replaceAll(IndexerConstants.EUPUNCTUATION2, " "); str = str.replaceAll(IndexerConstants.JPPUNCTUATION1, " "); str = str.replaceAll(IndexerConstants.JPPUNCTUATION2, " "); - str = str.replaceAll(IndexerConstants.JPPUNCTUATION3, " "); + str = str.replaceAll(IndexerConstants.JPPUNCTUATION3, " "); if (tempPunctuation.length() > 0) { str = str.replaceAll(tempPunctuation, " "); Modified: branches/webhelp/xsl/webhelp/template/common/main.js =================================================================== --- branches/webhelp/xsl/webhelp/template/common/main.js 2010-08-03 11:43:36 UTC (rev 8794) +++ branches/webhelp/xsl/webhelp/template/common/main.js 2010-08-07 09:08:00 UTC (rev 8795) @@ -131,10 +131,14 @@ wList = searchText.split(" "); $("#content").highlight(wList); //Highlight the search input - //Highlight the stems - for (var i = 0; i < wList.length; i++) { - var stemW = stemmer(wList[i]); - sList.push(stemW); + if(typeof stemmer != "undefined" ){ + //Highlight the stems + for (var i = 0; i < wList.length; i++) { + var stemW = stemmer(wList[i]); + sList.push(stemW); + } + } else { + sList = wList; } $("#content").highlight(sList); //Highlight the search input's all stems } Modified: branches/webhelp/xsl/webhelp/template/content/search/nwSearchFnt.js =================================================================== --- branches/webhelp/xsl/webhelp/template/content/search/nwSearchFnt.js 2010-08-03 11:43:36 UTC (rev 8794) +++ branches/webhelp/xsl/webhelp/template/content/search/nwSearchFnt.js 2010-08-07 09:08:00 UTC (rev 8795) @@ -82,7 +82,11 @@ for(var j in wordsList){ var word = wordsList[j]; - stemQueryMap[stemmer(word)] = word; + if(typeof stemmer != "undefined" ){ + stemQueryMap[stemmer(word)] = word; + } else { + stemQueryMap[word] = word; + } } //stemmedWordsList is the stemmed list of words separated by spaces. @@ -94,10 +98,14 @@ } } - //Do the stemming using Porter's stemming algorithm - for (var i = 0; i < cleanwordsList.length; i++) { - var stemWord = stemmer(cleanwordsList[i]); - stemmedWordsList.push(stemWord); + if(typeof stemmer != "undefined" ){ + //Do the stemming using Porter's stemming algorithm + for (var i = 0; i < cleanwordsList.length; i++) { + var stemWord = stemmer(cleanwordsList[i]); + stemmedWordsList.push(stemWord); + } + } else { + stemmedWordsList = cleanwordsList; } //load the scripts with the indices: the following lines do not work on the server. To be corrected This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ka...@us...> - 2010-08-08 16:43:20
|
Revision: 8799 http://docbook.svn.sourceforge.net/docbook/?rev=8799&view=rev Author: kasunbg Date: 2010-08-08 16:43:13 +0000 (Sun, 08 Aug 2010) Log Message: ----------- Added client-side support for cjk searching. By default, for cjk, 2-gram tokenizing is used in both client run time and indexer build time. i.e. ?\227?\130?\175?\227?\129?\171?\230?\142?\165?\231?\182?\154 will be tokenized to "?\227?\130?\175?\227?\129?\171", "?\227?\129?\171?\230?\142?\165", "?\230?\142?\165?\231?\182?\154". Better tokenizing suggestions are IKAnalzer and Paoding Analyzer. These are dictionary based, so that results are more accurate. Modified Paths: -------------- branches/webhelp/xsl/webhelp/indexer/lib/nw-cms.jar branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/IndexerTask.java branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/WriteJSFiles.java branches/webhelp/xsl/webhelp/template/content/search/nwSearchFnt.js Modified: branches/webhelp/xsl/webhelp/indexer/lib/nw-cms.jar =================================================================== (Binary files differ) Modified: branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/IndexerTask.java =================================================================== --- branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/IndexerTask.java 2010-08-07 19:12:48 UTC (rev 8798) +++ branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/IndexerTask.java 2010-08-08 16:43:13 UTC (rev 8799) @@ -51,7 +51,7 @@ // ANT parameters private String htmldir=null; - private String indexerLanguage="en"; + public static String indexerLanguage="en"; //supported languages: add new additions to this. don't include country codes to the end such as en_US or en_UK, // as stemmers doesn't find a difference between them. @@ -90,7 +90,7 @@ int i=0; for (;i<supportedLanguages.length;i++) { if(indexerLanguage.equals(supportedLanguages[i])){ - this.indexerLanguage = supportedLanguages[i]; + IndexerTask.indexerLanguage = supportedLanguages[i]; break; } } @@ -100,10 +100,10 @@ System.out.println("The given language, \""+indexerLanguage+"\", does not have extensive support for " + "searching or language code is specified in a bad format. Check documentation for details. " + "Language now defaults to english."); - this.indexerLanguage = "en"; + IndexerTask.indexerLanguage = "en"; } } else { - this.indexerLanguage = "en"; + IndexerTask.indexerLanguage = "en"; } } Modified: branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/WriteJSFiles.java =================================================================== --- branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/WriteJSFiles.java 2010-08-07 19:12:48 UTC (rev 8798) +++ branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/WriteJSFiles.java 2010-08-08 16:43:13 UTC (rev 8799) @@ -182,6 +182,8 @@ The value is the numbers of the files in which the word exists. Example: w["key"]="file1,file2,file3";*/ int count = 0; + if(i==1) + out.write("var indexerLanguage=\""+IndexerTask.indexerLanguage+"\";\n"); out.write("//Auto generated index for searching.\n"); while (keyIt.hasNext()) { //&& (tempLetter == tstr.charAt(0)) out.write("w[\"" + tstr + "\"]" + "=\"" + indexMap.get(tstr) + "\";\n"); Modified: branches/webhelp/xsl/webhelp/template/content/search/nwSearchFnt.js =================================================================== --- branches/webhelp/xsl/webhelp/template/content/search/nwSearchFnt.js 2010-08-07 19:12:48 UTC (rev 8798) +++ branches/webhelp/xsl/webhelp/template/content/search/nwSearchFnt.js 2010-08-08 16:43:13 UTC (rev 8799) @@ -8,12 +8,10 @@ */ //string initialization +var htmlfileList = "htmlFileList.js"; +var htmlfileinfoList = "htmlFileInfoList.js"; +var useCJKTokenizing = false; - -htmlfileList = "htmlFileList.js"; -htmlfileinfoList = "htmlFileInfoList.js"; - - /* Cette fonction verifie la validite de la recherche entrre par l utilisateur */ function Verifie(ditaSearch_Form) { @@ -56,13 +54,12 @@ //DisplayWaitingMessage(); /*data initialisation*/ - searchFor = ""; // expression en lowercase et sans les caracteres speciaux + searchFor = ""; // expression en lowercase et sans les caracte res speciaux //w = new Object(); // hashtable, key=word, value = list of the index of the html files scriptLetterTab = new scriptfirstchar(); // Array containing the first letter of each word to look for var scriptsarray = new Array(); // Array with the name of the scripts to load var wordsList = new Array(); // Array with the words to look for - var cleanwordsList = new Array(); // Array with the words to look for - var stemmedWordsList = new Array(); // Array with the words to look for after removing spaces + var finalWordsList = new Array(); // Array with the words to look for after removing spaces var listNumerosDesFicStr = ""; var ou_recherche = true; var linkTab = new Array(); @@ -80,34 +77,20 @@ wordsList = searchFor.split(" "); wordsList.sort(); - for(var j in wordsList){ - var word = wordsList[j]; - if(typeof stemmer != "undefined" ){ - stemQueryMap[stemmer(word)] = word; - } else { - stemQueryMap[word] = word; - } + //set the tokenizing method + if(typeof indexerLanguage != "undefined" && (indexerLanguage=="cn" || indexerLanguage=="ja" ||indexerLanguage=="ko")){ + useCJKTokenizing=true; + } else { + useCJKTokenizing=false; } - - //stemmedWordsList is the stemmed list of words separated by spaces. - for (t in wordsList) { - wordsList[t] = wordsList[t].replace(/(%22)|^-/g, "") - if (wordsList[t] != "%20") { - scriptLetterTab.add(wordsList[t].charAt(0)); - cleanwordsList.push(wordsList[t]); - } + //If Lucene CJKTokenizer was used as the indexer, then useCJKTokenizing will be true. Else, do normal tokenizing. + // 2-gram tokenizinghappens in CJKTokenizing, + if(useCJKTokenizing){ + finalWordsList = cjkTokenize(wordsList); + } else { + finalWordsList = tokenize(wordsList); } - if(typeof stemmer != "undefined" ){ - //Do the stemming using Porter's stemming algorithm - for (var i = 0; i < cleanwordsList.length; i++) { - var stemWord = stemmer(cleanwordsList[i]); - stemmedWordsList.push(stemWord); - } - } else { - stemmedWordsList = cleanwordsList; - } - //load the scripts with the indices: the following lines do not work on the server. To be corrected /*if (IEBrowser) { scriptsarray = loadTheIndexScripts (scriptLetterTab); @@ -117,32 +100,29 @@ * Compare with the indexed words (in the w[] array), and push words that are in it to tempTab. */ var tempTab = new Array(); - for (t in stemmedWordsList) { - if (w[stemmedWordsList[t].toString()] == undefined) { - txt_wordsnotfound += stemmedWordsList[t] + " "; + for (t in finalWordsList) { + if (w[finalWordsList[t].toString()] == undefined) { + txt_wordsnotfound += finalWordsList[t] + " "; } else { - tempTab.push(stemmedWordsList[t]); + tempTab.push(finalWordsList[t]); } } - stemmedWordsList = tempTab; + finalWordsList = tempTab; - if (stemmedWordsList.length) { + if (finalWordsList.length) { - // recherche 'et' et 'ou' en une fois - fileAndWordList = SortResults(stemmedWordsList); + //search 'and' and 'or' one time + fileAndWordList = SortResults(finalWordsList); cpt = fileAndWordList.length; - for (i = cpt - 1; i >= 0; i--) { + for (var i = cpt - 1; i >= 0; i--) { if (fileAndWordList[i] != undefined) { - linkTab.push("<p>" + txt_results_for + " " + "<span class=\"searchExpression\">" + fileAndWordList[i][0].motslisteDisplay + "</span>" + "</p>"); linkTab.push("<ul class='searchresult'>"); for (t in fileAndWordList[i]) { //DEBUG: alert(": "+ fileAndWordList[i][t].filenb+" " +fileAndWordList[i][t].motsliste); //linkTab.push("<li><a href=\"../"+fl[fileAndWordList[i][t].filenb]+"\">"+fl[fileAndWordList[i][t].filenb]+"</a></li>"); - - tempInfo = fil[fileAndWordList[i][t].filenb]; pos1 = tempInfo.indexOf("@@@"); pos2 = tempInfo.lastIndexOf("@@@"); @@ -151,24 +131,21 @@ tempShortdesc = tempInfo.substring(pos2 + 3, tempInfo.length); //file:///home/kasun/docbook/WEBHELP/webhelp-draft-output-format-idea/src/main/resources/web/webhelp/installation.html - var linkString = "<li><a href=" + tempPath + ">" + tempTitle + "</a>"; - // var linkString = "<li><a href=\"installation.html\">" + tempTitle + "</a>"; + var linkString = "<li><a href=" + tempPath + ">" + tempTitle + "</a>"; + // var linkString = "<li><a href=\"installation.html\">" + tempTitle + "</a>"; if ((tempShortdesc != "null")) { linkString += "\n<div class=\"shortdesclink\">" + tempShortdesc + "</div>"; } linkString += "</li>"; - linkTab.push(linkString); - } linkTab.push("</ul>"); } } } - var results=""; - if (linkTab.length > 0) { - + var results = ""; + if (linkTab.length > 0) { /*writeln ("<p>" + txt_results_for + " " + "<span class=\"searchExpression\">" + cleanwordsList + "</span>" + "<br/>"+"</p>");*/ results = "<p>"; //write("<ul class='searchresult'>"); @@ -176,47 +153,133 @@ results += linkTab[t].toString(); } results += "</p>"; - } else{ - results = "<p>"+"Your search returned no results for "+ "<span class=\"searchExpression\">" + txt_wordsnotfound + "</span>" +"</p>"; + } else { + results = "<p>" + "Your search returned no results for " + "<span class=\"searchExpression\">" + txt_wordsnotfound + "</span>" + "</p>"; } //alert(results); + document.getElementById('searchResults').innerHTML = results; +} - document.getElementById('searchResults').innerHTML = results; +function tokenize(wordsList){ + var stemmedWordsList = new Array(); // Array with the words to look for after removing spaces + var cleanwordsList = new Array(); // Array with the words to look for + for(var j in wordsList){ + var word = wordsList[j]; + if(typeof stemmer != "undefined" ){ + stemQueryMap[stemmer(word)] = word; + } else { + stemQueryMap[word] = word; + } + } + //stemmedWordsList is the stemmed list of words separated by spaces. + for (t in wordsList) { + wordsList[t] = wordsList[t].replace(/(%22)|^-/g, "") + if (wordsList[t] != "%20") { + scriptLetterTab.add(wordsList[t].charAt(0)); + cleanwordsList.push(wordsList[t]); + } + } - /* Display results * / - with (parent.frames['searchresults'].document) { - writeln("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">\n<html><head>"); - writeln("<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">"); - //writeln("<link href=\"css/commonltr.css\" type=\"text/css\" rel=\"stylesheet\">" ); - //writeln("<link rel=\"stylesheet\" type=\"text/css\" href=\"css/search.css\">") ; - writeln("<style>body{\ - font-family: verdana, sans-serif;\ - font-size: .7em;\ - background: #f3f3f3; }\ - .searchExpression{ font-weight: bold;}</style>") ; - writeln("<title>"+txt_filesfound+"</title></head>"); - writeln("<body onload = \"self.focus()\">"); - //writeln("<h2>" + txt_search_result + " " + "<i>" + wordsList + "</i>" + "</h2>"); + if(typeof stemmer != "undefined" ){ + //Do the stemming using Porter's stemming algorithm + for (var i = 0; i < cleanwordsList.length; i++) { + var stemWord = stemmer(cleanwordsList[i]); + stemmedWordsList.push(stemWord); + } + } else { + stemmedWordsList = cleanwordsList; + } + return stemmedWordsList; +} - // If no results, display a message - if ( txt_wordsnotfound != "" ) {writeln("<p>"+"Your search returned no results for "+ "<span class=\"searchExpression\">" + txt_wordsnotfound + "</span>" +"</p>")} +function cjkTokenize(wordsList){ + var allTokens= new Array(); + var notCJKTokens= new Array(); + var j=0; + for(j=0;j<wordsList.length;j++){ + var word = wordsList[j]; + if(getAvgAsciiValue(word) < 127){ + notCJKTokens.push(word); + } else { + var tokenizer = new CJKTokenizer(word); + var tokensTmp = tokenizer.getAllTokens(); + allTokens = allTokens.concat(tokensTmp); + } + } + allTokens = allTokens.concat(tokenize(notCJKTokens)); + return allTokens; +} - // If results: display them - if (linkTab.length > 0 ) { +//A simple way to determine whether the query is in english or not. +function getAvgAsciiValue(word){ + var tmp = 0; + var num = word.length < 5 ? word.length:5; + for(i=0;i<num;i++){ + if(i==5) break; + tmp += word.charCodeAt(i); + } + return tmp/num; +} - /*writeln ("<p>" + txt_results_for + " " + "<span class=\"searchExpression\">" + cleanwordsList + "</span>" + "<br/>"+"</p>");* / - write("<p>"); - //write("<ul class='searchresult'>"); - for (t in linkTab) { - writeln(linkTab[t].toString()) - } - writeln("</p>"); - } +//CJKTokenizer +function CJKTokenizer(input){ + this.input = input; + this.offset=-1; + this.tokens = new Array(); + this.incrementToken = incrementToken; + this.tokenize = tokenize; + this.getAllTokens = getAllTokens; + this.unique = unique; - writeln ("</body></html>"); - close() ; + function incrementToken(){ + if(this.input.length - 2 <= this.offset){ + // console.log("false "+offset); + return false; + } + else { + this.offset+=1; + return true; + } + } - } */ + function tokenize(){ + //document.getElementById("content").innerHTML += x.substring(offset,offset+2)+"<br>"; + return this.input.substring(this.offset,this.offset+2); + } + + function getAllTokens(){ + while(this.incrementToken()){ + var tmp = this.tokenize(); + this.tokens.push(tmp); + } + var sortedTokens = this.unique(this.tokens); + + return sortedTokens; +// document.getElementById("content").innerHTML += tokens+" "; +// document.getElementById("content").innerHTML += "<br>dada"+sortedTokens+" "; +// console.log(tokens.length+"dsdsds"); + /*for(i=0;i<tokens.length;i++){ + console.log(tokens[i]); + var ss = tokens[i] == sortedTokens[i]; + +// document.getElementById("content").innerHTML += "<br>dada"+un[i]+"- "+stems[i]+" "+ ss; + document.getElementById("content").innerHTML += "<br>"+sortedTokens[i]; + }*/ + } + + function unique(a) + { + var r = new Array(); + o:for(var i = 0, n = a.length; i < n; i++) + { + for(var x = 0, y = r.length; x < y; x++) + { + if(r[x]==a[i]) continue o; + } + r[r.length] = a[i]; + } + return r; + } } @@ -316,9 +379,10 @@ } } +/* function onLoadComplete() { alert("loaded !!"); -} +} */ /* End of scriptloader functions */ @@ -413,7 +477,11 @@ var tempDisplay = new Array(); for (var x in tab) { - tempDisplay.push(stemQueryMap[tab[x]]); //get the original word from the stem word. + if(stemQueryMap[tab[x]] != undefined){ + tempDisplay.push(stemQueryMap[tab[x]]); //get the original word from the stem word. + } else { + tempDisplay.push(tab[x]); //no stem is available. (probably a CJK language) + } } var tempDispString = tempDisplay.join(", "); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ka...@us...> - 2010-08-10 15:20:16
|
Revision: 8818 http://docbook.svn.sourceforge.net/docbook/?rev=8818&view=rev Author: kasunbg Date: 2010-08-10 15:20:09 +0000 (Tue, 10 Aug 2010) Log Message: ----------- Add some styling to the web interface. Modified Paths: -------------- branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/snowball/TestApp.java branches/webhelp/xsl/webhelp/template/common/css/positioning.css branches/webhelp/xsl/webhelp/template/common/main.js branches/webhelp/xsl/webhelp/xsl/webhelp.xsl Removed Paths: ------------- branches/webhelp/xsl/webhelp/template/common/images/back.png Modified: branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/snowball/TestApp.java =================================================================== --- branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/snowball/TestApp.java 2010-08-10 12:28:45 UTC (rev 8817) +++ branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/snowball/TestApp.java 2010-08-10 15:20:09 UTC (rev 8818) @@ -2,6 +2,7 @@ package com.nexwave.stemmer.snowball; import com.nexwave.stemmer.snowball.ext.EnglishStemmer; +import com.nexwave.stemmer.snowball.ext.frenchStemmer; public class TestApp { private static void usage() @@ -18,7 +19,7 @@ Class stemClass = Class.forName("com.nexwave.stemmer.snowball.ext." + args[0] + "Stemmer");*/ // SnowballStemmer stemmer = (SnowballStemmer) stemClass.newInstance(); - SnowballStemmer stemmer =new EnglishStemmer();//= new GermanStemmer(); + SnowballStemmer stemmer = new frenchStemmer();//new EnglishStemmer();//= new GermanStemmer(); StringBuffer input = new StringBuffer(); /*Reader reader; @@ -48,7 +49,9 @@ }*/ Object [] emptyArgs = new Object[0]; - char[] charArr = "testing runnable dogs ".toCharArray(); + //char[] charArr = "testing runnable dogs ".toCharArray(); + char[] charArr = "complément ,é compliment, compliments , condiments ,".toCharArray(); +//char[] charArr = "complément , c: compl s:complé compliment, c: compl s:compli compliments, c: compl s:compli condiments, c: cond s:condi".toCharArray(); // int character; for (char ch : charArr) { // char ch = (char) character; @@ -58,7 +61,7 @@ stemmer.stem(); - System.out.print(stemmer.getCurrent()+" "); + System.out.print(stemmer.getCurrent()+"."); /* output.write(stemmer.getCurrent()); output.write('\n');*/ input.delete(0, input.length()); Modified: branches/webhelp/xsl/webhelp/template/common/css/positioning.css =================================================================== --- branches/webhelp/xsl/webhelp/template/common/css/positioning.css 2010-08-10 12:28:45 UTC (rev 8817) +++ branches/webhelp/xsl/webhelp/template/common/css/positioning.css 2010-08-10 15:20:09 UTC (rev 8818) @@ -1,13 +1,13 @@ body { font: 12px Verdana, Geneva, sans-serif; } p, ul, ol, li { font: 10pt Verdana, Geneva, sans-serif; } -h1 { font: bold 15pt Arial, Helvetica, geneva; } +h1 { font: bold 15pt Arial, Helvetica, geneva; } h2 { font: bold 14pt Arial, Helvetica, geneva; } #header { - background: white url(../images/gov-header-bg.gif) repeat-x; + background: white url(../images/header-bg.gif) repeat-x; position: fixed; width: 100%; - height: 90px; + height: 95px; top: 0; right: 0; bottom: auto; @@ -46,9 +46,15 @@ min-width:800px; } +#navheader { + position: fixed; + top: 65px; + right:4px; +} + #content h1, #content h2 { color: #cc0000; } .navfooter { bottom: 2%; } -.highlight { background-color: #FFFF88; } +.highlight { background-color: #c5d3c3; } .highlightButton{ font-size: 0; } /* Show Hide TOC tree */ @@ -66,7 +72,7 @@ display: block; font-size: 0; cursor: pointer; -} +} /* Search results Styling */ .searchExpression { Deleted: branches/webhelp/xsl/webhelp/template/common/images/back.png =================================================================== (Binary files differ) Modified: branches/webhelp/xsl/webhelp/template/common/main.js =================================================================== --- branches/webhelp/xsl/webhelp/template/common/main.js 2010-08-10 12:28:45 UTC (rev 8817) +++ branches/webhelp/xsl/webhelp/template/common/main.js 2010-08-10 15:20:09 UTC (rev 8818) @@ -6,7 +6,7 @@ */ $(document).ready(function() { - $("#showHideHighlight").button(); //add jquery button styling to 'Go' button + // $("#showHideHighlight").button(); //add jquery button styling to 'Go' button //Generate tabs in nav-pane with JQuery $(function() { $("#tabs").tabs({ Modified: branches/webhelp/xsl/webhelp/xsl/webhelp.xsl =================================================================== --- branches/webhelp/xsl/webhelp/xsl/webhelp.xsl 2010-08-10 12:28:45 UTC (rev 8817) +++ branches/webhelp/xsl/webhelp/xsl/webhelp.xsl 2010-08-10 15:20:09 UTC (rev 8818) @@ -187,20 +187,7 @@ </xsl:template> <xsl:template name="user.header.content"> - <table> - <tr> - <td style="height: 28px; width: 16px;"> - <a id="showHideButton" onclick="showHideToc();" - class="pointLeft" title="Hide TOC tree" style="padding-top:3px; padding-bottom:3px;">. - </a> - </td> - <td> - <input type="button" id="showHideHighlight" - style="display:none;padding-top:3px; padding-bottom:3px;" - class="highlightButton" value="H" onclick="toggleHighlight();"/> - </td> - </tr> - </table> + <xsl:comment> <!-- KEEP this code. --> </xsl:comment> </xsl:template> <xsl:template name="user.footer.navigation"> @@ -317,64 +304,82 @@ <!-- Prev and Next links generation--> <div id="navheader" align="right"> <xsl:comment> - <!-- keep this code. In case of neither prev nor next links are available, this will help to + <!-- KEEP this code. In case of neither prev nor next links are available, this will help to keep the integrity of the DOM tree--> </xsl:comment> <!--xsl:with-param name="prev" select="$prev"/> <xsl:with-param name="next" select="$next"/> <xsl:with-param name="nav.context" select="$nav.context"/--> - <xsl:if test="count($prev) > 0 - or (count($up) > 0 - and generate-id($up) != generate-id($home) - and $navig.showtitles != 0) - or count($next) > 0"> - <xsl:if test="count($prev)>0"> - <a accesskey="p"> - <xsl:attribute name="href"> - <xsl:call-template name="href.target"> - <xsl:with-param name="object" select="$prev"/> - </xsl:call-template> - </xsl:attribute> - <xsl:call-template name="navig.content"> - <xsl:with-param name="direction" select="'prev'"/> - </xsl:call-template> - </a> - </xsl:if> - - <!-- "Up" link--> - <xsl:choose> - <xsl:when test="count($up)>0 - and generate-id($up) != generate-id($home)"> - | - <a accesskey="u"> - <xsl:attribute name="href"> - <xsl:call-template name="href.target"> - <xsl:with-param name="object" select="$up"/> - </xsl:call-template> - </xsl:attribute> - <xsl:call-template name="navig.content"> - <xsl:with-param name="direction" select="'up'"/> - </xsl:call-template> + <table> + <tr> + <td style="height: 28px; width: 16px;"> + <a id="showHideButton" onclick="showHideToc();" + class="pointLeft" title="Hide TOC tree">. </a> - </xsl:when> - <xsl:otherwise> </xsl:otherwise> - </xsl:choose> + </td> + <td> + <img src="../common/images/highlight-blue.gif" alt="H" height="25px" + onclick="toggleHighlight()" id="showHideHighlight" style="cursor:pointer"/> + </td> + <xsl:if test="count($prev) > 0 + or (count($up) > 0 + and generate-id($up) != generate-id($home) + and $navig.showtitles != 0) + or count($next) > 0"> + <td> + <xsl:if test="count($prev)>0"> + <a accesskey="p"> + <xsl:attribute name="href"> + <xsl:call-template name="href.target"> + <xsl:with-param name="object" select="$prev"/> + </xsl:call-template> + </xsl:attribute> + <xsl:call-template name="navig.content"> + <xsl:with-param name="direction" select="'prev'"/> + </xsl:call-template> + </a> + </xsl:if> + <!-- "Up" link--> + <xsl:choose> + <xsl:when test="count($up)>0 + and generate-id($up) != generate-id($home)"> + | + <a accesskey="u"> + <xsl:attribute name="href"> + <xsl:call-template name="href.target"> + <xsl:with-param name="object" select="$up"/> + </xsl:call-template> + </xsl:attribute> + <xsl:call-template name="navig.content"> + <xsl:with-param name="direction" select="'up'"/> + </xsl:call-template> + </a> + </xsl:when> + <xsl:otherwise> </xsl:otherwise> + </xsl:choose> + + <xsl:if test="count($next)>0"> + | + <a accesskey="n"> + <xsl:attribute name="href"> + <xsl:call-template name="href.target"> + <xsl:with-param name="object" select="$next"/> + </xsl:call-template> + </xsl:attribute> + <xsl:call-template name="navig.content"> + <xsl:with-param name="direction" select="'next'"/> + </xsl:call-template> + </a> + </xsl:if> + </td> + </xsl:if> - <xsl:if test="count($next)>0"> - | - <a accesskey="n"> - <xsl:attribute name="href"> - <xsl:call-template name="href.target"> - <xsl:with-param name="object" select="$next"/> - </xsl:call-template> - </xsl:attribute> - <xsl:call-template name="navig.content"> - <xsl:with-param name="direction" select="'next'"/> - </xsl:call-template> - </a> - </xsl:if> - </xsl:if> + </tr> + </table> + + + </div> </div> @@ -487,6 +492,7 @@ <center> <input id="textToSearch" name="textToSearch" type="text" class="searchText"/> + <xsl:text disable-output-escaping="yes"> <![CDATA[ ]]> </xsl:text> <input onclick="Verifie(ditaSearch_Form)" type="button" class="searchButton" value="Go" id="doSearch"/> @@ -616,12 +622,15 @@ <xsl:with-param name="content"> <html> <head> - <link rel="shortcut icon" href="favicon.ico"/> - <meta http-equiv="Refresh" content="0; URL=content/ch01.html"/> + <link rel="shortcut icon" href="favicon.ico"/> + <meta http-equiv="Refresh" content="1; URL=content/ch01.html"/> <title><xsl:value-of select="//title[1]"/>  </title> <!-- Call template "metatags" to add copyright and date meta tags: --> </head> + <body> + If not automatically redirected, click here: <a href="content/ch01.html">content/ch01.html</a> + </body> </html> </xsl:with-param> </xsl:call-template> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ka...@us...> - 2010-08-10 15:57:39
|
Revision: 8819 http://docbook.svn.sourceforge.net/docbook/?rev=8819&view=rev Author: kasunbg Date: 2010-08-10 15:57:31 +0000 (Tue, 10 Aug 2010) Log Message: ----------- Added stemming support for French(fr). Wrote the stemmer for client-side using french language algorithm in Snowball. Committing files necessary for UI, which were missing in the previous commit. Modified Paths: -------------- branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/IndexerTask.java branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/SaxHTMLIndex.java branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/snowball/TestApp.java Added Paths: ----------- branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/snowball/ext/FrenchStemmer.java branches/webhelp/xsl/webhelp/template/common/images/header-bg.gif branches/webhelp/xsl/webhelp/template/common/images/highlight-blue.gif branches/webhelp/xsl/webhelp/template/common/images/highlight-yellow.gif branches/webhelp/xsl/webhelp/template/content/search/stemmers/fr_stemmer.js Removed Paths: ------------- branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/snowball/ext/frenchStemmer.java branches/webhelp/xsl/webhelp/template/common/images/gov-header-bg.gif Modified: branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/IndexerTask.java =================================================================== --- branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/IndexerTask.java 2010-08-10 15:20:09 UTC (rev 8818) +++ branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/IndexerTask.java 2010-08-10 15:57:31 UTC (rev 8819) @@ -55,8 +55,8 @@ //supported languages: add new additions to this. don't include country codes to the end such as en_US or en_UK, // as stemmers doesn't find a difference between them. - private String[] supportedLanguages= {"en", "de", "cn", "ja", "ko"}; //currently extended support available for - // English, German, and CJK (Chinese, Japanese, Korean) languages only. + private String[] supportedLanguages= {"en", "de", "fr", "cn", "ja", "ko"}; //currently extended support available for + // English, German, French and CJK (Chinese, Japanese, Korean) languages only. // Indexing features: words to remove private ArrayList<String> cleanUpStrings = null; Modified: branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/SaxHTMLIndex.java =================================================================== --- branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/SaxHTMLIndex.java 2010-08-10 15:20:09 UTC (rev 8818) +++ branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/SaxHTMLIndex.java 2010-08-10 15:57:31 UTC (rev 8819) @@ -12,6 +12,7 @@ //Stemmers import com.nexwave.stemmer.snowball.SnowballStemmer; import com.nexwave.stemmer.snowball.ext.EnglishStemmer; +import com.nexwave.stemmer.snowball.ext.FrenchStemmer; import com.nexwave.stemmer.snowball.ext.GermanStemmer; //CJK Tokenizing @@ -128,6 +129,8 @@ stemmer = new EnglishStemmer(); } else if (indexerLanguage.equalsIgnoreCase("de")){ stemmer= new GermanStemmer(); + } else if (indexerLanguage.equalsIgnoreCase("fr")){ + stemmer= new FrenchStemmer(); } else { stemmer = null;//Languages which stemming is not yet supproted.So, No stemmers will be used. } Modified: branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/snowball/TestApp.java =================================================================== --- branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/snowball/TestApp.java 2010-08-10 15:20:09 UTC (rev 8818) +++ branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/snowball/TestApp.java 2010-08-10 15:57:31 UTC (rev 8819) @@ -1,8 +1,7 @@ package com.nexwave.stemmer.snowball; -import com.nexwave.stemmer.snowball.ext.EnglishStemmer; -import com.nexwave.stemmer.snowball.ext.frenchStemmer; +import com.nexwave.stemmer.snowball.ext.FrenchStemmer; public class TestApp { private static void usage() @@ -19,7 +18,7 @@ Class stemClass = Class.forName("com.nexwave.stemmer.snowball.ext." + args[0] + "Stemmer");*/ // SnowballStemmer stemmer = (SnowballStemmer) stemClass.newInstance(); - SnowballStemmer stemmer = new frenchStemmer();//new EnglishStemmer();//= new GermanStemmer(); + SnowballStemmer stemmer = new FrenchStemmer();//new EnglishStemmer();//= new GermanStemmer(); StringBuffer input = new StringBuffer(); /*Reader reader; Copied: branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/snowball/ext/FrenchStemmer.java (from rev 8799, branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/snowball/ext/frenchStemmer.java) =================================================================== --- branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/snowball/ext/FrenchStemmer.java (rev 0) +++ branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/stemmer/snowball/ext/FrenchStemmer.java 2010-08-10 15:57:31 UTC (rev 8819) @@ -0,0 +1,1520 @@ +// This file was generated automatically by the Snowball to Java compiler + +package com.nexwave.stemmer.snowball.ext; + +import com.nexwave.stemmer.snowball.Among; + + /** + * This class was automatically generated by a Snowball to Java compiler + * It implements the stemming algorithm defined by a snowball script. + */ + +public class FrenchStemmer extends com.nexwave.stemmer.snowball.SnowballStemmer { + +private static final long serialVersionUID = 1L; + + private final static FrenchStemmer METHOD_OBJECT = new FrenchStemmer(); + + private final static Among a_0[] = { + new Among ( "col", -1, -1, "", METHOD_OBJECT), + new Among ( "par", -1, -1, "", METHOD_OBJECT), + new Among ( "tap", -1, -1, "", METHOD_OBJECT) + }; + + private final static Among a_1[] = { + new Among ( "", -1, 4, "", METHOD_OBJECT), + new Among ( "I", 0, 1, "", METHOD_OBJECT), + new Among ( "U", 0, 2, "", METHOD_OBJECT), + new Among ( "Y", 0, 3, "", METHOD_OBJECT) + }; + + private final static Among a_2[] = { + new Among ( "iqU", -1, 3, "", METHOD_OBJECT), + new Among ( "abl", -1, 3, "", METHOD_OBJECT), + new Among ( "I\u00E8r", -1, 4, "", METHOD_OBJECT), + new Among ( "i\u00E8r", -1, 4, "", METHOD_OBJECT), + new Among ( "eus", -1, 2, "", METHOD_OBJECT), + new Among ( "iv", -1, 1, "", METHOD_OBJECT) + }; + + private final static Among a_3[] = { + new Among ( "ic", -1, 2, "", METHOD_OBJECT), + new Among ( "abil", -1, 1, "", METHOD_OBJECT), + new Among ( "iv", -1, 3, "", METHOD_OBJECT) + }; + + private final static Among a_4[] = { + new Among ( "iqUe", -1, 1, "", METHOD_OBJECT), + new Among ( "atrice", -1, 2, "", METHOD_OBJECT), + new Among ( "ance", -1, 1, "", METHOD_OBJECT), + new Among ( "ence", -1, 5, "", METHOD_OBJECT), + new Among ( "logie", -1, 3, "", METHOD_OBJECT), + new Among ( "able", -1, 1, "", METHOD_OBJECT), + new Among ( "isme", -1, 1, "", METHOD_OBJECT), + new Among ( "euse", -1, 11, "", METHOD_OBJECT), + new Among ( "iste", -1, 1, "", METHOD_OBJECT), + new Among ( "ive", -1, 8, "", METHOD_OBJECT), + new Among ( "if", -1, 8, "", METHOD_OBJECT), + new Among ( "usion", -1, 4, "", METHOD_OBJECT), + new Among ( "ation", -1, 2, "", METHOD_OBJECT), + new Among ( "ution", -1, 4, "", METHOD_OBJECT), + new Among ( "ateur", -1, 2, "", METHOD_OBJECT), + new Among ( "iqUes", -1, 1, "", METHOD_OBJECT), + new Among ( "atrices", -1, 2, "", METHOD_OBJECT), + new Among ( "ances", -1, 1, "", METHOD_OBJECT), + new Among ( "ences", -1, 5, "", METHOD_OBJECT), + new Among ( "logies", -1, 3, "", METHOD_OBJECT), + new Among ( "ables", -1, 1, "", METHOD_OBJECT), + new Among ( "ismes", -1, 1, "", METHOD_OBJECT), + new Among ( "euses", -1, 11, "", METHOD_OBJECT), + new Among ( "istes", -1, 1, "", METHOD_OBJECT), + new Among ( "ives", -1, 8, "", METHOD_OBJECT), + new Among ( "ifs", -1, 8, "", METHOD_OBJECT), + new Among ( "usions", -1, 4, "", METHOD_OBJECT), + new Among ( "ations", -1, 2, "", METHOD_OBJECT), + new Among ( "utions", -1, 4, "", METHOD_OBJECT), + new Among ( "ateurs", -1, 2, "", METHOD_OBJECT), + new Among ( "ments", -1, 15, "", METHOD_OBJECT), + new Among ( "ements", 30, 6, "", METHOD_OBJECT), + new Among ( "issements", 31, 12, "", METHOD_OBJECT), + new Among ( "it\u00E9s", -1, 7, "", METHOD_OBJECT), + new Among ( "ment", -1, 15, "", METHOD_OBJECT), + new Among ( "ement", 34, 6, "", METHOD_OBJECT), + new Among ( "issement", 35, 12, "", METHOD_OBJECT), + new Among ( "amment", 34, 13, "", METHOD_OBJECT), + new Among ( "emment", 34, 14, "", METHOD_OBJECT), + new Among ( "aux", -1, 10, "", METHOD_OBJECT), + new Among ( "eaux", 39, 9, "", METHOD_OBJECT), + new Among ( "eux", -1, 1, "", METHOD_OBJECT), + new Among ( "it\u00E9", -1, 7, "", METHOD_OBJECT) + }; + + private final static Among a_5[] = { + new Among ( "ira", -1, 1, "", METHOD_OBJECT), + new Among ( "ie", -1, 1, "", METHOD_OBJECT), + new Among ( "isse", -1, 1, "", METHOD_OBJECT), + new Among ( "issante", -1, 1, "", METHOD_OBJECT), + new Among ( "i", -1, 1, "", METHOD_OBJECT), + new Among ( "irai", 4, 1, "", METHOD_OBJECT), + new Among ( "ir", -1, 1, "", METHOD_OBJECT), + new Among ( "iras", -1, 1, "", METHOD_OBJECT), + new Among ( "ies", -1, 1, "", METHOD_OBJECT), + new Among ( "\u00EEmes", -1, 1, "", METHOD_OBJECT), + new Among ( "isses", -1, 1, "", METHOD_OBJECT), + new Among ( "issantes", -1, 1, "", METHOD_OBJECT), + new Among ( "\u00EEtes", -1, 1, "", METHOD_OBJECT), + new Among ( "is", -1, 1, "", METHOD_OBJECT), + new Among ( "irais", 13, 1, "", METHOD_OBJECT), + new Among ( "issais", 13, 1, "", METHOD_OBJECT), + new Among ( "irions", -1, 1, "", METHOD_OBJECT), + new Among ( "issions", -1, 1, "", METHOD_OBJECT), + new Among ( "irons", -1, 1, "", METHOD_OBJECT), + new Among ( "issons", -1, 1, "", METHOD_OBJECT), + new Among ( "issants", -1, 1, "", METHOD_OBJECT), + new Among ( "it", -1, 1, "", METHOD_OBJECT), + new Among ( "irait", 21, 1, "", METHOD_OBJECT), + new Among ( "issait", 21, 1, "", METHOD_OBJECT), + new Among ( "issant", -1, 1, "", METHOD_OBJECT), + new Among ( "iraIent", -1, 1, "", METHOD_OBJECT), + new Among ( "issaIent", -1, 1, "", METHOD_OBJECT), + new Among ( "irent", -1, 1, "", METHOD_OBJECT), + new Among ( "issent", -1, 1, "", METHOD_OBJECT), + new Among ( "iront", -1, 1, "", METHOD_OBJECT), + new Among ( "\u00EEt", -1, 1, "", METHOD_OBJECT), + new Among ( "iriez", -1, 1, "", METHOD_OBJECT), + new Among ( "issiez", -1, 1, "", METHOD_OBJECT), + new Among ( "irez", -1, 1, "", METHOD_OBJECT), + new Among ( "issez", -1, 1, "", METHOD_OBJECT) + }; + + private final static Among a_6[] = { + new Among ( "a", -1, 3, "", METHOD_OBJECT), + new Among ( "era", 0, 2, "", METHOD_OBJECT), + new Among ( "asse", -1, 3, "", METHOD_OBJECT), + new Among ( "ante", -1, 3, "", METHOD_OBJECT), + new Among ( "\u00E9e", -1, 2, "", METHOD_OBJECT), + new Among ( "ai", -1, 3, "", METHOD_OBJECT), + new Among ( "erai", 5, 2, "", METHOD_OBJECT), + new Among ( "er", -1, 2, "", METHOD_OBJECT), + new Among ( "as", -1, 3, "", METHOD_OBJECT), + new Among ( "eras", 8, 2, "", METHOD_OBJECT), + new Among ( "\u00E2mes", -1, 3, "", METHOD_OBJECT), + new Among ( "asses", -1, 3, "", METHOD_OBJECT), + new Among ( "antes", -1, 3, "", METHOD_OBJECT), + new Among ( "\u00E2tes", -1, 3, "", METHOD_OBJECT), + new Among ( "\u00E9es", -1, 2, "", METHOD_OBJECT), + new Among ( "ais", -1, 3, "", METHOD_OBJECT), + new Among ( "erais", 15, 2, "", METHOD_OBJECT), + new Among ( "ions", -1, 1, "", METHOD_OBJECT), + new Among ( "erions", 17, 2, "", METHOD_OBJECT), + new Among ( "assions", 17, 3, "", METHOD_OBJECT), + new Among ( "erons", -1, 2, "", METHOD_OBJECT), + new Among ( "ants", -1, 3, "", METHOD_OBJECT), + new Among ( "\u00E9s", -1, 2, "", METHOD_OBJECT), + new Among ( "ait", -1, 3, "", METHOD_OBJECT), + new Among ( "erait", 23, 2, "", METHOD_OBJECT), + new Among ( "ant", -1, 3, "", METHOD_OBJECT), + new Among ( "aIent", -1, 3, "", METHOD_OBJECT), + new Among ( "eraIent", 26, 2, "", METHOD_OBJECT), + new Among ( "\u00E8rent", -1, 2, "", METHOD_OBJECT), + new Among ( "assent", -1, 3, "", METHOD_OBJECT), + new Among ( "eront", -1, 2, "", METHOD_OBJECT), + new Among ( "\u00E2t", -1, 3, "", METHOD_OBJECT), + new Among ( "ez", -1, 2, "", METHOD_OBJECT), + new Among ( "iez", 32, 2, "", METHOD_OBJECT), + new Among ( "eriez", 33, 2, "", METHOD_OBJECT), + new Among ( "assiez", 33, 3, "", METHOD_OBJECT), + new Among ( "erez", 32, 2, "", METHOD_OBJECT), + new Among ( "\u00E9", -1, 2, "", METHOD_OBJECT) + }; + + private final static Among a_7[] = { + new Among ( "e", -1, 3, "", METHOD_OBJECT), + new Among ( "I\u00E8re", 0, 2, "", METHOD_OBJECT), + new Among ( "i\u00E8re", 0, 2, "", METHOD_OBJECT), + new Among ( "ion", -1, 1, "", METHOD_OBJECT), + new Among ( "Ier", -1, 2, "", METHOD_OBJECT), + new Among ( "ier", -1, 2, "", METHOD_OBJECT), + new Among ( "\u00EB", -1, 4, "", METHOD_OBJECT) + }; + + private final static Among a_8[] = { + new Among ( "ell", -1, -1, "", METHOD_OBJECT), + new Among ( "eill", -1, -1, "", METHOD_OBJECT), + new Among ( "enn", -1, -1, "", METHOD_OBJECT), + new Among ( "onn", -1, -1, "", METHOD_OBJECT), + new Among ( "ett", -1, -1, "", METHOD_OBJECT) + }; + + private static final char g_v[] = {17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 130, 103, 8, 5 }; + + private static final char g_keep_with_s[] = {1, 65, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128 }; + + private int I_p2; + private int I_p1; + private int I_pV; + + private void copy_from(FrenchStemmer other) { + I_p2 = other.I_p2; + I_p1 = other.I_p1; + I_pV = other.I_pV; + super.copy_from(other); + } + + private boolean r_prelude() { + int v_1; + int v_2; + int v_3; + int v_4; + // repeat, line 38 + replab0: while(true) + { + v_1 = cursor; + lab1: do { + // goto, line 38 + golab2: while(true) + { + v_2 = cursor; + lab3: do { + // (, line 38 + // or, line 44 + lab4: do { + v_3 = cursor; + lab5: do { + // (, line 40 + if (!(in_grouping(g_v, 97, 251))) + { + break lab5; + } + // [, line 40 + bra = cursor; + // or, line 40 + lab6: do { + v_4 = cursor; + lab7: do { + // (, line 40 + // literal, line 40 + if (!(eq_s(1, "u"))) + { + break lab7; + } + // ], line 40 + ket = cursor; + if (!(in_grouping(g_v, 97, 251))) + { + break lab7; + } + // <-, line 40 + slice_from("U"); + break lab6; + } while (false); + cursor = v_4; + lab8: do { + // (, line 41 + // literal, line 41 + if (!(eq_s(1, "i"))) + { + break lab8; + } + // ], line 41 + ket = cursor; + if (!(in_grouping(g_v, 97, 251))) + { + break lab8; + } + // <-, line 41 + slice_from("I"); + break lab6; + } while (false); + cursor = v_4; + // (, line 42 + // literal, line 42 + if (!(eq_s(1, "y"))) + { + break lab5; + } + // ], line 42 + ket = cursor; + // <-, line 42 + slice_from("Y"); + } while (false); + break lab4; + } while (false); + cursor = v_3; + lab9: do { + // (, line 45 + // [, line 45 + bra = cursor; + // literal, line 45 + if (!(eq_s(1, "y"))) + { + break lab9; + } + // ], line 45 + ket = cursor; + if (!(in_grouping(g_v, 97, 251))) + { + break lab9; + } + // <-, line 45 + slice_from("Y"); + break lab4; + } while (false); + cursor = v_3; + // (, line 47 + // literal, line 47 + if (!(eq_s(1, "q"))) + { + break lab3; + } + // [, line 47 + bra = cursor; + // literal, line 47 + if (!(eq_s(1, "u"))) + { + break lab3; + } + // ], line 47 + ket = cursor; + // <-, line 47 + slice_from("U"); + } while (false); + cursor = v_2; + break golab2; + } while (false); + cursor = v_2; + if (cursor >= limit) + { + break lab1; + } + cursor++; + } + continue replab0; + } while (false); + cursor = v_1; + break replab0; + } + return true; + } + + private boolean r_mark_regions() { + int v_1; + int v_2; + int v_4; + // (, line 50 + I_pV = limit; + I_p1 = limit; + I_p2 = limit; + // do, line 56 + v_1 = cursor; + lab0: do { + // (, line 56 + // or, line 58 + lab1: do { + v_2 = cursor; + lab2: do { + // (, line 57 + if (!(in_grouping(g_v, 97, 251))) + { + break lab2; + } + if (!(in_grouping(g_v, 97, 251))) + { + break lab2; + } + // next, line 57 + if (cursor >= limit) + { + break lab2; + } + cursor++; + break lab1; + } while (false); + cursor = v_2; + lab3: do { + // among, line 59 + if (find_among(a_0, 3) == 0) + { + break lab3; + } + break lab1; + } while (false); + cursor = v_2; + // (, line 66 + // next, line 66 + if (cursor >= limit) + { + break lab0; + } + cursor++; + // gopast, line 66 + golab4: while(true) + { + lab5: do { + if (!(in_grouping(g_v, 97, 251))) + { + break lab5; + } + break golab4; + } while (false); + if (cursor >= limit) + { + break lab0; + } + cursor++; + } + } while (false); + // setmark pV, line 67 + I_pV = cursor; + } while (false); + cursor = v_1; + // do, line 69 + v_4 = cursor; + lab6: do { + // (, line 69 + // gopast, line 70 + golab7: while(true) + { + lab8: do { + if (!(in_grouping(g_v, 97, 251))) + { + break lab8; + } + break golab7; + } while (false); + if (cursor >= limit) + { + break lab6; + } + cursor++; + } + // gopast, line 70 + golab9: while(true) + { + lab10: do { + if (!(out_grouping(g_v, 97, 251))) + { + break lab10; + } + break golab9; + } while (false); + if (cursor >= limit) + { + break lab6; + } + cursor++; + } + // setmark p1, line 70 + I_p1 = cursor; + // gopast, line 71 + golab11: while(true) + { + lab12: do { + if (!(in_grouping(g_v, 97, 251))) + { + break lab12; + } + break golab11; + } while (false); + if (cursor >= limit) + { + break lab6; + } + cursor++; + } + // gopast, line 71 + golab13: while(true) + { + lab14: do { + if (!(out_grouping(g_v, 97, 251))) + { + break lab14; + } + break golab13; + } while (false); + if (cursor >= limit) + { + break lab6; + } + cursor++; + } + // setmark p2, line 71 + I_p2 = cursor; + } while (false); + cursor = v_4; + return true; + } + + private boolean r_postlude() { + int among_var; + int v_1; + // repeat, line 75 + replab0: while(true) + { + v_1 = cursor; + lab1: do { + // (, line 75 + // [, line 77 + bra = cursor; + // substring, line 77 + among_var = find_among(a_1, 4); + if (among_var == 0) + { + break lab1; + } + // ], line 77 + ket = cursor; + switch(among_var) { + case 0: + break lab1; + case 1: + // (, line 78 + // <-, line 78 + slice_from("i"); + break; + case 2: + // (, line 79 + // <-, line 79 + slice_from("u"); + break; + case 3: + // (, line 80 + // <-, line 80 + slice_from("y"); + break; + case 4: + // (, line 81 + // next, line 81 + if (cursor >= limit) + { + break lab1; + } + cursor++; + break; + } + continue replab0; + } while (false); + cursor = v_1; + break replab0; + } + return true; + } + + private boolean r_RV() { + if (!(I_pV <= cursor)) + { + return false; + } + return true; + } + + private boolean r_R1() { + if (!(I_p1 <= cursor)) + { + return false; + } + return true; + } + + private boolean r_R2() { + if (!(I_p2 <= cursor)) + { + return false; + } + return true; + } + + private boolean r_standard_suffix() { + int among_var; + int v_1; + int v_2; + int v_3; + int v_4; + int v_5; + int v_6; + int v_7; + int v_8; + int v_9; + int v_10; + int v_11; + // (, line 91 + // [, line 92 + ket = cursor; + // substring, line 92 + among_var = find_among_b(a_4, 43); + if (among_var == 0) + { + return false; + } + // ], line 92 + bra = cursor; + switch(among_var) { + case 0: + return false; + case 1: + // (, line 96 + // call R2, line 96 + if (!r_R2()) + { + return false; + } + // delete, line 96 + slice_del(); + break; + case 2: + // (, line 99 + // call R2, line 99 + if (!r_R2()) + { + return false; + } + // delete, line 99 + slice_del(); + // try, line 100 + v_1 = limit - cursor; + lab0: do { + // (, line 100 + // [, line 100 + ket = cursor; + // literal, line 100 + if (!(eq_s_b(2, "ic"))) + { + cursor = limit - v_1; + break lab0; + } + // ], line 100 + bra = cursor; + // or, line 100 + lab1: do { + v_2 = limit - cursor; + lab2: do { + // (, line 100 + // call R2, line 100 + if (!r_R2()) + { + break lab2; + } + // delete, line 100 + slice_del(); + break lab1; + } while (false); + cursor = limit - v_2; + // <-, line 100 + slice_from("iqU"); + } while (false); + } while (false); + break; + case 3: + // (, line 104 + // call R2, line 104 + if (!r_R2()) + { + return false; + } + // <-, line 104 + slice_from("log"); + break; + case 4: + // (, line 107 + // call R2, line 107 + if (!r_R2()) + { + return false; + } + // <-, line 107 + slice_from("u"); + break; + case 5: + // (, line 110 + // call R2, line 110 + if (!r_R2()) + { + return false; + } + // <-, line 110 + slice_from("ent"); + break; + case 6: + // (, line 113 + // call RV, line 114 + if (!r_RV()) + { + return false; + } + // delete, line 114 + slice_del(); + // try, line 115 + v_3 = limit - cursor; + lab3: do { + // (, line 115 + // [, line 116 + ket = cursor; + // substring, line 116 + among_var = find_among_b(a_2, 6); + if (among_var == 0) + { + cursor = limit - v_3; + break lab3; + } + // ], line 116 + bra = cursor; + switch(among_var) { + case 0: + cursor = limit - v_3; + break lab3; + case 1: + // (, line 117 + // call R2, line 117 + if (!r_R2()) + { + cursor = limit - v_3; + break lab3; + } + // delete, line 117 + slice_del(); + // [, line 117 + ket = cursor; + // literal, line 117 + if (!(eq_s_b(2, "at"))) + { + cursor = limit - v_3; + break lab3; + } + // ], line 117 + bra = cursor; + // call R2, line 117 + if (!r_R2()) + { + cursor = limit - v_3; + break lab3; + } + // delete, line 117 + slice_del(); + break; + case 2: + // (, line 118 + // or, line 118 + lab4: do { + v_4 = limit - cursor; + lab5: do { + // (, line 118 + // call R2, line 118 + if (!r_R2()) + { + break lab5; + } + // delete, line 118 + slice_del(); + break lab4; + } while (false); + cursor = limit - v_4; + // (, line 118 + // call R1, line 118 + if (!r_R1()) + { + cursor = limit - v_3; + break lab3; + } + // <-, line 118 + slice_from("eux"); + } while (false); + break; + case 3: + // (, line 120 + // call R2, line 120 + if (!r_R2()) + { + cursor = limit - v_3; + break lab3; + } + // delete, line 120 + slice_del(); + break; + case 4: + // (, line 122 + // call RV, line 122 + if (!r_RV()) + { + cursor = limit - v_3; + break lab3; + } + // <-, line 122 + slice_from("i"); + break; + } + } while (false); + break; + case 7: + // (, line 128 + // call R2, line 129 + if (!r_R2()) + { + return false; + } + // delete, line 129 + slice_del(); + // try, line 130 + v_5 = limit - cursor; + lab6: do { + // (, line 130 + // [, line 131 + ket = cursor; + // substring, line 131 + among_var = find_among_b(a_3, 3); + if (among_var == 0) + { + cursor = limit - v_5; + break lab6; + } + // ], line 131 + bra = cursor; + switch(among_var) { + case 0: + cursor = limit - v_5; + break lab6; + case 1: + // (, line 132 + // or, line 132 + lab7: do { + v_6 = limit - cursor; + lab8: do { + // (, line 132 + // call R2, line 132 + if (!r_R2()) + { + break lab8; + } + // delete, line 132 + slice_del(); + break lab7; + } while (false); + cursor = limit - v_6; + // <-, line 132 + slice_from("abl"); + } while (false); + break; + case 2: + // (, line 133 + // or, line 133 + lab9: do { + v_7 = limit - cursor; + lab10: do { + // (, line 133 + // call R2, line 133 + if (!r_R2()) + { + break lab10; + } + // delete, line 133 + slice_del(); + break lab9; + } while (false); + cursor = limit - v_7; + // <-, line 133 + slice_from("iqU"); + } while (false); + break; + case 3: + // (, line 134 + // call R2, line 134 + if (!r_R2()) + { + cursor = limit - v_5; + break lab6; + } + // delete, line 134 + slice_del(); + break; + } + } while (false); + break; + case 8: + // (, line 140 + // call R2, line 141 + if (!r_R2()) + { + return false; + } + // delete, line 141 + slice_del(); + // try, line 142 + v_8 = limit - cursor; + lab11: do { + // (, line 142 + // [, line 142 + ket = cursor; + // literal, line 142 + if (!(eq_s_b(2, "at"))) + { + cursor = limit - v_8; + break lab11; + } + // ], line 142 + bra = cursor; + // call R2, line 142 + if (!r_R2()) + { + cursor = limit - v_8; + break lab11; + } + // delete, line 142 + slice_del(); + // [, line 142 + ket = cursor; + // literal, line 142 + if (!(eq_s_b(2, "ic"))) + { + cursor = limit - v_8; + break lab11; + } + // ], line 142 + bra = cursor; + // or, line 142 + lab12: do { + v_9 = limit - cursor; + lab13: do { + // (, line 142 + // call R2, line 142 + if (!r_R2()) + { + break lab13; + } + // delete, line 142 + slice_del(); + break lab12; + } while (false); + cursor = limit - v_9; + // <-, line 142 + slice_from("iqU"); + } while (false); + } while (false); + break; + case 9: + // (, line 144 + // <-, line 144 + slice_from("eau"); + break; + case 10: + // (, line 145 + // call R1, line 145 + if (!r_R1()) + { + return false; + } + // <-, line 145 + slice_from("al"); + break; + case 11: + // (, line 147 + // or, line 147 + lab14: do { + v_10 = limit - cursor; + lab15: do { + // (, line 147 + // call R2, line 147 + if (!r_R2()) + { + break lab15; + } + // delete, line 147 + slice_del(); + break lab14; + } while (false); + cursor = limit - v_10; + // (, line 147 + // call R1, line 147 + if (!r_R1()) + { + return false; + } + // <-, line 147 + slice_from("eux"); + } while (false); + break; + case 12: + // (, line 150 + // call R1, line 150 + if (!r_R1()) + { + return false; + } + if (!(out_grouping_b(g_v, 97, 251))) + { + return false; + } + // delete, line 150 + slice_del(); + break; + case 13: + // (, line 155 + // call RV, line 155 + if (!r_RV()) + { + return false; + } + // fail, line 155 + // (, line 155 + // <-, line 155 + slice_from("ant"); + return false; +// break; + case 14: + // (, line 156 + // call RV, line 156 + if (!r_RV()) + { + return false; + } + // fail, line 156 + // (, line 156 + // <-, line 156 + slice_from("ent"); + return false; +// break; + case 15: + // (, line 158 + // test, line 158 + v_11 = limit - cursor; + // (, line 158 + if (!(in_grouping_b(g_v, 97, 251))) + { + return false; + } + // call RV, line 158 + if (!r_RV()) + { + return false; + } + cursor = limit - v_11; + // fail, line 158 + // (, line 158 + // delete, line 158 + slice_del(); + return false; +// break; + } + return true; + } + + private boolean r_i_verb_suffix() { + int among_var; + int v_1; + int v_2; + // setlimit, line 163 + v_1 = limit - cursor; + // tomark, line 163 + if (cursor < I_pV) + { + return false; + } + cursor = I_pV; + v_2 = limit_backward; + limit_backward = cursor; + cursor = limit - v_1; + // (, line 163 + // [, line 164 + ket = cursor; + // substring, line 164 + among_var = find_among_b(a_5, 35); + if (among_var == 0) + { + limit_backward = v_2; + return false; + } + // ], line 164 + bra = cursor; + switch(among_var) { + case 0: + limit_backward = v_2; + return false; + case 1: + // (, line 170 + if (!(out_grouping_b(g_v, 97, 251))) + { + limit_backward = v_2; + return false; + } + // delete, line 170 + slice_del(); + break; + } + limit_backward = v_2; + return true; + } + + private boolean r_verb_suffix() { + int among_var; + int v_1; + int v_2; + int v_3; + // setlimit, line 174 + v_1 = limit - cursor; + // tomark, line 174 + if (cursor < I_pV) + { + return false; + } + cursor = I_pV; + v_2 = limit_backward; + limit_backward = cursor; + cursor = limit - v_1; + // (, line 174 + // [, line 175 + ket = cursor; + // substring, line 175 + among_var = find_among_b(a_6, 38); + if (among_var == 0) + { + limit_backward = v_2; + return false; + } + // ], line 175 + bra = cursor; + switch(among_var) { + case 0: + limit_backward = v_2; + return false; + case 1: + // (, line 177 + // call R2, line 177 + if (!r_R2()) + { + limit_backward = v_2; + return false; + } + // delete, line 177 + slice_del(); + break; + case 2: + // (, line 185 + // delete, line 185 + slice_del(); + break; + case 3: + // (, line 190 + // delete, line 190 + slice_del(); + // try, line 191 + v_3 = limit - cursor; + lab0: do { + // (, line 191 + // [, line 191 + ket = cursor; + // literal, line 191 + if (!(eq_s_b(1, "e"))) + { + cursor = limit - v_3; + break lab0; + } + // ], line 191 + bra = cursor; + // delete, line 191 + slice_del(); + } while (false); + break; + } + limit_backward = v_2; + return true; + } + + private boolean r_residual_suffix() { + int among_var; + int v_1... [truncated message content] |
From: <ka...@us...> - 2010-08-13 14:04:34
|
Revision: 8830 http://docbook.svn.sourceforge.net/docbook/?rev=8830&view=rev Author: kasunbg Date: 2010-08-13 14:04:27 +0000 (Fri, 13 Aug 2010) Log Message: ----------- bug fix: wrong language code was used for Japanese. Corrected it to "ja". Applying correct license for German stemmer. Modified Paths: -------------- branches/webhelp/xsl/webhelp/indexer/lib/nw-cms.jar branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/SaxHTMLIndex.java branches/webhelp/xsl/webhelp/template/content/search/stemmers/de_stemmer.js branches/webhelp/xsl/webhelp/template/content/search/stemmers/fr_stemmer.js Modified: branches/webhelp/xsl/webhelp/indexer/lib/nw-cms.jar =================================================================== (Binary files differ) Modified: branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/SaxHTMLIndex.java =================================================================== --- branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/SaxHTMLIndex.java 2010-08-12 18:33:00 UTC (rev 8829) +++ branches/webhelp/xsl/webhelp/indexer/src/com/nexwave/nquindexer/SaxHTMLIndex.java 2010-08-13 14:04:27 UTC (rev 8830) @@ -99,7 +99,7 @@ //TODO currently, stemming support is for english and german only. Add support for other languages as well. String[] tokenizedItems; - if(indexerLanguage.equalsIgnoreCase("jp") || indexerLanguage.equalsIgnoreCase("cn") + if(indexerLanguage.equalsIgnoreCase("ja") || indexerLanguage.equalsIgnoreCase("cn") || indexerLanguage.equalsIgnoreCase("ko")){ LinkedList<String> tokens = new LinkedList<String>(); try{ Modified: branches/webhelp/xsl/webhelp/template/content/search/stemmers/de_stemmer.js =================================================================== --- branches/webhelp/xsl/webhelp/template/content/search/stemmers/de_stemmer.js 2010-08-12 18:33:00 UTC (rev 8829) +++ branches/webhelp/xsl/webhelp/template/content/search/stemmers/de_stemmer.js 2010-08-13 14:04:27 UTC (rev 8830) @@ -1,13 +1,13 @@ -/** - * German Stemmer de_stemmer.js - * Originally developed by Joder Illi - * Adapted for DocBook WebHelp by Kasun Gajasinghe <ka...@gm...> - * Date: 17-07-2010 - * This is the initial release of german stemmer in javascript. - * Further refactoring would be needed to increase the performance. - * For other languages, see: http://snowball.tartarus.org/otherlangs/index.html - * Currently, only german is avaiable in JS +/* + * Author: Joder Illi * + * Copyright (c) 2010, FormBlitz AG + * All rights reserved. + * Implementation of the stemming algorithm from http://snowball.tartarus.org/algorithms/german/stemmer.html + * Copyright of the algorithm is: Copyright (c) 2001, Dr Martin Porter and can be found at http://snowball.tartarus.org/license.php + * + * Redistribution and use in source and binary forms, with or without modification, is covered by the standard BSD license. + * */ //var stemmer = function Stemmer() { Modified: branches/webhelp/xsl/webhelp/template/content/search/stemmers/fr_stemmer.js =================================================================== --- branches/webhelp/xsl/webhelp/template/content/search/stemmers/fr_stemmer.js 2010-08-12 18:33:00 UTC (rev 8829) +++ branches/webhelp/xsl/webhelp/template/content/search/stemmers/fr_stemmer.js 2010-08-13 14:04:27 UTC (rev 8830) @@ -1,6 +1,6 @@ /* * Author: Kasun Gajasinghe - * E-Mail: ka...@gm... + * E-Mail: kasunbg AT gmail DOT com * Date: 09.08.2010 * * usage: stemmer(word); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |