aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Readme.md3
-rw-r--r--database/migrations/2016_01_04_143702_create_verbs_table.php4
-rw-r--r--public/css/fonts/EzraSIL.ttfbin0 -> 155584 bytes
-rw-r--r--public/css/hebrewparsetrainer.css7
-rw-r--r--public/js/hebrewparsetrainer.js37
5 files changed, 35 insertions, 16 deletions
diff --git a/Readme.md b/Readme.md
index 2d15160..7b150e6 100644
--- a/Readme.md
+++ b/Readme.md
@@ -10,5 +10,8 @@ A simple app to practice Hebrew verbs.
GPL v3.0, see the LICENSE file.
+This project uses the [EzraSIL][ezrasil] font which is licensed under the Open Font License.
+
[demo]: https://demo.camilstaps.nl/HebrewParseTrainer
+[ezrasil]: http://scripts.sil.org/cms/scripts/page.php?item_id=EzraSIL_Home
diff --git a/database/migrations/2016_01_04_143702_create_verbs_table.php b/database/migrations/2016_01_04_143702_create_verbs_table.php
index 35e7c34..81ed49e 100644
--- a/database/migrations/2016_01_04_143702_create_verbs_table.php
+++ b/database/migrations/2016_01_04_143702_create_verbs_table.php
@@ -36,8 +36,8 @@ class CreateVerbsTable extends Migration
$table->string('stem', 24);
$table->string('tense', 24);
$table->enum('person', [1,2,3])->nullable();
- $table->enum('gender', ['m', 'f', 'c']);
- $table->enum('number', ['s', 'p']);
+ $table->enum('gender', ['m', 'f', 'c'])->nullable();
+ $table->enum('number', ['s', 'p'])->nullable();
$table->timestamps();
$table->unique(['verb', 'root', 'stem', 'tense', 'person', 'gender', 'number']);
diff --git a/public/css/fonts/EzraSIL.ttf b/public/css/fonts/EzraSIL.ttf
new file mode 100644
index 0000000..b135760
--- /dev/null
+++ b/public/css/fonts/EzraSIL.ttf
Binary files differ
diff --git a/public/css/hebrewparsetrainer.css b/public/css/hebrewparsetrainer.css
index 2cc1c85..9b90843 100644
--- a/public/css/hebrewparsetrainer.css
+++ b/public/css/hebrewparsetrainer.css
@@ -15,6 +15,11 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+@font-face {
+ font-family: 'Ezra SIL';
+ src: url('fonts/EzraSIL.ttf');
+}
+
#trainer-404 {
display: none;
padding: 15px;
@@ -26,4 +31,4 @@
.hebrew-large {
font-size: 40px;
-} \ No newline at end of file
+}
diff --git a/public/js/hebrewparsetrainer.js b/public/js/hebrewparsetrainer.js
index 779554c..858d3cd 100644
--- a/public/js/hebrewparsetrainer.js
+++ b/public/js/hebrewparsetrainer.js
@@ -72,10 +72,10 @@ $(document).ready(function(){
function parseAnswer(parsing) {
var persons = ['1', '2', '3', null];
- var genders = ['m', 'f', 'c'];
- var numbers = ['s', 'p'];
+ var genders = ['m', 'f', 'c', null];
+ var numbers = ['s', 'p', null];
- var re = /^\s*(\w+)\s+(\w+)\s+(?:([123])\s*)?([mfc])\s*([sp])\s*$/;
+ var re = /^\s*(\w+)\s+(\w+)(?:\s+(?:([123])\s*)?([mfc])\s*([sp])\s*)?$/;
var match = parsing.match(re);
if (match == null)
return false;
@@ -83,17 +83,23 @@ $(document).ready(function(){
var stem = findStem(match[1]);
var tense = findTense(match[2]);
var person = match[3] ? match[3] : null;
- var gender = match[4];
- var number = match[5];
+ var gender = match[4] ? match[4] : null;
+ var number = match[5] ? match[5] : null;
if (typeof stem === 'undefined' || typeof tense === 'undefined' || $.inArray(person, persons) == -1 ||
- !$.inArray(gender, genders) == -1 || !$.inArray(number, numbers) == -1)
+ $.inArray(gender, genders) == -1 || $.inArray(number, numbers) == -1)
return false;
- if (tense.indexOf('participle') == 0 && person != null)
- return false;
- if (tense.indexOf('participle') != 0 && person == null)
+ if (tense.indexOf('infinitive') == 0 && (person != null || gender != null || number != null))
return false;
+ if (tense.indexOf('infinitive') != 0) {
+ if (gender == null || number == null)
+ return false;
+ if (tense.indexOf('participle') == 0 && person != null)
+ return false;
+ if (tense.indexOf('participle') != 0 && person == null)
+ return false;
+ }
return {
stem: stem,
@@ -115,10 +121,15 @@ $(document).ready(function(){
'p': 'plural'
};
if (extended === true) {
- return parsing.stem + ' ' + parsing.tense + ' ' + parsing.person +
- ' ' + genders[parsing.gender] + ' ' + numbers[parsing.number];
+ return parsing.stem + ' ' + parsing.tense +
+ (parsing.person ? (' ' + parsing.person) : '') +
+ (parsing.gender ? (' ' + genders[parsing.gender]) : '') +
+ (parsing.number ? (' ' + numbers[parsing.number]) : '');
} else {
- return parsing.stem + ' ' + parsing.tense + ' ' + parsing.person + ' ' + parsing.gender + ' ' + parsing.number;
+ return parsing.stem + ' ' + parsing.tense +
+ (parsing.person ? (' ' + parsing.person) : '') +
+ (parsing.gender ? (' ' + parsing.gender) : '') +
+ (parsing.number ? (' ' + parsing.number) : '');
}
}
@@ -200,4 +211,4 @@ $(document).ready(function(){
});
init();
-}); \ No newline at end of file
+});