UNPKG

1.72 kBJavaScriptView Raw
1import { parse } from '../swu/swu-parse';
2import { coord2swu } from '../convert';
3
4/**
5 * Function to convert an SWU sign to a query string
6 *
7 * For the flags parameter, use one or more of the following.
8 * - A: exact symbol in temporal prefix
9 * - a: general symbol in temporal prefix
10 * - S: exact symbol in spatial signbox
11 * - s: general symbol in spatial signbox
12 * - L: spatial signbox symbol at location
13 * @function swuquery.swu2query
14 * @param {string} swuSign - SWU sign
15 * @param {string} flags - flags for query string creation
16 * @returns {string} SWU query string
17 * @example
18 * swuquery.swu2query('𝠀񀀒񀀚񋚥񋛩𝠃𝤟𝤩񋛩𝣵𝤐񀀒𝤇𝣤񋚥𝤐𝤆񀀚𝣮𝣭', 'ASL')
19 *
20 * return 'QA񀀒񀀚񋚥񋛩T񋛩𝣵𝤐񀀒𝤇𝣤񋚥𝤐𝤆񀀚𝣮𝣭'
21 */
22const swu2query = (swuSign, flags) => {
23 let query = '';
24 const parsed = parse.sign(swuSign);
25
26 if (parsed.box) {
27 const A_flag = flags.indexOf('A') > -1;
28 const a_flag = flags.indexOf('a') > -1;
29 const S_flag = flags.indexOf('S') > -1;
30 const s_flag = flags.indexOf('s') > -1;
31 const L_flag = flags.indexOf('L') > -1;
32
33 if (A_flag || a_flag || S_flag || s_flag) {
34 if ((A_flag || a_flag) && parsed.sequence) {
35 query += 'A';
36 query += parsed.sequence.map(sym => sym + (a_flag ? 'fr' : '')).join('');
37 query += 'T';
38 }
39
40 if ((S_flag || s_flag) && parsed.spatials) {
41 query += parsed.spatials.map(spatial => spatial.symbol + (s_flag ? 'fr' : '') + (L_flag ? coord2swu(spatial.coord) : '')).join('');
42 }
43 }
44 return query ? "Q" + query : undefined;
45 } else {
46 return undefined;
47 }
48}
49
50export { swu2query }
\No newline at end of file