summaryrefslogtreecommitdiff
path: root/scripts/textanalysis.js
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/textanalysis.js')
-rw-r--r--scripts/textanalysis.js172
1 files changed, 132 insertions, 40 deletions
diff --git a/scripts/textanalysis.js b/scripts/textanalysis.js
index 4996f80d..31e6cd43 100644
--- a/scripts/textanalysis.js
+++ b/scripts/textanalysis.js
@@ -12,6 +12,7 @@ var newlink = "";
var ExecutionStack = [];
+var lastnode;
$('#textanalyser').autocompleteTrigger({
triggerStart: '#',
@@ -20,47 +21,57 @@ $('#textanalyser').autocompleteTrigger({
});
$('#textanalyser').submit(function () {
- if (previousorder === "EDITNODE") {
- $('#textanalyser').val(text + " ");
- }
+ //finalize text input, empty
+ text=$('#textanalyser').val();
+
+ $('#textanalyser').val("");
+ TextAnalyser2(text,true);
return false;
});
$(document).keydown(function (e) {
//RIGHT
- if (e.keyCode == 37 && (previousorder === "EDITNODE" || previousorder === "NEWNODE")) {
- changeType(null, "up");
+ if (e.keyCode == 37 ) {
+ e.preventDefault();
+ changeType("up",lastnode);
return false;
}
//LEFT
- if (e.keyCode == 39 && (previousorder === "EDITNODE" || previousorder === "NEWNODE")) {
- changeType(null, "down");
+ if (e.keyCode == 39 ) {
+ e.preventDefault();
+ changeType("down",lastnode);
return false;
}
- //DELTE
- if (e.keyCode == 46 || e.keyCode == 8) {
- if (previousorder === "CLOSENODE" || previousorder === "NEWNODE") return false;
+ if (e.keyCode == 13) {
+ text=$('#textanalyser').val();
+
+ $('#textanalyser').val("");
+ TextAnalyser2(text,true);
+
+ return false;
+
}
});
-function changeType(arg, id) {
+function changeType(arg,id) {
if (arg === 'up') {
if (typeindex < 4) typeindex++;
else typeindex = 0;
- graph.editType(id, "temp", nodetypes[typeindex]);
+ graph.editType(id, null, nodetypes[typeindex]);
$('.typeselection').html('<table><tr><td style="height:28px"></td></tr><tr><td>' + "Chosen Type: " + nodetypes[typeindex] + '</td></tr></table>');
} else {
if (typeindex > 0) typeindex--;
else typeindex = 4;
- if (previousorder === "EDITNODE") graph.editType(id, "temp", nodetypes[typeindex]);
+ graph.editType(id, null, nodetypes[typeindex]);
$('.typeselection').html('<table><tr><td style="height:28px"></td></tr><tr><td>' + "Chosen Type: " + nodetypes[typeindex] + '</td></tr></table>');
}
+ graph.updateGraph();
}
@@ -72,9 +83,7 @@ window.setInterval(function () {
$('.typeselection').css('left', 0);
// text changed
text = $('#textanalyser').val();
- //console.log(text);
- ExecutionStack.push(text);
- TextAnalyser(text);
+ TextAnalyser2(text,false);
}
}, 5);
@@ -85,13 +94,17 @@ window.setInterval(function () {
var sentenceStack = [];
-function TextAnalyser2(newtext) {
+var nodeindex,linkindex;
+
+function TextAnalyser2(newtext,finalize) {
var states = ["NOTHING", "NEWNODE", "EDITNODE", "CLOSENODE", "NEWLINK", "EDITLINK" , "SPECIAL" , "QUARTET"];
var segment = [], subsegment = [], sentence = [];
- var links=[],linkindex=0;
- var nodes=[],nodeindex=0;
+ var newlinks=[];linkindex=0;
+ var newnodes=[];nodeindex=0;
var orderStack = [];
var quoteword="";
+ var ANDcase=false;
+ var prefix="";
//Sentence Sequencing
//Build the words and cuts the main elements
@@ -99,6 +112,9 @@ function TextAnalyser2(newtext) {
for(var j=0;j<segment.length;j++){
if(j!==0)sentence.push("#");
subsegment=segment[j].split(" ");
+ if(subsegment.length===0){
+ sentence.push(" ");
+ }
for(var k=0;k<subsegment.length;k++){
if(subsegment[k]!==" " && subsegment[k]!==""){
if(subsegment[k].charAt(0)==='"'){
@@ -108,60 +124,136 @@ function TextAnalyser2(newtext) {
k++;
}while(k<subsegment.length && subsegment[k].charAt(subsegment[k].length-1)!=='"');
if(k<subsegment.length)quoteword+=subsegment[k];
- sentence.push(quoteword);
+ sentence.push(quoteword.replace(/"/g, ""));
}else{
sentence.push(subsegment[k]);
}
}
}
}
-
+
for(var m=0;m<sentence.length;m++){
switch(sentence[m]){
case "#":
orderStack.push("START");
break;
case "and": case "+": case ",":
- orderStack.push("AND");
+ //orderStack.push("AND");
default:
if(orderStack[orderStack.length-1]==="START"){
- //if(linkindex===0){links[linkindex+1]=sentence[m-2]+" ";}
- nodes.push(sentence[m]);
- if(m>2) if(!links[linkindex]){links[linkindex]=sentence[m]; }else{ links[linkindex]+=sentence[m]; }
+ orderStack.push("NODE");
+ newnodes.push(sentence[m]);
linkindex++;
- }
- if(!links[linkindex]){links[linkindex]=sentence[m]+" "; }else{ links[linkindex]+=sentence[m]+" ";}
- orderStack.push("DEFAULT");
+ }else if(orderStack[orderStack.length-1]==="NODE"){
+ orderStack.push("LINK");
+
+ if(!newlinks[linkindex]){newlinks[linkindex]=sentence[m]+" "; }
+ else{ newlinks[linkindex]+=sentence[m]+" ";}
+ }else{
+ if(!newlinks[linkindex]){newlinks[linkindex]=sentence[m]+" "; }
+ else{ newlinks[linkindex]+=sentence[m]+" ";}
+ }
+ if(newnodes.length===0)prefix+=sentence[m]+" ";
break;
}
}
+ if(prefix)newlinks[1]+="("+prefix+")";
- console.log(orderStack);
- console.log(nodes);
- console.log(links);
-
+ //WRITE COMPLETE SENTENCE
linkindex=0;
nodeindex=0;
- var word;
+ var word="";
+ var completeSentence="";
for(var m=0; m<orderStack.length;m++){
if(orderStack[m]==="NODE"){
- word+=" ("+nodes[nodeindex]+") ";
+ word+=" ("+newnodes[nodeindex]+") ";
+ completeSentence+=newnodes[nodeindex]+" ";
nodeindex++;
}else if(orderStack[m]==="LINK"){
linkindex++;
+ word+=" -->"+newlinks[linkindex]+" --> ";
+ completeSentence+=newlinks[linkindex];
}
}
- console.log(word);
- //graph engine
- graph.removeNode(null,"temp");
- for(var n=0;n<nodes.length;n++){
- graph.addNode(nodes[n],nodetypes[typeindex],"temp");
+ //REBUILD GRAPH
+ linkindex=0;
+ nodeindex=0;
+
+ var typesetter="";
+ if(finalize===false)typesetter="temp";
+ else typesetter="perm";
+
+ graph.removeNodes("temp");
+ graph.removeLinks("temp");
+
+ if(orderStack.length>0)graph.addNode("","bubble","temp");
+ //0-N ORDER STACK
+ for(var m=0; m<orderStack.length-1;m++){
+ switch(orderStack[m]){
+ case "NODE":
+ graph.addNode(newnodes[nodeindex],nodetypes[typeindex],typesetter);
+ if(newnodes.length<4)graph.addLink(newnodes[nodeindex-1],newnodes[nodeindex],newlinks[linkindex],typesetter);
+ ANDcase=ANDconnect(newnodes[nodeindex]);
+ nodeindex++;
+ break;
+ case "LINK":
+ linkindex++;
+ break;
+ }
}
+ //FINAL N ORDER
+ switch(orderStack[orderStack.length-1]){
+ case "START":
+ graph.addNode("new node",nodetypes[typeindex],typesetter);
+ if(newnodes.length<4)graph.addLink(newnodes[nodeindex-1],"new node",newlinks[linkindex],typesetter);
+ ANDcase=ANDconnect("new node");
+ break;
+ case "NODE":
+ graph.addNode(newnodes[nodeindex],nodetypes[typeindex],typesetter);
+ if(newnodes.length<4)graph.addLink(newnodes[nodeindex-1],newnodes[nodeindex],newlinks[linkindex],typesetter);
+ ANDcase=ANDconnect(newnodes[nodeindex]);
+ break;
+ case "LINK":
+ linkindex++;
+ graph.addNode("new node","empty",typesetter);
+ if(newnodes.length<4)graph.addLink(newnodes[nodeindex-1],"new node",newlinks[linkindex],typesetter);
+ ANDcase=ANDconnect("new node");
+ break;
+ }
+ function ANDconnect(node){
+ if(newlinks[linkindex-1])if(newnodes[nodeindex-2])if(newlinks[linkindex-1].replace(/ /g, "")=="and" && newlinks[linkindex].replace(/ /g, "")!=="and"){
+ if(newnodes.length<4)graph.addLink(newnodes[nodeindex-2],node,newlinks[linkindex],typesetter);
+ return true;
+ }
+ }
+ //STAR CASE
+ var verb="";
+ if(newnodes.length>=4){
+ for(var l=1;l<newlinks.length;l++){
+ if(newlinks[l])if(newlinks[l].replace(/ /g,"")!=="and"){
+ verb=newlinks[l];
+ }
+ }
+ graph.addNode(completeSentence,"chainlink",typesetter);
+ for(var n=0;n<newnodes.length;n++){graph.addLink(newnodes[n],completeSentence,verb,typesetter);}
+ }
+
+ lastnode=newnodes[nodeindex];
+ //UPDATE GRAPH ONCE
+ graph.update();
}
+/*
+
+
+
+
+
+
+
function TextAnalyser(newtext) {
@@ -318,7 +410,7 @@ function TextAnalyser(newtext) {
}
-
+*/
function Unique(newnode) {