ifct2017 2.0.14 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/LICENSE +661 -21
  2. package/README.md +1019 -71
  3. package/abbreviations/index.csv +78 -0
  4. package/abbreviations/index.d.ts +39 -0
  5. package/abbreviations/index.js +103 -0
  6. package/abbreviations/index.txt +12 -0
  7. package/about/build.ts +31 -0
  8. package/about/index.d.ts +47 -0
  9. package/about/index.js +110 -0
  10. package/about/index.txt +174 -0
  11. package/build.ts +115 -0
  12. package/carbohydrates/index.csv +8 -0
  13. package/carbohydrates/index.d.ts +42 -0
  14. package/carbohydrates/index.js +112 -0
  15. package/carbohydrates/index.txt +14 -0
  16. package/codes/index.csv +2904 -0
  17. package/codes/index.d.ts +36 -0
  18. package/codes/index.js +102 -0
  19. package/codes/index.txt +12 -0
  20. package/columndescriptions/build.ts +22 -0
  21. package/columndescriptions/index.csv +215 -0
  22. package/columndescriptions/index.d.ts +44 -0
  23. package/columndescriptions/index.js +119 -0
  24. package/columns/build.ts +23 -0
  25. package/columns/index.csv +215 -0
  26. package/columns/index.d.ts +39 -0
  27. package/columns/index.js +111 -0
  28. package/columns/index.txt +71 -0
  29. package/compositingcentres/index.csv +7 -0
  30. package/compositingcentres/index.d.ts +35 -0
  31. package/compositingcentres/index.js +103 -0
  32. package/compositingcentres/index.txt +13 -0
  33. package/compositions/build.ts +212 -0
  34. package/compositions/index.csv +543 -0
  35. package/compositions/index.d.ts +254 -0
  36. package/compositions/index.js +204 -0
  37. package/compositionstats/build.ts +103 -0
  38. package/compositionstats/index.csv +4 -0
  39. package/compositionstats/index.d.ts +31 -0
  40. package/compositionstats/index.js +97 -0
  41. package/contents/index.csv +21 -0
  42. package/contents/index.d.ts +39 -0
  43. package/contents/index.js +102 -0
  44. package/contents/index.txt +13 -0
  45. package/deno.lock +67 -0
  46. package/descriptions/index.csv +543 -0
  47. package/descriptions/index.d.ts +45 -0
  48. package/descriptions/index.js +124 -0
  49. package/descriptions/index.txt +15 -0
  50. package/energies/index.csv +6 -0
  51. package/energies/index.d.ts +34 -0
  52. package/energies/index.js +101 -0
  53. package/energies/index.txt +13 -0
  54. package/frequencydistribution/index.csv +10 -0
  55. package/frequencydistribution/index.d.ts +36 -0
  56. package/frequencydistribution/index.js +90 -0
  57. package/frequencydistribution/index.txt +14 -0
  58. package/groups/index.csv +21 -0
  59. package/groups/index.d.ts +46 -0
  60. package/groups/index.js +118 -0
  61. package/groups/index.txt +14 -0
  62. package/hierarchy/asset.csv +215 -0
  63. package/hierarchy/asset.txt +70 -0
  64. package/hierarchy/build.ts +73 -0
  65. package/hierarchy/index.csv +215 -0
  66. package/hierarchy/index.d.ts +39 -0
  67. package/hierarchy/index.js +100 -0
  68. package/hierarchy/index.txt +14 -0
  69. package/index.d.ts +24 -28
  70. package/index.js +28 -39
  71. package/index.test.ts +717 -0
  72. package/intakes/build.ts +28 -0
  73. package/intakes/index.csv +42 -0
  74. package/intakes/index.d.ts +66 -0
  75. package/intakes/index.js +113 -0
  76. package/intakes/index.txt +20 -0
  77. package/jonesfactors/index.csv +15 -0
  78. package/jonesfactors/index.d.ts +35 -0
  79. package/jonesfactors/index.js +105 -0
  80. package/jonesfactors/index.txt +12 -0
  81. package/languages/index.csv +22 -0
  82. package/languages/index.d.ts +39 -0
  83. package/languages/index.js +103 -0
  84. package/languages/index.txt +12 -0
  85. package/methods/build.ts +101 -0
  86. package/methods/index.csv +37 -0
  87. package/methods/index.d.ts +39 -0
  88. package/methods/index.js +196 -0
  89. package/methods/index.txt +13 -0
  90. package/package.json +15 -63
  91. package/regions/index.csv +7 -0
  92. package/regions/index.d.ts +36 -0
  93. package/regions/index.js +100 -0
  94. package/regions/index.txt +12 -0
  95. package/representations/build.ts +133 -0
  96. package/representations/index.csv +215 -0
  97. package/representations/index.d.ts +36 -0
  98. package/representations/index.js +91 -0
  99. package/retentionfactors/groups.csv +21 -0
  100. package/retentionfactors/index.csv +215 -0
  101. package/samplingunits/index.csv +36 -0
  102. package/samplingunits/index.d.ts +39 -0
  103. package/samplingunits/index.js +110 -0
  104. package/samplingunits/index.txt +14 -0
  105. package/yieldfactors/index.csv +543 -0
  106. package/yieldfactors/index.d.ts +57 -0
  107. package/yieldfactors/index.js +158 -0
  108. package/yieldfactors/index.txt +294 -0
  109. package/corpus.js +0 -6
  110. package/corpus.min.js +0 -1
  111. package/pictures.d.ts +0 -41
