UNPKG

linq-js-docs

Version:

use linq and lamdba in javascript

73 lines (71 loc) 2.79 kB
const Enumerable = require('linq-js'); const extend = require('extend'); const isPre = /\.pre$/ig; const asVersion = version => version.replace(isPre, ''); module.exports = { defaultLang: 'zh-cn', versions: require('./../resources/versions.json'), get earliest() { return this.versions[0]; }, get lastest() { return Enumerable.last(this.versions, version => !isPre.test(version)); }, get newest() { return this.versions[this.versions.length - 1]; }, histroys(histroys) { if (histroys) { return Enumerable.zip(histroys, Enumerable.skip(histroys, 1).concat([0]).zip(Enumerable.concat([0], histroys), (next, prev) => ({ next, prev })), (v, content) => { let deprecated = v.deprecated || content.next && content.next.since && this.preVersion(content.next.since); if (v.ref && content.prev) { v = extend(true, { }, content.prev, v); } v.deprecated = deprecated; return v; }); } else { return Enumerable.empty(); } }, versionComparer(version, other) { let v = Enumerable.zip(asVersion(version).split('.'), asVersion(other).split('.'), (ver, otherVer) => ({ ver, otherVer })).firstOrDefault({ ver: 0, otherVer: 0 }, v => v.ver !== v.otherVer); return v.ver === v.otherVer ? 0 : parseInt(v.ver) > parseInt(v.otherVer) ? 1 : -1; }, preVersion(version) { return Enumerable.where(this.versions, ver => this.versionComparer(ver, version) < 0).max('', this.versionComparer); }, nextVersion(version) { return Enumerable.where(this.versions, ver => this.versionComparer(ver, version) > 0).min('', this.versionComparer); }, asVersion(version) { return asVersion(version); }, maxVersion(...versions) { return Enumerable.max(versions, '', this.versionComparer); }, minVersion(...versions) { return Enumerable.min(versions, '', this.versionComparer); }, isNewer(version, basaVersion) { let v = Enumerable.zip(asVersion(version || this.earliest).split('.'), asVersion(basaVersion).split('.'), (ver, baseVer) => ({ ver, baseVer })).firstOrDefault({ ver: 0, baseVer: 0 }, v => v.ver !== v.baseVer); return parseInt(v.ver) <= parseInt(v.baseVer); }, isOlder(version, basaVersion) { let v = Enumerable.zip(asVersion(version || this.newest).split('.'), asVersion(basaVersion).split('.'), (ver, baseVer) => ({ ver, baseVer })).firstOrDefault({ ver: 0, baseVer: 0 }, v => v.ver !== v.baseVer); return parseInt(v.ver) >= parseInt(v.baseVer); }, capitalize(value) { if (!value) return ''; value = value.toString(); return value.charAt(0).toUpperCase() + value.slice(1); }, upper(value) { if (!value) return ''; return value.toString().toUpperCase(); }, lower(value) { if (!value) return ''; return value.toString().toLowerCase(); }, };