@sutton-signwriting/core
Version:
a javascript package for node and browsers that supports general processing of the Sutton SignWriting script
33 lines (25 loc) • 4.94 kB
JavaScript
import { regex } from './swuquery-regex';
it('should return regex for general query string', () => {
expect(regex('Q')).toEqual(['(?:\uD836\uDC00(?:(?:\uD8C0\uDC00|(?:(?:\uD8C0[\uDC01-\uDFFF])|(?:[\uD8C1-\uD8FC][\uDC00-\uDFFF])|(?:\uD8FD[\uDC00-\uDC80]))))+)?\uD836[\uDC01-\uDC04](?:\uD836[\uDC0C-\uDDFF]){2}(?:(?:(?:\uD8C0[\uDC01-\uDFFF])|(?:[\uD8C1-\uD8FC][\uDC00-\uDFFF])|(?:\uD8FD[\uDC00-\uDC80]))(?:\uD836[\uDC0C-\uDDFF]){2})*']);
})
it('should return regex for signbox query string', () => {
expect(regex('Q')).toEqual(['(?:\uD836\uDC00(?:\uD8C0\uDC00|(?:(?:\uD8C0[\uDC01-\uDFFF])|(?:[\uD8C1-\uD8FC][\uDC00-\uDFFF])|(?:\uD8FD[\uDC00-\uDC80])))+)?\uD836[\uDC01-\uDC04](?:\uD836[\uDC0C-\uDDFF]){2}(?:(?:(?:\uD8C0[\uDC01-\uDFFF])|(?:[\uD8C1-\uD8FC][\uDC00-\uDFFF])|(?:\uD8FD[\uDC00-\uDC80]))(?:\uD836[\uDC0C-\uDDFF]){2})*\uD8C0\uDC12(?:\uD836[\uDC0C-\uDDFF]){2}(?:(?:(?:\uD8C0[\uDC01-\uDFFF])|(?:[\uD8C1-\uD8FC][\uDC00-\uDFFF])|(?:\uD8FD[\uDC00-\uDC80]))(?:\uD836[\uDC0C-\uDDFF]){2})*']);
expect(regex('Qr')).toEqual(['(?:\uD836\uDC00(?:\uD8C0\uDC00|(?:(?:\uD8C0[\uDC01-\uDFFF])|(?:[\uD8C1-\uD8FC][\uDC00-\uDFFF])|(?:\uD8FD[\uDC00-\uDC80])))+)?\uD836[\uDC01-\uDC04](?:\uD836[\uDC0C-\uDDFF]){2}(?:(?:(?:\uD8C0[\uDC01-\uDFFF])|(?:[\uD8C1-\uD8FC][\uDC00-\uDFFF])|(?:\uD8FD[\uDC00-\uDC80]))(?:\uD836[\uDC0C-\uDDFF]){2})*\uD8C0[\uDC11-\uDC20](?:\uD836[\uDC0C-\uDDFF]){2}(?:(?:(?:\uD8C0[\uDC01-\uDFFF])|(?:[\uD8C1-\uD8FC][\uDC00-\uDFFF])|(?:\uD8FD[\uDC00-\uDC80]))(?:\uD836[\uDC0C-\uDDFF]){2})*']);
expect(regex('QR')).toEqual(['(?:\uD836\uDC00(?:\uD8C0\uDC00|(?:(?:\uD8C0[\uDC01-\uDFFF])|(?:[\uD8C1-\uD8FC][\uDC00-\uDFFF])|(?:\uD8FD[\uDC00-\uDC80])))+)?\uD836[\uDC01-\uDC04](?:\uD836[\uDC0C-\uDDFF]){2}(?:(?:(?:\uD8C0[\uDC01-\uDFFF])|(?:[\uD8C1-\uD8FC][\uDC00-\uDFFF])|(?:\uD8FD[\uDC00-\uDC80]))(?:\uD836[\uDC0C-\uDDFF]){2})*((\uD8ED[\uDD21-\uDFFF])|(\uD8EE[\uDC00-\uDFE0]))(?:\uD836[\uDC0C-\uDDFF]){2}(?:(?:(?:\uD8C0[\uDC01-\uDFFF])|(?:[\uD8C1-\uD8FC][\uDC00-\uDFFF])|(?:\uD8FD[\uDC00-\uDC80]))(?:\uD836[\uDC0C-\uDDFF]){2})*']);
})
it('should return regex for prefix query string', () => {
expect(regex('QAT')).toEqual(['(?:𝠀(?:|(?:(?:\ud8c0[\udc01-\udfff])|(?:[\ud8c1-\ud8fc][\udc00-\udfff])|(?:\ud8fd[\udc00-\udc80])))*)\ud836[\udc01-\udc04](?:\ud836[\udc0c-\uddff]){2}(?:(?:(?:\ud8c0[\udc01-\udfff])|(?:[\ud8c1-\ud8fc][\udc00-\udfff])|(?:\ud8fd[\udc00-\udc80]))(?:\ud836[\udc0c-\uddff]){2})*']);
expect(regex('QArT')).toEqual(['(?:𝠀\uD8C0[\uDC11-\uDC20](?:|(?:(?:\uD8C0[\uDC01-\uDFFF])|(?:[\uD8C1-\uD8FC][\uDC00-\uDFFF])|(?:\uD8FD[\uDC00-\uDC80])))*)\uD836[\uDC01-\uDC04](?:\uD836[\uDC0C-\uDDFF]){2}(?:(?:(?:\uD8C0[\uDC01-\uDFFF])|(?:[\uD8C1-\uD8FC][\uDC00-\uDFFF])|(?:\uD8FD[\uDC00-\uDC80]))(?:\uD836[\uDC0C-\uDDFF]){2})*']);
})
it('should return multiple regex for prefix and multiple signbox', () => {
expect(regex('QArT𝤅𝣯𝤅𝣽')).toEqual([
'(?:𝠀\ud8c0[\udc11-\udc20](?:|(?:(?:\ud8c0[\udc01-\udfff])|(?:[\ud8c1-\ud8fc][\udc00-\udfff])|(?:\ud8fd[\udc00-\udc80])))*)\ud836[\udc01-\udc04](?:\ud836[\udc0c-\uddff]){2}(?:(?:(?:\ud8c0[\udc01-\udfff])|(?:[\ud8c1-\ud8fc][\udc00-\udfff])|(?:\ud8fd[\udc00-\udc80]))(?:\ud836[\udc0c-\uddff]){2})*\ud836[\udcf1-\udd19]\ud836[\udcdb-\udd03](?:(?:(?:\ud8c0[\udc01-\udfff])|(?:[\ud8c1-\ud8fc][\udc00-\udfff])|(?:\ud8fd[\udc00-\udc80]))(?:\ud836[\udc0c-\uddff]){2})*',
'(?:𝠀\ud8c0[\udc11-\udc20](?:|(?:(?:\ud8c0[\udc01-\udfff])|(?:[\ud8c1-\ud8fc][\udc00-\udfff])|(?:\ud8fd[\udc00-\udc80])))*)\ud836[\udc01-\udc04](?:\ud836[\udc0c-\uddff]){2}(?:(?:(?:\ud8c0[\udc01-\udfff])|(?:[\ud8c1-\ud8fc][\udc00-\udfff])|(?:\ud8fd[\udc00-\udc80]))(?:\ud836[\udc0c-\uddff]){2})*\ud836[\udcf1-\udd19]\ud836[\udce9-\udd11](?:(?:(?:\ud8c0[\udc01-\udfff])|(?:[\ud8c1-\ud8fc][\udc00-\udfff])|(?:\ud8fd[\udc00-\udc80]))(?:\ud836[\udc0c-\uddff]){2})*'
]);
})
it('should return regex for prefix query string with OR searching', () => {
expect(regex('QAoT')).toEqual(['(?:𝠀(?:|)(?:|(?:(?:\ud8c0[\udc01-\udfff])|(?:[\ud8c1-\ud8fc][\udc00-\udfff])|(?:\ud8fd[\udc00-\udc80])))*)\ud836[\udc01-\udc04](?:\ud836[\udc0c-\uddff]){2}(?:(?:(?:\ud8c0[\udc01-\udfff])|(?:[\ud8c1-\ud8fc][\udc00-\udfff])|(?:\ud8fd[\udc00-\udc80]))(?:\ud836[\udc0c-\uddff]){2})*']);
})
it('should return regex for signbox query string with OR searching', () => {
expect(regex('Qo𝣵𝤐')).toEqual(['(?:𝠀(?:|(?:(?:\ud8c0[\udc01-\udfff])|(?:[\ud8c1-\ud8fc][\udc00-\udfff])|(?:\ud8fd[\udc00-\udc80])))+)?\ud836[\udc01-\udc04](?:\ud836[\udc0c-\uddff]){2}(?:(?:(?:\ud8c0[\udc01-\udfff])|(?:[\ud8c1-\ud8fc][\udc00-\udfff])|(?:\ud8fd[\udc00-\udc80]))(?:\ud836[\udc0c-\uddff]){2})*(?:|)\ud836[\udce1-\udd09]\ud836[\udcfc-\udd24](?:(?:(?:\ud8c0[\udc01-\udfff])|(?:[\ud8c1-\ud8fc][\udc00-\udfff])|(?:\ud8fd[\udc00-\udc80]))(?:\ud836[\udc0c-\uddff]){2})*']);
})