File:  [mozdev] / bookmarktools / www / documentation.html
Revision 1.3: download - view: text, annotated - select for diffs - revision graph
Thu Feb 5 21:08:29 2009 UTC (10 years, 1 month ago) by maik
Branches: MAIN
CVS tags: HEAD
- includes for syntax highlight

<!-- MAIN CONTENT -->

<h2>Content:</h2>
<ul>
	<li>USER GUIDE</li>
	<li>XPCOM</li>
	<ul>
		<li><a href="#HowToIndex">HowTo use the index component</a></li>
		<li><a href="#HowToTidy">HowTo use the tidy component</a></li>
    </ul>
	<li>OTHER</li>
</ul>

<br />

<h2><a name="HowToIndex">HowTo use the index component (uses clucene-core-0.9.20)</a></h2>
<h3>Writing::</h3>
<pre class="brush: js">

	//initialize file object (location: profile directory)
	var file = Components.classes["@mozilla.org/file/directory_service;1"]
				.getService(Components.interfaces.nsIProperties)
				.get("ProfD", Components.interfaces.nsIFile);

	file.append("index"); //folder named 'index'
	
	if(!file.exists() || !file.isDirectory()) 
		file.create(Components.interfaces.nsIFile.DIRECTORY_TYPE, 0777);

	//initialize xpcom
	var writer = Components.classes["@bookmarktools.mozdev.org/search/indexWriter;1"].createInstance();
	writer = writer.QueryInterface(Components.interfaces.ICLWriter);
	
	//set path
	writer.setPath(file.path);
	
	//create index document
	var cl_document = new Object();
	cl_document.primaryKey = "key0";						//this shoud be a unique key
	cl_document.name = "CLucene Indexer";					//document name
	cl_document.lastModifiedDate = new Date().getTime();	//date in millis
	cl_document.content = "Hello World!";					//some content
	
	//append document
	writer.appendDocument(
		cl_document.primaryKey,
		cl_document.name,
		cl_document.lastModifiedDate,
		cl_document.content
	);
	
	//optimize data
	writer.optimize();
	
</pre>

<h3>Searching::</h3>
<pre class="brush: js">

	//initialize xpcom
	var reader = Components.classes["@bookmarktools.mozdev.org/search/indexReader;1"].createInstance();
	reader = reader.QueryInterface(Components.interfaces.ICLReader);
	
	//set path
	reader.setPath(file.path); //see section 'Writing'
	
	if(reader.exists()){ //check for index data
		
		var query = "Hell*";
		var results = Components.classes["@mozilla.org/array;1"]
						.createInstance(Components.interfaces.nsIMutableArray);
		reader.search(query, results);
		
		var e = results.enumerate();
		while (e.hasMoreElements()) {
			var resultNode = e.getNext().QueryInterface(Components.interfaces.IResultNode);
			
			//Object: resultNode
			//-> resultNode.primaryKey
			//-> resultNode.score
			alert(resultNode.primaryKey + "\n" + resultNode.score);
		}
		
	}else {
		//display message or do nothing
	}
	
</pre>

<h3>Lookup::</h3>
<pre class="brush: js">

	//initialize xpcom
	var reader = Components.classes["@bookmarktools.mozdev.org/search/indexReader;1"].createInstance();
	reader = reader.QueryInterface(Components.interfaces.ICLReader);
	
	//set path
	reader.setPath(file.path); //see section 'Writing'
	
	var results = Components.classes["@mozilla.org/array;1"]
					.createInstance(Components.interfaces.nsIMutableArray);
	reader.lookup(results);
	
	var e = results.enumerate();
	while (e.hasMoreElements()) {
		var lookupNode = e.getNext().QueryInterface(Components.interfaces.ILookupNode);
		
		//Object: lookupNode
		//-> lookupNode.primaryKey
		//-> lookupNode.name
		alert(lookupNode.primaryKey + "\n" + lookupNode.name);
	}

</pre>

<h3>Delete documents::</h3>
<pre class="brush: js">

	//initialize xpcom
	var writer = Components.classes["@bookmarktools.mozdev.org/search/indexWriter;1"].createInstance();
	writer = writer.QueryInterface(Components.interfaces.ICLWriter);
	
	//set path
	writer.setPath(file.path); //see section 'Writing'
	
	//delete documents with index 0, 5 and 2
	var docs = [0, 5, 2];
	writer.deleteDocument(docs, docs.length);

</pre>

<br />

<h2><a name="HowToTidy">HowTo use the tidy component (uses ctidy version 060405)</a></h2>
<h3>Cleanup::</h3>
<pre class="brush: js">

	//initialize xpcom
	var tidy = Components.classes["@bookmarktools.mozdev.org/repair/tidy;1"].createInstance();
	tidy = tidy.QueryInterface(Components.interfaces.ITidy);
	
	var src = "
	&lt;html&gt;
		&lt;head&gt;&lt;/head&gt;
		&lt;body
			broken body tag & no entity
		&lt;/body&gt;
	&lt;/html>";
	
	//result contains the repaired html/xhtml/xml source
	//otherwise a error message returned
	var result = tidy.cleanup(src);
	
	if(result == "Tidy: no output"){
		alert("error returned");
	}else {
		alert(src);
	}
	
</pre>


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>