python-piped-api-client/search.js

46 lines
82 KiB
JavaScript
Raw Normal View History

window.pdocSearch = (function(){
/** elasticlunr - http://weixsong.github.io * Copyright (C) 2017 Oliver Nightingale * Copyright (C) 2017 Wei Song * MIT Licensed */!function(){function e(e){if(null===e||"object"!=typeof e)return e;var t=e.constructor();for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t}var t=function(e){var n=new t.Index;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),e&&e.call(n,n),n};t.version="0.9.5",lunr=t,t.utils={},t.utils.warn=function(e){return function(t){e.console&&console.warn&&console.warn(t)}}(this),t.utils.toString=function(e){return void 0===e||null===e?"":e.toString()},t.EventEmitter=function(){this.events={}},t.EventEmitter.prototype.addListener=function(){var e=Array.prototype.slice.call(arguments),t=e.pop(),n=e;if("function"!=typeof t)throw new TypeError("last argument must be a function");n.forEach(function(e){this.hasHandler(e)||(this.events[e]=[]),this.events[e].push(t)},this)},t.EventEmitter.prototype.removeListener=function(e,t){if(this.hasHandler(e)){var n=this.events[e].indexOf(t);-1!==n&&(this.events[e].splice(n,1),0==this.events[e].length&&delete this.events[e])}},t.EventEmitter.prototype.emit=function(e){if(this.hasHandler(e)){var t=Array.prototype.slice.call(arguments,1);this.events[e].forEach(function(e){e.apply(void 0,t)},this)}},t.EventEmitter.prototype.hasHandler=function(e){return e in this.events},t.tokenizer=function(e){if(!arguments.length||null===e||void 0===e)return[];if(Array.isArray(e)){var n=e.filter(function(e){return null===e||void 0===e?!1:!0});n=n.map(function(e){return t.utils.toString(e).toLowerCase()});var i=[];return n.forEach(function(e){var n=e.split(t.tokenizer.seperator);i=i.concat(n)},this),i}return e.toString().trim().toLowerCase().split(t.tokenizer.seperator)},t.tokenizer.defaultSeperator=/[\s\-]+/,t.tokenizer.seperator=t.tokenizer.defaultSeperator,t.tokenizer.setSeperator=function(e){null!==e&&void 0!==e&&"object"==typeof e&&(t.tokenizer.seperator=e)},t.tokenizer.resetSeperator=function(){t.tokenizer.seperator=t.tokenizer.defaultSeperator},t.tokenizer.getSeperator=function(){return t.tokenizer.seperator},t.Pipeline=function(){this._queue=[]},t.Pipeline.registeredFunctions={},t.Pipeline.registerFunction=function(e,n){n in t.Pipeline.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[n]=e},t.Pipeline.getRegisteredFunction=function(e){return e in t.Pipeline.registeredFunctions!=!0?null:t.Pipeline.registeredFunctions[e]},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(e){var i=t.Pipeline.getRegisteredFunction(e);if(!i)throw new Error("Cannot load un-registered function: "+e);n.add(i)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(e){t.Pipeline.warnIfFunctionNotRegistered(e),this._queue.push(e)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._queue.indexOf(e);if(-1===i)throw new Error("Cannot find existingFn");this._queue.splice(i+1,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._queue.indexOf(e);if(-1===i)throw new Error("Cannot find existingFn");this._queue.splice(i,0,n)},t.Pipeline.prototype.remove=function(e){var t=this._queue.indexOf(e);-1!==t&&this._queue.splice(t,1)},t.Pipeline.prototype.run=function(e){for(var t=[],n=e.length,i=this._queue.length,o=0;n>o;o++){for(var r=e[o],s=0;i>s&&(r=this._queue[s](r,o,e),void 0!==r&&null!==r);s++);void 0!==r&&null!==r&&t.push(r)}return t},t.Pipeline.prototype.reset=function(){this._queue=[]},t.Pipeline.prototype.get=function(){return this._queue},t.Pipeline.prototype.toJSON=function(){return this._queue.map(function(e){return t.Pipeline.warnIfFunctionNotRegistered(e),e.label})},t.Index=function(){this._fields=[],this._ref="id",this.pipeline=new t
/** pdoc search index */const docs = {"version": "0.9.5", "fields": ["qualname", "fullname", "annotation", "default_value", "signature", "bases", "doc"], "ref": "fullname", "documentStore": {"docs": {"piped_api": {"fullname": "piped_api", "modulename": "piped_api", "type": "module", "doc": "<p></p>\n"}, "piped_api.client": {"fullname": "piped_api.client", "modulename": "piped_api.client", "type": "module", "doc": "<p></p>\n"}, "piped_api.client.PipedClient": {"fullname": "piped_api.client.PipedClient", "modulename": "piped_api.client", "qualname": "PipedClient", "type": "class", "doc": "<p>An API client for <a href=\"https://piped.kavin.rocks\">Piped</a>.</p>\n"}, "piped_api.client.PipedClient.__init__": {"fullname": "piped_api.client.PipedClient.__init__", "modulename": "piped_api.client", "qualname": "PipedClient.__init__", "type": "function", "doc": "<h3 id=\"parameters\">Parameters:</h3>\n\n<ul>\n<li><code>base_api_url</code> - The base URL to the instance's API. Trailing slashes will be stripped.</li>\n<li><code>session</code> - A class/subclass of <code>requests.Session</code> to use for all requests.\nFor example, you could use <a href=\"https://pypi.org/project/requests-cache/\">requests-cache</a> to make all requests cacheable.</li>\n</ul>\n", "signature": "(\n self,\n base_api_url: str = 'https://pipedapi.kavin.rocks',\n session: Type[requests.sessions.Session] = <requests.sessions.Session object>\n)", "funcdef": "def"}, "piped_api.client.PipedClient.get_comments": {"fullname": "piped_api.client.PipedClient.get_comments", "modulename": "piped_api.client", "qualname": "PipedClient.get_comments", "type": "function", "doc": "<p>Gets a list of comments for a specific video.</p>\n\n<h3 id=\"parameters\">Parameters:</h3>\n\n<ul>\n<li><code>video_id</code> - The ID of the video to get comments for</li>\n<li><code>nextpage</code> - Nextpage data, obtained from <code>.models.comments.Comments.nextpage</code> property. If this is <code>None</code>, the first page of comments is returned.\nThere are often 20 comments per page.</li>\n</ul>\n", "signature": "(\n self,\n video_id: str,\n nextpage: Optional[Dict[str, Optional[str]]] = None\n) -> piped_api.models.comments.Comments", "funcdef": "def"}, "piped_api.models": {"fullname": "piped_api.models", "modulename": "piped_api.models", "type": "module", "doc": "<p></p>\n"}, "piped_api.models.BasePipedModel": {"fullname": "piped_api.models.BasePipedModel", "modulename": "piped_api.models", "qualname": "BasePipedModel", "type": "class", "doc": "<p>Base class for all Piped models.</p>\n"}, "piped_api.models.BasePipedModel.__init__": {"fullname": "piped_api.models.BasePipedModel.__init__", "modulename": "piped_api.models", "qualname": "BasePipedModel.__init__", "type": "function", "doc": "<h3 id=\"parameters\">Parameters:</h3>\n\n<ul>\n<li><code>data</code> - The JSON (<code>dict</code>) data to initialize the model with.</li>\n</ul>\n", "signature": "(self, data: Dict[str, Any])", "funcdef": "def"}, "piped_api.models.comments": {"fullname": "piped_api.models.comments", "modulename": "piped_api.models.comments", "type": "module", "doc": "<p></p>\n"}, "piped_api.models.comments.Comments": {"fullname": "piped_api.models.comments.Comments", "modulename": "piped_api.models.comments", "qualname": "Comments", "type": "class", "doc": "<p>Base class for all Piped models.</p>\n", "bases": "piped_api.models.BasePipedModel"}, "piped_api.models.comments.Comments.Comment": {"fullname": "piped_api.models.comments.Comments.Comment", "modulename": "piped_api.models.comments", "qualname": "Comments.Comment", "type": "class", "doc": "<p>Base class for all Piped models.</p>\n", "bases": "piped_api.models.BasePipedModel"}, "piped_api.models.comments.Comments.Comment.author": {"fullname": "piped_api.models.comments.Comments.Comment.author", "modulename": "piped_api.models.comments", "qualname": "Comments.Comment.author", "type": "variable", "doc": "<p>The name of the author of the comment</p>\n", "annotation": ": str"}, "piped_api.models.comments.Comments.Comment.comment_id": {
// mirrored in build-search-index.js (part 1)
// Also split on html tags. this is a cheap heuristic, but good enough.
elasticlunr.tokenizer.setSeperator(/[\s\-.;&_'"=,()]+|<[^>]*>/);
let searchIndex;
if (docs._isPrebuiltIndex) {
console.info("using precompiled search index");
searchIndex = elasticlunr.Index.load(docs);
} else {
console.time("building search index");
// mirrored in build-search-index.js (part 2)
searchIndex = elasticlunr(function () {
this.pipeline.remove(elasticlunr.stemmer);
this.pipeline.remove(elasticlunr.stopWordFilter);
this.addField("qualname");
this.addField("fullname");
this.addField("annotation");
this.addField("default_value");
this.addField("signature");
this.addField("bases");
this.addField("doc");
this.setRef("fullname");
});
for (let doc of docs) {
searchIndex.addDoc(doc);
}
console.timeEnd("building search index");
}
return (term) => searchIndex.search(term, {
fields: {
qualname: {boost: 4},
fullname: {boost: 2},
annotation: {boost: 2},
default_value: {boost: 2},
signature: {boost: 2},
bases: {boost: 2},
doc: {boost: 1},
},
expand: true
});
})();