white-space-x
Version:
List of ECMAScript white space characters.
336 lines (329 loc) • 6.13 kB
JavaScript
/**
* A record of a white space character.
*
* @typedef {object} CharRecord
* @property {number} code - The character code.
* @property {string} description - A description of the character.
* @property {boolean} es5 - Whether the spec lists this as a white space.
* @property {boolean} es2015 - Whether the spec lists this as a white space.
* @property {boolean} es2016 - Whether the spec lists this as a white space.
* @property {boolean} es2017 - Whether the spec lists this as a white space.
* @property {boolean} es2018 - Whether the spec lists this as a white space.
* @property {string} string - The character string.
*/
/**
* An array of the whitespace char codes, string, descriptions and language
* presence in the specifications.
*
* @type Array.<CharRecord>
*/
export const list = [
{
code: 0x0009,
description: 'Tab',
es5: true,
es2015: true,
es2016: true,
es2017: true,
es2018: true,
string: '\u0009',
},
{
code: 0x000a,
description: 'Line Feed',
es5: true,
es2015: true,
es2016: true,
es2017: true,
es2018: true,
string: '\u000a',
},
{
code: 0x000b,
description: 'Vertical Tab',
es5: true,
es2015: true,
es2016: true,
es2017: true,
es2018: true,
string: '\u000b',
},
{
code: 0x000c,
description: 'Form Feed',
es5: true,
es2015: true,
es2016: true,
es2017: true,
es2018: true,
string: '\u000c',
},
{
code: 0x000d,
description: 'Carriage Return',
es5: true,
es2015: true,
es2016: true,
es2017: true,
es2018: true,
string: '\u000d',
},
{
code: 0x0020,
description: 'Space',
es5: true,
es2015: true,
es2016: true,
es2017: true,
es2018: true,
string: '\u0020',
},
/*
{
code: 0x0085,
description: 'Next line',
es5: false,
es2015: false,
es2016: false,
es2017: false,
es2018: false,
string: '\u0085'
}
*/
{
code: 0x00a0,
description: 'No-break space',
es5: true,
es2015: true,
es2016: true,
es2017: true,
es2018: true,
string: '\u00a0',
},
{
code: 0x1680,
description: 'Ogham space mark',
es5: true,
es2015: true,
es2016: true,
es2017: true,
es2018: true,
string: '\u1680',
},
{
code: 0x180e,
description: 'Mongolian vowel separator',
es5: true,
es2015: true,
es2016: true,
es2017: false,
es2018: false,
string: '\u180e',
},
{
code: 0x2000,
description: 'En quad',
es5: true,
es2015: true,
es2016: true,
es2017: true,
es2018: true,
string: '\u2000',
},
{
code: 0x2001,
description: 'Em quad',
es5: true,
es2015: true,
es2016: true,
es2017: true,
es2018: true,
string: '\u2001',
},
{
code: 0x2002,
description: 'En space',
es5: true,
es2015: true,
es2016: true,
es2017: true,
es2018: true,
string: '\u2002',
},
{
code: 0x2003,
description: 'Em space',
es5: true,
es2015: true,
es2016: true,
es2017: true,
es2018: true,
string: '\u2003',
},
{
code: 0x2004,
description: 'Three-per-em space',
es5: true,
es2015: true,
es2016: true,
es2017: true,
es2018: true,
string: '\u2004',
},
{
code: 0x2005,
description: 'Four-per-em space',
es5: true,
es2015: true,
es2016: true,
es2017: true,
es2018: true,
string: '\u2005',
},
{
code: 0x2006,
description: 'Six-per-em space',
es5: true,
es2015: true,
es2016: true,
es2017: true,
es2018: true,
string: '\u2006',
},
{
code: 0x2007,
description: 'Figure space',
es5: true,
es2015: true,
es2016: true,
es2017: true,
es2018: true,
string: '\u2007',
},
{
code: 0x2008,
description: 'Punctuation space',
es5: true,
es2015: true,
es2016: true,
es2017: true,
es2018: true,
string: '\u2008',
},
{
code: 0x2009,
description: 'Thin space',
es5: true,
es2015: true,
es2016: true,
es2017: true,
es2018: true,
string: '\u2009',
},
{
code: 0x200a,
description: 'Hair space',
es5: true,
es2015: true,
es2016: true,
es2017: true,
es2018: true,
string: '\u200a',
},
/*
{
code: 0x200b,
description: 'Zero width space',
es5: false,
es2015: false,
es2016: false,
es2017: false,
es2018: false,
string: '\u200b'
},
*/
{
code: 0x2028,
description: 'Line separator',
es5: true,
es2015: true,
es2016: true,
es2017: true,
es2018: true,
string: '\u2028',
},
{
code: 0x2029,
description: 'Paragraph separator',
es5: true,
es2015: true,
es2016: true,
es2017: true,
es2018: true,
string: '\u2029',
},
{
code: 0x202f,
description: 'Narrow no-break space',
es5: true,
es2015: true,
es2016: true,
es2017: true,
es2018: true,
string: '\u202f',
},
{
code: 0x205f,
description: 'Medium mathematical space',
es5: true,
es2015: true,
es2016: true,
es2017: true,
es2018: true,
string: '\u205f',
},
{
code: 0x3000,
description: 'Ideographic space',
es5: true,
es2015: true,
es2016: true,
es2017: true,
es2018: true,
string: '\u3000',
},
{
code: 0xfeff,
description: 'Byte Order Mark',
es5: true,
es2015: true,
es2016: true,
es2017: true,
es2018: true,
string: '\ufeff',
},
];
/**
* A string of the ES5 to ES2016 whitespace characters.
*
* @type string
*/
let stringES2016 = '';
/**
* A string of the ES2017 to ES2018 whitespace characters.
*
* @type string
*/
let stringES2018 = '';
const {length} = list;
for (let i = 0; i < length; i += 1) {
if (list[i].es2016) {
stringES2016 += list[i].string;
}
if (list[i].es2018) {
stringES2018 += list[i].string;
}
}
const string2018 = stringES2018;
export default string2018;
export const string2016 = stringES2016;