UNPKG

node-wordnet

Version:

Node.js interface for Wordnet

65 lines (56 loc) 1.97 kB
var DataFile, WordNetFile, fs, get, util; WordNetFile = require('./wordnet_file'); fs = require('fs'); util = require('util'); get = function(location, callback) { var buff; buff = new Buffer(4096); return this.open(function(err, fd) { return WordNetFile.appendLineChar(fd, location, 0, buff, function(line) { var data, definition, element, examples, glossArray, i, k, ptrOffset, ptrs, synonyms, tokens, wCnt, _i, _j, _k, _len, _ref, _ref1; data = line.split('| '); tokens = data[0].split(/\s+/); ptrs = []; wCnt = parseInt(tokens[3], 16); synonyms = []; for (i = _i = 0, _ref = wCnt - 1; _i <= _ref; i = _i += 1) { synonyms.push(tokens[4 + i * 2]); } ptrOffset = (wCnt - 1) * 2 + 6; for (i = _j = 0, _ref1 = parseInt(tokens[ptrOffset], 10) - 1; _j <= _ref1; i = _j += 1) { ptrs.push({ pointerSymbol: tokens[ptrOffset + 1 + i * 4], synsetOffset: parseInt(tokens[ptrOffset + 2 + i * 4], 10), pos: tokens[ptrOffset + 3 + i * 4], sourceTarget: tokens[ptrOffset + 4 + i * 4] }); } glossArray = data[1].split("; "); definition = glossArray[0]; examples = glossArray.slice(1); for (k = _k = 0, _len = examples.length; _k < _len; k = ++_k) { element = examples[k]; examples[k] = examples[k].replace(/\"/g, '').replace(/\s\s+/g, ''); } return callback({ synsetOffset: parseInt(tokens[0], 10), lexFilenum: parseInt(tokens[1], 10), pos: tokens[2], wCnt: wCnt, lemma: tokens[4], synonyms: synonyms, lexId: tokens[5], ptrs: ptrs, gloss: data[1], def: definition, exp: examples }); }); }); }; DataFile = function(dataDir, name) { return WordNetFile.call(this, dataDir, 'data.' + name); }; util.inherits(DataFile, WordNetFile); DataFile.prototype.get = get; module.exports = DataFile;