From 2cd7045d09a3b5c1ddab88ec86f0049de4be3af3 Mon Sep 17 00:00:00 2001 From: Pierre-Gilles Leymarie Date: Tue, 23 May 2017 21:23:43 +0200 Subject: [PATCH] looking for house in sentences in brain --- api/core/brain/parser/parser.house.js | 38 +++++++++++++++++++++++++++ api/core/brain/parser/parser.js | 10 ++++++- 2 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 api/core/brain/parser/parser.house.js diff --git a/api/core/brain/parser/parser.house.js b/api/core/brain/parser/parser.house.js new file mode 100644 index 0000000000..970ab282b6 --- /dev/null +++ b/api/core/brain/parser/parser.house.js @@ -0,0 +1,38 @@ + +module.exports = function(originalText){ + return gladys.house.getAll() + .then(function(houses){ + + var result = []; + var replaceRegex = ''; + + // foreach house, we verify if the house is present in the sentence + houses.forEach(function(house){ + if(present(originalText, house.name)){ + result.push(house); + if(replaceRegex.length > 0) replaceRegex += '|'; + replaceRegex += house.name; + } + }); + + var text = originalText; + + if(replaceRegex.length > 0) { + text = originalText.replace(new RegExp(replaceRegex, 'g'), '%HOUSE%'); + } + + return { + text, + houses: result + }; + }); +}; + + + +/** + * Return true if the houseName is present in the sentence + */ +function present(text, type){ + return (text.toLowerCase().indexOf(type.toLowerCase()) > -1); +} \ No newline at end of file diff --git a/api/core/brain/parser/parser.js b/api/core/brain/parser/parser.js index 440f83bc4a..ef796ada3c 100644 --- a/api/core/brain/parser/parser.js +++ b/api/core/brain/parser/parser.js @@ -1,12 +1,14 @@ var Promise = require('bluebird'); var parseDeviceType = require('./parser.devicetype.js'); var parseRoom = require('./parser.room.js'); +var parseHouse = require('./parser.house.js'); var parseTime = require('./parser.time.js'); module.exports.parse = function parse(text) { var deviceTypes = []; var rooms = []; + var houses = []; var times = []; var replacedText = ''; @@ -26,8 +28,14 @@ module.exports.parse = function parse(text) { .then((result) => { times = result.times; + + return parseHouse(result.text); + }) + .then((result) => { + + houses = result.houses; replacedText = result.text; - return Promise.resolve({deviceTypes, rooms, times, replacedText}); + return Promise.resolve({deviceTypes, rooms, houses, times, replacedText}); }); }; \ No newline at end of file