WIP - add extractor, generate snippet_data

This commit is contained in:
Stefan Fejes
2019-08-20 15:52:05 +02:00
parent 88084d3d30
commit cc8f1d8a7a
37396 changed files with 4588842 additions and 133 deletions

21
node_modules/any-base/LICENSE generated vendored Executable file
View File

@ -0,0 +1,21 @@
The MIT License (MIT)
Copyright (c) 2015 Kamil Harasimowicz and contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

55
node_modules/any-base/README.md generated vendored Executable file
View File

@ -0,0 +1,55 @@
# README #
The library allows you to convert any large numbers in any number base to another number base. The base is determined by specifying the alphabet. So is full freedom
[![NPM](https://nodei.co/npm/any-base.png?downloads=true&stars=true)](https://nodei.co/npm/any-base/)
## Installation ##
```
npm install any-base --save
```
## API ##
### AnyBase() ###
```
converterFunction = anyBase(sourceAlphabet, destinationAlphabet);
```
#### Parameters ####
* {String} __sourceAlphabet__ digits from smallest to the largest
* {String} __destinationAlphabet__ digits from smallest to the largest
#### Return Values ####
Returns __function__ that converts the number of source base to the destination
### Convert() ###
```
converterFunction(number)
```
#### Parameters ####
* {String} __number__ number of source base
#### Return Values ####
Returns number of destonation base
## Example ##
```js
var anyBase = require('any-base'),
dec2hex = anyBase(anyBase.DEC, anyBase.HEX),
shortId = anyBase(anyBase.DEC, '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-+!@#$^'),
longId = anyBase('0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-+!@#$^', anyBase.DEC);
dec2hex('123456'); // return: '1E240'
shortId('1234567890'); // return: 'PtmIa'
longId('PtmIa'); // return: '1234567890'
```

94
node_modules/any-base/dist/any-base.js generated vendored Executable file
View File

@ -0,0 +1,94 @@
(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.AnyBase = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
'use strict';
/**
* Converter
*
* @param {string} srcAlphabet
* @param {string} dstAlphabet
* @constructor
*/
function Converter(srcAlphabet, dstAlphabet) {
if (!srcAlphabet || !dstAlphabet || !srcAlphabet.length || !dstAlphabet.length) {
throw new Error('Bad alphabet');
}
this.srcAlphabet = srcAlphabet;
this.dstAlphabet = dstAlphabet;
}
/**
* Convert number from source alphabet to destonation alphabet
*
* @param {string} number - number represent as a string
*
* @returns {string}
*/
Converter.prototype.convert = function(number) {
var i, divide, newlen,
numberMap = {},
fromBase = this.srcAlphabet.length,
toBase = this.dstAlphabet.length,
length = number.length,
result = '';
if (this.srcAlphabet === this.dstAlphabet) {
return number;
}
for (i = 0; i < length; i++) {
numberMap[i] = this.srcAlphabet.indexOf(number[i]);
}
do {
divide = 0;
newlen = 0;
for (i = 0; i < length; i++) {
divide = divide * fromBase + numberMap[i];
if (divide >= toBase) {
numberMap[newlen++] = parseInt(divide / toBase, 10);
divide = divide % toBase;
} else if (newlen > 0) {
numberMap[newlen++] = 0;
}
}
length = newlen;
result = this.dstAlphabet[divide] + result;
} while (newlen != 0);
return result;
}
module.exports = Converter;
},{}],2:[function(require,module,exports){
var Converter = require('./src/converter');
/**
* Function get source and destination alphabet and return convert function
*
* @param {string} srcAlphabet
* @param {string} dstAlphabet
*
* @returns {function(number)}
*/
function anyBase(srcAlphabet, dstAlphabet) {
var converter = new Converter(srcAlphabet, dstAlphabet);
/**
* Convert function
*
* @param {string} number
*
* @return {string} number
*/
return function (number) {
return converter.convert(number);
}
};
anyBase.BIN = '01';
anyBase.OCT = '01234567';
anyBase.DEC = '0123456789';
anyBase.HEX = '0123456789abcdef';
module.exports = anyBase;
},{"./src/converter":1}]},{},[2])(2)
});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJzcmMvY29udmVydGVyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiJnZW5lcmF0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIGUodCxuLHIpe2Z1bmN0aW9uIHMobyx1KXtpZighbltvXSl7aWYoIXRbb10pe3ZhciBhPXR5cGVvZiByZXF1aXJlPT1cImZ1bmN0aW9uXCImJnJlcXVpcmU7aWYoIXUmJmEpcmV0dXJuIGEobywhMCk7aWYoaSlyZXR1cm4gaShvLCEwKTt2YXIgZj1uZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiK28rXCInXCIpO3Rocm93IGYuY29kZT1cIk1PRFVMRV9OT1RfRk9VTkRcIixmfXZhciBsPW5bb109e2V4cG9ydHM6e319O3Rbb11bMF0uY2FsbChsLmV4cG9ydHMsZnVuY3Rpb24oZSl7dmFyIG49dFtvXVsxXVtlXTtyZXR1cm4gcyhuP246ZSl9LGwsbC5leHBvcnRzLGUsdCxuLHIpfXJldHVybiBuW29dLmV4cG9ydHN9dmFyIGk9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtmb3IodmFyIG89MDtvPHIubGVuZ3RoO28rKylzKHJbb10pO3JldHVybiBzfSkiLCIndXNlIHN0cmljdCc7XG5cbi8qKlxuICogQ29udmVydGVyXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHNyY0FscGhhYmV0XG4gKiBAcGFyYW0ge3N0cmluZ30gZHN0QWxwaGFiZXRcbiAqIEBjb25zdHJ1Y3RvclxuICovXG5mdW5jdGlvbiBDb252ZXJ0ZXIoc3JjQWxwaGFiZXQsIGRzdEFscGhhYmV0KSB7XG4gICAgaWYgKCFzcmNBbHBoYWJldCB8fCAhZHN0QWxwaGFiZXQgfHwgIXNyY0FscGhhYmV0Lmxlbmd0aCB8fCAhZHN0QWxwaGFiZXQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdCYWQgYWxwaGFiZXQnKTtcbiAgICB9XG4gICAgdGhpcy5zcmNBbHBoYWJldCA9IHNyY0FscGhhYmV0O1xuICAgIHRoaXMuZHN0QWxwaGFiZXQgPSBkc3RBbHBoYWJldDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IG51bWJlciBmcm9tIHNvdXJjZSBhbHBoYWJldCB0byBkZXN0b25hdGlvbiBhbHBoYWJldFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBudW1iZXIgLSBudW1iZXIgcmVwcmVzZW50IGFzIGEgc3RyaW5nXG4gKlxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuQ29udmVydGVyLnByb3RvdHlwZS5jb252ZXJ0ID0gZnVuY3Rpb24obnVtYmVyKSB7XG4gICAgdmFyIGksIGRpdmlkZSwgbmV3bGVuLFxuICAgIG51bWJlck1hcCA9IHt9LFxuICAgIGZyb21CYXNlID0gdGhpcy5zcmNBbHBoYWJldC5sZW5ndGgsXG4gICAgdG9CYXNlID0gdGhpcy5kc3RBbHBoYWJldC5sZW5ndGgsXG4gICAgbGVuZ3RoID0gbnVtYmVyLmxlbmd0aCxcbiAgICByZXN1bHQgPSAnJztcblxuICAgIGlmICh0aGlzLnNyY0FscGhhYmV0ID09PSB0aGlzLmRzdEFscGhhYmV0KSB7XG4gICAgICAgIHJldHVybiBudW1iZXI7XG4gICAgfVxuXG4gICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgIG51bWJlck1hcFtpXSA9IHRoaXMuc3JjQWxwaGFiZXQuaW5kZXhPZihudW1iZXJbaV0pO1xuICAgIH1cbiAgICBkbyB7XG4gICAgICAgIGRpdmlkZSA9IDA7XG4gICAgICAgIG5ld2xlbiA9IDA7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgZGl2aWRlID0gZGl2aWRlICogZnJvbUJhc2UgKyBudW1iZXJNYXBbaV07XG4gICAgICAgICAgICBpZiAoZGl2aWRlID49IHRvQmFzZSkge1xuICAgICAgICAgICAgICAgIG51bWJlck1hcFtuZXdsZW4rK10gPSBwYXJzZUludChkaXZpZGUgLyB0b0Jhc2UsIDEwKTtcbiAgICAgICAgICAgICAgICBkaXZpZGUgPSBkaXZpZGUgJSB0b0Jhc2U7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG5ld2xlbiA+IDApIHtcbiAgICAgICAgICAgICAgICBudW1iZXJNYXBbbmV3bGVuKytdID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBsZW5ndGggPSBuZXdsZW47XG4gICAgICAgIHJlc3VsdCA9IHRoaXMuZHN0QWxwaGFiZXRbZGl2aWRlXSArIHJlc3VsdDtcbiAgICB9IHdoaWxlIChuZXdsZW4gIT0gMCk7XG5cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENvbnZlcnRlcjsiXX0=

