@sutton-signwriting/core
Version:
a javascript package for node and browsers that supports general processing of the Sutton SignWriting script
37 lines (33 loc) • 1.53 kB
JavaScript
/**
* Object of regular expressions for FSW query strings
*
* @alias fswquery.re
* @type {object}
* @property {string} null - the null symbol
* @property {string} base - FSW symbol base with neither fill or rotation
* @property {string} coord - FSW coordinate of X and Y values separated by 'x'
* @property {string} var - variance string for searching sign box
* @property {string} symbol - FSW symbol key starting with 'S'
* @property {string} nullorsymbol - null or a symbol
* @property {string} range - FSW range starting with 'R'
* @property {string} item - FSW symbol or range query string
* @property {string} list - several FSW symbols and FSW ranges as a logical OR for searching
* @property {string} prefix - a sequential list of FSW symbol keys with nulls starting with 'A'
* @property {string} signbox - several groups of FSW lists, each group having a coordinate
* @property {string} full - a query string to search prefix in order and the signbox with variance
*/
let re = {
'null': 'S00000',
'base': '[123][0-9a-f]{2}',
'coord': '(?:[0-9]{3}x[0-9]{3})?',
'var': 'V[0-9]+'
}
re.symbol = `S${re.base}[0-5u][0-9a-fu]`;
re.nullorsymbol = `(?:${re.null}|${re.symbol})`;
re.range = `R${re.base}t${re.base}`;
re.item = `(?:${re.null}|${re.symbol}|${re.range})`;
re.list = `${re.item}(?:o${re.item})*`;
re.prefix = `(?:A(?:${re.list})+)?T`;
re.signbox = `(?:${re.list}${re.coord})*`;
re.full = `Q(${re.prefix})?(${re.signbox})?(${re.var})?(-?)`
export { re }