PageSourceSearch

https://biblewebapp.com/js/study/lang.js

js biblewebapp.com collected 2026-09-24 19:09:04 UTC 4,488 bytes, 153 lines download raw bytes

1/* language tools */
2if (typeof(window.bible) == 'undefined')
3	window.bible = {};
4	
5bible.languages = {};
6bible.languages.Greek = {
7    partsOfSpeech: {
8        N: 'noun',
9        A: 'adjective',
10        T: 'article',
11        V: 'verb',
12        P: 'personal pronoun',
13        R: 'relative pronoun',
14        C: 'reciprocal pronoun',
15        D: 'demonstrative pronoun',
16        K: 'correlative pronoun',
17        I: 'interrogative pronoun',
18        X: 'indefinite pronoun',
19        Q: 'correlative or interrogative pronoun',
20        F: 'reflexive pronoun',
21        S: 'possessive pronoun',
22        ADV: 'adverb',
23        CONJ: 'conjunction',
24        COND: 'cond',
25        PRT: 'particle',
26        PREP: 'preposition',
27        INJ: 'interjection',
28        ARAM: 'aramaic',
29        HEB: 'hebrew'
30    },
31
32    getPartofSpeech: function(pos) {
33        var full = this.partsOfSpeech[pos.toUpperCase()];
34
35        return (full != null) ? full : '?';
36    },
37
38    nounCases: {
39        'N': 'nominative',
40        'V': 'vocative',
41        'G': 'genitive',
42        'D': 'dative',
43        'A': 'accusative',
44		'P': 'proper name'
45    },
46
47    wordNumber: {
48        'S': 'singular',
49        'P': 'plural'
50    },
51
52    wordGender: {
53        'M': 'masculine',
54        'F': 'feminine',
55        'N': 'neuter'
56    },
57
58    wordPerson: {
59        '1': '1st',
60        '2': '2nd',
61        '3': '3rd'
62    },
63
64    verbTenses: {
65        'P': 'present',
66        'I': 'imperfect',
67        'F': 'future',
68        '2F': 'second future',
69        'A': 'aorist',
70        '2A': 'second aorist',
71        'R': 'perfect',
72        '2R': 'second perfect',
73        'L': 'pluperfect',
74        '2L': 'second pluperfect',
75        'X': 'no tense stated'
76    },
77
78    verbVoices: {
79        'A': 'active',
80        'M': 'middle',
81        'P': 'passive',
82        'E': 'middle or passive',
83        'D': 'middle deponent',
84        'O': 'passive deponent',
85        'N': 'middle or passive deponent',
86        'Q': 'impersonal active',
87        'X': 'no voice'
88    },
89
90    verbMoods: {
91        'I': 'indicative',
92        'S': 'subjunctive',
93        'O': 'optative',
94        'M': 'imperative',
95        'N': 'infinitive',
96        'P': 'participle',
97        'R': 'imperative participle'
98    },
99
100    getMorphology: function(morph) {
101
102		var firstDash = morph.indexOf('-');
103		var pos = (firstDash > -1) ? morph.substring(0, firstDash) : morph;
104		var info = (firstDash > -1) ? morph.substring(firstDash+1) : '';		
105
106        switch (pos.toUpperCase()) {
107            case 'T':
108            case 'N':
109                var c = this.nounCases[info.substring(0, 1)];
110                var n = this.wordNumber[info.substring(1, 2)];
111                var g = this.wordGender[info.substring(2, 3)];
112                return c + ((n) ? ',' + n + ((g) ? ', ' + g : '') : '');
113            case 'A':
114                var c = this.nounCases[info.substring(0, 1)];
115                var n = this.wordNumber[info.substring(1, 2)];
116                return c + ', ' + n;
117            case 'V':
118                var t = '';
119                var rem = ''
120                if (info.substring(0, 1) == '2') {
121                    t = this.verbTenses[info.substring(0, 2)];
122                    rem = info.substring(2);
123                } else {
124                    t = this.verbTenses[info.substring(0, 1)];
125                    rem = info.substring(1);
126                }
127                var v = this.verbVoices[rem.substring(0, 1)];
128                var m = this.verbMoods[rem.substring(1, 2)];
129
130                if (rem.length == 2) {
131                    return info + ': ' + t + ', ' + v + ', ' + m;
132                } else if (rem.length == 5) {
133                    var p = this.wordPerson[rem.substring(3, 4)];
134                    var n = this.wordNumber[rem.substring(4, 5)];
135                    return t + ', ' + v + ', ' + m + ', ' + p + ', ' + n;
136
137                } else if (rem.length == 6) {
138                    var c = this.nounCases[rem.substring(3, 4)];
139                    var n = this.wordNumber[rem.substring(4, 5)];
140                    var g = this.wordGender[rem.substring(5, 6)];
141
142                    return t + ', ' + v + ', ' + m + ', ' + c + ', ' + n + ', ' + g;
143                }
144
145                //m = this.verbMoods[info.substring(2+offset,3+offset)];
146
147
148
149            default:
150                return info;
151        }
152    }
153}

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.