Major site redesign.

This commit is contained in:
doncr 2020-08-07 02:05:59 +01:00
parent 8ed82506a1
commit fcf60e22e9
4 changed files with 942 additions and 712 deletions

View File

@ -59,9 +59,15 @@ body, input {
/* Responsive text size */
@media (max-width: 575px) {
.navbar-brand {
font-size: 1.15rem;
}
}
/* Small devices (landscape phones, 576px and up) */
@media (min-width: 576px) {
#question {
font-size: 32px;
}
@ -78,6 +84,7 @@ body, input {
/* Medium devices (tablets, 768px and up) */
@media (min-width: 768px) {
#question {
font-size: 40px;
}
@ -94,6 +101,7 @@ body, input {
/* Large devices (desktops, 992px and up) */
@media (min-width: 992px) {
#question {
font-size: 40px;
}
@ -110,6 +118,7 @@ body, input {
/* Extra large devices (large desktops, 1200px and up) */
@media (min-width: 1200px) {
#question {
font-size: 40px;
}
@ -255,6 +264,7 @@ table.chart span.change,
table.word span.change {
color: #f06060;
}
*/
.answer-correct {
color: red;
@ -264,6 +274,7 @@ table.word span.change {
color: blue;
}
/*
div#history table {
border-collapse: collapse;
}
@ -508,8 +519,8 @@ h2, h4 {
font-weight: bold;
}
.options h4 {
}
/* .options h4 {
} */
/*
.explain-answer-as-list li {
list-style-type: none;
@ -546,7 +557,24 @@ h2, h4 {
100% { transform: translate(0px, 0px); }
}
.shakeIt {
.shake {
animation: shake 0.75s;
animation-iteration-count: 1;
}
dl.questionOptions {
display: table;
}
dl.questionOptions > div {
display: table-row;
}
dl.questionOptions dt {
font-weight: 400;
display: table-cell;
}
dl.questionOptions dd {
display: table-cell;
}

View File

@ -15,14 +15,9 @@
<body>
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
<!-- <nav class="navbar navbar-expand-lg navbar-dark bg-dark">
<a class="navbar-brand" href="/conjugation/drill.html">
<span class="d-none d-sm-block">
Don's Japanese Conjugation Drill
</span>
<span class="d-block d-sm-none">
Don's Japanese<br>Conjugation Drill
</span>
</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
@ -58,7 +53,7 @@
Tests
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<a class="dropdown-item" href="#">Godan stem drill</a>
<a class="dropdown-item" href="#">Godan verb te/ta form</a>
<a class="dropdown-item" href="#">来る drill</a>
</div>
</li>
@ -75,24 +70,28 @@
</li>
</ul>
</div>
</nav>
</nav> -->
<div id="splash" class="container mt-4">
<!-- <h2 class="text-center d-none d-sm-block">Don's Japanese Conjugation Drill</h2>-->
<h2 class="text-center">Don's Japanese Conjugation Drill</h2>
<h2 class="text-center mb-md-4">Don's Japanese Conjugation Drill</h2>
<div class="form-group row">
<label for="numQuestions" class="col-6 col-form-label">Number of Questions</label>
<div class="col-6">
<input class="mb-2 mr-sm-2 form-control" type="number" placeholder="Questions" aria-label="Number of Questions" aria-describedby="basic-addon2" id="numQuestions" value="10">
<div class="row">
<dl class="questionOptions mx-auto mb-0">
<div class="form-group">
<dt>
<label for="numQuestions" class="col-form-label">Number of Questions</label>
</dt>
<dd>
<input class="mb-2 ml-2 form-control" style="width: 100%" type="number" placeholder="Questions" aria-label="Number of Questions" aria-describedby="basic-addon2" id="numQuestions" value="2">
</dd>
</div>
</div>
<div class="form-group row">
<label for="questionFocus" class="col-6 col-form-label">Question Focus</label>
<div class="col-6">
<select id="questionFocus" class="form-control mb-2 mr-sm-2">
<div class="form-group">
<dt>
<label for="questionFocus" class="col-form-label">Question Focus</label>
</dt>
<dd>
<select id="questionFocus" class="form-control ml-2">
<option value="none">None</option>
<option value="politeness">Politeness</option>
<option value="negative">Negative</option>
@ -105,8 +104,11 @@
<option value="imperative">Imperative</option>
<option value="passive">Passive</option>
<option value="causative">Causative</option>
<option value="tetakei">Godan て / た form</option>
</select>
</dd>
</div>
</dl>
</div>
<div class="row">
@ -147,8 +149,8 @@
<div class="form-group">
<div style="display: inline-block">
<h4 class="text-left mt-2 mb-4">Verbs</h4>
<div class="text-left ml-1 form-check"><input class="form-check-input" type="checkbox" id="godan" checked><label for="godan" class="form-check-label">Group 1 verbs</label></div>
<div class="text-left ml-1 form-check"><input class="form-check-input" type="checkbox" id="ichidan" checked><label for="ichidan" class="form-check-label">Group 2 verbs</label></div>
<div class="text-left ml-1 form-check"><input class="form-check-input" type="checkbox" id="godan" checked><label for="godan" class="form-check-label">Godan verbs</label></div>
<div class="text-left ml-1 form-check"><input class="form-check-input" type="checkbox" id="ichidan" checked><label for="ichidan" class="form-check-label">Ichidan verbs</label></div>
<div class="text-left ml-1 specials">Special cases</div>
<div class="text-left ml-1 form-check"><input class="form-check-input" type="checkbox" id="iku" checked><label for="iku" class="form-check-label">行く verb</label></div>
<div class="text-left ml-1 form-check"><input class="form-check-input" type="checkbox" id="kuru" checked><label for="kuru" class="form-check-label">来る verb</label></div>
@ -185,14 +187,36 @@
</div>
<div id="scoreSection" class="mt-4">
<div id="scoreSection" class="mt-4 ml-4 mr-4">
<div id="scoreSectionTitle"></div>
<div id="history">
<div class="row">
<div class="col-12">
<div id="scoreSectionTitle" class="text-center"></div>
</div>
</div>
<button class="btn btn-primary mb-2 mr-sm-2" id="backToStart">Back to Start</button>
<div class="row">
<div class="col-12">
<div class="d-md-none">
<div id="history"></div>
</div>
<div class="d-none d-md-block">
<div id="history"></div>
</div>
</div>
</div>
<div class="row">
<div class="col-12">
<div class="text-center">
<button class="btn btn-primary mb-2" id="backToStart">Back to Start</button>
</div>
</div>
</div>
<div class="row col-12 mt-4 mx-auto">
</div>
</div>
@ -218,12 +242,14 @@
<button id="responseButton" onclick="javascript:proceed()">
</button>
<div class="ml-4 mr-4" id="message">
<div class="ml-4 mr-4 text-center" id="message">
</div>
</div>
<div style="display: none" id="explanation" class="mt-4 ml-4 mr-4">
<div class="row ml-4 mr-4">
<div style="display: none" id="explanation" class="mt-4 col mx-auto">
<h3>1. Recognise the given form</h3>
@ -254,10 +280,15 @@
<ul class="explain-answer-as-list"></ul>
</div>
<button id="explain-proceed-button" class="centre btn btn-primary mb-2 mr-sm-2" onclick="javascript:proceed()">OK, next question</button>
<div class="row col-12 mt-4">
<button id="explain-proceed-button" class="centre btn btn-primary mb-2 mx-auto" onclick="javascript:proceed()">OK, next question</button>
</div>
</div>
</div>
</div>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>

View File

@ -104,9 +104,9 @@ function getVerbForms(entry) {
};
Object.keys(words[entry].conjugations).forEach(function (key) {
result["kanji"][key] = kanjiForm(words[entry].conjugations[key]);
result["hiragana"][key] = kanaForm(words[entry].conjugations[key]);
result["furigana"][key] = words[entry].conjugations[key];
result["kanji"][key] = kanjiForm(words[entry].conjugations[key].forms);
result["hiragana"][key] = kanaForm(words[entry].conjugations[key].forms);
result["furigana"][key] = words[entry].conjugations[key].forms;
});
return result;
@ -250,10 +250,19 @@ function validQuestion(entry, forms, transformation, options) {
if (!forms["furigana"][transformation.to])
valid = false;
if (valid) {
if (options.questionFocus != "none") {
if (transformation.type != options.questionFocus) {
if (options.questionFocus == 'tetakei') {
// console.log("tetakei", words[entry].conjugations[transformation.from].tetakei, words[entry].conjugations[transformation.to].tetakei)
if (words[entry].conjugations[transformation.from].tetakei == words[entry].conjugations[transformation.to].tetakei) {
valid = false;
}
} else if (transformation.type != options.questionFocus) {
valid = false;
}
}
}
return valid;
@ -261,6 +270,31 @@ function validQuestion(entry, forms, transformation, options) {
function generateQuestion() {
var questionText = {
"affirmative": "What is the affirmative form of",
"negative": "What is the negative form of",
"present": "What is the present form of",
"past": "What is the past form of",
"plain": "What is the plain form of",
"polite": "What is the polite form of",
"て": "What is the て form of",
"non-て": "What is the non-て form of",
"potential": "What is the potential form of",
"non-potential": "What is the non-potential form of",
"imperative": "What is the imperative form of",
"non-imperative": "What is the non-imperative form of",
"causative": "What is the causative form of",
"non-causative": "What is the non-causative form of",
"passive": "What is the passive form of",
"active": "What is the active form of",
"progressive": "What is the progressive form of",
"non-progressive": "What is the non-progressive form of",
"&apos;desire&apos;": "What is the &apos;desire&apos; form of",
"&apos;non-desire&apos;": "What is the &apos;non-desire&apos; form of",
"volitional": "What is the volitional form of",
"non-volitional": "What is the non-volitional form of"
};
var entry;
var to_form;
var from_form;
@ -315,7 +349,7 @@ function generateQuestion() {
givenWord = wordWithFurigana(furiganaForms[from_form]).randomElement();
}
var questionFirstHalf = "What is the " + transformation.phrase + " version of";
var questionFirstHalf = questionText[transformation.phrase];
var questionSecondHalf = givenWord + "?";
var question = questionFirstHalf + questionSecondHalf;
@ -357,7 +391,7 @@ function generateQuestion() {
"na-adjective" : "な adjective",
};
var dictionary = words[data.entry].conjugations["dictionary"]
var dictionary = words[data.entry].conjugations["dictionary"].forms;
if (words[data.entry].group == "na-adjective") {
dictionary = dictionary.replace(/だ$/, '')
@ -423,15 +457,15 @@ function processAnswer() {
var questionData = window.questionData;
var response = $('#answer').val().trim();
var shakeIt = false;
var shake = false;
if (response == "")
shakeIt = true;
shake = true;
if (!response.match(japaneseTextPattern))
shakeIt = true;
shake = true;
if (shakeIt) {
if (shake) {
shakeInputArea();
return;
}
@ -470,7 +504,7 @@ function processAnswer() {
function shakeInputArea() {
var inputArea = $('#inputArea');
var shakeClass = "shakeIt";
var shakeClass = "shake";
inputArea.addClass(shakeClass);

View File

@ -72,9 +72,11 @@ var words = {
var rules = {
"godan" : {
"godan": {
"negative" : [
"negative": {
forms: [
{ "before": "る", "after": "らない" },
{ "before": "つ", "after": "たない" },
{ "before": "う", "after": "わない" },
@ -85,8 +87,11 @@ var rules = {
{ "before": "ぶ", "after": "ばない" },
{ "before": "む", "after": "まない" },
],
},
"polite" : [
"polite": {
forms: [
{ "before": "る", "after": "ります" },
{ "before": "つ", "after": "ちます" },
{ "before": "う", "after": "います" },
@ -97,8 +102,11 @@ var rules = {
{ "before": "ぶ", "after": "びます" },
{ "before": "む", "after": "みます" },
],
},
"polite negative" : [
"polite negative": {
forms: [
{ "before": "る", "after": "りません" },
{ "before": "つ", "after": "ちません" },
{ "before": "う", "after": "いません" },
@ -109,8 +117,11 @@ var rules = {
{ "before": "ぶ", "after": "びません" },
{ "before": "む", "after": "みません" },
],
},
"past" : [
"past": {
forms: [
{ "before": "る", "after": "った" },
{ "before": "つ", "after": "った" },
{ "before": "う", "after": "った" },
@ -122,7 +133,12 @@ var rules = {
{ "before": "む", "after": "んだ" },
],
"past negative" : [
tetakei: true,
},
"past negative": {
forms: [
{ "before": "る", "after": "らなかった" },
{ "before": "つ", "after": "たなかった" },
{ "before": "う", "after": "わなかった" },
@ -133,8 +149,11 @@ var rules = {
{ "before": "ぶ", "after": "ばなかった" },
{ "before": "む", "after": "まなかった" },
],
},
"polite past" : [
"polite past": {
forms: [
{ "before": "る", "after": "りました" },
{ "before": "つ", "after": "ちました" },
{ "before": "う", "after": "いました" },
@ -145,8 +164,11 @@ var rules = {
{ "before": "ぶ", "after": "びました" },
{ "before": "む", "after": "みました" },
],
},
"polite past negative" : [
"polite past negative": {
forms: [
{ "before": "る", "after": "りませんでした" },
{ "before": "つ", "after": "ちませんでした" },
{ "before": "う", "after": "いませんでした" },
@ -157,8 +179,11 @@ var rules = {
{ "before": "ぶ", "after": "びませんでした" },
{ "before": "む", "after": "みませんでした" },
],
},
"te-form" : [
"te-form": {
forms: [
{ "before": "る", "after": "って" },
{ "before": "つ", "after": "って" },
{ "before": "う", "after": "って" },
@ -170,7 +195,12 @@ var rules = {
{ "before": "む", "after": "んで" },
],
"te-form negative" : [
tetakei: true,
},
"te-form negative": {
forms: [
{ "before": "る", "after": "らなくて"}, { "before": "る", "after": "らないで"},
{ "before": "つ", "after": "たなくて"}, { "before": "つ", "after": "たないで"},
{ "before": "う", "after": "わなくて"}, { "before": "う", "after": "わないで"},
@ -181,8 +211,11 @@ var rules = {
{ "before": "ぶ", "after": "ばなくて"}, { "before": "ぶ", "after": "ばないで"},
{ "before": "む", "after": "まなくて"}, { "before": "む", "after": "まないで"},
],
},
"potential" : [
"potential": {
forms: [
{ "before": "る", "after": "れる" },
{ "before": "つ", "after": "てる" },
{ "before": "う", "after": "える" },
@ -193,8 +226,11 @@ var rules = {
{ "before": "ぶ", "after": "べる" },
{ "before": "む", "after": "める" },
],
},
"potential negative" : [
"potential negative": {
forms: [
{ "before": "る", "after": "れない" },
{ "before": "つ", "after": "てない" },
{ "before": "う", "after": "えない" },
@ -205,8 +241,11 @@ var rules = {
{ "before": "ぶ", "after": "べない" },
{ "before": "む", "after": "めない" },
],
},
"polite potential" : [
"polite potential": {
forms: [
{ "before": "る", "after": "れます" },
{ "before": "つ", "after": "てます" },
{ "before": "う", "after": "えます" },
@ -217,8 +256,11 @@ var rules = {
{ "before": "ぶ", "after": "べます" },
{ "before": "む", "after": "めます" },
],
},
"polite potential negative" : [
"polite potential negative": {
forms: [
{ "before": "る", "after": "れません" },
{ "before": "つ", "after": "てません" },
{ "before": "う", "after": "えません" },
@ -229,8 +271,11 @@ var rules = {
{ "before": "ぶ", "after": "べません" },
{ "before": "む", "after": "めません" },
],
},
"passive" : [
"passive": {
forms: [
{ "before": "る", "after": "られる" },
{ "before": "つ", "after": "たれる" },
{ "before": "う", "after": "われる" },
@ -241,8 +286,11 @@ var rules = {
{ "before": "ぶ", "after": "ばれる" },
{ "before": "む", "after": "まれる" },
],
},
"passive negative" : [
"passive negative": {
forms: [
{ "before": "る", "after": "られない" },
{ "before": "つ", "after": "たれない" },
{ "before": "う", "after": "われない" },
@ -253,8 +301,11 @@ var rules = {
{ "before": "ぶ", "after": "ばれない" },
{ "before": "む", "after": "まれない" },
],
},
"polite passive" : [
"polite passive": {
forms: [
{ "before": "る", "after": "られます" },
{ "before": "つ", "after": "たれます" },
{ "before": "う", "after": "われます" },
@ -265,8 +316,11 @@ var rules = {
{ "before": "ぶ", "after": "ばれます" },
{ "before": "む", "after": "まれます" },
],
},
"polite passive negative" : [
"polite passive negative": {
forms: [
{ "before": "る", "after": "られません" },
{ "before": "つ", "after": "たれません" },
{ "before": "う", "after": "われません" },
@ -277,8 +331,11 @@ var rules = {
{ "before": "ぶ", "after": "ばれません" },
{ "before": "む", "after": "まれません" },
],
},
"causative" : [
"causative": {
forms: [
{ "before": "る", "after": "らせる" },
{ "before": "つ", "after": "たせる" },
{ "before": "う", "after": "わせる" },
@ -289,8 +346,11 @@ var rules = {
{ "before": "ぶ", "after": "ばせる" },
{ "before": "む", "after": "ませる" },
],
},
"causative negative" : [
"causative negative": {
forms: [
{ "before": "る", "after": "らせない" },
{ "before": "つ", "after": "たせない" },
{ "before": "う", "after": "わせない" },
@ -301,8 +361,11 @@ var rules = {
{ "before": "ぶ", "after": "ばせない" },
{ "before": "む", "after": "ませない" },
],
},
"causative passive" : [
"causative passive": {
forms: [
{ "before": "る", "after": "らせられる" },
{ "before": "つ", "after": "たせられる" },
{ "before": "う", "after": "わせられる" },
@ -313,8 +376,11 @@ var rules = {
{ "before": "ぶ", "after": "ばせられる" },
{ "before": "む", "after": "ませられる" },
],
},
"causative passive negative" : [
"causative passive negative": {
forms: [
{ "before": "る", "after": "らせられない" },
{ "before": "つ", "after": "たせられない" },
{ "before": "う", "after": "わせられない" },
@ -325,8 +391,11 @@ var rules = {
{ "before": "ぶ", "after": "ばせられない" },
{ "before": "む", "after": "ませられない" },
],
},
"imperative" : [
"imperative": {
forms: [
{ "before": "る", "after": "れ" },
{ "before": "つ", "after": "て" },
{ "before": "う", "after": "え" },
@ -337,8 +406,11 @@ var rules = {
{ "before": "ぶ", "after": "べ" },
{ "before": "む", "after": "め" },
],
},
"imperative negative" : [
"imperative negative": {
forms: [
{ "before": "る", "after": "るな" },
{ "before": "つ", "after": "つな" },
{ "before": "う", "after": "うな" },
@ -349,8 +421,11 @@ var rules = {
{ "before": "ぶ", "after": "ぶな" },
{ "before": "む", "after": "むな" },
],
},
"progressive" : [
"progressive": {
forms: [
{ "before": "る", "after": "っている" },
{ "before": "つ", "after": "っている" },
{ "before": "う", "after": "っている" },
@ -362,7 +437,12 @@ var rules = {
{ "before": "む", "after": "んでいる" },
],
"progressive negative" : [
tetakei: true,
},
"progressive negative": {
forms: [
{ "before": "る", "after": "っていない" },
{ "before": "つ", "after": "っていない" },
{ "before": "う", "after": "っていない" },
@ -374,7 +454,12 @@ var rules = {
{ "before": "む", "after": "んでいない" },
],
"polite progressive" : [
tetakei: true,
},
"polite progressive": {
forms: [
{ "before": "る", "after": "っています" },
{ "before": "つ", "after": "っています" },
{ "before": "う", "after": "っています" },
@ -386,7 +471,12 @@ var rules = {
{ "before": "む", "after": "んでいます" },
],
"polite progressive negative" : [
tetakei: true,
},
"polite progressive negative": {
forms: [
{ "before": "る", "after": "っていません" },
{ "before": "つ", "after": "っていません" },
{ "before": "う", "after": "っていません" },
@ -398,7 +488,12 @@ var rules = {
{ "before": "む", "after": "んでいません" },
],
"progressive past" : [
tetakei: true,
},
"progressive past": {
forms: [
{ "before": "る", "after": "っていた" },
{ "before": "つ", "after": "っていた" },
{ "before": "う", "after": "っていた" },
@ -410,7 +505,12 @@ var rules = {
{ "before": "む", "after": "んでいた" },
],
"progressive past negative" : [
tetakei: true,
},
"progressive past negative": {
forms: [
{ "before": "る", "after": "っていなかった" },
{ "before": "つ", "after": "っていなかった" },
{ "before": "う", "after": "っていなかった" },
@ -422,7 +522,12 @@ var rules = {
{ "before": "む", "after": "んでいなかった" },
],
"polite progressive past" : [
tetakei: true,
},
"polite progressive past": {
forms: [
{ "before": "る", "after": "っていました" },
{ "before": "つ", "after": "っていました" },
{ "before": "う", "after": "っていました" },
@ -434,7 +539,12 @@ var rules = {
{ "before": "む", "after": "んでいました" },
],
"polite progressive past negative" : [
tetakei: true,
},
"polite progressive past negative": {
forms: [
{ "before": "る", "after": "っていませんでした" },
{ "before": "つ", "after": "っていませんでした" },
{ "before": "う", "after": "っていませんでした" },
@ -446,7 +556,12 @@ var rules = {
{ "before": "む", "after": "んでいませんでした" },
],
"desire" : [
tetakei: true,
},
"desire": {
forms: [
{ "before": "る", "after": "りたい" },
{ "before": "つ", "after": "ちたい" },
{ "before": "う", "after": "いたい" },
@ -457,8 +572,11 @@ var rules = {
{ "before": "ぶ", "after": "びたい" },
{ "before": "む", "after": "みたい" },
],
},
"desire negative" : [
"desire negative": {
forms: [
{ "before": "る", "after": "りたくない" },
{ "before": "つ", "after": "ちたくない" },
{ "before": "う", "after": "いたくない" },
@ -469,8 +587,11 @@ var rules = {
{ "before": "ぶ", "after": "びたくない" },
{ "before": "む", "after": "みたくない" },
],
},
"desire polite" : [
"desire polite": {
forms: [
{ "before": "る", "after": "りたいです" },
{ "before": "つ", "after": "ちたいです" },
{ "before": "う", "after": "いたいです" },
@ -481,8 +602,11 @@ var rules = {
{ "before": "ぶ", "after": "びたいです" },
{ "before": "む", "after": "みたいです" },
],
},
"desire polite negative" : [
"desire polite negative": {
forms: [
{ "before": "る", "after": "りたくないです" },
{ "before": "つ", "after": "ちたくないです" },
{ "before": "う", "after": "いたくないです" },
@ -493,8 +617,11 @@ var rules = {
{ "before": "ぶ", "after": "びたくないです" },
{ "before": "む", "after": "みたくないです" },
],
},
"volitional" : [
"volitional": {
forms: [
{ "before": "る", "after": "ろう" },
{ "before": "つ", "after": "とう" },
{ "before": "う", "after": "おう" },
@ -505,8 +632,11 @@ var rules = {
{ "before": "ぶ", "after": "ぼう" },
{ "before": "む", "after": "もう" },
],
},
"polite volitional" : [
"polite volitional": {
forms: [
{ "before": "る", "after": "りましょう" },
{ "before": "つ", "after": "ちましょう" },
{ "before": "う", "after": "いましょう" },
@ -518,187 +648,188 @@ var rules = {
{ "before": "む", "after": "みましょう" },
],
},
"ichidan" : {
"negative" : [ { "before": "る", "after": "ない" }, ],
"polite" : [ { "before": "る", "after": "ます" }, ],
"polite negative" : [ { "before": "る", "after": "ません" }, ],
"past" : [ { "before": "る", "after": "た" }, ],
"past negative" : [ { "before": "る", "after": "なかった" }, ],
"polite past" : [ { "before": "る", "after": "ました" }, ],
"polite past negative" : [ { "before": "る", "after": "ませんでした" }, ],
"te-form" : [ { "before": "る", "after": "て" }, ],
"te-form negative" : [ { "before": "る", "after": "なくて" }, { "before": "る", "after": "ないで" } ],
"potential" : [ { "before": "る", "after": "られる" } ],
"potential negative": [ { "before": "る", "after": "られない" } ],
"polite potential" : [ { "before": "る", "after": "られます" } ],
"polite potential negative": [ { "before": "る", "after": "られません" } ],
"imperative": [ { "before": "る", "after": "ろ" } ],
"imperative negative": [ { "before": "る", "after": "るな" } ],
"passive": [ { "before": "る", "after": "られる" } ],
"passive negative": [ { "before": "る", "after": "られない" } ],
"polite passive": [ { "before": "る", "after": "られます" } ],
"polite passive negative": [ { "before": "る", "after": "られません" } ],
"causative": [ { "before": "る", "after": "させる" } ],
"causative negative": [ { "before": "る", "after": "させない" } ],
"causative passive": [ { "before": "る", "after": "させられる" } ],
"causative passive negative": [ { "before": "る", "after": "させられない" } ],
"progressive": [ { "before": "る", "after": "ている" } ],
"progressive negative": [ { "before": "る", "after": "ていない" } ],
"polite progressive": [ { "before": "る", "after": "ています" } ],
"polite progressive negative": [ { "before": "る", "after": "ていません" } ],
"progressive past": [ { "before": "る", "after": "ていた" } ],
"progressive past negative": [ { "before": "る", "after": "ていなかった" } ],
"polite progressive past": [ { "before": "る", "after": "ていました" } ],
"polite progressive past negative": [ { "before": "る", "after": "ていませんでした" } ],
"desire" : [ { "before": "る", "after": "たい" }, ],
"desire negative" : [ { "before": "る", "after": "たくない" }, ],
"desire polite" : [ { "before": "る", "after": "たいです" }, ],
"desire polite negative" : [ { "before": "る", "after": "たくないです" }, ],
"volitional" : [ { "before": "る", "after": "よう" }, ],
"polite volitional" : [ { "before": "る", "after": "ましょう" }, ],
},
"iku" : {
"negative" : [ { "result": "行[い]かない" }, ],
"polite" : [ { "result": "行[い]きます" }, ],
"polite negative" : [ { "result": "行[い]きません" }, ],
"past" : [ { "result": "行[い]った" }, ],
"past negative" : [ { "result": "行[い]かなかった" }, ],
"polite past" : [ { "result": "行[い]きました" }, ],
"polite past negative" : [ { "result": "行[い]きませんでした" }, ],
"te-form" : [ { "result": "行[い]って" }, ],
"te-form negative": [ { "result": "行[い]かなくて" }, { "result": "行[い]かないで" } ],
"potential": [ { "result": "行[い]ける" } ],
"potential negative": [ { "result": "行[い]けない" } ],
"polite potential": [ { "result": "行[い]けます" } ],
"polite potential negative": [ { "result": "行[い]けません" } ],
"imperative": [ { "result": "行[い]け" } ],
"imperative negative": [ { "result": "行[い]くな" } ],
"passive": [ { "result": "行[い]かれる" } ],
"passive negative": [ { "result": "行[い]かれない" } ],
"polite passive": [ { "result": "行[い]かれます" } ],
"polite passive negative": [ { "result": "行[い]かれません" } ],
"causative": [ { "result": "行[い]かせる" } ],
"causative negative": [ { "result": "行[い]かせない" } ],
"causative passive": [ { "result": "行[い]かせられる" } ],
"causative passive negative": [ { "result": "行[い]かせられない" } ],
"progressive": [ { "result": "行[い]っている" } ],
"progressive negative": [ { "result": "行[い]っていない" } ],
"polite progressive": [ { "result": "行[い]っています" } ],
"polite progressive negative": [ { "result": "行[い]っていません" } ],
"progressive past": [ { "result": "行[い]っていた" } ],
"progressive past negative": [ { "result": "行[い]っていなかった" } ],
"polite progressive past": [ { "result": "行[い]っていました" } ],
"polite progressive past negative": [ { "result": "行[い]っていませんでした" } ],
"desire" : [ { "result": "行[い]きたい" }, ],
"desire negative" : [ { "result": "行[い]きたくない" }, ],
"desire polite" : [ { "result": "行[い]きたいです" }, ],
"desire polite negative" : [ { "result": "行[い]きたくないです" }, ],
"volitional" : [ { "result": "行[い]こう" }, ],
"polite volitional" : [ { "result": "行[い]きましょう" }, ],
"ichidan": {
"negative": { forms: [ { "before": "る", "after": "ない" }, ], },
"polite": { forms: [ { "before": "る", "after": "ます" }, ], },
"polite negative": { forms: [ { "before": "る", "after": "ません" }, ], },
"past": { forms: [ { "before": "る", "after": "た" }, ], },
"past negative": { forms: [ { "before": "る", "after": "なかった" }, ], },
"polite past": { forms: [ { "before": "る", "after": "ました" }, ], },
"polite past negative": { forms: [ { "before": "る", "after": "ませんでした" }, ], },
"te-form": { forms: [ { "before": "る", "after": "て" }, ], },
"te-form negative": { forms: [ { "before": "る", "after": "なくて" }, { "before": "る", "after": "ないで" } ], },
"potential": { forms: [ { "before": "る", "after": "られる" } ], },
"potential negative": { forms: [ { "before": "る", "after": "られない" } ], },
"polite potential": { forms: [ { "before": "る", "after": "られます" } ], },
"polite potential negative": { forms: [ { "before": "る", "after": "られません" } ], },
"imperative": { forms: [ { "before": "る", "after": "ろ" } ], },
"imperative negative": { forms: [ { "before": "る", "after": "るな" } ], },
"passive": { forms: [ { "before": "る", "after": "られる" } ], },
"passive negative": { forms: [ { "before": "る", "after": "られない" } ], },
"polite passive": { forms: [ { "before": "る", "after": "られます" } ], },
"polite passive negative": { forms: [ { "before": "る", "after": "られません" } ], },
"causative": { forms: [ { "before": "る", "after": "させる" } ], },
"causative negative": { forms: [ { "before": "る", "after": "させない" } ], },
"causative passive": { forms: [ { "before": "る", "after": "させられる" } ], },
"causative passive negative": { forms: [ { "before": "る", "after": "させられない" } ], },
"progressive": { forms: [ { "before": "る", "after": "ている" } ], },
"progressive negative": { forms: [ { "before": "る", "after": "ていない" } ], },
"polite progressive": { forms: [ { "before": "る", "after": "ています" } ], },
"polite progressive negative": { forms: [ { "before": "る", "after": "ていません" } ], },
"progressive past": { forms: [ { "before": "る", "after": "ていた" } ], },
"progressive past negative": { forms: [ { "before": "る", "after": "ていなかった" } ], },
"polite progressive past": { forms: [ { "before": "る", "after": "ていました" } ], },
"polite progressive past negative": { forms: [ { "before": "る", "after": "ていませんでした" } ], },
"desire": { forms: [ { "before": "る", "after": "たい" }, ], },
"desire negative": { forms: [ { "before": "る", "after": "たくない" }, ], },
"desire polite": { forms: [ { "before": "る", "after": "たいです" }, ], },
"desire polite negative": { forms: [ { "before": "る", "after": "たくないです" }, ], },
"volitional": { forms: [ { "before": "る", "after": "よう" }, ], },
"polite volitional": { forms: [ { "before": "る", "after": "ましょう" }, ], },
},
"kuru" : {
"negative" : [ { "result": "来[こ]ない" } ],
"polite" : [ { "result": "来[き]ます" } ],
"polite negative" : [ { "result": "来[き]ません" } ],
"past" : [ { "result": "来[き]た" } ],
"past negative" : [ { "result": "来[こ]なかった" } ],
"polite past" : [ { "result": "来[き]ました" } ],
"polite past negative" : [ { "result": "来[き]ませんでした" } ],
"te-form" : [ { "result": "来[き]て" } ],
"te-form negative": [ { "result": "来[こ]なくて" }, { "result": "来[こ]ないで" } ],
"potential": [ { "result": "来[こ]られる" } ],
"potential negative": [ { "result": "来[こ]られない" } ],
"polite potential": [ { "result": "来[こ]られます" } ],
"polite potential negative": [ { "result": "来[こ]られません" } ],
"imperative": [ { "result": "来[こ]い" } ],
"imperative negative": [ { "result": "来[く]るな" } ],
"passive": [ { "result": "来[こ]られる" } ],
"passive negative": [ { "result": "来[こ]られない" } ],
"causative": [ { "result": "来[こ]させる" } ],
"causative negative": [ { "result": "来[こ]させない" } ],
"causative passive": [ { "result": "来[こ]させられる" } ],
"causative passive negative": [ { "result": "来[こ]させられない" } ],
"progressive": [ { "result": "来[き]ている" } ],
"progressive negative": [ { "result": "来[き]ていない" } ],
"polite progressive": [ { "result": "来[き]ています" } ],
"polite progressive negative": [ { "result": "来[き]ていません" } ],
"progressive past": [ { "result": "来[き]ていた" } ],
"progressive past negative": [ { "result": "来[き]ていなかった" } ],
"polite progressive past": [ { "result": "来[き]ていました" } ],
"polite progressive past negative": [ { "result": "来[き]ていませんでした" } ],
"desire" : [ { "result": "来[き]たい" }, ],
"desire negative" : [ { "result": "来[き]たくない" }, ],
"desire polite" : [ { "result": "来[き]たいです" }, ],
"desire polite negative" : [ { "result": "来[き]たくないです" }, ],
"volitional" : [ { "result": "来[こ]よう" }, ],
"polite volitional" : [ { "result": "来[き]ましょう" }, ],
"iku": {
"negative": { forms: [ { "result": "行[い]かない" }, ], },
"polite": { forms: [ { "result": "行[い]きます" }, ], },
"polite negative": { forms: [ { "result": "行[い]きません" }, ], },
"past": { forms: [ { "result": "行[い]った" }, ], },
"past negative": { forms: [ { "result": "行[い]かなかった" }, ], },
"polite past": { forms: [ { "result": "行[い]きました" }, ], },
"polite past negative": { forms: [ { "result": "行[い]きませんでした" }, ], },
"te-form": { forms: [ { "result": "行[い]って" }, ], },
"te-form negative": { forms: [ { "result": "行[い]かなくて" }, { "result": "行[い]かないで" } ], },
"potential": { forms: [ { "result": "行[い]ける" } ], },
"potential negative": { forms: [ { "result": "行[い]けない" } ], },
"polite potential": { forms: [ { "result": "行[い]けます" } ], },
"polite potential negative": { forms: [ { "result": "行[い]けません" } ], },
"imperative": { forms: [ { "result": "行[い]け" } ], },
"imperative negative": { forms: [ { "result": "行[い]くな" } ], },
"passive": { forms: [ { "result": "行[い]かれる" } ], },
"passive negative": { forms: [ { "result": "行[い]かれない" } ], },
"polite passive": { forms: [ { "result": "行[い]かれます" } ], },
"polite passive negative": { forms: [ { "result": "行[い]かれません" } ], },
"causative": { forms: [ { "result": "行[い]かせる" } ], },
"causative negative": { forms: [ { "result": "行[い]かせない" } ], },
"causative passive": { forms: [ { "result": "行[い]かせられる" } ], },
"causative passive negative": { forms: [ { "result": "行[い]かせられない" } ], },
"progressive": { forms: [ { "result": "行[い]っている" } ], },
"progressive negative": { forms: [ { "result": "行[い]っていない" } ], },
"polite progressive": { forms: [ { "result": "行[い]っています" } ], },
"polite progressive negative": { forms: [ { "result": "行[い]っていません" } ], },
"progressive past": { forms: [ { "result": "行[い]っていた" } ], },
"progressive past negative": { forms: [ { "result": "行[い]っていなかった" } ], },
"polite progressive past": { forms: [ { "result": "行[い]っていました" } ], },
"polite progressive past negative": { forms: [ { "result": "行[い]っていませんでした" } ], },
"desire": { forms: [ { "result": "行[い]きたい" }, ], },
"desire negative": { forms: [ { "result": "行[い]きたくない" }, ], },
"desire polite": { forms: [ { "result": "行[い]きたいです" }, ], },
"desire polite negative": { forms: [ { "result": "行[い]きたくないです" }, ], },
"volitional": { forms: [ { "result": "行[い]こう" }, ], },
"polite volitional": { forms: [ { "result": "行[い]きましょう" }, ], },
},
"suru" : {
"negative" : [ { "before": "する", "after": "しない" }, ],
"polite" : [ { "before": "する", "after": "します" }, ],
"polite negative" : [ { "before": "する", "after": "しません" }, ],
"past" : [ { "before": "する", "after": "した" }, ],
"past negative" : [ { "before": "する", "after": "しなかった" }, ],
"polite past" : [ { "before": "する", "after": "しました" }, ],
"polite past negative" : [ { "before": "する", "after": "しませんでした" }, ],
"te-form" : [ { "before": "する", "after": "して" }, ],
"te-form negative": [ { "before": "する", "after": "しなくて" }, { "before": "する", "after": "しないで" } ],
"potential": [ { "before": "する", "after": "できる" } ],
"potential negative": [ { "before": "する", "after": "できない" } ],
"polite potential": [ { "before": "する", "after": "できます" } ],
"polite potential negative": [ { "before": "する", "after": "できません" } ],
"imperative": [ { "before": "する", "after": "しろ" } ],
"imperative negative": [ { "before": "する", "after": "するな" } ],
"progressive": [ { "before": "する", "after": "している" } ],
"progressive negative": [ { "before": "する", "after": "していない" } ],
"polite progressive": [ { "before": "する", "after": "しています" } ],
"polite progressive negative": [ { "before": "する", "after": "していません" } ],
"progressive past": [ { "before": "する", "after": "していた" } ],
"progressive past negative": [ { "before": "する", "after": "していなかった" } ],
"polite progressive past": [ { "before": "する", "after": "していました" } ],
"polite progressive past negative": [ { "before": "する", "after": "していませんでした" } ],
"desire" : [ { "before": "する", "after": "したい" }, ],
"desire negative" : [ { "before": "する", "after": "したくない" }, ],
"desire polite" : [ { "before": "する", "after": "したいです" }, ],
"desire polite negative" : [ { "before": "する", "after": "したくないです" }, ],
"volitional" : [ { "before": "する", "after": "しよう" }, ],
"polite volitional" : [ { "before": "する", "after": "しましょう" }, ],
"kuru": {
"negative": { forms: [ { "result": "来[こ]ない" } ], },
"polite": { forms: [ { "result": "来[き]ます" } ], },
"polite negative": { forms: [ { "result": "来[き]ません" } ], },
"past": { forms: [ { "result": "来[き]た" } ], },
"past negative": { forms: [ { "result": "来[こ]なかった" } ], },
"polite past": { forms: [ { "result": "来[き]ました" } ], },
"polite past negative": { forms: [ { "result": "来[き]ませんでした" } ], },
"te-form": { forms: [ { "result": "来[き]て" } ], },
"te-form negative": { forms: [ { "result": "来[こ]なくて" }, { "result": "来[こ]ないで" } ], },
"potential": { forms: [ { "result": "来[こ]られる" } ], },
"potential negative": { forms: [ { "result": "来[こ]られない" } ], },
"polite potential": { forms: [ { "result": "来[こ]られます" } ], },
"polite potential negative": { forms: [ { "result": "来[こ]られません" } ], },
"imperative": { forms: [ { "result": "来[こ]い" } ], },
"imperative negative": { forms: [ { "result": "来[く]るな" } ], },
"passive": { forms: [ { "result": "来[こ]られる" } ], },
"passive negative": { forms: [ { "result": "来[こ]られない" } ], },
"causative": { forms: [ { "result": "来[こ]させる" } ], },
"causative negative": { forms: [ { "result": "来[こ]させない" } ], },
"causative passive": { forms: [ { "result": "来[こ]させられる" } ], },
"causative passive negative": { forms: [ { "result": "来[こ]させられない" } ], },
"progressive": { forms: [ { "result": "来[き]ている" } ], },
"progressive negative": { forms: [ { "result": "来[き]ていない" } ], },
"polite progressive": { forms: [ { "result": "来[き]ています" } ], },
"polite progressive negative": { forms: [ { "result": "来[き]ていません" } ], },
"progressive past": { forms: [ { "result": "来[き]ていた" } ], },
"progressive past negative": { forms: [ { "result": "来[き]ていなかった" } ], },
"polite progressive past": { forms: [ { "result": "来[き]ていました" } ], },
"polite progressive past negative": { forms: [ { "result": "来[き]ていませんでした" } ], },
"desire": { forms: [ { "result": "来[き]たい" }, ], },
"desire negative": { forms: [ { "result": "来[き]たくない" }, ], },
"desire polite": { forms: [ { "result": "来[き]たいです" }, ], },
"desire polite negative": { forms: [ { "result": "来[き]たくないです" }, ], },
"volitional": { forms: [ { "result": "来[こ]よう" }, ], },
"polite volitional": { forms: [ { "result": "来[き]ましょう" }, ], },
},
"i-adjective" : {
"negative": [ { "before": "い", "after": "くない" } ],
"polite": [ { "before": "い", "after": "いです" } ],
"polite negative": [ { "before": "い", "after": "くないです" }, { "before": "い", "after": "くありません" } ],
"past": [ { "before": "い", "after": "かった" } ],
"past negative": [ { "before": "い", "after": "くなかった" } ],
"polite past": [ { "before": "い", "after": "かったです" } ],
"polite past negative": [ { "before": "い", "after": "くなかったです" }, { "before": "い", "after": "くありませんでした" } ],
"suru": {
"negative": { forms: [ { "before": "する", "after": "しない" }, ], },
"polite": { forms: [ { "before": "する", "after": "します" }, ], },
"polite negative": { forms: [ { "before": "する", "after": "しません" }, ], },
"past": { forms: [ { "before": "する", "after": "した" }, ], },
"past negative": { forms: [ { "before": "する", "after": "しなかった" }, ], },
"polite past": { forms: [ { "before": "する", "after": "しました" }, ], },
"polite past negative": { forms: [ { "before": "する", "after": "しませんでした" }, ], },
"te-form": { forms: [ { "before": "する", "after": "して" }, ], },
"te-form negative": { forms: [ { "before": "する", "after": "しなくて" }, { "before": "する", "after": "しないで" } ], },
"potential": { forms: [ { "before": "する", "after": "できる" } ], },
"potential negative": { forms: [ { "before": "する", "after": "できない" } ], },
"polite potential": { forms: [ { "before": "する", "after": "できます" } ], },
"polite potential negative": { forms: [ { "before": "する", "after": "できません" } ], },
"imperative": { forms: [ { "before": "する", "after": "しろ" } ], },
"imperative negative": { forms: [ { "before": "する", "after": "するな" } ], },
"progressive": { forms: [ { "before": "する", "after": "している" } ], },
"progressive negative": { forms: [ { "before": "する", "after": "していない" } ], },
"polite progressive": { forms: [ { "before": "する", "after": "しています" } ], },
"polite progressive negative": { forms: [ { "before": "する", "after": "していません" } ], },
"progressive past": { forms: [ { "before": "する", "after": "していた" } ], },
"progressive past negative": { forms: [ { "before": "する", "after": "していなかった" } ], },
"polite progressive past": { forms: [ { "before": "する", "after": "していました" } ], },
"polite progressive past negative": { forms: [ { "before": "する", "after": "していませんでした" } ], },
"desire": { forms: [ { "before": "する", "after": "したい" }, ], },
"desire negative": { forms: [ { "before": "する", "after": "したくない" }, ], },
"desire polite": { forms: [ { "before": "する", "after": "したいです" }, ], },
"desire polite negative": { forms: [ { "before": "する", "after": "したくないです" }, ], },
"volitional": { forms: [ { "before": "する", "after": "しよう" }, ], },
"polite volitional": { forms: [ { "before": "する", "after": "しましょう" }, ], },
},
"ii" : {
"negative": [ { "result": "良[よ]くない" } ],
"polite": [ { "result": "いいです" } ],
"polite negative": [ { "result": "良[よ]くないです" }, { "result": "良[よ]くありません" } ],
"past": [ { "result": "良[よ]かった" } ],
"past negative": [ { "result": "良[よ]くなかった" } ],
"polite past": [ { "result": "良[よ]かったです" } ],
"polite past negative": [ { "result": "良[よ]くなかったです" }, { "result": "良[よ]くありませんでした" } ],
"i-adjective": {
"negative": { forms: [ { "before": "い", "after": "くない" } ], },
"polite": { forms: [ { "before": "い", "after": "いです" } ], },
"polite negative": { forms: [ { "before": "い", "after": "くないです" }, { "before": "い", "after": "くありません" } ], },
"past": { forms: [ { "before": "い", "after": "かった" } ], },
"past negative": { forms: [ { "before": "い", "after": "くなかった" } ], },
"polite past": { forms: [ { "before": "い", "after": "かったです" } ], },
"polite past negative": { forms: [ { "before": "い", "after": "くなかったです" }, { "before": "い", "after": "くありませんでした" } ], },
},
"na-adjective" : {
"negative": [ { "before": "だ", "after": "ではない" }, { "before": "だ", "after": "じゃない" } ],
"polite": [ { "before": "だ", "after": "です" } ],
"polite negative": [ { "before": "だ", "after": "ではないです" }, { "before": "だ", "after": "じゃないです" }, { "before": "だ", "after": "ではありません" }, { "before": "だ", "after": "じゃありません" } ],
"past": [ { "before": "だ", "after": "だった" } ],
"past negative": [ { "before": "だ", "after": "ではなかった" }, { "before": "だ", "after": "じゃなかった" } ],
"polite past": [ { "before": "だ", "after": "でした" } ],
"polite past negative": [ { "before": "だ", "after": "ではなかったです" }, { "before": "だ", "after": "じゃなかったです" }, { "before": "だ", "after": "ではありませんでした" }, { "before": "だ", "after": "じゃありませんでした" } ],
"ii": {
"negative": { forms: [ { "result": "良[よ]くない" } ], },
"polite": { forms: [ { "result": "いいです" } ], },
"polite negative": { forms: [ { "result": "良[よ]くないです" }, { "result": "良[よ]くありません" } ], },
"past": { forms: [ { "result": "良[よ]かった" } ], },
"past negative": { forms: [ { "result": "良[よ]くなかった" } ], },
"polite past": { forms: [ { "result": "良[よ]かったです" } ], },
"polite past negative": { forms: [ { "result": "良[よ]くなかったです" }, { "result": "良[よ]くありませんでした" } ], },
},
"na-adjective": {
"negative": { forms: [ { "before": "だ", "after": "ではない" }, { "before": "だ", "after": "じゃない" } ], },
"polite": { forms: [ { "before": "だ", "after": "です" } ], },
"polite negative": { forms: [ { "before": "だ", "after": "ではないです" }, { "before": "だ", "after": "じゃないです" }, { "before": "だ", "after": "ではありません" }, { "before": "だ", "after": "じゃありません" } ], },
"past": { forms: [ { "before": "だ", "after": "だった" } ], },
"past negative": { forms: [ { "before": "だ", "after": "ではなかった" }, { "before": "だ", "after": "じゃなかった" } ], },
"polite past": { forms: [ { "before": "だ", "after": "でした" } ], },
"polite past negative": { forms: [ { "before": "だ", "after": "ではなかったです" }, { "before": "だ", "after": "じゃなかったです" }, { "before": "だ", "after": "ではありませんでした" }, { "before": "だ", "after": "じゃありませんでした" } ], },
},
};
@ -719,20 +850,26 @@ function calculateConjugations(word, conjugation) {
if (rules[group][conjugation] == undefined)
return undefined;
var conjugations = rules[group][conjugation];
var conjugations = rules[group][conjugation].forms;
var result = [];
var result = {
forms: []
};
if (rules[group][conjugation].tetakei) {
result.tetakei = true;
}
conjugations.forEach(function (rule) {
if (rule.before && rule.after) {
if (dictionary.endsWith(rule.before)) {
result.push(dictionary.substring(0, dictionary.length - rule.before.length) + rule.after);
result.forms.push(dictionary.substring(0, dictionary.length - rule.before.length) + rule.after);
}
}
if (rule.result) {
result.push(rule.result);
result.forms.push(rule.result);
}
});
@ -743,7 +880,7 @@ function calculateAllConjugations() {
Object.keys(words).forEach(function (word) {
words[word].conjugations = { "dictionary" : words[word].dictionary };
words[word].conjugations = { "dictionary": { forms: [words[word].dictionary] } };
var group = words[word].group;