diff --git a/nodes/core/analysis/72-sentiment.html b/nodes/core/analysis/72-sentiment.html deleted file mode 100644 index 0ba1ccade..000000000 --- a/nodes/core/analysis/72-sentiment.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - diff --git a/nodes/core/analysis/72-sentiment.js b/nodes/core/analysis/72-sentiment.js deleted file mode 100644 index ff0cf33e8..000000000 --- a/nodes/core/analysis/72-sentiment.js +++ /dev/null @@ -1,23 +0,0 @@ - -module.exports = function(RED) { - "use strict"; - var sentiment = require('sentiment'); - - function SentimentNode(n) { - RED.nodes.createNode(this,n); - this.property = n.property||"payload"; - var node = this; - - this.on("input", function(msg) { - var value = RED.util.getMessageProperty(msg,node.property); - if (value !== undefined) { - sentiment(value, msg.overrides || null, function (err, result) { - msg.sentiment = result; - node.send(msg); - }); - } - else { node.send(msg); } // If no matching property - just pass it on. - }); - } - RED.nodes.registerType("sentiment",SentimentNode); -} diff --git a/nodes/core/locales/en-US/messages.json b/nodes/core/locales/en-US/messages.json index d59f3d1bf..079e64da9 100644 --- a/nodes/core/locales/en-US/messages.json +++ b/nodes/core/locales/en-US/messages.json @@ -6,7 +6,8 @@ "name": "Name", "username": "Username", "password": "Password", - "property": "Property" + "property": "Property", + "language": "Language" }, "status": { "connected": "connected", diff --git a/package.json b/package.json index be2fec970..3c5a1c6c6 100644 --- a/package.json +++ b/package.json @@ -60,6 +60,7 @@ "node-red-node-email": "0.1.*", "node-red-node-feedparser": "0.1.*", "node-red-node-rbe": "0.2.*", + "node-red-node-sentiment": "^0.1.0", "node-red-node-twitter": "*", "nopt": "4.0.1", "oauth2orize": "1.11.0", @@ -70,7 +71,6 @@ "raw-body": "2.3.3", "request": "2.87.0", "semver": "5.5.0", - "sentiment": "2.1.0", "uglify-js": "3.3.25", "when": "3.7.8", "ws": "1.1.5", diff --git a/test/nodes/core/analysis/72-sentiment_spec.js b/test/nodes/core/analysis/72-sentiment_spec.js deleted file mode 100644 index d2272f7b3..000000000 --- a/test/nodes/core/analysis/72-sentiment_spec.js +++ /dev/null @@ -1,178 +0,0 @@ -/** - * Copyright JS Foundation and other contributors, http://js.foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - **/ - -var should = require("should"); -var sentimentNode = require("../../../../nodes/core/analysis/72-sentiment.js"); -var helper = require("node-red-node-test-helper"); - -describe('sentiment Node', function() { - - before(function(done) { - helper.startServer(done); - }); - - after(function(done) { - helper.stopServer(done); - }); - - afterEach(function() { - helper.unload(); - }); - - it('should be loaded', function(done) { - var flow = [{id:"sentimentNode1", type:"sentiment", name: "sentimentNode" }]; - helper.load(sentimentNode, flow, function() { - var sentimentNode1 = helper.getNode("sentimentNode1"); - sentimentNode1.should.have.property('name', 'sentimentNode'); - done(); - }); - }); - - it('should pass on msg if no payload', function(done) { - var flow = [{id:"jn1",type:"sentiment",wires:[["jn2"]]}, - {id:"jn2", type:"helper"}]; - helper.load(sentimentNode, flow, function() { - var jn1 = helper.getNode("jn1"); - var jn2 = helper.getNode("jn2"); - jn2.on("input", function(msg) { - msg.should.not.have.property('sentiment'); - msg.topic.should.equal("pass on"); - done(); - }); - var testString = 'good, great, best, brilliant'; - jn1.receive({topic:"pass on"}); - }); - }); - - it('should add a positive score for good words', function(done) { - var flow = [{id:"jn1",type:"sentiment",wires:[["jn2"]]}, - {id:"jn2", type:"helper"}]; - helper.load(sentimentNode, flow, function() { - var jn1 = helper.getNode("jn1"); - var jn2 = helper.getNode("jn2"); - jn2.on("input", function(msg) { - try { - msg.should.have.property('sentiment'); - msg.sentiment.should.have.property('score'); - msg.sentiment.score.should.be.a.Number(); - msg.sentiment.score.should.be.above(10); - done(); - } catch(err) { - done(err); - } - }); - var testString = 'good, great, best, brilliant'; - jn1.receive({payload:testString}); - }); - }); - - it('should add a positive score for good words - alternative property', function(done) { - var flow = [{id:"jn1",type:"sentiment",property:"foo",wires:[["jn2"]]}, - {id:"jn2", type:"helper"}]; - helper.load(sentimentNode, flow, function() { - var jn1 = helper.getNode("jn1"); - var jn2 = helper.getNode("jn2"); - jn2.on("input", function(msg) { - try { - msg.should.have.property('sentiment'); - msg.sentiment.should.have.property('score'); - msg.sentiment.score.should.be.a.Number(); - msg.sentiment.score.should.be.above(10); - done(); - } catch(err) { - done(err); - } - }); - var testString = 'good, great, best, brilliant'; - jn1.receive({foo:testString}); - }); - }); - - it('should add a negative score for bad words', function(done) { - var flow = [{id:"jn1",type:"sentiment",wires:[["jn2"]]}, - {id:"jn2", type:"helper"}]; - helper.load(sentimentNode, flow, function() { - var jn1 = helper.getNode("jn1"); - var jn2 = helper.getNode("jn2"); - jn2.on("input", function(msg) { - msg.should.have.property('sentiment'); - msg.sentiment.should.have.property('score'); - msg.sentiment.score.should.be.a.Number(); - msg.sentiment.score.should.be.below(-10); - done(); - }); - var testString = 'bad, horrible, negative, awful'; - jn1.receive({payload:testString}); - }); - }); - - it('should add a negative score for bad words - alternative property', function(done) { - var flow = [{id:"jn1",type:"sentiment",property:"foo",wires:[["jn2"]]}, - {id:"jn2", type:"helper"}]; - helper.load(sentimentNode, flow, function() { - var jn1 = helper.getNode("jn1"); - var jn2 = helper.getNode("jn2"); - jn2.on("input", function(msg) { - msg.should.have.property('sentiment'); - msg.sentiment.should.have.property('score'); - msg.sentiment.score.should.be.a.Number(); - msg.sentiment.score.should.be.below(-10); - done(); - }); - var testString = 'bad, horrible, negative, awful'; - jn1.receive({foo:testString}); - }); - }); - - it('should allow you to override word scoring', function(done) { - var flow = [{id:"jn1",type:"sentiment",wires:[["jn2"]]}, - {id:"jn2", type:"helper"}]; - helper.load(sentimentNode, flow, function() { - var jn1 = helper.getNode("jn1"); - var jn2 = helper.getNode("jn2"); - jn2.on("input", function(msg) { - msg.should.have.property('sentiment'); - msg.sentiment.should.have.property('score'); - msg.sentiment.score.should.be.a.Number(); - msg.sentiment.score.should.equal(20); - done(); - }); - var testString = 'sick, wicked'; - var overrides = {'sick': 10, 'wicked': 10 }; - jn1.receive({payload:testString,overrides:overrides}); - }); - }); - - it('should allow you to override word scoring - alternative property', function(done) { - var flow = [{id:"jn1",type:"sentiment",property:"foo",wires:[["jn2"]]}, - {id:"jn2", type:"helper"}]; - helper.load(sentimentNode, flow, function() { - var jn1 = helper.getNode("jn1"); - var jn2 = helper.getNode("jn2"); - jn2.on("input", function(msg) { - msg.should.have.property('sentiment'); - msg.sentiment.should.have.property('score'); - msg.sentiment.score.should.be.a.Number(); - msg.sentiment.score.should.equal(20); - done(); - }); - var testString = 'sick, wicked'; - var overrides = {'sick': 10, 'wicked': 10 }; - jn1.receive({foo:testString,overrides:overrides}); - }); - }); - -});