Skip to content

Instantly share code, notes, and snippets.

@jdoleary
Created November 25, 2015 05:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jdoleary/f72e4516d2c2d751581f to your computer and use it in GitHub Desktop.
Save jdoleary/f72e4516d2c2d751581f to your computer and use it in GitHub Desktop.
Subject Object
<div class="instructions"></div>
<div class="nouns"></div>
<div class="verbs"></div>
<div class='text'><span class="word1"></span></div>
<div class="result"></div>
/*
Todo:
Compound Sentenses
Conjunctions (including "to" for compound sentenses)
Use split / splice to not consider subject phrase when getting object
*/
var domText = "";
var selector = '.word1';
$(window).keypress(function(e) {
var key = e.which || e.keyCode;
if (key == 13) {
//enter
tokenize();
} else {
domText += String.fromCharCode(key);
$(selector).text(domText);
}
});
var tokens;
function tokenize() {
var text = $(selector).text().toLowerCase();
// Clear:
$(selector).text('');
domText = '';
var words = text.split(' ');
$('.result').html(JSON.stringify(words));
tokens = {
sub: null,
verb: null,
ob: null
};
// To be divided by the verb
var subject_phrase = [];
var object_phrase = [];
var prepositional_phrase = [];
for (var i = 0; i < words.length; i++) {
// Determine the verb
if (verbs.indexOf(words[i]) != -1) {
tokens.verb = words[i];
subject_phrase = words.slice(0,i);
object_phrase = words.slice(i+1);
}
}
for(var i = 0; i < object_phrase.length; i++){
// Determine prepositional phrase
debugger;
if(prepositions.indexOf(object_phrase[i]) != -1){
prepositional_phrase = object_phrase.slice(i+1);
object_phrase = object_phrase.slice(0,i);
}
}
for(var i = 0; i < prepositional_phrase.length; i++){
// Determine object of preposition
debugger;
if (subjects.indexOf(prepositional_phrase[i]) != -1) {
tokens.object_of_prep = prepositional_phrase[i];
break;
}
}
// Iterate and identify words
for (var i = 0; i < subject_phrase.length; i++) {
// Determine the subject
if (subjects.indexOf(subject_phrase[i]) != -1) {
tokens.sub = subject_phrase[i];
// Remove the subject and everything before it from words, so that it won't be considered later.
//words = words.slice(i);
break;
}
}
if (tokens.sub == null) {
// Implied you
tokens.sub = "you";
}
for (var i = 0; i < object_phrase.length; i++) {
// Determine the object
if (subjects.indexOf(object_phrase[i]) != -1) {
tokens.ob = object_phrase[i];
}
}
$('.result').append('<br/>' + JSON.stringify(tokens));
}
var subjects = [
'rock',
'I',
'you',
'joe',
'bill'
];
var verbs = [
'get',
'tell',
'go',
'bring'
];
var prepositions = [
'to'
];
// Lowercase everything:
subjects = _.map(subjects, function(s){
return _.isString(s) ? s.toLowerCase() : s;
});
verbs = _.map(verbs, function(s){
return _.isString(s) ? s.toLowerCase() : s;
});
prepositions = _.map(prepositions, function(s){
return _.isString(s) ? s.toLowerCase() : s;
});
$('.instructions').text('Try using the following words in a sentence:');
$('.nouns').text(JSON.stringify(subjects));
$('.verbs').text(JSON.stringify(verbs));
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/gsap/1.8.4/TweenMax.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/lodash.js/3.5.0/lodash.min.js"></script>
.text{
}
.result{
position:absolute;
color:red;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment