2018-03-26 23:14:23 +01:00
/**
* @author n1474335 [n1474335@gmail.com]
* @copyright Crown Copyright 2016
* @license Apache-2.0
*/
2019-07-09 12:23:59 +01:00
import Operation from "../Operation.mjs" ;
import { toBase64 , ALPHABET_OPTIONS } from "../lib/Base64.mjs" ;
2018-03-26 23:14:23 +01:00
/**
* To Base64 operation
*/
class ToBase64 extends Operation {
/**
* ToBase64 constructor
*/
constructor () {
super ();
2018-04-02 17:10:51 +01:00
this . name = "To Base64" ;
this . module = "Default" ;
2019-01-14 22:24:32 +00:00
this . description = "Base64 is a notation for encoding arbitrary byte data using a restricted set of symbols that can be conveniently used by humans and processed by computers.<br><br>This operation encodes raw data into an ASCII Base64 string.<br><br>e.g. <code>hello</code> becomes <code>aGVsbG8=</code>" ;
2018-08-21 19:07:13 +01:00
this . infoURL = "https://wikipedia.org/wiki/Base64" ;
2018-04-02 17:10:51 +01:00
this . inputType = "ArrayBuffer" ;
this . outputType = "string" ;
this . args = [
2018-03-26 23:14:23 +01:00
{
name : "Alphabet" ,
type : "editableOption" ,
value : ALPHABET_OPTIONS
}
];
}
/**
* @param {ArrayBuffer} input
* @param {Object[]} args
* @returns {string}
*/
run ( input , args ) {
2018-04-02 17:10:51 +01:00
const alphabet = args [ 0 ];
2019-09-04 13:54:59 +01:00
return toBase64 ( input , alphabet );
2018-03-26 23:14:23 +01:00
}
/**
* Highlight to Base64
*
* @param {Object[]} pos
* @param {number} pos[].start
* @param {number} pos[].end
* @param {Object[]} args
* @returns {Object[]} pos
*/
highlight ( pos , args ) {
pos [ 0 ]. start = Math . floor ( pos [ 0 ]. start / 3 * 4 );
pos [ 0 ]. end = Math . ceil ( pos [ 0 ]. end / 3 * 4 );
return pos ;
}
/**
* Highlight from Base64
*
* @param {Object[]} pos
* @param {number} pos[].start
* @param {number} pos[].end
* @param {Object[]} args
* @returns {Object[]} pos
*/
highlightReverse ( pos , args ) {
pos [ 0 ]. start = Math . ceil ( pos [ 0 ]. start / 4 * 3 );
pos [ 0 ]. end = Math . floor ( pos [ 0 ]. end / 4 * 3 );
return pos ;
}
}
export default ToBase64 ;