1
node_modules/any-base/dist/any-base.min.js generated vendored Executable file
View File

@ -0,0 +1 @@
!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var t;t="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,t.AnyBase=e()}}(function(){return function e(t,n,r){function o(f,s){if(!n[f]){if(!t[f]){var u="function"==typeof require&&require;if(!s&&u)return u(f,!0);if(i)return i(f,!0);var c=new Error("Cannot find module '"+f+"'");throw c.code="MODULE_NOT_FOUND",c}var l=n[f]={exports:{}};t[f][0].call(l.exports,function(e){var n=t[f][1][e];return o(n||e)},l,l.exports,e,t,n,r)}return n[f].exports}for(var i="function"==typeof require&&require,f=0;f<r.length;f++)o(r[f]);return o}({1:[function(e,t,n){"use strict";function r(e,t){if(!(e&&t&&e.length&&t.length))throw new Error("Bad alphabet");this.srcAlphabet=e,this.dstAlphabet=t}r.prototype.convert=function(e){var t,n,r,o={},i=this.srcAlphabet.length,f=this.dstAlphabet.length,s=e.length,u="string"==typeof e?"":[];if(this.srcAlphabet===this.dstAlphabet)return e;for(t=0;t<s;t++)o[t]=this.srcAlphabet.indexOf(e[t]);do{for(n=0,r=0,t=0;t<s;t++)n=n*i+o[t],n>=f?(o[r++]=parseInt(n/f,10),n%=f):r>0&&(o[r++]=0);s=r,u=this.dstAlphabet.slice(n,n+1).concat(u)}while(0!==r);return u},t.exports=r},{}],2:[function(e,t,n){function r(e,t){var n=new o(e,t);return function(e){return n.convert(e)}}var o=e("./src/converter");r.BIN="01",r.OCT="01234567",r.DEC="0123456789",r.HEX="0123456789abcdef",t.exports=r},{"./src/converter":1}]},{},[2])(2)});