@@ -0,0 +1,119 @@
1
+ // Copyright (C) 2025-26 Subhajit Sahu
2
+ // SPDX-License-Identifier: AGPL-3.0-or-later
3
+ // See LICENSE for full terms
4
+ import * as csv from "@std/csv";
5
+ import lunr from "lunr"; // @deno-types="npm:@types/lunr@2.3.7"
6
+ import { setupTable } from "@nodef/extra-sql";
7
+ //#endregion
8
+ //#region GLOBALS
9
+ let corpus = null;
10
+ let index = null;
11
+ //#endregion
12
+ //#region FUNCTIONS
13
+ /**
14
+ * Load the column descriptions corpus from CSV file.
15
+ * @param file CSV file path
16
+ * @returns column descriptions corpus
17
+ */ async function loadFromCsv(file) {
18
+ const map = new Map();
19
+ const data = await (await fetch(file)).text();
20
+ const records = csv.parse(data, {
21
+ skipFirstRow: true,
22
+ comment: "#"
23
+ });
24
+ for (const r of records)map.set(r.code, r);
25
+ return map;
26
+ }
27
+ /**
28
+ * Setup the lunr index for the column descriptions corpus.
29
+ * @returns lunr index
30
+ */ function setupIndex(corpus) {
31
+ return lunr(function() {
32
+ this.ref('code');
33
+ this.field('code', {
34
+ boost: 3
35
+ });
36
+ this.field('name', {
37
+ boost: 2
38
+ });
39
+ this.field('shortdesc');
40
+ this.field('longdesc');
41
+ this.pipeline.remove(lunr.stopWordFilter);
42
+ for (const { code, name, shortdesc, longdesc } of corpus.values())this.add({
43
+ code,
44
+ name: name.replace(/\W/g, ' '),
45
+ shortdesc,
46
+ longdesc
47
+ });
48
+ });
49
+ }
50
+ /**
51
+ * Load the column descriptions corpus from the file.
52
+ * @returns column descriptions corpus
53
+ */ export async function loadColumnDescriptions() {
54
+ if (corpus) return corpus;
55
+ corpus = await loadFromCsv(columnDescriptionsCsv());
56
+ index = setupIndex(corpus);
57
+ return corpus;
58
+ }
59
+ /**
60
+ * Get the path to the column descriptions CSV file.
61
+ * @returns CSV file URL
62
+ */ export function columnDescriptionsCsv() {
63
+ return import.meta.resolve('./index.csv');
64
+ }
65
+ /**
66
+ * Obtain SQL command to create and populate the columns table.
67
+ * @param tab table name
68
+ * @param opt options for the table
69
+ * @returns CREATE TABLE, INSERT, CREATE VIEW, CREATE INDEX statements
70
+ */ export async function columnDescriptionsSql(tab = "columns", opt = {}) {
71
+ return setupTable(tab, {
72
+ code: "TEXT",
73
+ name: "TEXT",
74
+ shortdesc: "TEXT",
75
+ longdesc: "TEXT"
76
+ }, (await loadColumnDescriptions()).values(), Object.assign({
77
+ pk: "code",
78
+ index: true,
79
+ tsvector: {
80
+ code: "A",
81
+ name: "B",
82
+ shortdesc: "C",
83
+ longdesc: "D"
84
+ }
85
+ }, opt));
86
+ }
87
+ /**
88
+ * Find matching columns of an code/name/shortdesc/longdesc query.
89
+ * @param txt code/name/shortdesc/longdesc query
90
+ * @returns matches `[{code, name, shortdesc, longdesc}]`
91
+ * @example
92
+ * ```javascript
93
+ * ifct2017.columnDescriptions('vitamin c');
94
+ * ifct2017.columnDescriptions('c-vitamin');
95
+ * // → [ { code: 'vitc',
96
+ * // → name: 'Ascorbic acids (C)',
97
+ * // → shortdesc: 'Collagen production, antioxidant. Deficiency: scurvy (bleeding gums).',
98
+ * // → longdesc: 'An essential vitamin and antioxidant that protects cells, maintains healthy skin, blood vessels, bones, and cartilage, and aids in wound healing. It also improves iron absorption. Lack of Vitamin C can lead to scurvy.' },
99
+ * // → ... ]
100
+ *
101
+ * ifct2017.columnDescriptions('what is butyric acid?');
102
+ * ifct2017.columnDescriptions('c4:0 stands for?');
103
+ * // → [ { code: 'f4d0',
104
+ * // → name: 'Butyric acid (C4:0)',
105
+ * // → shortdesc: 'Short-chain fatty acid; colon health/energy for gut cells.',
106
+ * // → longdesc: 'A short-chain saturated fatty acid with a 4-carbon backbone. It's produced in the colon when dietary fibers are fermented by gut bacteria. Butyrate serves as a primary energy source for colonocytes (cells lining the colon) and has anti-inflammatory properties, playing a role in gut health.' },
107
+ * // → ... ]
108
+ * ```
109
+ */ export function columnDescriptions(txt) {
110
+ if (index == null) return [];
111
+ const a = [];
112
+ txt = txt.replace(/\W/g, ' ');
113
+ const mats = index.search(txt);
114
+ let max = 0;
115
+ for (const mat of mats)max = Math.max(max, Object.keys(mat.matchData.metadata).length);
116
+ for (const mat of mats)if (Object.keys(mat.matchData.metadata).length === max) a.push(corpus?.get(mat.ref) || {});
117
+ return a;
118
+ } //#endregion
119
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZpbGU6Ly8vaG9tZS9ydW5uZXIvd29yay9pZmN0MjAxNy9pZmN0MjAxNy9jb2x1bW5kZXNjcmlwdGlvbnMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChDKSAyMDI1LTI2IFN1Ymhhaml0IFNhaHVcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBR1BMLTMuMC1vci1sYXRlclxuLy8gU2VlIExJQ0VOU0UgZm9yIGZ1bGwgdGVybXNcbmltcG9ydCAqIGFzIGNzdiAgZnJvbSBcIkBzdGQvY3N2XCI7XG5pbXBvcnQgbHVuciBmcm9tIFwibHVuclwiOyAgLy8gQGRlbm8tdHlwZXM9XCJucG06QHR5cGVzL2x1bnJAMi4zLjdcIlxuaW1wb3J0IHt0eXBlIFJvd0RhdGEsIHR5cGUgU2V0dXBUYWJsZU9wdGlvbnMsIHNldHVwVGFibGV9IGZyb20gXCJAbm9kZWYvZXh0cmEtc3FsXCI7XG5cblxuXG5cbi8vI3JlZ2lvbiBUWVBFU1xuLyoqIENvZGUsIG5hbWUsIHNob3J0LCBhbmQgbG9uZyBkZXNjcmlwdGlvbiBvZiBhIGNvbHVtbi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29sdW1uRGVzY3JpcHRpb24ge1xuICAvKiogQ29sdW1uIENvZGUuICovXG4gIGNvZGU6IHN0cmluZyxcbiAgLyoqIENvbHVtbiBOYW1lLiAqL1xuICBuYW1lOiBzdHJpbmcsXG4gIC8qKiBTaG9ydCBkZXNjcmlwdGlvbi4gKi9cbiAgc2hvcnRkZXNjOiBzdHJpbmcsXG4gIC8qKiBMb25nIGRlc2NyaXB0aW9uLiAqL1xuICBsb25nZGVzYzogc3RyaW5nLFxufVxuLy8jZW5kcmVnaW9uXG5cblxuXG5cbi8vI3JlZ2lvbiBHTE9CQUxTXG5sZXQgY29ycHVzOiBNYXA8c3RyaW5nLCBDb2x1bW5EZXNjcmlwdGlvbj4gfCBudWxsID0gbnVsbDtcbmxldCBpbmRleDogbHVuci5JbmRleCB8IG51bGwgPSBudWxsO1xuLy8jZW5kcmVnaW9uXG5cblxuXG5cbi8vI3JlZ2lvbiBGVU5DVElPTlNcbi8qKlxuICogTG9hZCB0aGUgY29sdW1uIGRlc2NyaXB0aW9ucyBjb3JwdXMgZnJvbSBDU1YgZmlsZS5cbiAqIEBwYXJhbSBmaWxlIENTViBmaWxlIHBhdGhcbiAqIEByZXR1cm5zIGNvbHVtbiBkZXNjcmlwdGlvbnMgY29ycHVzXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGxvYWRGcm9tQ3N2KGZpbGU6IHN0cmluZykge1xuICBjb25zdCBtYXAgID0gbmV3IE1hcDxzdHJpbmcsIENvbHVtbkRlc2NyaXB0aW9uPigpO1xuICBjb25zdCBkYXRhID0gYXdhaXQgKGF3YWl0IGZldGNoKGZpbGUpKS50ZXh0KCk7XG4gIGNvbnN0IHJlY29yZHMgPSBjc3YucGFyc2UoZGF0YSwge3NraXBGaXJzdFJvdzogdHJ1ZSwgY29tbWVudDogXCIjXCJ9KTtcbiAgZm9yIChjb25zdCByIG9mIHJlY29yZHMpXG4gICAgbWFwLnNldChyLmNvZGUsIHIgYXMgdW5rbm93biBhcyBDb2x1bW5EZXNjcmlwdGlvbik7XG4gIHJldHVybiBtYXA7XG59XG5cblxuLyoqXG4gKiBTZXR1cCB0aGUgbHVuciBpbmRleCBmb3IgdGhlIGNvbHVtbiBkZXNjcmlwdGlvbnMgY29ycHVzLlxuICogQHJldHVybnMgbHVuciBpbmRleFxuICovXG5mdW5jdGlvbiBzZXR1cEluZGV4KGNvcnB1czogTWFwPHN0cmluZywgQ29sdW1uRGVzY3JpcHRpb24+KSB7XG4gIHJldHVybiBsdW5yKGZ1bmN0aW9uKHRoaXM6IGx1bnIuQnVpbGRlcikge1xuICAgIHRoaXMucmVmKCdjb2RlJyk7XG4gICAgdGhpcy5maWVsZCgnY29kZScsIHtib29zdDogM30pO1xuICAgIHRoaXMuZmllbGQoJ25hbWUnLCB7Ym9vc3Q6IDJ9KTtcbiAgICB0aGlzLmZpZWxkKCdzaG9ydGRlc2MnKTtcbiAgICB0aGlzLmZpZWxkKCdsb25nZGVzYycpO1xuICAgIHRoaXMucGlwZWxpbmUucmVtb3ZlKGx1bnIuc3RvcFdvcmRGaWx0ZXIpO1xuICAgIGZvciAoY29uc3Qge2NvZGUsIG5hbWUsIHNob3J0ZGVzYywgbG9uZ2Rlc2N9IG9mIGNvcnB1cy52YWx1ZXMoKSlcbiAgICAgIHRoaXMuYWRkKHtjb2RlLCBuYW1lOiBuYW1lLnJlcGxhY2UoL1xcVy9nLCAnICcpLCBzaG9ydGRlc2MsIGxvbmdkZXNjfSk7XG4gIH0pO1xufVxuXG5cbi8qKlxuICogTG9hZCB0aGUgY29sdW1uIGRlc2NyaXB0aW9ucyBjb3JwdXMgZnJvbSB0aGUgZmlsZS5cbiAqIEByZXR1cm5zIGNvbHVtbiBkZXNjcmlwdGlvbnMgY29ycHVzXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkQ29sdW1uRGVzY3JpcHRpb25zKCk6IFByb21pc2U8TWFwPHN0cmluZywgQ29sdW1uRGVzY3JpcHRpb24+PiB7XG4gIGlmIChjb3JwdXMpIHJldHVybiBjb3JwdXM7XG4gIGNvcnB1cyA9IGF3YWl0IGxvYWRGcm9tQ3N2KGNvbHVtbkRlc2NyaXB0aW9uc0NzdigpKTtcbiAgaW5kZXggID0gc2V0dXBJbmRleChjb3JwdXMpO1xuICByZXR1cm4gY29ycHVzO1xufVxuXG5cbi8qKlxuICogR2V0IHRoZSBwYXRoIHRvIHRoZSBjb2x1bW4gZGVzY3JpcHRpb25zIENTViBmaWxlLlxuICogQHJldHVybnMgQ1NWIGZpbGUgVVJMXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb2x1bW5EZXNjcmlwdGlvbnNDc3YoKTogc3RyaW5nIHtcbiAgcmV0dXJuIGltcG9ydC5tZXRhLnJlc29sdmUoJy4vaW5kZXguY3N2Jyk7XG59XG5cblxuLyoqXG4gKiBPYnRhaW4gU1FMIGNvbW1hbmQgdG8gY3JlYXRlIGFuZCBwb3B1bGF0ZSB0aGUgY29sdW1ucyB0YWJsZS5cbiAqIEBwYXJhbSB0YWIgdGFibGUgbmFtZVxuICogQHBhcmFtIG9wdCBvcHRpb25zIGZvciB0aGUgdGFibGVcbiAqIEByZXR1cm5zIENSRUFURSBUQUJMRSwgSU5TRVJULCBDUkVBVEUgVklFVywgQ1JFQVRFIElOREVYIHN0YXRlbWVudHNcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNvbHVtbkRlc2NyaXB0aW9uc1NxbCh0YWI6IHN0cmluZz1cImNvbHVtbnNcIiwgb3B0OiBTZXR1cFRhYmxlT3B0aW9ucz17fSk6IFByb21pc2U8c3RyaW5nPiB7XG4gIHJldHVybiBzZXR1cFRhYmxlKHRhYiwge2NvZGU6IFwiVEVYVFwiLCBuYW1lOiBcIlRFWFRcIiwgc2hvcnRkZXNjOiBcIlRFWFRcIiwgbG9uZ2Rlc2M6IFwiVEVYVFwifSxcbiAgICAoYXdhaXQgbG9hZENvbHVtbkRlc2NyaXB0aW9ucygpKS52YWx1ZXMoKSBhcyBJdGVyYWJsZTxSb3dEYXRhPixcbiAgICBPYmplY3QuYXNzaWduKHtwazogXCJjb2RlXCIsIGluZGV4OiB0cnVlLCB0c3ZlY3Rvcjoge2NvZGU6IFwiQVwiLCBuYW1lOiBcIkJcIiwgc2hvcnRkZXNjOiBcIkNcIiwgbG9uZ2Rlc2M6IFwiRFwifX0sIG9wdCkpO1xufVxuXG5cbi8qKlxuICogRmluZCBtYXRjaGluZyBjb2x1bW5zIG9mIGFuIGNvZGUvbmFtZS9zaG9ydGRlc2MvbG9uZ2Rlc2MgcXVlcnkuXG4gKiBAcGFyYW0gdHh0IGNvZGUvbmFtZS9zaG9ydGRlc2MvbG9uZ2Rlc2MgcXVlcnlcbiAqIEByZXR1cm5zIG1hdGNoZXMgYFt7Y29kZSwgbmFtZSwgc2hvcnRkZXNjLCBsb25nZGVzY31dYFxuICogQGV4YW1wbGVcbiAqIGBgYGphdmFzY3JpcHRcbiAqIGlmY3QyMDE3LmNvbHVtbkRlc2NyaXB0aW9ucygndml0YW1pbiBjJyk7XG4gKiBpZmN0MjAxNy5jb2x1bW5EZXNjcmlwdGlvbnMoJ2Mtdml0YW1pbicpO1xuICogLy8g4oaSIFsgeyBjb2RlOiAndml0YycsXG4gKiAvLyDihpIgICAgIG5hbWU6ICdBc2NvcmJpYyBhY2lkcyAoQyknLFxuICogLy8g4oaSICAgICBzaG9ydGRlc2M6ICdDb2xsYWdlbiBwcm9kdWN0aW9uLCBhbnRpb3hpZGFudC4gRGVmaWNpZW5jeTogc2N1cnZ5IChibGVlZGluZyBndW1zKS4nLFxuICogLy8g4oaSICAgICBsb25nZGVzYzogJ0FuIGVzc2VudGlhbCB2aXRhbWluIGFuZCBhbnRpb3hpZGFudCB0aGF0IHByb3RlY3RzIGNlbGxzLCBtYWludGFpbnMgaGVhbHRoeSBza2luLCBibG9vZCB2ZXNzZWxzLCBib25lcywgYW5kIGNhcnRpbGFnZSwgYW5kIGFpZHMgaW4gd291bmQgaGVhbGluZy4gSXQgYWxzbyBpbXByb3ZlcyBpcm9uIGFic29ycHRpb24uIExhY2sgb2YgVml0YW1pbiBDIGNhbiBsZWFkIHRvIHNjdXJ2eS4nIH0sXG4gKiAvLyDihpIgLi4uIF1cbiAqXG4gKiBpZmN0MjAxNy5jb2x1bW5EZXNjcmlwdGlvbnMoJ3doYXQgaXMgYnV0eXJpYyBhY2lkPycpO1xuICogaWZjdDIwMTcuY29sdW1uRGVzY3JpcHRpb25zKCdjNDowIHN0YW5kcyBmb3I/Jyk7XG4gKiAvLyDihpIgWyB7IGNvZGU6ICdmNGQwJyxcbiAqIC8vIOKGkiAgICAgbmFtZTogJ0J1dHlyaWMgYWNpZCAoQzQ6MCknLFxuICogLy8g4oaSICAgICBzaG9ydGRlc2M6ICdTaG9ydC1jaGFpbiBmYXR0eSBhY2lkOyBjb2xvbiBoZWFsdGgvZW5lcmd5IGZvciBndXQgY2VsbHMuJyxcbiAqIC8vIOKGkiAgICAgbG9uZ2Rlc2M6ICdBIHNob3J0LWNoYWluIHNhdHVyYXRlZCBmYXR0eSBhY2lkIHdpdGggYSA0LWNhcmJvbiBiYWNrYm9uZS4gSXQncyBwcm9kdWNlZCBpbiB0aGUgY29sb24gd2hlbiBkaWV0YXJ5IGZpYmVycyBhcmUgZmVybWVudGVkIGJ5IGd1dCBiYWN0ZXJpYS4gQnV0eXJhdGUgc2VydmVzIGFzIGEgcHJpbWFyeSBlbmVyZ3kgc291cmNlIGZvciBjb2xvbm9jeXRlcyAoY2VsbHMgbGluaW5nIHRoZSBjb2xvbikgYW5kIGhhcyBhbnRpLWluZmxhbW1hdG9yeSBwcm9wZXJ0aWVzLCBwbGF5aW5nIGEgcm9sZSBpbiBndXQgaGVhbHRoLicgfSxcbiAqIC8vIOKGkiAuLi4gXVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb2x1bW5EZXNjcmlwdGlvbnModHh0OiBzdHJpbmcpOiBDb2x1bW5EZXNjcmlwdGlvbltdIHtcbiAgaWYgKGluZGV4ID09IG51bGwpIHJldHVybiBbXTtcbiAgY29uc3QgYTogQ29sdW1uRGVzY3JpcHRpb25bXSA9IFtdOyB0eHQgPSB0eHQucmVwbGFjZSgvXFxXL2csICcgJyk7XG4gIGNvbnN0IG1hdHMgPSBpbmRleC5zZWFyY2godHh0KTsgbGV0IG1heCA9IDA7XG4gIGZvciAoY29uc3QgbWF0IG9mIG1hdHMpXG4gICAgbWF4ID0gTWF0aC5tYXgobWF4LCBPYmplY3Qua2V5cyhtYXQubWF0Y2hEYXRhLm1ldGFkYXRhKS5sZW5ndGgpO1xuICBmb3IgKGNvbnN0IG1hdCBvZiBtYXRzKVxuICAgIGlmIChPYmplY3Qua2V5cyhtYXQubWF0Y2hEYXRhLm1ldGFkYXRhKS5sZW5ndGggPT09IG1heCkgYS5wdXNoKGNvcnB1cz8uZ2V0KG1hdC5yZWYpIHx8IHt9IGFzIENvbHVtbkRlc2NyaXB0aW9uKTtcbiAgcmV0dXJuIGE7XG59XG4vLyNlbmRyZWdpb25cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxzQ0FBc0M7QUFDdEMsNkNBQTZDO0FBQzdDLDZCQUE2QjtBQUM3QixZQUFZLFNBQVUsV0FBVztBQUNqQyxPQUFPLFVBQVUsT0FBTyxDQUFFLHNDQUFzQztBQUNoRSxTQUE4QyxVQUFVLFFBQU8sbUJBQW1CO0FBaUJsRixZQUFZO0FBS1osaUJBQWlCO0FBQ2pCLElBQUksU0FBZ0Q7QUFDcEQsSUFBSSxRQUEyQjtBQUMvQixZQUFZO0FBS1osbUJBQW1CO0FBQ25COzs7O0NBSUMsR0FDRCxlQUFlLFlBQVksSUFBWTtFQUNyQyxNQUFNLE1BQU8sSUFBSTtFQUNqQixNQUFNLE9BQU8sTUFBTSxDQUFDLE1BQU0sTUFBTSxLQUFLLEVBQUUsSUFBSTtFQUMzQyxNQUFNLFVBQVUsSUFBSSxLQUFLLENBQUMsTUFBTTtJQUFDLGNBQWM7SUFBTSxTQUFTO0VBQUc7RUFDakUsS0FBSyxNQUFNLEtBQUssUUFDZCxJQUFJLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRTtFQUNsQixPQUFPO0FBQ1Q7QUFHQTs7O0NBR0MsR0FDRCxTQUFTLFdBQVcsTUFBc0M7RUFDeEQsT0FBTyxLQUFLO0lBQ1YsSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUNULElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUTtNQUFDLE9BQU87SUFBQztJQUM1QixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVE7TUFBQyxPQUFPO0lBQUM7SUFDNUIsSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNYLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDWCxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLGNBQWM7SUFDeEMsS0FBSyxNQUFNLEVBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFDLElBQUksT0FBTyxNQUFNLEdBQzNELElBQUksQ0FBQyxHQUFHLENBQUM7TUFBQztNQUFNLE1BQU0sS0FBSyxPQUFPLENBQUMsT0FBTztNQUFNO01BQVc7SUFBUTtFQUN2RTtBQUNGO0FBR0E7OztDQUdDLEdBQ0QsT0FBTyxlQUFlO0VBQ3BCLElBQUksUUFBUSxPQUFPO0VBQ25CLFNBQVMsTUFBTSxZQUFZO0VBQzNCLFFBQVMsV0FBVztFQUNwQixPQUFPO0FBQ1Q7QUFHQTs7O0NBR0MsR0FDRCxPQUFPLFNBQVM7RUFDZCxPQUFPLFlBQVksT0FBTyxDQUFDO0FBQzdCO0FBR0E7Ozs7O0NBS0MsR0FDRCxPQUFPLGVBQWUsc0JBQXNCLE1BQVksU0FBUyxFQUFFLE1BQXVCLENBQUMsQ0FBQztFQUMxRixPQUFPLFdBQVcsS0FBSztJQUFDLE1BQU07SUFBUSxNQUFNO0lBQVEsV0FBVztJQUFRLFVBQVU7RUFBTSxHQUNyRixDQUFDLE1BQU0sd0JBQXdCLEVBQUUsTUFBTSxJQUN2QyxPQUFPLE1BQU0sQ0FBQztJQUFDLElBQUk7SUFBUSxPQUFPO0lBQU0sVUFBVTtNQUFDLE1BQU07TUFBSyxNQUFNO01BQUssV0FBVztNQUFLLFVBQVU7SUFBRztFQUFDLEdBQUc7QUFDOUc7QUFHQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQXNCQyxHQUNELE9BQU8sU0FBUyxtQkFBbUIsR0FBVztFQUM1QyxJQUFJLFNBQVMsTUFBTSxPQUFPLEVBQUU7RUFDNUIsTUFBTSxJQUF5QixFQUFFO0VBQUUsTUFBTSxJQUFJLE9BQU8sQ0FBQyxPQUFPO0VBQzVELE1BQU0sT0FBTyxNQUFNLE1BQU0sQ0FBQztFQUFNLElBQUksTUFBTTtFQUMxQyxLQUFLLE1BQU0sT0FBTyxLQUNoQixNQUFNLEtBQUssR0FBRyxDQUFDLEtBQUssT0FBTyxJQUFJLENBQUMsSUFBSSxTQUFTLENBQUMsUUFBUSxFQUFFLE1BQU07RUFDaEUsS0FBSyxNQUFNLE9BQU8sS0FDaEIsSUFBSSxPQUFPLElBQUksQ0FBQyxJQUFJLFNBQVMsQ0FBQyxRQUFRLEVBQUUsTUFBTSxLQUFLLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksR0FBRyxLQUFLLENBQUM7RUFDMUYsT0FBTztBQUNULEVBQ0EsWUFBWSJ9
@@ -0,0 +1,23 @@
1
+ import * as path from "@std/path";
2
+ import * as csv from "@std/csv";
3
+
4
+
5
+ async function writeCorpus(outfile: string) {
6
+ const infile = path.join(import.meta.dirname || "", "index.csv");
7
+ const data = await Deno.readTextFile(infile);
8
+ const records = csv.parse(data, {skipFirstRow: true, comment: "#"});
9
+ const map = new Map();
10
+ for (const r of records)
11
+ map.set(r.code, r);
12
+ let a = `var CORPUS = new Map([\n`;
13
+ for (const [k, v] of map)
14
+ a += ` ["${k}", ${JSON.stringify(v).replace(/\"(\w+)\":/g, '$1:')}],\n`;
15
+ a += `]);\n`;
16
+ a += `module.exports = CORPUS;\n`;
17
+ await Deno.writeTextFile(outfile, a);
18
+ }
19
+
20
+
21
+ export async function build(corpus='corpus.js') {
22
+ if (corpus) await writeCorpus(corpus);
23
+ }
@@ -0,0 +1,215 @@
1
+ code,name,tags
2
+ code,Food Code,id tag legend
3
+ name,Food Name,title label
4
+ scie,Scientific Name,binomial genus botanical
5
+ lang,Local Name,colloquial trivial country farmer popular
6
+ grup,Food Group,category class classification grouping type sort kind
7
+ regn,No. of Regions,number
8
+ tags,Tags,
9
+ water,Moisture,total essential proximate liquid steam vapour
10
+ protcnt,Protein,total essential proximate macronutrient
11
+ ash,Ash,total essential proximate macronutrient residue mineral metal inorganic
12
+ fatce,Total Fat,total essential proximate macronutrient triglyceride lipid blubber
13
+ fibtg,Dietary Fiber,total fibre roughage bulk indigestible
14
+ fibins,Insoluble Dietary Fiber,fibre roughage bulk indigestible
15
+ fibsol,Soluble Dietary Fiber,fibre roughage bulk indigestible
16
+ choavldf,Carbohydrate,total proximate macronutrient cho saccharide ose glucide hydrate carbon
17
+ enerc,Energy,total essential metabolism atp calorie kilocalorie cal kcal joule kilojoule j kj
18
+ thia,Thiamine (B1),essential water soluble vitamin b1 b 1 thiamin aneurine
19
+ ribf,Riboflavin (B2),essential water soluble vitamin b2 b 2 g vactochrome lactoflavin
20
+ nia,Niacin (B3),essential water soluble vitamin b3 b 3 pp white translucent crystalline crystal bionic nicotinic acid nicotinamide
21
+ pantac,Pantothenic acid (B5),essential water soluble vitamin b5 b 5 yellow oil colorless crystalline crystal pantothenate
22
+ vitb6c,Total B6,essential water soluble vitamin b6 b 6 vitamer pn p5p pl plp pm pmp pa pyridoxine pyridoxal pyridoxamine pyridoxic acid pyritinol
23
+ biot,Biotin (B7),essential water soluble vitamin b7 b 7 h coenzyme r white crystalline crystal needle biopeiderm
24
+ folsum,Folates (B9),essential water soluble vitamin b9 b 9 bc m folic folacin pteroyl glutamic acid glutamate
25
+ vitc,Ascorbic acids (C),total essential water soluble vitamin c vitamin c ascorbate
26
+ retol,Retinol,essential fat soluble vitamin a1 vitamin-a 1
27
+ ergcal,Ergocalciferol (D2),essential fat soluble vitamin d2 d 2 calciferol viosterol
28
+ chocal,Cholecalciferol (D3),essential fat soluble vitamin d3 d 3 activated dehydrocholesterol colecalciferol
29
+ doh25,25-OH-D3,essential fat soluble vitamin d3 d 3 25 oh 0 calcifediol calcidiol hydroxycholecalciferol hydroxyvitamin prehormone
30
+ tocpha,α-Tocopherol,essential fat soluble vitamin e yellow brown viscous liquid antioxidant saturated alpha tcp methylated phenol phytyl
31
+ tocphb,β-Tocopherol,beta tcp vitamin e fat soluble methylated phenol antioxidant saturated phytyl essential
32
+ tocphg,γ-Tocopherol,gamma tcp vitamin e fat soluble methylated phenol antioxidant saturated phytyl essential
33
+ tocphd,δ-Tocopherol,delta tcp vitamin e fat soluble methylated phenol antioxidant saturated phytyl essential
34
+ toctra,α-Tocotrienol,alpha vitamin e fat soluble methylated phenol antioxidant unsaturated isoprenoid essential
35
+ toctrb,β-Tocotrienol,beta vitamin e fat soluble methylated phenol antioxidant unsaturated isoprenoid essential
36
+ toctrg,γ-Tocotrienol,gamma vitamin e fat soluble methylated phenol antioxidant unsaturated isoprenoid essential
37
+ toctrd,δ-Tocotrienol,delta vitamin e fat soluble methylated phenol antioxidant unsaturated isoprenoid essential
38
+ vite,α-Tocopherol equivalent (E),total alpha ate te vitamin e vitamin e fat soluble methylated phenol antioxidant essential
39
+ vitk1,Phylloquinones (K1),total pk phytomenadione phytonadione quinone mephyton fat soluble vitamin k1 k 1 vitamin k1 k 1 essential
40
+ vitk2,Menaquinones (K2),total mk menatetrenone quinone mk fat soluble vitamin k2 k 2 vitamin k2 k 2 essential
41
+ lutn,Lutein,xanthophyll carotenoid tetraterpenoid terpenoid isoprenoid phytochemical orange red yellow pigment crystalline crystal solid
42
+ zea,Zeaxanthin,xanthophyll carotenoid tetraterpenoid terpenoid isoprenoid phytochemical orange red yellow pigment
43
+ crypxb,β-Cryptoxanthin,b beta xanthophyll carotenoid tetraterpenoid terpenoid isoprenoid phytochemical yellow pigment vitamer provitamin vitamin vitamin-a cryptoxanthol caricaxanthin kryptoxanthin
44
+ lycpn,Lycopene,carotene carotenoid tetraterpenoid terpenoid isoprenoid phytochemical deep red orange pigment solid
45
+ cartg,γ-Carotene,gamma carotene carotenoid tetraterpenoid terpenoid isoprenoid phytochemical orange pigment vitamer provitamin vitamin vitamin-a
46
+ carta,α-Carotene,alpha carotene carotenoid tetraterpenoid terpenoid isoprenoid phytochemical orange pigment vitamer provitamin vitamin vitamin-a
47
+ cartb,β-Carotene,beta carotene carotenoid tetraterpenoid terpenoid isoprenoid phytochemical dark red orange pigment crystalline crystal vitamer provitamin vitamin vitamin-a
48
+ cartoid,Carotenoids,total carotene xanthophyll carotenoid tetraterpenoid terpenoid isoprenoid phytochemical orange yellow pigment
49
+ al,Aluminium (Al),trace post transition chemical inorganic element mineral metal aluminum
50
+ as,Arsenic (As),trace metalloid chemical inorganic element mineral metal arsenic
51
+ cd,Cadmium (Cd),trace post transition toxic chemical inorganic element mineral metal cadmium
52
+ ca,Calcium (Ca),quantity alkaline earth chemical inorganic element mineral metal calcium
53
+ cr,Chromium (Cr),trace transition chemical inorganic element mineral metal chromium
54
+ co,Cobalt (Co),trace transition chemical inorganic element mineral metal cobalt
55
+ cu,Copper (Cu),trace transition chemical inorganic element mineral metal copper
56
+ fe,Iron (Fe),trace transition chemical inorganic element mineral metal iron
57
+ pb,Lead (Pb),trace heavy post transition toxic chemical inorganic element mineral metal lead
58
+ li,Lithium (Li),trace alkali chemical inorganic element mineral metal lithium
59
+ mg,Magnesium (Mg),quantity alkaline earth chemical inorganic element mineral metal magnesium
60
+ mn,Manganese (Mn),trace transition ineral chemical inorganic element mineral metal manganese
61
+ hg,Mercury (Hg),trace heavy liquid post transition toxic chemical inorganic element mineral metal mercury
62
+ mo,Molybdenum (Mo),trace transition chemical inorganic element mineral metal molybednum
63
+ ni,Nickel (Ni),trace transition chemical inorganic element mineral metal nickel
64
+ p,Phosphorus (P),quantity nonmetal chemical inorganic element mineral phosphorous
65
+ k,Potassium (K),quantity alkali chemical inorganic element mineral metal potassium
66
+ se,Selenium (Se),trace chemical inorganic element mineral metal selenium
67
+ na,Sodium (Na),quantity alkali chemical inorganic element mineral metal sodium
68
+ zn,Zinc (Zn),trace post transition chemical inorganic element mineral metal zinc
69
+ cho,Available CHO,total digest absorb glucogenic carbohydrate available carbohydrate
70
+ starch,Starch,total amylum polysaccharide polymeric carbohydrate available
71
+ frus,Fructose,simple fruit sugar levulose fructofuranose arabino hexulose ketonic monosaccharide free available carbohydrate
72
+ glus,Glucose,simple sugar blood dextrose corn grape monosaccharide white powder free available carbohydrate
73
+ sucs,Sucrose,common table sugar saccharose disaccharide white solid free available carbohydrate
74
+ mals,Maltose,maltobiose malt sugar disaccharide white powder crystalline crystal free available carbohydrate
75
+ fsugar,Free Sugars,total added natural sugar monosaccharide disaccharide available carbohydrate
76
+ lactose,Lactose,milk sugar disaccharide white solid free available carbohydrate content
77
+ f4d0,Butyric acid (C4:0),c40 c 40 4 0 bta butanoic propanecarboxylic carboxylic saturated fatty fat triglyceride lipid colorless liquid unpleasant vomit body odor
78
+ f6d0,Caproic acid (C6:0),c60 c 60 6 0 hexanoic carboxylic saturated fatty fat medium chain triglyceride lipid colorless oily liquid goat like
79
+ f8d0,Caprylic acid (C8:0),c80 c 80 8 0 octanoic carboxylic saturated fatty fat medium chain triglyceride lipid colorless oily liquid faint fruity irritating
80
+ f10d0,Capric acid (C10:0),c100 c 100 10 0 decanoic carboxylic saturated fatty fat medium chain triglyceride lipid white crystals strong rancid and unpleasant
81
+ f11d0,Undecanoic acid (C11:0),c110 c 110 11 0 undecylic carboxylic saturated fatty fat triglyceride lipid colourless crystals distinctive unpleasant odor
82
+ f12d0,Lauric acid (C12:0),c120 c 120 12 0 dodecanoic dodecylic dodecoic laurostearic vulvic undecanecarboxylic duodecylic carboxylic saturated fatty fat medium chain triglyceride white powder faint odor bay oil soap
83
+ f14d0,Myristic acid (C14:0),c140 c 140 14 0 tetradecanoic carboxylic saturated fatty fat triglyceride lipid
84
+ f15d0,Pentadecanoic acid (C15:0),c150 c 150 15 0 pentadecylic carboxylic saturated fatty fat triglyceride lipid
85
+ f16d0,Palmitic acid (C16:0),c160 c 160 16 0 hexadecanoic carboxylic saturated fatty fat triglyceride lipid white crystals
86
+ f18d0,Stearic acid (C18:0),c180 c 180 18 0 octadecanoic carboxylic saturated fatty fat triglyceride lipid white solid pungent oily
87
+ f20d0,Arachidic acid (C20:0),c200 c 200 20 0 eicosanoic icosanoic arachic carboxylic saturated fatty fat triglyceride lipid white crystalline crystal solid
88
+ f22d0,Behenic acid (C22:0),c220 c 220 22 0 docosanoic docosanoate hydrofol carboxylic saturated fatty fat triglyceride lipid white yellow crystalline crystal powder
89
+ f24d0,Lignoceric acid (C24:0),c240 c 240 24 0 tetracosanoic carboxylic saturated fatty fat triglyceride lipid
90
+ f14d1cn5,Myristoleic acid (C14:1),c141 c 141 14 1 tetradecenoic myristolenic oleomyristic omega 5 monounsaturated mono unsaturated fatty fat triglyceride lipid
91
+ f16d1cn7,Palmitoleic acid (C16:1),c161 c 161 16 1 hexadec enoic palmitoleic hexadecenoic omega 7 monounsaturated mono unsaturated fatty fat triglyceride lipid
92
+ f18d1cn9,Oleic acid (C18:1n9),c181n9 c181 c 181 18 1n9 1 n9 n 9 octadec enoic octadecenoic omega 9 monounsaturated mono unsaturated fatty fat triglyceride lipid
93
+ f18d1tn9,Elaidic acid (C18:1n9t),c181n9t c 18 1n9t 1n9 1 n9t n9 n 9 t octadec enoic octadecenoic carboxylic trans monounsaturated mono unsaturated fatty fat triglyceride lipid colorless waxy oily solid
94
+ f20d1cn9,Eicosenoic acid (C20:1n9),c201n9 c201 c20 c 20 201 1n9 1 n9 n 9 gondoic eicos enoic icosenoic icos enoic omega 9 monounsaturated mono unsaturated fatty fat triglyceride lipid
95
+ f22d1cn9,Erucic acid (C22:1n9),c221n9 c221 c 221 22 1 n9 n 9 docos enoic omega 9 monounsaturated mono unsaturated fatty fat triglyceride lipid white waxy solid
96
+ f24d1cn9,Nervonic acid (C24:1n9),c241n9 c241 c 241 24 1 n9 n 9 tetracos enoic tetracosenoic omega 9 monounsaturated mono unsaturated fatty fat triglyceride lipid
97
+ f18d2cn6,Linoleic acid (C18:2n6),c182n6 c182 c 182 18 2 n6 n 6 octadeca dienoic octadecadienoic omega 6 polyunsaturated poly unsaturated fatty fat triglyceride lipid colorless oil
98
+ f20d2n6,Eicosadienoic acid (C20:2),c202 c 202 20 2 eicosa icosa dienoic omega 6 polyunsaturated poly unsaturated fatty fat triglyceride lipid
99
+ f22d2n6,Docosadienoic acid (C22:2),c222 c 222 22 2 docosa dienoic omega 6 polyunsaturated poly unsaturated fatty fat triglyceride lipid
100
+ f18d3n3,α-Linolenic acid (C18:3n3),c183n3 c183 c 183 18 3 n3 n 3 ala lna alpha octadecatrienoic octadeca trienoic omega 3 polyunsaturated poly unsaturated fatty fat triglyceride lipid
101
+ f20d3n6,Eicosatrienoic acid (C20:3n6),c203n6 c203 c 203 20 3 n6 n 6 eicosa icosa trienoic omega 6 polyunsaturated poly unsaturated fatty fat triglyceride lipid
102
+ f20d4n6,Arachidonic acid (C20:4n6),c204n6 c204 c 204 20 4 n6 n 6 aa ara eicosatetraenoic eicosa icosa tetraenoic arachidonate omega 6 polyunsaturated poly unsaturated fatty fat triglyceride lipid
103
+ f20d5n3,Eicosapentaenoic acid (C20:5n3),c205n3 c205 c 205 20 5 n3 n 3 epa icosapentaenoic timnodonic eicosa icosa pentaenoic omega 3 polyunsaturated poly unsaturated fatty fat triglyceride lipid
104
+ f22d5n3,Docosapentaenoic acid (C22:5n3),c225n3 c225 c 225 22 5 n3 n 3 dpa docosa pentaenoic omega 3 polyunsaturated poly unsaturated fatty fat triglyceride lipid
105
+ f22d6n3,Docosahexaenoic acid (C22:6n3),c226n3 c226 c 226 22 6 n3 n 3 dha docosa hexaenoic cervonic doconexent omega 3 polyunsaturated poly unsaturated fatty fat triglyceride lipid
106
+ fasat,Saturated Fatty acids,total fat triglyceride lipid profile tsfa sfa
107
+ fams,Monounsaturated Fatty acids,total fat lipid triglyceride profile mono unsaturated tmufa mufa
108
+ fapu,Polyunsaturated Fatty acids,total fat lipid triglyceride profile poly unsaturated tpufa pufa
109
+ cholc,Cholesterol,total cholesterin cholesteryl alcohol zoosterol animal sterol lipid white crystalline crystal powder
110
+ his,Histidine,amino acid h _his
111
+ ile,Isoleucine,amino acid i
112
+ leu,Leucine,amino acid l
113
+ lys,Lysine,amino acid k
114
+ met,Methionine,amino acid m
115
+ cys,Cysteine,amino acid c
116
+ phe,Phenylalanine,amino acid f
117
+ thr,Threonine,amino acid t
118
+ trp,Tryptophan,amino acid w
119
+ val,Valine,amino acid v
120
+ ala,Alanine,amino acid a
121
+ arg,Arginine,amino acid r
122
+ asp,Aspartic acid,amino acid d
123
+ glu,Glutamic acid,amino acid e
124
+ gly,Glycine,amino acid g
125
+ pro,Proline,amino acid p
126
+ ser,Serine,amino acid s
127
+ tyr,Tyrosine,amino acid y
128
+ oxalt,Oxalates,total organic acid oxalic ox ethanedioate
129
+ oxals,Soluble Oxalate,total organic acid oxalic ox sodium potassium ethanedioate
130
+ oxali,Insoluble Oxalate,total organic acid oxalic ox calcium ethanedioate
131
+ caconac,Cis-Aconitic acid,organic acid achilleic equisetic citridinic pyrocitric
132
+ citac,Citric acid,organic acid hydroxypropane tricarboxylic
133
+ fumac,Fumaric acid,organic acid trans butenedioic but enedioic ethylenedicarboxylic allomaleic boletic donitic lichenic unsaturated white solid
134
+ malac,Malic acid,organic acid hydroxybutanedioic hydroxysuccinic unsaturated
135
+ quinac,Quinic acid,organic acid tetrahydroxycyclohexanecarboxylic tetrahydroxy cyclohexanecarboxylic cyclitol cyclic polyol
136
+ sucac,Succinic acid,organic acid butandioic dicarboxylic
137
+ tarac,Tartaric acid,organic acid dihydroxybutanedioic dihydroxysuccinic threaric racemic uvic paratartaric white crystalline crystal powder
138
+ dhbenzac34,"3,4-Dihydroxy Benzoic acid",34 dihydroxybenzoic polyphenol polyphenol poly phenol phenolic phytochemical phyto
139
+ hbenzal3,3-Hydroxy Benzaldehyde,Hydroxybenzaldehyde aldehyde polyphenol polyphenol poly phenol phenolic phytochemical phyto
140
+ pcathac,Protocatechuic acid,pca protocatechuate dihydroxybenzoic dihydroxy benzoic polyphenol polyphenol poly phenol phenolic phytochemical phyto light brown solid
141
+ vanlac,Vanillic acid,dihydroxybenzoic dihydroxy benzoic vanillin hydroxy methoxybenzoic anisic vanillate polyphenol polyphenol poly phenol phenolic aromatic phytochemical phyto white light yellow powder crystalline crystal
142
+ gallac,Gallic acid,trihydroxybenzoic trihydroxy benzoic polyphenol polyphenol poly phenol phenolic aromatic phytochemical phyto white yellow pale fawn crystalline crystal
143
+ cinmac,Cinnamic acid,phenylprop enoic phenylacrylic cinnamylic phenylacrylic benzenepropenoic benzenepropenoic hydroxycinnamic aromatic unsaturated carboxylic polyphenol polyphenol poly phenol phenolic phytochemical phyto white monoclinic crystalline crystal
144
+ coumaco,o-Coumaric acid,ortho hydroxyphenyl prop enoic propenoic hydroxycinnamic aromatic polyphenol polyphenol poly phenol phenolic phytochemical phyto
145
+ coumacp,p-Coumaric acid,para hydroxyphenyl prop enoic propenoic acrylic hydroxycinnamic aromatic polyphenol polyphenol poly phenol phenolic phytochemical phyto
146
+ caffac,Caffeic acid,dihydroxyphenyl propenoic dihydroxy cinnamic trans caffeate cinnamate dihydroxybenzeneacrylic hydroxycinnamic aromatic polyphenol polyphenol poly phenol phenolic phytochemical phyto
147
+ chlrac,Chlorogenic acid,cqa dihydroxycinnamoyl quinate quinic caffeoylquinate caffeoylquinic chlorogenate heriguard hydroxycinnamic aromatic trans ester polyphenol polyphenol poly phenol phenolic phytochemical phyto
148
+ ferac,Ferulic acid,propenoic hydroxy methoxyphenyl acrylic methoxy methoxycinnamic ferulate coniferic trans ferulic hydroxycinnamic aromatic polyphenol polyphenol poly phenol phenolic phytochemical phyto crystalline crystal powder
149
+ apigen,Apigenin,flavone flavonoid polyphenol polyphenol poly phenol polyhydroxyphenol phenolic hydroxyl phytochemical yellow pigment crystalline crystal solid trihydroxyflavone apigenine chamomile apigenol spigenin versulin aglycone glycoside
150
+ apigen6cgls,Apigenin-6-C-gluoside,6c 6 flavone flavonoid polyphenol polyphenol poly phenol polyhydroxyphenol phenolic hydroxyl phytochemical pigment isovitexin homovitexin saponaretin
151
+ apigen7onshps,Apigenin-7-O-neohesperidoside,7o 7 flavone flavonoid polyphenol poly phenol polyhydroxyphenol phenolic hydroxyl phytochemical pigment rhoifolin
152
+ luteol,Luteolin,flavone flavonoid polyphenol poly phenol polyhydroxyphenol phenolic hydroxyl phytochemical yellow pigment crystalline crystal luteolol digitoflavone flacitran luteoline
153
+ kaemf,Kaempferol,flavonol flavonoid polyphenol poly phenol polyhydroxyphenol phenolic hydroxyl phytochemical yellow pigment crystalline crystal solid antioxidant kaempherol robigenin pelargidenolon rhamnolutein rhamnolutin populnetin trifolitin kempferol swartziol
154
+ querce,Quercetin,flavonol flavonoid polyphenol poly phenol polyhydroxyphenol phenolic hydroxyl phytochemical yellow pigment crystalline crystal powder bitter flavor sophoretin meletin quercetine xanthaurine quercetol quercitin quertine flavin meletin
155
+ querce3bdgls,Quercetin-3-β-D-glucoside,3βd 3bd 3β 3b βd bd 3 beta b flavonol flavonoid polyphenol poly phenol polyhydroxyphenol phenolic hydroxyl phytochemical pigment isoquercetin isoquercitrin isoquercitroside isoquercitin trifoliin isotrifolin isohyperoside isotrifoliin glucopyranoside
156
+ querce3ortns,Quercetin-3-O-rutinoside,3o 3 flavonol flavonoid polyphenol poly phenol polyhydroxyphenol phenolic hydroxyl phytochemical pigment rutin rutoside sophorin phytomelin sophorin birutan eldrin globularicitrin violaquercitrin glycoside
157
+ querce3bgls,Quercetin-3-β-galactoside,3β 3b 3 beta b flavonol flavonoid polyphenol poly phenol polyhydroxyphenol phenolic hydroxyl phytochemical pigment hyperoside hyperozide hyperasid hyperosid hyperin
158
+ isormt,Isorhamnetin,flavonol flavonoid polyphenol poly phenol polyhydroxyphenol phenolic hydroxyl phytochemical pigment methylquercetin isorhamnetol isorhamentin isorhamnetine rhamnetin methoxyquercetin methylated
159
+ myrct,Myricetin,flavonol flavonoid polyphenol poly phenol polyhydroxyphenol phenolic hydroxyl phytochemical pigment cannabiscetin myricetol myricitin
160
+ rsvrtol,Resvertrol,aglycone stilbenoid phenylpropanoid polyphenol poly phenol phenolic phytochemical trihydroxystilbene stilbenetriol trans phytoalexin
161
+ hespt,Hesperetin,eriodictyol flavanone flavanoid polyphenol poly phenol phenolic phytochemical
162
+ narng,Naringenin,flavanone flavonoid polyphenol poly phenol polyhydroxyphenol phenolic hydroxyl phytochemical colourless pigment bitter naringetol salipurol salipurpol trihydroxyflavanone
163
+ hespd,Hesperdin,flavanone flavonoid polyphenol poly phenol polyhydroxyphenol phenolic hydroxyl phytochemical pigment hesperetin rutinoside flavan glycoside
164
+ daidzn,Daidzein,formononetin isoflavone phytoestrogens isoflavonoid flavonoid polyphenol poly phenol polyhydroxyphenol phenolic hydroxyl phytochemical pale yellow pigment prism dihydroxyisoflavone daidzeol isoaurostatin
165
+ gnstein,Genistein,biochanin a isoflavone phytoestrogens isoflavonoid flavonoid polyphenol poly phenol polyhydroxyphenol phenolic hydroxyl phytochemical pigment angiogenesis inhibitor
166
+ epicatec,(-)-Epicatechin,epi catechin flavan flavanol flavonoid polyphenol poly phenol polyhydroxyphenol phenolic hydroxyl phytochemical pigment antioxidant catechin
167
+ epicategc,(-)-Epigallo catechin,epigallo catechin epigallocatechin epigallocatechin flavan flavanol flavonoid polyphenol poly phenol polyhydroxyphenol phenolic hydroxyl phytochemical pigment
168
+ epicatgc3gal,(-)-Epigallo catechin 3-gallate,epigallocatechin flavan flavanol flavonoid polyphenol poly phenol polyhydroxyphenol phenolic hydroxyl phytochemical pigment egcg catechin
169
+ catec,(+)-Catechin,catechin catechin flavan flavanol flavonoid polyphenol poly phenol polyhydroxyphenol phenolic hydroxyl phytochemical colorless pigment solid antioxidant cianidanol cyanidanol catechinic catechuic cianidol dexcyanidanol trans flavanpentol
170
+ galcatecgal,(-)-Gallocatechin gallate,gallo catechin flavan flavanol flavonoid polyphenol poly phenol polyhydroxyphenol phenolic hydroxyl phytochemical pigment gcg
171
+ galcatec,(-)-Gallocatechin,gallocatechin gallo catechin gallo catechin flavan flavanol flavonoid polyphenol poly phenol polyhydroxyphenol phenolic hydroxyl phytochemical pigment antioxidant gc gallocatechol
172
+ syrgac,Syringic acid,trihydroxybenzoic polyphenol polyphenol poly phenol phenolic phytochemical
173
+ sinpac,Sinapinic acid,sinapic dimethoxycinnamic hydroxycinnamic aromatic polyphenol polyphenol poly phenol phenolic phytochemical
174
+ ellgac,Ellagic acid,dilactone hexahydroxydiphenic polyphenol polyphenol poly phenol phenolic aromatic phytochemical antioxidant antiproliferative
175
+ polyph,Polyphenols,total poly phenol phenolic phytochemical
176
+ rafs,Raffinose,rafinosa gossypose melitose melitriose galactosylsucrose fructofuranosyl galactopyranosyl glucopyranoside trisaccharide oligosaccharide carbohydrate
177
+ stas,Stachyose,fructofuranosyl galactopyranosyl glucopyranoside tetrasaccharide oligosaccharide carbohydrate
178
+ vers,Verbascose,pentasaccharide oligosaccharide carbohydrate
179
+ ajgs,Ajugose,hexasaccharide oligosaccharide carbohydrate
180
+ camt,Campesterol,phytosterol plant sterol phytosteroid steroid alcohol campestanol
181
+ stgstr,Stigmasterol,phytosterol plant sterol phytosteroid steroid alcohol unsaturated white solid wulzen anti stiffness factor
182
+ stostrb,β-Sitosterol,b beta phytosterol plant sterol phytosteroid steroid alcohol white waxy powder soild
183
+ phytac,Phytate,ip6 ip 6 phytic inositol hexakisphosphate polyphosphate cyclohexane hexayl hexakis dihydrogen phosphate salt saturated cyclic acid
184
+ sapon,Saponins,total triterpene triterpenoid glycoside amphipathic lipophilic hydrophilic soap foaming
185
+ vitb,Vitamin B,total vitamin b
186
+ vitd,Vitamin D,total vitamin d
187
+ vitk,Vitamin K,total vitamin k
188
+ tocph,Tocopherols,total tocopherol tcp methylated phenol vitamin e antioxidant
189
+ toctr,Tocotrienols,total tocotrienol vitamin e antioxidant
190
+ amiace,Essential Amino acids,total essential
191
+ amiacce,Conditionally essential Amino acids,total
192
+ amiacne,Non-essential Amino acids,total
193
+ amiac,Amino acids,total amino acid
194
+ orgac,Organic acids,total organic acid
195
+ fauns,Unsaturated Fatty acids,total fat lipid profile good healthy tufa ufa
196
+ faess,Essential Fatty acids,total fat lipid profile good healthy tefa efa
197
+ facn3,Cis ω-3 Fatty acids,total fat lipid profile good healthy omega ω3 w3 w 3
198
+ facn6,Cis ω-6 Fatty acids,total fat lipid profile good healthy omega ω6 w6 w 6
199
+ facn9,Cis ω-9 Fatty acids,total fat lipid profile good healthy omega ω9 w9 w 9
200
+ facn5,Cis ω-5 Fatty acids,total fat lipid profile good healthy omega ω5 w5 w 5
201
+ facn7,Cis ω-7 Fatty acids,total fat lipid profile good healthy omega ω7 w7 w 7
202
+ facis,Cis Fatty acids,total fat lipid profile good healthy tcfa cfa
203
+ fatrn,Trans Fatty acids,total fat lipid profile bad unhealthy harmful detrimental damaging trans ttfa tfa
204
+ olsac,Oligosaccharides,total polymer complex saccharide
205
+ phystr,Phytosterols,total plant sterol stanol phytosteroid natural plant steroid
206
+ mnrleq,Essential Quantity Minerals,total chemical inorganic element mineral metal
207
+ mnrlet,Essential Trace Minerals,total essential chemical inorganic element mineral metal
208
+ mnrlpet,Possibly essential Trace Minerals,total chemical inorganic element mineral metal
209
+ mnrlnet,Non-essential Trace Minerals,total chemical inorganic element mineral metal
210
+ mnrltx,Toxic Minerals,total chemical inorganic element mineral metal
211
+ carot,Carotenes,total carotene carotin photosythetic orange pigment carotenoid
212
+ xantp,Xanthophylls,total xanthophyll phylloxanthin yellow pigment carotenoid
213
+ cartbeq,β-Carotene equivalents,total provitamin previtamin a beta b carotene carotenoid
214
+ vita,Vitamin A,total essential micronutrient vitamin vitamin-a
215
+ vit,Vitamins,total essential micronutrient vitamin vitamin vitamin
@@ -0,0 +1,39 @@
1
+ import { type SetupTableOptions } from "@nodef/extra-sql";
2
+ /** Code and name of a nutrient. */ export interface Column {
3
+ /** Column Code. */ code: string;
4
+ /** Column Name. */ name: string;
5
+ /** Tags. */ tags: string;
6
+ }
7
+ /**
8
+ * Load the columns corpus from the file.
9
+ * @returns columns corpus
10
+ */ export declare function loadColumns(): Promise<Map<string, Column>>;
11
+ /**
12
+ * Get the path to the columns CSV file.
13
+ * @returns CSV file URL
14
+ */ export declare function columnsCsv(): string;
15
+ /**
16
+ * Obtain SQL command to create and populate the columns table.
17
+ * @param tab table name
18
+ * @param opt options for the table
19
+ * @returns CREATE TABLE, INSERT, CREATE VIEW, CREATE INDEX statements
20
+ */ export declare function columnsSql(tab?: string, opt?: SetupTableOptions): Promise<string>;
21
+ /**
22
+ * Find matching columns of an code/name/tags query.
23
+ * @param txt code/name/tags query
24
+ * @returns matches `[{code, name, tags}]`
25
+ * @example
26
+ * ```javascript
27
+ * ifct2017.columns('vitamin c');
28
+ * ifct2017.columns('c-vitamin');
29
+ * // → [ { code: 'vitc',
30
+ * // → name: 'Total Ascorbic acid',
31
+ * // → tags: 'ascorbate water soluble vitamin c vitamin c essential' } ]
32
+ *
33
+ * ifct2017.columns('what is butyric acid?');
34
+ * ifct2017.columns('c4:0 stands for?');
35
+ * // → [ { code: 'f4d0',
36
+ * // → name: 'Butyric acid (C4:0)',
37
+ * // → tags: 'c40 c 40 4 0 bta butanoic propanecarboxylic carboxylic saturated fatty fat triglyceride lipid colorless liquid unpleasant vomit body odor' } ]
38
+ * ```
39
+ */ export declare function columns(txt: string): Column[];
@@ -0,0 +1,111 @@
1
+ // Copyright (C) 2025-26 Subhajit Sahu
2
+ // SPDX-License-Identifier: AGPL-3.0-or-later
3
+ // See LICENSE for full terms
4
+ import * as csv from "@std/csv";
5
+ import lunr from "lunr"; // @deno-types="npm:@types/lunr@2.3.7"
6
+ import { setupTable } from "@nodef/extra-sql";
7
+ //#endregion
8
+ //#region GLOBALS
9
+ let corpus = null;
10
+ let index = null;
11
+ //#endregion
12
+ //#region FUNCTIONS
13
+ /**
14
+ * Load the columns corpus from CSV file.
15
+ * @param file CSV file path
16
+ * @returns columns corpus
17
+ */ async function loadFromCsv(file) {
18
+ const map = new Map();
19
+ const data = await (await fetch(file)).text();
20
+ const records = csv.parse(data, {
21
+ skipFirstRow: true,
22
+ comment: "#"
23
+ });
24
+ for (const r of records)map.set(r.code, r);
25
+ return map;
26
+ }
27
+ /**
28
+ * Setup the lunr index for the columns corpus.
29
+ * @returns lunr index
30
+ */ function setupIndex(corpus) {
31
+ return lunr(function() {
32
+ this.ref('code');
33
+ this.field('code', {
34
+ boost: 3
35
+ });
36
+ this.field('name', {
37
+ boost: 2
38
+ });
39
+ this.field('tags');
40
+ this.pipeline.remove(lunr.stopWordFilter);
41
+ for (const { code, name, tags } of corpus.values())this.add({
42
+ code,
43
+ name: name.replace(/\W/g, ' '),
44
+ tags
45
+ });
46
+ });
47
+ }
48
+ /**
49
+ * Load the columns corpus from the file.
50
+ * @returns columns corpus
51
+ */ export async function loadColumns() {
52
+ if (corpus) return corpus;
53
+ corpus = await loadFromCsv(columnsCsv());
54
+ index = setupIndex(corpus);
55
+ return corpus;
56
+ }
57
+ /**
58
+ * Get the path to the columns CSV file.
59
+ * @returns CSV file URL
60
+ */ export function columnsCsv() {
61
+ return import.meta.resolve('./index.csv');
62
+ }
63
+ /**
64
+ * Obtain SQL command to create and populate the columns table.
65
+ * @param tab table name
66
+ * @param opt options for the table
67
+ * @returns CREATE TABLE, INSERT, CREATE VIEW, CREATE INDEX statements
68
+ */ export async function columnsSql(tab = "columns", opt = {}) {
69
+ return setupTable(tab, {
70
+ code: "TEXT",
71
+ name: "TEXT",
72
+ tags: "TEXT"
73
+ }, (await loadColumns()).values(), Object.assign({
74
+ pk: "code",
75
+ index: true,
76
+ tsvector: {
77
+ code: "A",
78
+ name: "B",
79
+ tags: "C"
80
+ }
81
+ }, opt));
82
+ }
83
+ /**
84
+ * Find matching columns of an code/name/tags query.
85
+ * @param txt code/name/tags query
86
+ * @returns matches `[{code, name, tags}]`
87
+ * @example
88
+ * ```javascript
89
+ * ifct2017.columns('vitamin c');
90
+ * ifct2017.columns('c-vitamin');
91
+ * // → [ { code: 'vitc',
92
+ * // → name: 'Total Ascorbic acid',
93
+ * // → tags: 'ascorbate water soluble vitamin c vitamin c essential' } ]
94
+ *
95
+ * ifct2017.columns('what is butyric acid?');
96
+ * ifct2017.columns('c4:0 stands for?');
97
+ * // → [ { code: 'f4d0',
98
+ * // → name: 'Butyric acid (C4:0)',
99
+ * // → tags: 'c40 c 40 4 0 bta butanoic propanecarboxylic carboxylic saturated fatty fat triglyceride lipid colorless liquid unpleasant vomit body odor' } ]
100
+ * ```
101
+ */ export function columns(txt) {
102
+ if (index == null) return [];
103
+ const a = [];
104
+ txt = txt.replace(/\W/g, ' ');
105
+ const mats = index.search(txt);
106
+ let max = 0;
107
+ for (const mat of mats)max = Math.max(max, Object.keys(mat.matchData.metadata).length);
108
+ for (const mat of mats)if (Object.keys(mat.matchData.metadata).length === max) a.push(corpus?.get(mat.ref) || {});
109
+ return a;
110
+ } //#endregion
111
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZpbGU6Ly8vaG9tZS9ydW5uZXIvd29yay9pZmN0MjAxNy9pZmN0MjAxNy9jb2x1bW5zL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoQykgMjAyNS0yNiBTdWJoYWppdCBTYWh1XG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQUdQTC0zLjAtb3ItbGF0ZXJcbi8vIFNlZSBMSUNFTlNFIGZvciBmdWxsIHRlcm1zXG5pbXBvcnQgKiBhcyBjc3YgIGZyb20gXCJAc3RkL2NzdlwiO1xuaW1wb3J0IGx1bnIgZnJvbSBcImx1bnJcIjsgIC8vIEBkZW5vLXR5cGVzPVwibnBtOkB0eXBlcy9sdW5yQDIuMy43XCJcbmltcG9ydCB7dHlwZSBSb3dEYXRhLCB0eXBlIFNldHVwVGFibGVPcHRpb25zLCBzZXR1cFRhYmxlfSBmcm9tIFwiQG5vZGVmL2V4dHJhLXNxbFwiO1xuXG5cblxuXG4vLyNyZWdpb24gVFlQRVNcbi8qKiBDb2RlIGFuZCBuYW1lIG9mIGEgbnV0cmllbnQuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbHVtbiB7XG4gIC8qKiBDb2x1bW4gQ29kZS4gKi9cbiAgY29kZTogc3RyaW5nLFxuICAvKiogQ29sdW1uIE5hbWUuICovXG4gIG5hbWU6IHN0cmluZyxcbiAgLyoqIFRhZ3MuICovXG4gIHRhZ3M6IHN0cmluZ1xufVxuLy8jZW5kcmVnaW9uXG5cblxuXG5cbi8vI3JlZ2lvbiBHTE9CQUxTXG5sZXQgY29ycHVzOiBNYXA8c3RyaW5nLCBDb2x1bW4+IHwgbnVsbCA9IG51bGw7XG5sZXQgaW5kZXg6IGx1bnIuSW5kZXggfCBudWxsID0gbnVsbDtcbi8vI2VuZHJlZ2lvblxuXG5cblxuXG4vLyNyZWdpb24gRlVOQ1RJT05TXG4vKipcbiAqIExvYWQgdGhlIGNvbHVtbnMgY29ycHVzIGZyb20gQ1NWIGZpbGUuXG4gKiBAcGFyYW0gZmlsZSBDU1YgZmlsZSBwYXRoXG4gKiBAcmV0dXJucyBjb2x1bW5zIGNvcnB1c1xuICovXG5hc3luYyBmdW5jdGlvbiBsb2FkRnJvbUNzdihmaWxlOiBzdHJpbmcpIHtcbiAgY29uc3QgbWFwICA9IG5ldyBNYXA8c3RyaW5nLCBDb2x1bW4+KCk7XG4gIGNvbnN0IGRhdGEgPSBhd2FpdCAoYXdhaXQgZmV0Y2goZmlsZSkpLnRleHQoKTtcbiAgY29uc3QgcmVjb3JkcyA9IGNzdi5wYXJzZShkYXRhLCB7c2tpcEZpcnN0Um93OiB0cnVlLCBjb21tZW50OiBcIiNcIn0pO1xuICBmb3IgKGNvbnN0IHIgb2YgcmVjb3JkcylcbiAgICBtYXAuc2V0KHIuY29kZSwgciBhcyB1bmtub3duIGFzIENvbHVtbik7XG4gIHJldHVybiBtYXA7XG59XG5cblxuLyoqXG4gKiBTZXR1cCB0aGUgbHVuciBpbmRleCBmb3IgdGhlIGNvbHVtbnMgY29ycHVzLlxuICogQHJldHVybnMgbHVuciBpbmRleFxuICovXG5mdW5jdGlvbiBzZXR1cEluZGV4KGNvcnB1czogTWFwPHN0cmluZywgQ29sdW1uPikge1xuICByZXR1cm4gbHVucihmdW5jdGlvbih0aGlzOiBsdW5yLkJ1aWxkZXIpIHtcbiAgICB0aGlzLnJlZignY29kZScpO1xuICAgIHRoaXMuZmllbGQoJ2NvZGUnLCB7Ym9vc3Q6IDN9KTtcbiAgICB0aGlzLmZpZWxkKCduYW1lJywge2Jvb3N0OiAyfSk7XG4gICAgdGhpcy5maWVsZCgndGFncycpO1xuICAgIHRoaXMucGlwZWxpbmUucmVtb3ZlKGx1bnIuc3RvcFdvcmRGaWx0ZXIpO1xuICAgIGZvciAoY29uc3Qge2NvZGUsIG5hbWUsIHRhZ3N9IG9mIGNvcnB1cy52YWx1ZXMoKSlcbiAgICAgIHRoaXMuYWRkKHtjb2RlLCBuYW1lOiBuYW1lLnJlcGxhY2UoL1xcVy9nLCAnICcpLCB0YWdzfSk7XG4gIH0pO1xufVxuXG5cbi8qKlxuICogTG9hZCB0aGUgY29sdW1ucyBjb3JwdXMgZnJvbSB0aGUgZmlsZS5cbiAqIEByZXR1cm5zIGNvbHVtbnMgY29ycHVzXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkQ29sdW1ucygpOiBQcm9taXNlPE1hcDxzdHJpbmcsIENvbHVtbj4+IHtcbiAgaWYgKGNvcnB1cykgcmV0dXJuIGNvcnB1cztcbiAgY29ycHVzID0gYXdhaXQgbG9hZEZyb21Dc3YoY29sdW1uc0NzdigpKTtcbiAgaW5kZXggID0gc2V0dXBJbmRleChjb3JwdXMpO1xuICByZXR1cm4gY29ycHVzO1xufVxuXG5cbi8qKlxuICogR2V0IHRoZSBwYXRoIHRvIHRoZSBjb2x1bW5zIENTViBmaWxlLlxuICogQHJldHVybnMgQ1NWIGZpbGUgVVJMXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb2x1bW5zQ3N2KCk6IHN0cmluZyB7XG4gIHJldHVybiBpbXBvcnQubWV0YS5yZXNvbHZlKCcuL2luZGV4LmNzdicpO1xufVxuXG5cbi8qKlxuICogT2J0YWluIFNRTCBjb21tYW5kIHRvIGNyZWF0ZSBhbmQgcG9wdWxhdGUgdGhlIGNvbHVtbnMgdGFibGUuXG4gKiBAcGFyYW0gdGFiIHRhYmxlIG5hbWVcbiAqIEBwYXJhbSBvcHQgb3B0aW9ucyBmb3IgdGhlIHRhYmxlXG4gKiBAcmV0dXJucyBDUkVBVEUgVEFCTEUsIElOU0VSVCwgQ1JFQVRFIFZJRVcsIENSRUFURSBJTkRFWCBzdGF0ZW1lbnRzXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjb2x1bW5zU3FsKHRhYjogc3RyaW5nPVwiY29sdW1uc1wiLCBvcHQ6IFNldHVwVGFibGVPcHRpb25zPXt9KTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgcmV0dXJuIHNldHVwVGFibGUodGFiLCB7Y29kZTogXCJURVhUXCIsIG5hbWU6IFwiVEVYVFwiLCB0YWdzOiBcIlRFWFRcIn0sXG4gICAgKGF3YWl0IGxvYWRDb2x1bW5zKCkpLnZhbHVlcygpIGFzIEl0ZXJhYmxlPFJvd0RhdGE+LFxuICAgIE9iamVjdC5hc3NpZ24oe3BrOiBcImNvZGVcIiwgaW5kZXg6IHRydWUsIHRzdmVjdG9yOiB7Y29kZTogXCJBXCIsIG5hbWU6IFwiQlwiLCB0YWdzOiBcIkNcIn19LCBvcHQpKTtcbn1cblxuXG4vKipcbiAqIEZpbmQgbWF0Y2hpbmcgY29sdW1ucyBvZiBhbiBjb2RlL25hbWUvdGFncyBxdWVyeS5cbiAqIEBwYXJhbSB0eHQgY29kZS9uYW1lL3RhZ3MgcXVlcnlcbiAqIEByZXR1cm5zIG1hdGNoZXMgYFt7Y29kZSwgbmFtZSwgdGFnc31dYFxuICogQGV4YW1wbGVcbiAqIGBgYGphdmFzY3JpcHRcbiAqIGlmY3QyMDE3LmNvbHVtbnMoJ3ZpdGFtaW4gYycpO1xuICogaWZjdDIwMTcuY29sdW1ucygnYy12aXRhbWluJyk7XG4gKiAvLyDihpIgWyB7IGNvZGU6ICd2aXRjJyxcbiAqIC8vIOKGkiAgICAgbmFtZTogJ1RvdGFsIEFzY29yYmljIGFjaWQnLFxuICogLy8g4oaSICAgICB0YWdzOiAnYXNjb3JiYXRlIHdhdGVyIHNvbHVibGUgdml0YW1pbiBjIHZpdGFtaW4gYyBlc3NlbnRpYWwnIH0gXVxuICpcbiAqIGlmY3QyMDE3LmNvbHVtbnMoJ3doYXQgaXMgYnV0eXJpYyBhY2lkPycpO1xuICogaWZjdDIwMTcuY29sdW1ucygnYzQ6MCBzdGFuZHMgZm9yPycpO1xuICogLy8g4oaSIFsgeyBjb2RlOiAnZjRkMCcsXG4gKiAvLyDihpIgICAgIG5hbWU6ICdCdXR5cmljIGFjaWQgKEM0OjApJyxcbiAqIC8vIOKGkiAgICAgdGFnczogJ2M0MCBjIDQwIDQgMCBidGEgYnV0YW5vaWMgcHJvcGFuZWNhcmJveHlsaWMgY2FyYm94eWxpYyBzYXR1cmF0ZWQgZmF0dHkgZmF0IHRyaWdseWNlcmlkZSBsaXBpZCBjb2xvcmxlc3MgbGlxdWlkIHVucGxlYXNhbnQgdm9taXQgYm9keSBvZG9yJyB9IF1cbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gY29sdW1ucyh0eHQ6IHN0cmluZyk6IENvbHVtbltdIHtcbiAgaWYgKGluZGV4ID09IG51bGwpIHJldHVybiBbXTtcbiAgY29uc3QgYTogQ29sdW1uW10gPSBbXTsgdHh0ID0gdHh0LnJlcGxhY2UoL1xcVy9nLCAnICcpO1xuICBjb25zdCBtYXRzID0gaW5kZXguc2VhcmNoKHR4dCk7IGxldCBtYXggPSAwO1xuICBmb3IgKGNvbnN0IG1hdCBvZiBtYXRzKVxuICAgIG1heCA9IE1hdGgubWF4KG1heCwgT2JqZWN0LmtleXMobWF0Lm1hdGNoRGF0YS5tZXRhZGF0YSkubGVuZ3RoKTtcbiAgZm9yIChjb25zdCBtYXQgb2YgbWF0cylcbiAgICBpZiAoT2JqZWN0LmtleXMobWF0Lm1hdGNoRGF0YS5tZXRhZGF0YSkubGVuZ3RoID09PSBtYXgpIGEucHVzaChjb3JwdXM/LmdldChtYXQucmVmKSB8fCB7fSBhcyBDb2x1bW4pO1xuICByZXR1cm4gYTtcbn1cbi8vI2VuZHJlZ2lvblxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHNDQUFzQztBQUN0Qyw2Q0FBNkM7QUFDN0MsNkJBQTZCO0FBQzdCLFlBQVksU0FBVSxXQUFXO0FBQ2pDLE9BQU8sVUFBVSxPQUFPLENBQUUsc0NBQXNDO0FBQ2hFLFNBQThDLFVBQVUsUUFBTyxtQkFBbUI7QUFlbEYsWUFBWTtBQUtaLGlCQUFpQjtBQUNqQixJQUFJLFNBQXFDO0FBQ3pDLElBQUksUUFBMkI7QUFDL0IsWUFBWTtBQUtaLG1CQUFtQjtBQUNuQjs7OztDQUlDLEdBQ0QsZUFBZSxZQUFZLElBQVk7RUFDckMsTUFBTSxNQUFPLElBQUk7RUFDakIsTUFBTSxPQUFPLE1BQU0sQ0FBQyxNQUFNLE1BQU0sS0FBSyxFQUFFLElBQUk7RUFDM0MsTUFBTSxVQUFVLElBQUksS0FBSyxDQUFDLE1BQU07SUFBQyxjQUFjO0lBQU0sU0FBUztFQUFHO0VBQ2pFLEtBQUssTUFBTSxLQUFLLFFBQ2QsSUFBSSxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUU7RUFDbEIsT0FBTztBQUNUO0FBR0E7OztDQUdDLEdBQ0QsU0FBUyxXQUFXLE1BQTJCO0VBQzdDLE9BQU8sS0FBSztJQUNWLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDVCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVE7TUFBQyxPQUFPO0lBQUM7SUFDNUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRO01BQUMsT0FBTztJQUFDO0lBQzVCLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDWCxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLGNBQWM7SUFDeEMsS0FBSyxNQUFNLEVBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUMsSUFBSSxPQUFPLE1BQU0sR0FDNUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztNQUFDO01BQU0sTUFBTSxLQUFLLE9BQU8sQ0FBQyxPQUFPO01BQU07SUFBSTtFQUN4RDtBQUNGO0FBR0E7OztDQUdDLEdBQ0QsT0FBTyxlQUFlO0VBQ3BCLElBQUksUUFBUSxPQUFPO0VBQ25CLFNBQVMsTUFBTSxZQUFZO0VBQzNCLFFBQVMsV0FBVztFQUNwQixPQUFPO0FBQ1Q7QUFHQTs7O0NBR0MsR0FDRCxPQUFPLFNBQVM7RUFDZCxPQUFPLFlBQVksT0FBTyxDQUFDO0FBQzdCO0FBR0E7Ozs7O0NBS0MsR0FDRCxPQUFPLGVBQWUsV0FBVyxNQUFZLFNBQVMsRUFBRSxNQUF1QixDQUFDLENBQUM7RUFDL0UsT0FBTyxXQUFXLEtBQUs7SUFBQyxNQUFNO0lBQVEsTUFBTTtJQUFRLE1BQU07RUFBTSxHQUM5RCxDQUFDLE1BQU0sYUFBYSxFQUFFLE1BQU0sSUFDNUIsT0FBTyxNQUFNLENBQUM7SUFBQyxJQUFJO0lBQVEsT0FBTztJQUFNLFVBQVU7TUFBQyxNQUFNO01BQUssTUFBTTtNQUFLLE1BQU07SUFBRztFQUFDLEdBQUc7QUFDMUY7QUFHQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBa0JDLEdBQ0QsT0FBTyxTQUFTLFFBQVEsR0FBVztFQUNqQyxJQUFJLFNBQVMsTUFBTSxPQUFPLEVBQUU7RUFDNUIsTUFBTSxJQUFjLEVBQUU7RUFBRSxNQUFNLElBQUksT0FBTyxDQUFDLE9BQU87RUFDakQsTUFBTSxPQUFPLE1BQU0sTUFBTSxDQUFDO0VBQU0sSUFBSSxNQUFNO0VBQzFDLEtBQUssTUFBTSxPQUFPLEtBQ2hCLE1BQU0sS0FBSyxHQUFHLENBQUMsS0FBSyxPQUFPLElBQUksQ0FBQyxJQUFJLFNBQVMsQ0FBQyxRQUFRLEVBQUUsTUFBTTtFQUNoRSxLQUFLLE1BQU0sT0FBTyxLQUNoQixJQUFJLE9BQU8sSUFBSSxDQUFDLElBQUksU0FBUyxDQUFDLFFBQVEsRUFBRSxNQUFNLEtBQUssS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQztFQUMxRixPQUFPO0FBQ1QsRUFDQSxZQUFZIn0=
@@ -0,0 +1,71 @@
1
+ Indian Food Composition Tables 2017
2
+ T. Longvah, R. Ananthan, K. Bhaskarachary and K. Venkaiah
3
+
4
+ Copyright © 2017 by National Institute of Nutrition
5
+ Indian Council of Medical Research
6
+ Department of Health Research Ministry of Health and Family Welfare, Government of India
7
+ Jamai Osmania (PO), Hyderabad – 500 007
8
+ Telangana, India Phone: +91 40 27197334, Fax: +91 40 27000339, Email: nin@ap.nic.in
9
+
10
+ COLUMN DESCRIPTIONS
11
+ - Column Code
12
+ - Column Name
13
+ - Tags
14
+
15
+ TABLE 1
16
+ water
17
+
18
+ TABLE 2
19
+ thia
20
+
21
+ TABLE 3
22
+ retol
23
+
24
+ TABLE 4
25
+ lutn
26
+
27
+ TABLE 5-1
28
+ al
29
+
30
+ TABLE 5-2
31
+ mg
32
+
33
+ TABLE 6
34
+ cho
35
+
36
+ TABLE 7-1
37
+ TABLE 7-2
38
+ TABLE 7-3
39
+ TABLE 7-4
40
+ TABLE 7-5
41
+ TABLE 7-6
42
+ TABLE 7-7
43
+ TABLE 7-8
44
+ f4d0
45
+
46
+ TABLE 8-1
47
+ his
48
+
49
+ TABLE 8-2
50
+ ala
51
+
52
+ TABLE 9
53
+ oxalt
54
+
55
+ TABLE 10-1
56
+ dhbenzac34
57
+
58
+ TABLE 10-2
59
+ chlrac
60
+
61
+ TABLE 10-3
62
+ querce3bgls
63
+
64
+ TABLE 10-4
65
+ epicategc
66
+
67
+ TABLE 11
68
+ rafs
69
+
70
+ TABLE ADDED
71
+ vitb
@@ -0,0 +1,7 @@
1
+ region,centre,samples
2
+ North,Delhi,23
3
+ East,Kolkata,20
4
+ South,Bangalore,19
5
+ West,Mumbai,12
6
+ Central,Varanasi,22
7
+ North East,Guwahati,11