diff --git a/conjugation/drill.html b/conjugation/drill.html
index 8acef95..e74b3e5 100644
--- a/conjugation/drill.html
+++ b/conjugation/drill.html
@@ -61,11 +61,6 @@
Trick questions (answers may be the same as the given form)
-
- [29th April 2017] Warning: I've noticed some issues with questions not enabled by default (e.g. て, passive, etc.) where I have used the phrase "plain form" incorrectly. Will fix soon.
-
-
-
When the test refers to negative て forms, they are assumed to be ~なくて and not ~ないで .
diff --git a/conjugation/drill.js b/conjugation/drill.js
index b388aeb..719d858 100644
--- a/conjugation/drill.js
+++ b/conjugation/drill.js
@@ -814,110 +814,110 @@ var words = {
var transformations = [
- { from: "negative", to: "plain", phrase: "affirmative", tags: ["plain", "negative"] },
- { from: "past", to: "plain", phrase: "present", tags: ["plain", "past"] },
- { from: "polite", to: "plain", phrase: "plain", tags: ["plain", "polite"] },
- { from: "te-form", to: "plain", phrase: "plain", tags: ["plain", "te-form"] },
- { from: "potential", to: "plain", phrase: "plain", tags: ["plain", "potential"] },
- { from: "imperative", to: "plain", phrase: "plain", tags: ["plain", "imperative"] },
- { from: "causative", to: "plain", phrase: "plain", tags: ["plain", "causative"] },
- { from: "passive", to: "plain", phrase: "plain", tags: ["plain", "passive"] },
- { from: "progressive" , to: "plain", phrase: "non-progressive", tags: ["plain", "progressive"] },
- { from: "plain", to: "negative", phrase: "negative", tags: ["plain", "negative"] },
- { from: "past negative", to: "negative", phrase: "present", tags: ["plain", "past", "negative"] },
- { from: "polite negative", to: "negative", phrase: "plain", tags: ["plain", "polite", "negative"] },
- { from: "te-form negative", to: "negative", phrase: "plain", tags: ["plain", "te-form", "negative"] },
- { from: "potential negative", to: "negative", phrase: "plain", tags: ["plain", "potential", "negative"] },
- { from: "imperative negative", to: "negative", phrase: "plain", tags: ["plain", "imperative", "negative"] },
- { from: "causative negative", to: "negative", phrase: "plain", tags: ["plain", "causative", "negative"] },
- { from: "passive negative", to: "negative", phrase: "plain", tags: ["plain", "passive", "negative"] },
- { from: "progressive negative", to: "negative", phrase: "non-progressive", tags: ["plain", "progressive", "negative"] },
- { from: "plain", to: "past", phrase: "past", tags: ["plain", "past"] },
- { from: "past negative" , to: "past", phrase: "affirmative", tags: ["plain", "past", "negative"] },
- { from: "polite past", to: "past", phrase: "plain", tags: ["plain", "polite", "past"] },
- { from: "progressive past", to: "past", phrase: "non-progressive", tags: ["plain", "progressive", "past"] },
- { from: "negative", to: "past negative", phrase: "past", tags: ["plain", "past", "negative"] },
- { from: "past", to: "past negative", phrase: "negative", tags: ["plain", "past", "negative"] },
- { from: "polite past negative", to: "past negative", phrase: "plain", tags: ["plain", "polite", "past", "negative"] },
- { from: "progressive past negative", to: "past negative", phrase: "non-progressive", tags: ["plain", "progressive", "past", "negative"] },
- { from: "plain", to: "polite", phrase: "polite", tags: ["plain", "polite"] },
- { from: "polite past", to: "polite", phrase: "present", tags: ["polite", "past"] },
- { from: "polite negative", to: "polite", phrase: "affirmative", tags: ["polite", "negative"] },
- { from: "polite progressive", to: "polite", phrase: "non-progressive", tags: ["polite", "progressive"] },
- { from: "past", to: "polite past", phrase: "polite", tags: ["plain", "past", "polite"] },
- { from: "polite", to: "polite past", phrase: "past", tags: ["past", "polite"] },
- { from: "polite past negative", to: "polite past", phrase: "affirmative", tags: ["polite", "past", "negative"] },
- { from: "polite progressive past", to: "polite past", phrase: "non-progressive", tags: ["polite", "progressive", "past"] },
- { from: "negative", to: "polite negative", phrase: "polite", tags: ["plain", "polite", "negative"] },
- { from: "polite", to: "polite negative", phrase: "negative", tags: ["polite", "negative"] },
- { from: "polite past negative", to: "polite negative", phrase: "present", tags: ["polite", "past", "negative"] },
- { from: "polite progressive negative", to: "polite negative", phrase: "non-progressive", tags: ["polite", "progressive", "negative"] },
- { from: "past negative", to: "polite past negative", phrase: "polite", tags: ["plain", "polite", "past", "negative"] },
- { from: "polite past", to: "polite past negative", phrase: "negative", tags: ["polite", "past", "negative"] },
- { from: "polite negative", to: "polite past negative", phrase: "past", tags: ["polite", "past", "negative"] },
- { from: "polite progressive past negative", to: "polite past negative", phrase: "non-progressive", tags: ["polite", "progressive", "past", "negative"] },
- { from: "plain" , to: "te-form", phrase: "て", tags: ["plain", "te-form"] },
- { from: "te-form negative" , to: "te-form", phrase: "affirmative", tags: ["plain", "te-form", "negative"] },
- { from: "te-form" , to: "te-form negative", phrase: "negative", tags: ["plain", "te-form", "negative"] },
- { from: "negative" , to: "te-form negative", phrase: "て", tags: ["plain", "te-form", "negative"] },
- { from: "plain" , to: "potential", phrase: "potential", tags: ["plain", "potential"] },
- { from: "potential negative" , to: "potential", phrase: "affirmative", tags: ["plain", "potential", "negative"] },
- { from: "potential" , to: "potential negative", phrase: "negative", tags: ["plain", "potential", "negative"] },
- { from: "negative" , to: "potential negative", phrase: "potential", tags: ["plain", "potential", "negative"] },
- { from: "plain" , to: "imperative", phrase: "imperative", tags: ["plain", "imperative"] },
- { from: "imperative negative" , to: "imperative", phrase: "affirmative", tags: ["plain", "imperative", "negative"] },
- { from: "imperative" , to: "imperative negative", phrase: "negative", tags: ["plain", "imperative", "negative"] },
- { from: "negative" , to: "imperative negative", phrase: "imperative", tags: ["plain", "imperative", "negative"] },
- { from: "plain" , to: "causative", phrase: "causative", tags: ["plain", "causative"] },
- { from: "causative negative" , to: "causative", phrase: "affirmative", tags: ["plain", "causative", "negative"] },
- { from: "causative passive" , to: "causative", phrase: "active", tags: ["plain", "causative", "passive"] },
- { from: "causative" , to: "causative negative", phrase: "negative", tags: ["plain", "causative", "negative"] },
- { from: "negative" , to: "causative negative", phrase: "causative", tags: ["plain", "causative", "negative"] },
- { from: "causative passive negative" , to: "causative negative", phrase: "active", tags: ["plain", "causative", "passive", "negative"] },
- { from: "plain" , to: "passive", phrase: "passive", tags: ["plain", "passive"] },
- { from: "passive negative" , to: "passive", phrase: "affirmative", tags: ["plain", "passive", "negative"] },
- { from: "causative passive" , to: "passive", phrase: "non-causative", tags: ["plain", "causative", "passive"] },
- { from: "passive" , to: "passive negative", phrase: "negative", tags: ["plain", "passive", "negative"] },
- { from: "negative" , to: "passive negative", phrase: "passive", tags: ["plain", "passive", "negative"] },
- { from: "causative passive negative" , to: "passive negative", phrase: "non-causative", tags: ["plain", "causative", "passive", "negative"] },
- { from: "causative" , to: "causative passive", phrase: "passive", tags: ["plain", "causative", "passive"] },
- { from: "passive" , to: "causative passive", phrase: "causative", tags: ["plain", "causative", "passive"] },
- { from: "causative passive negative" , to: "causative passive", phrase: "affirmative", tags: ["plain", "causative", "passive", "negative"] },
- { from: "causative negative" , to: "causative passive negative", phrase: "passive", tags: ["plain", "causative", "passive", "negative"] },
- { from: "passive negative" , to: "causative passive negative", phrase: "causative", tags: ["plain", "causative", "passive", "negative"] },
- { from: "causative passive" , to: "causative passive negative", phrase: "negative", tags: ["plain", "causative", "passive", "negative"] },
- { from: "plain", to: "progressive", phrase: "progressive", tags: ["plain", "progressive"] },
- { from: "polite progressive", to: "progressive", phrase: "plain", tags: ["plain", "polite", "progressive"] },
- { from: "progressive negative", to: "progressive", phrase: "affirmative", tags: ["plain", "progressive", "negative"] },
- { from: "progressive past", to: "progressive", phrase: "present", tags: ["plain", "progressive", "past"] },
- { from: "progressive", to: "progressive negative", phrase: "negative", tags: ["plain", "progressive", "negative"] },
- { from: "negative", to: "progressive negative", phrase: "progressive", tags: ["plain", "negative", "progressive"] },
- { from: "progressive past negative", to: "progressive negative", phrase: "present", tags: ["plain", "progressive", "past", "negative"] },
- { from: "polite progressive negative", to: "progressive negative", phrase: "plain", tags: ["plain", "polite", "progressive", "negative"] },
- { from: "progressive", to: "polite progressive", phrase: "polite", tags: ["plain", "progressive", "polite"] },
- { from: "polite", to: "polite progressive", phrase: "progressive", tags: ["polite", "progressive"] },
- { from: "polite progressive negative", to: "polite progressive", phrase: "affirmative", tags: ["polite", "progressive", "negative"] },
- { from: "polite progressive past", to: "polite progressive", phrase: "present", tags: ["polite", "progressive", "past"] },
- { from: "polite progressive", to: "polite progressive negative", phrase: "negative", tags: ["polite", "progressive", "negative"] },
- { from: "polite negative", to: "polite progressive negative", phrase: "progressive", tags: ["polite", "progressive", "negative"] },
- { from: "progressive negative", to: "polite progressive negative", phrase: "polite", tags: ["plain", "polite", "progressive", "negative"] },
- { from: "polite progressive past negative", to: "polite progressive negative", phrase: "present", tags: ["polite", "past", "progressive", "negative"] },
- { from: "past", to: "progressive past", phrase: "progressive", tags: ["plain", "past", "progressive"] },
- { from: "progressive", to: "progressive past", phrase: "past", tags: ["plain", "past", "progressive"] },
- { from: "progressive past negative", to: "progressive past", phrase: "affirmative", tags: ["plain", "progressive", "past", "negative"] },
- { from: "polite progressive past", to: "progressive past", phrase: "plain", tags: ["plain", "polite", "progressive", "past"] },
- { from: "past negative", to: "progressive past negative", phrase: "progressive", tags: ["plain", "progressive", "past", "negative"] },
- { from: "progressive negative", to: "progressive past negative", phrase: "past", tags: ["plain", "progressive", "past", "negative"] },
- { from: "progressive past", to: "progressive past negative", phrase: "negative", tags: ["plain", "progressive", "past", "negative"] },
- { from: "polite progressive past negative", to: "progressive past negative", phrase: "plain", tags: ["plain", "polite", "progressive", "past", "negative"] },
- { from: "polite past", to: "polite progressive past", phrase: "progressive", tags: ["polite", "progressive", "past"] },
- { from: "polite progressive" , to: "polite progressive past", phrase: "past", tags: ["polite", "progressive", "past"] },
- { from: "progressive past", to: "polite progressive past", phrase: "polite", tags: ["plain", "polite", "progressive", "past"] },
- { from: "polite progressive past negative", to: "polite progressive past", phrase: "affirmative", tags: ["polite", "progressive", "past", "negative"] },
- { from: "polite past negative", to: "polite progressive past negative", phrase: "progressive", tags: ["polite", "progressive", "past", "negative"] },
- { from: "progressive past negative", to: "polite progressive past negative", phrase: "polite", tags: ["plain", "polite", "progressive", "past", "negative"] },
- { from: "polite progressive past", to: "polite progressive past negative", phrase: "negative", tags: ["polite", "progressive", "past", "negative"] },
- { from: "polite progressive negative", to: "polite progressive past negative", phrase: "past", tags: ["polite", "progressive", "past", "negative"] },
+ { from: "negative", to: "plain", tags: ["plain", "negative"] },
+ { from: "past", to: "plain", tags: ["plain", "past"] },
+ { from: "polite", to: "plain", tags: ["plain", "polite"] },
+ { from: "te-form", to: "plain", tags: ["plain", "te-form"] },
+ { from: "potential", to: "plain", tags: ["plain", "potential"] },
+ { from: "imperative", to: "plain", tags: ["plain", "imperative"] },
+ { from: "causative", to: "plain", tags: ["plain", "causative"] },
+ { from: "passive", to: "plain", tags: ["plain", "passive"] },
+ { from: "progressive" , to: "plain", tags: ["plain", "progressive"] },
+ { from: "plain", to: "negative", tags: ["plain", "negative"] },
+ { from: "past negative", to: "negative", tags: ["plain", "past", "negative"] },
+ { from: "polite negative", to: "negative", tags: ["plain", "polite", "negative"] },
+ { from: "te-form negative", to: "negative", tags: ["plain", "te-form", "negative"] },
+ { from: "potential negative", to: "negative", tags: ["plain", "potential", "negative"] },
+ { from: "imperative negative", to: "negative", tags: ["plain", "imperative", "negative"] },
+ { from: "causative negative", to: "negative", tags: ["plain", "causative", "negative"] },
+ { from: "passive negative", to: "negative", tags: ["plain", "passive", "negative"] },
+ { from: "progressive negative", to: "negative", tags: ["plain", "progressive", "negative"] },
+ { from: "plain", to: "past", tags: ["plain", "past"] },
+ { from: "past negative" , to: "past", tags: ["plain", "past", "negative"] },
+ { from: "polite past", to: "past", tags: ["plain", "polite", "past"] },
+ { from: "progressive past", to: "past", tags: ["plain", "progressive", "past"] },
+ { from: "negative", to: "past negative", tags: ["plain", "past", "negative"] },
+ { from: "past", to: "past negative", tags: ["plain", "past", "negative"] },
+ { from: "polite past negative", to: "past negative", tags: ["plain", "polite", "past", "negative"] },
+ { from: "progressive past negative", to: "past negative", tags: ["plain", "progressive", "past", "negative"] },
+ { from: "plain", to: "polite", tags: ["plain", "polite"] },
+ { from: "polite past", to: "polite", tags: ["polite", "past"] },
+ { from: "polite negative", to: "polite", tags: ["polite", "negative"] },
+ { from: "polite progressive", to: "polite", tags: ["polite", "progressive"] },
+ { from: "past", to: "polite past", tags: ["plain", "past", "polite"] },
+ { from: "polite", to: "polite past", tags: ["past", "polite"] },
+ { from: "polite past negative", to: "polite past", tags: ["polite", "past", "negative"] },
+ { from: "polite progressive past", to: "polite past", tags: ["polite", "progressive", "past"] },
+ { from: "negative", to: "polite negative", tags: ["plain", "polite", "negative"] },
+ { from: "polite", to: "polite negative", tags: ["polite", "negative"] },
+ { from: "polite past negative", to: "polite negative", tags: ["polite", "past", "negative"] },
+ { from: "polite progressive negative", to: "polite negative", tags: ["polite", "progressive", "negative"] },
+ { from: "past negative", to: "polite past negative", tags: ["plain", "polite", "past", "negative"] },
+ { from: "polite past", to: "polite past negative", tags: ["polite", "past", "negative"] },
+ { from: "polite negative", to: "polite past negative", tags: ["polite", "past", "negative"] },
+ { from: "polite progressive past negative", to: "polite past negative", tags: ["polite", "progressive", "past", "negative"] },
+ { from: "plain" , to: "te-form", tags: ["plain", "te-form"] },
+ { from: "te-form negative" , to: "te-form", tags: ["plain", "te-form", "negative"] },
+ { from: "te-form" , to: "te-form negative", tags: ["plain", "te-form", "negative"] },
+ { from: "negative" , to: "te-form negative", tags: ["plain", "te-form", "negative"] },
+ { from: "plain" , to: "potential", tags: ["plain", "potential"] },
+ { from: "potential negative" , to: "potential", tags: ["plain", "potential", "negative"] },
+ { from: "potential" , to: "potential negative", tags: ["plain", "potential", "negative"] },
+ { from: "negative" , to: "potential negative", tags: ["plain", "potential", "negative"] },
+ { from: "plain" , to: "imperative", tags: ["plain", "imperative"] },
+ { from: "imperative negative" , to: "imperative", tags: ["plain", "imperative", "negative"] },
+ { from: "imperative" , to: "imperative negative", tags: ["plain", "imperative", "negative"] },
+ { from: "negative" , to: "imperative negative", tags: ["plain", "imperative", "negative"] },
+ { from: "plain" , to: "causative", tags: ["plain", "causative"] },
+ { from: "causative negative" , to: "causative", tags: ["plain", "causative", "negative"] },
+ { from: "causative passive" , to: "causative", tags: ["plain", "causative", "passive"] },
+ { from: "causative" , to: "causative negative", tags: ["plain", "causative", "negative"] },
+ { from: "negative" , to: "causative negative", tags: ["plain", "causative", "negative"] },
+ { from: "causative passive negative" , to: "causative negative", tags: ["plain", "causative", "passive", "negative"] },
+ { from: "plain" , to: "passive", tags: ["plain", "passive"] },
+ { from: "passive negative" , to: "passive", tags: ["plain", "passive", "negative"] },
+ { from: "causative passive" , to: "passive", tags: ["plain", "causative", "passive"] },
+ { from: "passive" , to: "passive negative", tags: ["plain", "passive", "negative"] },
+ { from: "negative" , to: "passive negative", tags: ["plain", "passive", "negative"] },
+ { from: "causative passive negative" , to: "passive negative", tags: ["plain", "causative", "passive", "negative"] },
+ { from: "causative" , to: "causative passive", tags: ["plain", "causative", "passive"] },
+ { from: "passive" , to: "causative passive", tags: ["plain", "causative", "passive"] },
+ { from: "causative passive negative" , to: "causative passive", tags: ["plain", "causative", "passive", "negative"] },
+ { from: "causative negative" , to: "causative passive negative", tags: ["plain", "causative", "passive", "negative"] },
+ { from: "passive negative" , to: "causative passive negative", tags: ["plain", "causative", "passive", "negative"] },
+ { from: "causative passive" , to: "causative passive negative", tags: ["plain", "causative", "passive", "negative"] },
+ { from: "plain", to: "progressive", tags: ["plain", "progressive"] },
+ { from: "polite progressive", to: "progressive", tags: ["plain", "polite", "progressive"] },
+ { from: "progressive negative", to: "progressive", tags: ["plain", "progressive", "negative"] },
+ { from: "progressive past", to: "progressive", tags: ["plain", "progressive", "past"] },
+ { from: "progressive", to: "progressive negative", tags: ["plain", "progressive", "negative"] },
+ { from: "negative", to: "progressive negative", tags: ["plain", "negative", "progressive"] },
+ { from: "progressive past negative", to: "progressive negative", tags: ["plain", "progressive", "past", "negative"] },
+ { from: "polite progressive negative", to: "progressive negative", tags: ["plain", "polite", "progressive", "negative"] },
+ { from: "progressive", to: "polite progressive", tags: ["plain", "progressive", "polite"] },
+ { from: "polite", to: "polite progressive", tags: ["polite", "progressive"] },
+ { from: "polite progressive negative", to: "polite progressive", tags: ["polite", "progressive", "negative"] },
+ { from: "polite progressive past", to: "polite progressive", tags: ["polite", "progressive", "past"] },
+ { from: "polite progressive", to: "polite progressive negative", tags: ["polite", "progressive", "negative"] },
+ { from: "polite negative", to: "polite progressive negative", tags: ["polite", "progressive", "negative"] },
+ { from: "progressive negative", to: "polite progressive negative", tags: ["plain", "polite", "progressive", "negative"] },
+ { from: "polite progressive past negative", to: "polite progressive negative", tags: ["polite", "past", "progressive", "negative"] },
+ { from: "past", to: "progressive past", tags: ["plain", "past", "progressive"] },
+ { from: "progressive", to: "progressive past", tags: ["plain", "past", "progressive"] },
+ { from: "progressive past negative", to: "progressive past", tags: ["plain", "progressive", "past", "negative"] },
+ { from: "polite progressive past", to: "progressive past", tags: ["plain", "polite", "progressive", "past"] },
+ { from: "past negative", to: "progressive past negative", tags: ["plain", "progressive", "past", "negative"] },
+ { from: "progressive negative", to: "progressive past negative", tags: ["plain", "progressive", "past", "negative"] },
+ { from: "progressive past", to: "progressive past negative", tags: ["plain", "progressive", "past", "negative"] },
+ { from: "polite progressive past negative", to: "progressive past negative", tags: ["plain", "polite", "progressive", "past", "negative"] },
+ { from: "polite past", to: "polite progressive past", tags: ["polite", "progressive", "past"] },
+ { from: "polite progressive" , to: "polite progressive past", tags: ["polite", "progressive", "past"] },
+ { from: "progressive past", to: "polite progressive past", tags: ["plain", "polite", "progressive", "past"] },
+ { from: "polite progressive past negative", to: "polite progressive past", tags: ["polite", "progressive", "past", "negative"] },
+ { from: "polite past negative", to: "polite progressive past negative", tags: ["polite", "progressive", "past", "negative"] },
+ { from: "progressive past negative", to: "polite progressive past negative", tags: ["plain", "polite", "progressive", "past", "negative"] },
+ { from: "polite progressive past", to: "polite progressive past negative", tags: ["polite", "progressive", "past", "negative"] },
+ { from: "polite progressive negative", to: "polite progressive past negative", tags: ["polite", "progressive", "past", "negative"] },
];
var log;
@@ -974,7 +974,7 @@ function getVerbForms(entry) {
function kanaForm(word) {
return word.split(/.\[([^\]]*)\]/).join("");
}
-
+
function kanjiForm(word) {
return word.split(/(.)\[[^\]]*\]/).join("");
}
@@ -1054,7 +1054,7 @@ function processAnswerKey() {
"nb" : "んb", "nc" : "んc", "nd" : "んd", "nf" : "んf", "ng" : "んg",
"nh" : "んh", "nj" : "んj", "nk" : "んk", "nl" : "んl", "nm" : "んm",
"np" : "んp", "nq" : "んq", "nr" : "んr", "ns" : "んs", "nt" : "んt",
- "nv" : "んv", "nw" : "んw", "nx" : "んx", "nz" : "んz",
+ "nv" : "んv", "nw" : "んw", "nx" : "んx", "nz" : "んz",
"aa" : "っa", "bb" : "っb", "cc" : "っc", "dd" : "っd", "ee" : "っe",
"ff" : "っf", "gg" : "っg", "hh" : "っh", "ii" : "っi", "jj" : "っj",
@@ -1098,7 +1098,7 @@ function processAnswerKey() {
}
function generateQuestion() {
-
+
var entry;
var to_form;
var from_form;
@@ -1112,7 +1112,7 @@ function generateQuestion() {
showSplash();
return;
}
-
+
entry = Object.keys(words).randomElement();
transformation = transformations.randomElement();
@@ -1197,7 +1197,7 @@ function processAnswer() {
$('#answer').val("");
$('#response').prop('class', klass).text(response);
$('#next').prop('disabled', false);
-
+
if ((response == window.answer) || (response == window.answer2)) {
$('#message').html("");
} else {
@@ -1224,9 +1224,9 @@ function updateHistoryView(log) {
var header_tr = $('');
- header_tr.append($('Question '));
- header_tr.append($('Answer '));
- header_tr.append($('Response '));
+ header_tr.append($('Question '));
+ header_tr.append($('Answer '));
+ header_tr.append($('Response '));
review.append(header_tr);
@@ -1240,9 +1240,9 @@ function updateHistoryView(log) {
var tr = $(' ');
- var td1 = $('');
- var td2 = $(' ');
- var td3 = $(' ');
+ var td1 = $(' ');
+ var td2 = $(' ');
+ var td3 = $(' ');
td1.html(entry.question);
td2.html(entry.answer);
@@ -1307,7 +1307,64 @@ function updateTeNotice() {
}
}
-$('window').ready(function() {
+function arrayDifference(a, b) {
+ // From http://stackoverflow.com/a/1723220
+ return a.filter(function(x) { return b.indexOf(x) < 0 });
+}
+
+function calculateTransitions() {
+
+ function getTags(str) {
+
+ var tags = str.split(" ");
+
+ if ((tags.length == 1) && (tags[0] == "plain")) {
+ tags = [];
+ }
+
+ return tags;
+ }
+
+ transformations.forEach(function (transformation) {
+
+ var from = getTags(transformation.from);
+ var to = getTags(transformation.to);
+
+ var from_extra = {
+ "negative": "affirmative",
+ "past": "present",
+ "polite": "plain",
+ "te-form": "non-て",
+ "potential": "non-potential",
+ "imperative": "non-imperative",
+ "causative": "non-causative",
+ "passive": "active",
+ "progressive": "non-progressive",
+ };
+
+ var to_extra = {
+ "negative": "negative",
+ "past": "past",
+ "polite": "polite",
+ "te-form": "て",
+ "potential": "potential",
+ "imperative": "imperative",
+ "causative": "causative",
+ "passive": "passive",
+ "progressive": "progressive",
+ };
+
+ var phrase;
+
+ phrase = phrase || from_extra[arrayDifference(from, to)[0]];
+ phrase = phrase || to_extra[arrayDifference(to, from)[0]];
+
+ if (phrase == undefined) {
+ throw "wobbly";
+ }
+
+ transformation.phrase = phrase;
+ });
// Add trick forms
@@ -1329,6 +1386,11 @@ $('window').ready(function() {
});
transformations = transformations.concat(trick_forms);
+}
+
+$('window').ready(function() {
+
+ calculateTransitions();
$('#go').click(startQuiz);
$('#backToStart').click(showSplash);