30
node_modules/any-base/index.js generated vendored Executable file
View File

@ -0,0 +1,30 @@
var Converter = require('./src/converter');
/**
* Function get source and destination alphabet and return convert function
*
* @param {string|Array} srcAlphabet
* @param {string|Array} dstAlphabet
*
* @returns {function(number|Array)}
*/
function anyBase(srcAlphabet, dstAlphabet) {
var converter = new Converter(srcAlphabet, dstAlphabet);
/**
* Convert function
*
* @param {string|Array} number
*
* @return {string|Array} number
*/
return function (number) {
return converter.convert(number);
}
};
anyBase.BIN = '01';
anyBase.OCT = '01234567';
anyBase.DEC = '0123456789';
anyBase.HEX = '0123456789abcdef';
module.exports = anyBase;

69
node_modules/any-base/package.json generated vendored Executable file
View File

@ -0,0 +1,69 @@
{
"_from": "any-base@^1.1.0",
"_id": "any-base@1.1.0",
"_inBundle": false,
"_integrity": "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==",
"_location": "/any-base",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "any-base@^1.1.0",
"name": "any-base",
"escapedName": "any-base",
"rawSpec": "^1.1.0",
"saveSpec": null,
"fetchSpec": "^1.1.0"
},
"_requiredBy": [
"/@jimp/core"
],
"_resolved": "https://registry.npmjs.org/any-base/-/any-base-1.1.0.tgz",
"_shasum": "ae101a62bc08a597b4c9ab5b7089d456630549fe",
"_spec": "any-base@^1.1.0",
"_where": "/Users/stefanfejes/Projects/30-seconds-of-python-code/node_modules/@jimp/core",
"author": {
"name": "Kamil Harasimowicz",
"email": "mifczu@gmail.com"
},
"bugs": {
"url": "https://github.com/HarasimowiczKamil/any-base/issues"
},
"bundleDependencies": false,
"dependencies": {},
"deprecated": false,
"description": "Converter from any base to other any base",
"devDependencies": {
"browserify": "^13.1.1",
"punycode": "^2.1.0",
"uglify-js": "^2.7.4",
"watchify": "^3.7.0"
},
"homepage": "https://github.com/HarasimowiczKamil/any-base#readme",
"keywords": [
"number",
"convert",
"base",
"alphabet",
"short number",
"long numbers",
"dec",
"hex",
"bin",
"oct",
"any"
],
"license": "MIT",
"main": "index.js",
"name": "any-base",
"repository": {
"type": "git",
"url": "git+https://github.com/HarasimowiczKamil/any-base.git"
},
"scripts": {
"build": "browserify . -s AnyBase | ./node_modules/.bin/uglifyjs -cm > dist/any-base.min.js",
"start": "watchify . -s AnyBase -o dist/any-base.js -v -d",
"test": "node tests/test.js"
},
"version": "1.1.0"
}

