backHowTo use the index component (uses clucene-core-0.9.20)

Writing::


									//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 = "first document";					//document name
									cl_document.content = "Hello World!";					//some content
									
									//append document
									writer.appendDocument(
										cl_document.primaryKey,
										cl_document.name,
										cl_document.content
									);
									
									//optimize data
									writer.optimize();
									
								

Searching::


									//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
									}
									
								

Lookup::


									//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);
									}

								

Delete documents::


									//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);

								

backHowTo use the tidy component (uses ctidy version 060405)

Cleanup::


									//initialize xpcom
									var tidy = Components.classes["@bookmarktools.mozdev.org/repair/tidy;1"].createInstance();
									tidy = tidy.QueryInterface(Components.interfaces.ITidy);
									
									var src = "
									<html>
										<head></head>
										<body
											broken body tag & no entity
										</body>
									</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(result);
									}