snipplrCallback({"id":63962,"title":"javascript-search-indexer","source":"
importPackage(<\/span>java.io<\/span>)<\/span>;<\/span><\/div><\/li> load(<\/span>".\/rhino\/lib.js"<\/span>)<\/span>;<\/span><\/div><\/li> <\/div><\/li> var<\/span> rootPath =<\/span> arguments[<\/span>0<\/span>]<\/span>;<\/span><\/div><\/li> var<\/span> startPath=<\/span> new<\/span> File(<\/span>rootPath)<\/span>;<\/span><\/div><\/li> var<\/span> fileList =<\/span> directoryList(<\/span>startPath.getCanonicalPath<\/span>(<\/span>)<\/span>)<\/span>;<\/span><\/div><\/li> var<\/span> fileList =<\/span> filterDirectoryList(<\/span>fileList,<\/span> true<\/span>,<\/span> "html"<\/span>)<\/span>;<\/span><\/div><\/li> var<\/span> searchIndex =<\/span> indexFiles(<\/span>fileList,<\/span> rootPath)<\/span>;<\/span><\/div><\/li> <\/div><\/li> <\/div><\/li> serializeToDisk(<\/span>searchIndex,<\/span> ".\/search\/searchindex.js"<\/span>,<\/span> true<\/span>)<\/span>;<\/span><\/div><\/li> serializeToDisk(<\/span>searchIndex,<\/span> rootPath +<\/span> "\/search\/searchindex.js"<\/span>)<\/span>;<\/span><\/div><\/li> <\/div><\/li> function<\/span> indexFiles(<\/span>fileList,<\/span> rootPath)<\/span>{<\/span><\/div><\/li> \tvar<\/span> searchIndex =<\/span> [<\/span>]<\/span>;<\/span><\/div><\/li> \tfor<\/span> (<\/span>var<\/span> i =<\/span> 0<\/span>;<\/span> i <<\/span> fileList.length<\/span>;<\/span> i++<\/span>)<\/span>{<\/span><\/div><\/li> \t\tvar<\/span> fileToRead =<\/span> fileList[<\/span>i]<\/span>[<\/span>'path'<\/span>]<\/span>;<\/span><\/div><\/li> <\/div><\/li> \t\tvar<\/span> contentFilter =<\/span> fileToRead.indexOf<\/span>(<\/span>"\/articles\/"<\/span>)<\/span> +<\/span> fileToRead.indexOf<\/span>(<\/span>"\/tags\/"<\/span>)<\/span>;<\/span><\/div><\/li> \t\tvar<\/span> badFilter =<\/span> fileToRead.indexOf<\/span>(<\/span>"\/bad\/"<\/span>)<\/span><\/div><\/li> \t\tif<\/span> (<\/span>contentFilter ><\/span> 0<\/span> &&<\/span> badFilter <<\/span> 1<\/span>)<\/span>{<\/span><\/div><\/li> \t\t\tvar<\/span> resultSet =<\/span> indexContentPage(<\/span>fileToRead,<\/span> rootPath)<\/span>;<\/span><\/div><\/li> <\/div><\/li> \t\t\t\/\/TODO: Go back and make this stuff optional in indexContentPage,<\/span><\/div><\/li> \t\t\t\/\/Adding stuff in the indexer required me to kill it from search json. <\/span><\/div><\/li> \t\t\tdelete<\/span> resultSet[<\/span>'filepath'<\/span>]<\/span>;<\/span><\/div><\/li> \t\t\tdelete<\/span> resultSet[<\/span>'contents'<\/span>]<\/span>;<\/span><\/div><\/li> \t\t\tresultSet[<\/span>'lastModified'<\/span>]<\/span> =<\/span> new<\/span> Date<\/span>(<\/span>resultSet[<\/span>'lastModified'<\/span>]<\/span>)<\/span>;<\/span><\/div><\/li> <\/div><\/li> \t\t\tsearchIndex.push<\/span>(<\/span>resultSet)<\/span>;<\/span><\/div><\/li> <\/div><\/li> \t\t}<\/span>\t<\/div><\/li> \t}<\/span><\/div><\/li> \treturn<\/span> searchIndex;<\/span><\/div><\/li> }<\/span><\/div><\/li> <\/div><\/li> function<\/span> serializeToDisk(<\/span>content,<\/span> location,<\/span> prettyify)<\/span>{<\/span><\/div><\/li> \tvar<\/span> prettyify =<\/span> typeof<\/span> prettyify !==<\/span> 'undefined'<\/span> ?<\/span> prettyify :<\/span> false<\/span>;<\/span><\/div><\/li> \tvar<\/span> fstream =<\/span> new<\/span> FileWriter(<\/span>location)<\/span>;<\/span><\/div><\/li> \t