UNPKG

danbooru

Version:
212 lines (211 loc) 6.75 kB
// Generated by LiveScript 1.4.0 (function(){ var argsJs, deepExtend, defaultParams, search, out$ = typeof exports != 'undefined' && exports || this, split$ = ''.split, join$ = [].join; argsJs = require('args-js'); deepExtend = require('deep-extend'); defaultParams = { limit: 100 }; out$.search = search = function(){ var ref$, tags, params, callback, tagsArray, i$, len$, tag, helpers, postHelpers, helperify; ref$ = argsJs([ { tags: argsJs.STRING | argsJs.Optional, _default: '' }, { params: argsJs.OBJECT | argsJs.Optional, _default: {} }, { callback: argsJs.FUNCTION | argsJs.Optional, _default: function(){} } ], arguments), tags = ref$.tags, params = ref$.params, callback = ref$.callback; if (params.page != null) { params.page = Number(params.page); if (isNaN(params.page)) { throw new Error('page parameter must be a Number'); } params.page >= 1 || (params.page = 1); } else { params.page = 1; } tags = tags.trim(); tagsArray = split$.call(tags, /\s+/); tags = []; for (i$ = 0, len$ = tagsArray.length; i$ < len$; ++i$) { tag = tagsArray[i$]; if (!in$(tag, tags)) { tags.push(tag); } } tags = join$.call(tags, ' '); params = deepExtend(defaultParams, params, { tags: tags }); (function(self){ helpers = { load: function(){ var ref$, page, callback, myParams; ref$ = argsJs([ { page: argsJs.FLOAT | argsJs.Optional, _default: this.page }, { callback: argsJs.FUNCTION | argsJs.Optional, _default: function(){} } ], arguments), page = ref$.page, callback = ref$.callback; myParams = deepExtend({}, params, { page: page }); return self.search(this.tags, myParams, callback); }, next: function(){ var ref$, modifier, callback; ref$ = argsJs([ { modifier: argsJs.FLOAT | argsJs.Optional, _default: 1 }, { callback: argsJs.FUNCTION | argsJs.Optional, _default: function(){} } ], arguments), modifier = ref$.modifier, callback = ref$.callback; return this.load(this.page + modifier, callback); }, prev: function(){ var ref$, modifier, callback; ref$ = argsJs([ { modifier: argsJs.FLOAT | argsJs.Optional, _default: 1 }, { callback: argsJs.FUNCTION | argsJs.Optional, _default: function(){} } ], arguments), modifier = ref$.modifier, callback = ref$.callback; return this.load(this.page - modifier, callback); }, add: function(){ var ref$, tagMod, callback, myParams; ref$ = argsJs([ { tagMod: argsJs.STRING | argsJs.Optional, _default: '' }, { callback: argsJs.FUNCTION | argsJs.Optional, _default: function(){} } ], arguments), tagMod = ref$.tagMod, callback = ref$.callback; myParams = deepExtend({}, params, { page: 1 }); return self.search(this.tags + (" " + tagMod), myParams, callback); }, rem: function(){ var ref$, tagMod, callback, newTags, tags, i$, len$, tag, myParams; ref$ = argsJs([ { tagMod: argsJs.STRING | argsJs.Optional, _default: '' }, { callback: argsJs.FUNCTION | argsJs.Optional, _default: function(){} } ], arguments), tagMod = ref$.tagMod, callback = ref$.callback; newTags = []; tags = split$.call(this.tags, ' '); tagMod = split$.call(tagMod, ' '); for (i$ = 0, len$ = tags.length; i$ < len$; ++i$) { tag = tags[i$]; if (!in$(tag, tagMod)) { newTags.push(tag); } } newTags = join$.call(newTags, ' '); myParams = deepExtend({}, params, { page: 1 }); return self.search(newTags, myParams, callback); }, random: function(){ if (this.length) { return this[Math.floor(this.length * Math.random())]; } } }; postHelpers = { get: function(it){ return self.request(this.file_url, it); }, getLarge: function(it){ return self.request(this.large_file_url, it); }, getPreview: function(it){ return self.request(this.preview_file_url, it); }, favorite: function(favorite, callback){ favorite == null && (favorite = true); callback == null && (callback = function(){}); if (typeof favorite === 'function') { callback = favorite; favorite = true; } if (favorite) { return self.post('favorites', { post_id: this.id }, callback); } else { return self['delete']("favorites/" + this.id, callback); } } }; }.call(this, this)); helperify = function(it){ var i$, len$, ref$; for (i$ = 0, len$ = it.length; i$ < len$; ++i$) { (fn$.call(this, it[i$])); } return ref$ = import$(it, helpers), Object.defineProperty(ref$, 'page', { get: function(){ return params.page; }, configurable: true, enumerable: true }), Object.defineProperty(ref$, 'tags', { get: function(){ return params.tags; }, configurable: true, enumerable: true }), ref$; function fn$(post){ Object.defineProperty(import$(post, postHelpers), 'url', { get: function(){ return "https://danbooru.donmai.us/posts/" + post.id; }, configurable: true, enumerable: true }); } }; this.get('posts', params, function(e, data){ if (e != null) { return callback(e, data); } helperify(data); return callback(void 8, data); }); return helperify({}); }; function in$(x, xs){ var i = -1, l = xs.length >>> 0; while (++i < l) if (x === xs[i]) return true; return false; } function import$(obj, src){ var own = {}.hasOwnProperty; for (var key in src) if (own.call(src, key)) obj[key] = src[key]; return obj; } }).call(this);