@iebh/polyglot 4.5.0 → 4.5.1

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.
package/lib/index.js CHANGED
@@ -3,12 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- Object.defineProperty(exports, "parse", {
7
- enumerable: true,
8
- get: function get() {
9
- return _parse.parse;
10
- }
11
- });
6
+ exports["default"] = void 0;
12
7
  Object.defineProperty(exports, "fieldCodesObject", {
13
8
  enumerable: true,
14
9
  get: function get() {
@@ -21,24 +16,20 @@ Object.defineProperty(exports, "global", {
21
16
  return _global["default"];
22
17
  }
23
18
  });
24
- exports["default"] = void 0;
25
-
19
+ Object.defineProperty(exports, "parse", {
20
+ enumerable: true,
21
+ get: function get() {
22
+ return _parse.parse;
23
+ }
24
+ });
26
25
  var _parse = require("./modules/parse.js");
27
-
28
26
  var _engines = _interopRequireDefault(require("./modules/engines.js"));
29
-
30
27
  var _lodash = _interopRequireDefault(require("lodash"));
31
-
32
28
  var _generic = _interopRequireDefault(require("./modules/engines/generic.js"));
33
-
34
29
  var _fieldCodesObject = _interopRequireDefault(require("./data/fieldCodesObject.js"));
35
-
36
30
  var _global = _interopRequireDefault(require("./modules/global.js"));
37
-
38
31
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
39
-
40
32
  var polyglot;
41
-
42
33
  var _default = polyglot = {
43
34
  /**
44
35
  * Translate the given query using the given engine ID
@@ -53,7 +44,6 @@ var _default = polyglot = {
53
44
  var tree = (0, _parse.parse)(query, options);
54
45
  return polyglot.postProcess(_generic["default"].compile(_lodash["default"].cloneDeep(tree), options, engine), options);
55
46
  },
56
-
57
47
  /**
58
48
  * Translate the given query using all the supported engines
59
49
  * Calling this function instead of individual 'translate()' calls is much more efficient as the tree needs to be compiled only once
@@ -72,7 +62,6 @@ var _default = polyglot = {
72
62
  output['lexicalTreeJSON'] = _engines["default"].lexicalTreeJSON.compile(tree, options), options;
73
63
  return output;
74
64
  },
75
-
76
65
  /**
77
66
  * Pre-proess the compile tree before it gets handed to each engines compile function
78
67
  * @param {Object} tree The tree to compile
@@ -81,12 +70,12 @@ var _default = polyglot = {
81
70
  * @see parse()
82
71
  */
83
72
  preProcess: function preProcess(tree, options) {
84
- var settings = _lodash["default"].defaults(options, {}); // NOTE: THIS FUNCTION IS CURRENTLY ONLY A STUB
73
+ var settings = _lodash["default"].defaults(options, {});
85
74
 
75
+ // NOTE: THIS FUNCTION IS CURRENTLY ONLY A STUB
86
76
 
87
77
  return tree;
88
78
  },
89
-
90
79
  /**
91
80
  * Post process the data from an engine
92
81
  * This function applies the following behaviours:
@@ -108,16 +97,13 @@ var _default = polyglot = {
108
97
  trim: false,
109
98
  transposeLines: true
110
99
  });
111
-
112
100
  if (settings.forceString && !_lodash["default"].isString(text)) text = JSON.stringify(text, null, '\t');
113
-
114
101
  if (settings.highlighting) {
115
102
  // Highlight logical operators purple
116
103
  text = text.replace(/(\sOR\s|\sAND\s|\sNOT\s)/g, function (a, b) {
117
104
  return "<font color=\"purple\">".concat(b, "</font>");
118
105
  });
119
106
  }
120
-
121
107
  if (settings.html) {
122
108
  text = text.replace(/\n/g, '<br/>').replace(/\t/g, '<span class="tab"></span>');
123
109
  } else if (_lodash["default"].isString(text)) {
@@ -126,13 +112,10 @@ var _default = polyglot = {
126
112
  text = text.replace(/<(.+)(\s.*)>(.*)<\/\1>/g, '$3');
127
113
  }
128
114
  }
129
-
130
115
  if (settings.trim) {
131
116
  text = text.replace(/^\s+/gm, '').replace(/\s+$/gm, '');
132
117
  }
133
-
134
118
  return text;
135
119
  }
136
120
  };
137
-
138
121
  exports["default"] = _default;
@@ -4,39 +4,26 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports["default"] = void 0;
7
-
8
7
  var _tools = _interopRequireDefault(require("../tools.js"));
9
-
10
8
  var _global = _interopRequireDefault(require("../global.js"));
11
-
12
9
  var _lodash = _interopRequireDefault(require("lodash"));
13
-
14
10
  var _fieldCodesObject = _interopRequireDefault(require("../../data/fieldCodesObject.js"));
15
-
16
11
  var _meshObject = _interopRequireDefault(require("../../data/meshObject.js"));
17
-
18
12
  var _meshTranslationsObject = _interopRequireDefault(require("../../data/meshTranslationsObject.js"));
19
-
20
13
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
21
-
22
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
23
-
24
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
25
-
14
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
15
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
26
16
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
27
-
28
17
  // Function to fix cinahl exploded mesh (move + sign back before ")
29
18
  function fixCinahl(content) {
30
19
  content = content.replace(/"\+/, '+"');
31
20
  content = content.replace(/"<\/font><font color="blue">\+/, '+"</font><font color="blue">');
32
21
  return content;
33
22
  }
34
-
35
23
  var _default = {
36
24
  id: 'generic',
37
25
  title: 'generic',
38
26
  aliases: ['generic', 'g'],
39
-
40
27
  /**
41
28
  * Compile a tree structure to PubMed output
42
29
  * @param {array} tree The parsed tree to process
@@ -49,16 +36,13 @@ var _default = {
49
36
  replaceWildcards: true,
50
37
  testing: false
51
38
  });
52
-
53
39
  var compileWalker = function compileWalker(tree) {
54
40
  return tree.map(function (branch, branchIndex) {
55
41
  var buffer = '';
56
-
57
42
  switch (branch.type) {
58
43
  case 'line':
59
44
  buffer += compileWalker(branch.nodes);
60
45
  break;
61
-
62
46
  case 'group':
63
47
  if (branch.field) {
64
48
  if (engine === "Ovid MEDLINE" || engine === "Scopus (advanced search)" || engine === "Embase (Elsevier)" || engine === "WoS Advanced") {
@@ -76,20 +60,17 @@ var _default = {
76
60
  // Empty string
77
61
  return el;
78
62
  }
79
- }).join(""); // Fix to move '+' back one space when quoting
80
-
63
+ }).join("");
64
+ // Fix to move '+' back one space when quoting
81
65
  if (engine === "CINAHL (Ebsco)") {
82
66
  content = fixCinahl(content);
83
67
  }
84
-
85
68
  buffer += comment && settings.highlighting ? _tools["default"].createTooltip(content, comment) : content;
86
69
  } else {
87
70
  var translateObject = _fieldCodesObject["default"][engine] ? _fieldCodesObject["default"][engine][branch.field] : null;
88
-
89
71
  if (translateObject) {
90
72
  var _termArray = translateObject.terms;
91
73
  var _comment = translateObject.comment;
92
-
93
74
  var _content = _termArray.map(function (el) {
94
75
  if (el && el.toLowerCase() !== "test") {
95
76
  return settings.highlighting ? "<font color=\"LightSeaGreen\">".concat(el, "</font>") : el;
@@ -100,7 +81,6 @@ var _default = {
100
81
  return el;
101
82
  }
102
83
  }).join("");
103
-
104
84
  buffer += _comment && settings.highlighting ? _tools["default"].createTooltip(_content, _comment) : _content;
105
85
  }
106
86
  }
@@ -113,7 +93,6 @@ var _default = {
113
93
  if (isMesh) {
114
94
  b.type = 'mesh';
115
95
  }
116
-
117
96
  b.field = branch.field;
118
97
  });
119
98
  branch.nodes = _tools["default"].visit(branch.nodes, ['group'], function (b) {
@@ -124,14 +103,11 @@ var _default = {
124
103
  } else {
125
104
  buffer += '(' + compileWalker(branch.nodes) + ')';
126
105
  }
127
-
128
106
  break;
129
-
130
107
  case 'ref':
131
108
  if (settings.transposeLines) {
132
109
  // Expand each line to show full query
133
110
  var node;
134
-
135
111
  for (node in branch.nodes) {
136
112
  if (node == 0) {
137
113
  // First line is printed as is wrapped in brackets
@@ -156,17 +132,13 @@ var _default = {
156
132
  buffer += _tools["default"].printNumber(engine, branch.ref);
157
133
  }
158
134
  }
159
-
160
135
  break;
161
-
162
136
  case 'phrase':
163
137
  if (branch.field) {
164
138
  var translateObject = _fieldCodesObject["default"][engine] ? _fieldCodesObject["default"][engine][branch.field] : null;
165
-
166
139
  if (translateObject) {
167
140
  var _termArray2 = translateObject.terms;
168
141
  var _comment2 = translateObject.comment;
169
-
170
142
  var _content2 = _termArray2.map(function (el) {
171
143
  if (el && el.toLowerCase() !== "test") {
172
144
  return settings.highlighting ? "<font color=\"LightSeaGreen\">".concat(el, "</font>") : el;
@@ -177,7 +149,6 @@ var _default = {
177
149
  return el;
178
150
  }
179
151
  }).join("");
180
-
181
152
  buffer += _comment2 && settings.highlighting ? _tools["default"].createTooltip(_content2, _comment2) : _content2;
182
153
  } else {
183
154
  buffer += _tools["default"].createTooltip('<font color="#ff6161">' + _tools["default"].quotePhrase(branch, engine, _objectSpread(_objectSpread({}, settings), {}, {
@@ -189,70 +160,56 @@ var _default = {
189
160
  if (_global["default"].variables.no_field_tag.indexOf(branch.offset + branch.content.length) === -1) {
190
161
  _global["default"].variables.no_field_tag.push(branch.offset + branch.content.length);
191
162
  }
192
-
193
163
  if (settings.highlighting) {
194
164
  buffer += _tools["default"].createPopover(_tools["default"].quotePhrase(branch, engine, settings), branch.offset + branch.content.length);
195
165
  } else {
196
166
  buffer += _tools["default"].quotePhrase(branch, engine, settings);
197
167
  }
198
168
  }
199
-
200
169
  break;
201
-
202
170
  case 'mesh':
203
171
  var translateObject = _meshObject["default"][engine] ? _meshObject["default"][engine][branch.field] : null;
204
-
205
172
  if (translateObject) {
206
173
  var _termArray3 = translateObject.terms;
207
174
  var _comment3 = translateObject.comment;
208
175
  var containsHeading = false;
209
-
210
176
  var content = _termArray3.map(function (el) {
211
177
  if (el && el.toLowerCase() !== "test") {
212
178
  // If heading already exists dont add second / at end (for ovid)
213
179
  if (containsHeading && el == "/") {
214
180
  return "";
215
181
  }
216
-
217
182
  return settings.highlighting ? "<font color=\"blue\">".concat(el, "</font>") : el;
218
183
  } else if (el && el.toLowerCase() === "test") {
219
184
  // Perform logic for the phrase in the mesh
220
- var phrase = _tools["default"].quotePhrase(branch, engine, settings); // If a subheading exists (e.g. psoriasis/dt)
221
-
222
-
185
+ var phrase = _tools["default"].quotePhrase(branch, engine, settings);
186
+ // If a subheading exists (e.g. psoriasis/dt)
223
187
  if (branch.heading) {
224
188
  containsHeading = true;
225
189
  phrase += settings.highlighting ? _tools["default"].createTooltip("/" + branch.heading, "Subheading may need to be manually translated", "red-underline") : "/" + branch.heading;
226
190
  }
227
-
228
191
  return phrase;
229
192
  } else {
230
193
  // Empty string
231
194
  return el;
232
195
  }
233
- }).join(""); // Fix to move '+' back one space when quoting
234
-
235
-
196
+ }).join("");
197
+ // Fix to move '+' back one space when quoting
236
198
  if (engine == "CINAHL (Ebsco)") {
237
199
  content = fixCinahl(content);
238
200
  }
239
-
240
201
  buffer += _comment3 && settings.highlighting ? _tools["default"].createTooltip(content, _comment3) : content;
241
202
  } else {
242
203
  buffer += _tools["default"].createTooltip('<font color="#ff6161">' + _tools["default"].quotePhrase(branch, engine, _objectSpread(_objectSpread({}, settings), {}, {
243
204
  highlighting: false
244
205
  })) + '</font>', "No mesh tag found for engine");
245
206
  }
246
-
247
207
  break;
248
-
249
208
  case 'meshTranslation':
250
209
  var translateObject = _meshTranslationsObject["default"][engine] ? _meshTranslationsObject["default"][engine][branch.field] : null;
251
-
252
210
  if (translateObject) {
253
211
  var _termArray4 = translateObject.terms;
254
212
  var _comment4 = translateObject.comment;
255
-
256
213
  var _content3 = _termArray4.map(function (el) {
257
214
  if (el && el.toLowerCase() !== "test") {
258
215
  return settings.highlighting ? "<font color=\"purple\">".concat(el, "</font>") : el;
@@ -261,28 +218,23 @@ var _default = {
261
218
  return el;
262
219
  }
263
220
  }).join("");
264
-
265
221
  buffer += _comment4 && settings.highlighting ? _tools["default"].createTooltip(_content3, _comment4) : _content3;
266
222
  } else {
267
223
  buffer += _tools["default"].createTooltip('<font color="#ff6161">' + _tools["default"].quotePhrase(branch, engine, _objectSpread(_objectSpread({}, settings), {}, {
268
224
  highlighting: false
269
225
  })) + '</font>', "No mesh tag found for engine");
270
226
  }
271
-
272
227
  break;
273
-
274
228
  case 'joinNear':
275
229
  switch (engine) {
276
230
  case 'PubMed full':
277
231
  case 'PubMed abbreviation':
278
232
  buffer += 'AND';
279
233
  break;
280
-
281
234
  case 'Ovid MEDLINE':
282
235
  case 'PsycInfo (Ovid)':
283
236
  buffer += "ADJ".concat(branch.proximity);
284
237
  break;
285
-
286
238
  case 'Cochrane Library':
287
239
  case 'Embase (Elsevier)':
288
240
  case 'Web of Science':
@@ -290,103 +242,84 @@ var _default = {
290
242
  case 'ProQuest Health and Medical':
291
243
  buffer += "NEAR/".concat(branch.proximity);
292
244
  break;
293
-
294
245
  case 'CINAHL (Ebsco)':
295
246
  buffer += "N".concat(branch.proximity);
296
247
  break;
297
-
298
248
  case 'Scopus (basic search)':
299
249
  case 'Scopus (advanced search)':
300
250
  buffer += "W/".concat(branch.proximity);
301
251
  break;
302
-
303
252
  case 'SPORTDiscus':
304
253
  buffer += "N".concat(branch.proximity);
305
254
  break;
306
255
  }
307
-
308
256
  break;
309
-
310
257
  case 'joinNext':
311
258
  switch (engine) {
312
259
  case 'PubMed full':
313
260
  case 'PubMed abbreviation':
314
261
  buffer += 'AND';
315
262
  break;
316
-
317
263
  case 'Ovid MEDLINE':
318
264
  case 'PsycInfo (Ovid)':
319
265
  buffer += 'ADJ';
320
266
  break;
321
-
322
267
  case 'Cochrane Library':
323
268
  buffer += 'NEXT';
324
269
  break;
325
-
326
270
  case 'Embase (Elsevier)':
327
271
  buffer += 'NEXT/1';
328
272
  break;
329
-
330
273
  case 'Web of Science':
331
274
  case 'WoS Advanced':
332
275
  buffer += 'NEAR/0';
333
276
  break;
334
-
335
277
  case 'CINAHL (Ebsco)':
336
278
  buffer += 'W1';
337
279
  break;
338
-
339
280
  case 'Scopus (basic search)':
340
281
  case 'Scopus (advanced search)':
341
282
  buffer += 'W/1';
342
283
  break;
343
-
344
284
  case 'SPORTDiscus':
345
285
  buffer += 'W1';
346
286
  break;
347
-
348
287
  case 'ProQuest Health and Medical':
349
288
  buffer += 'PRE/0';
350
289
  }
351
-
352
290
  break;
353
-
354
291
  case 'joinAnd':
355
292
  buffer += 'AND';
356
293
  break;
357
-
358
294
  case 'joinOr':
359
295
  buffer += 'OR';
360
296
  break;
361
-
362
297
  case 'joinNot':
363
298
  buffer += 'NOT';
364
299
  break;
365
-
366
300
  case 'raw':
367
301
  buffer += branch.content;
368
302
  break;
369
-
370
303
  case 'template':
371
304
  buffer += _tools["default"].resolveTemplate(branch.content, engine);
372
305
  break;
373
-
374
306
  case 'comment':
375
307
  // Do nothing
376
308
  break;
377
-
378
309
  default:
379
310
  throw new Error('Unsupported object tree type: ' + branch.type);
380
311
  }
381
-
382
- return buffer // Add spacing provided... its not a raw buffer or the last entity within the structure
383
- + (branch.type == 'raw' || // Its not a raw node
384
- branch.type == 'line' || // Its not a line node
385
- branchIndex == tree.length - 1 || // Its not the last item in the sequence
312
+ return buffer
313
+ // Add spacing provided... its not a raw buffer or the last entity within the structure
314
+ + (branch.type == 'raw' ||
315
+ // Its not a raw node
316
+ branch.type == 'line' ||
317
+ // Its not a line node
318
+ branchIndex == tree.length - 1 ||
319
+ // Its not the last item in the sequence
386
320
  branchIndex < tree.length - 1 && tree[branchIndex + 1] && tree[branchIndex + 1].type && tree[branchIndex + 1].type == 'raw' ? '' : ' ');
387
321
  }).join('');
388
322
  };
389
-
390
323
  return compileWalker(tree);
391
324
  },
392
325
  open: function open(query) {
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports["default"] = void 0;
7
-
8
7
  /**
9
8
  * Collection of supported engines
10
9
  * Each engine should specify:
@@ -15,8 +14,7 @@ exports["default"] = void 0;
15
14
  * debugging - optional boolean specifying that the engine is for debugging purposes only
16
15
  *
17
16
  * @var {array}
18
- */
19
- var _default = {
17
+ */var _default = {
20
18
  // Lexical tree (JSON) {{{
21
19
  lexicalTreeJSON: {
22
20
  id: 'lexicalTreeJSON',
@@ -34,10 +32,11 @@ var _default = {
34
32
  compile: function compile(tree, options) {
35
33
  return tree;
36
34
  }
37
- } // }}}
35
+ }
36
+ // }}}
37
+
38
38
  // MongoDB {{{
39
39
  // mongodb: mongodbImport,
40
40
  // }}}
41
-
42
41
  };
43
42
  exports["default"] = _default;
@@ -33,7 +33,6 @@ var _default = {
33
33
  },
34
34
  variables: {
35
35
  no_field_tag: [] // Stores offsets for phrases with no field tags (for replacement)
36
-
37
36
  },
38
37
 
39
38
  /**