UNPKG

889 BJavaScriptView Raw
1const path = require('path');
2const esql = require('sql-extra');
3const columns = require('@ifct2017/columns');
4
5var corpus = null;
6
7
8
9
10function load() {
11 if (corpus) return corpus;
12 corpus = require('./corpus');
13 columns.load();
14 return corpus;
15}
16
17
18function csv() {
19 return path.join(__dirname, 'index.csv');
20}
21
22
23function sql(tab='hierarchy', opt={}) {
24 var vals = new Set(load().values());
25 vals.delete(null);
26 return esql.setupTable(tab, {code: 'TEXT', parents: 'TEXT', ancestry: 'TEXT', children: 'TEXT'}, vals,
27 Object.assign({pk: 'code', index: true, tsvector: {code: 'A', parents: 'B', ancestry: 'C', children: 'B'}}, opt));
28}
29
30
31function hierarchy(txt) {
32 if (!corpus) load();
33 var cs = columns(txt);
34 if (!cs.length) return null;
35 return corpus.get(cs[0].code) || null;
36}
37hierarchy.load = load;
38hierarchy.csv = csv;
39hierarchy.sql = sql;
40module.exports = hierarchy;