80
node_modules/any-base/src/converter.js generated vendored Executable file
View File

@ -0,0 +1,80 @@
'use strict';
/**
* Converter
*
* @param {string|Array} srcAlphabet
* @param {string|Array} dstAlphabet
* @constructor
*/
function Converter(srcAlphabet, dstAlphabet) {
if (!srcAlphabet || !dstAlphabet || !srcAlphabet.length || !dstAlphabet.length) {
throw new Error('Bad alphabet');
}
this.srcAlphabet = srcAlphabet;
this.dstAlphabet = dstAlphabet;
}
/**
* Convert number from source alphabet to destination alphabet
*
* @param {string|Array} number - number represented as a string or array of points
*
* @returns {string|Array}
*/
Converter.prototype.convert = function(number) {
var i, divide, newlen,
numberMap = {},
fromBase = this.srcAlphabet.length,
toBase = this.dstAlphabet.length,
length = number.length,
result = typeof number === 'string' ? '' : [];
if (!this.isValid(number)) {
throw new Error('Number "' + number + '" contains of non-alphabetic digits (' + this.srcAlphabet + ')');
}
if (this.srcAlphabet === this.dstAlphabet) {
return number;
}
for (i = 0; i < length; i++) {
numberMap[i] = this.srcAlphabet.indexOf(number[i]);
}
do {
divide = 0;
newlen = 0;
for (i = 0; i < length; i++) {
divide = divide * fromBase + numberMap[i];
if (divide >= toBase) {
numberMap[newlen++] = parseInt(divide / toBase, 10);
divide = divide % toBase;
} else if (newlen > 0) {
numberMap[newlen++] = 0;
}
}
length = newlen;
result = this.dstAlphabet.slice(divide, divide + 1).concat(result);
} while (newlen !== 0);
return result;
};
/**
* Valid number with source alphabet
*
* @param {number} number
*
* @returns {boolean}
*/
Converter.prototype.isValid = function(number) {
var i = 0;
for (; i < number.length; ++i) {
if (this.srcAlphabet.indexOf(number[i]) === -1) {
return false;
}
}
return true;
};
module.exports = Converter;