Nomadic challenges in the new century

Program code to convert Text to Bitig

Program code to convert Text to Bitig

Source code on Github: https://github.com/kzdll/Text2Bitig

In this post, I’ll dive under the hood and show you the pipeline JavaScript use to turn Latin(and Cyrillic) text into Turkic Bitig.



Getting Started
Exactly a year ago, I wrote an Android application that converts text to the Turkic alphabet (Turkic Bitig), Now I want to show in public how I wrote it and I think that the post will be a good guide for other programmers who wanted to work with the old Turkic alphabet...



Interface and options
needs add jquery
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
1 Textarea to edit the source text
2 Textarea for converted text
3 Options:
3.1 First Turkic «A» letter
3.2 Use Enisey «Ä»
3.3 Synharmonic «K» letter - for Kyrgyz, Tatar etc. language witch use one letter for [k] and [q]
3.4 Cryllic «и/у» diphtongs - these letters are diphtongs in Kazak (Kazakh) language
3.4 Modern punctual marks
3.5 Convert method:
3.5.1 Over dialect
3.5.2 Hide lib harmony vowles
3.5.3 Without any vowel harmonies

<form action="#">
<div class="form-group form-options">
<label><input class="form-control func-letter-a" type="checkbox" /> first «<span style="color: blue; font-weight: 700;">𐰀</span>» letter</label>
    <label><input checked="" class="form-control func-letter-en" type="checkbox" /> 
    Enisey «<span style="color: blue; font-weight: 700;">𐰅</span>» for «<span style="color: red; font-weight: 700;">ä</span>»</label>
    <label><input checked="" class="form-control func-letter-k" type="checkbox" /> Synharmonic "k" letter</label>
    <label><input class="form-control func-letter-i" type="checkbox" /> "и/у" for diphtongs</label>
    <label><input class="form-control func-marks" type="checkbox" /> modern punctual marks</label>
   </div>
<div class="form-group">
<textarea class="form-control text-original" placeholder="Text to convert..." rows="16"></textarea>
    <select class="method-selection">
     <option value="over">1. Over dialect (hide lib &amp; delicate harmony vowels [o/u/i - &gt; o/i])</option>
     <option value="lib">2. hide lib harmony vowles only</option>
     <option value="no">3. without any vowel harmony hide</option>
    </select>
    <textarea class="form-control text-convert" placeholder="Converted text..." rows="16"></textarea>
   </div>
<div class="form-actions">
    <button class="btn btn-clear">Clear</button>
   </div>
</form>
<style>
/* Style for Text to Bitig*/

@font-face { font-family: 'Noto Sans Old Turkic'; src: url(data:font/truetype;charset=utf-8;base64,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L2dldC9ub3RvLwAAaAB0AHQAcAA6AC8ALwB3AHcAdwAuAG0AbwBuAG8AdAB5AHAAZQAuAGMAbwBtAC8AcwB0AHUAZABpAG8AAGh0dHA6Ly93d3cubW9ub3R5cGUuY29tL3N0dWRpbwAAVABoAGkAcwAgAEYAbwBuAHQAIABTAG8AZgB0AHcAYQByAGUAIABpAHMAIABsAGkAYwBlAG4AcwBlAGQAIAB1AG4AZABlAHIAIAB0AGgAZQAgAFMASQBMACAATwBwAGUAbgAgAEYAbwBuAHQAIABMAGkAYwBlAG4AcwBlACwAIABWAGUAcgBzAGkAbwBuACAAMQAuADEALgAgAFQAaABpAHMAIABGAG8AbgB0ACAAUwBvAGYAdAB3AGEAcgBlACAAaQBzACAAZABpAHMAdAByAGkAYgB1AHQAZQBkACAAbwBuACAAYQBuACAAIgBBAFMAIABJAFMAIgAgAEIAQQBTAEkAUwAsACAAVwBJAFQASABPAFUAVAAgAFcAQQBSAFIAQQBOAFQASQBFAFMAIABPAFIAIABDAE8ATgBEAEkAVABJAE8ATgBTACAATwBGACAAQQBOAFkAIABLAEkATgBEACwAIABlAGkAdABoAGUAcgAgAGUAeABwAHIAZQBzAHMAIABvAHIAIABpAG0AcABsAGkAZQBkAC4AIABTAGUAZQAgAHQAaABlACAAUwBJAEwAIABPAHAAZQBuACAARgBvAG4AdAAgAEwAaQBjAGUAbgBzAGUAIABmAG8AcgAgAHQAaABlACAAcwBwAGUAYwBpAGYAaQBjACAAbABhAG4AZwB1AGEAZwBlACwAIABwAGUAcgBtAGkAcwBzAGkAbwBuAHMAIABhAG4AZAAgAGwAaQBtAGkAdABhAHQAaQBvAG4AcwAgAGcAbwB2AGUAcgBuAGkAbgBnACAAeQBvAHUAcgAgAHUAcwBlACAAbwBmACAAdABoAGkAcwAgAEYAbwBuAHQAIABTAG8AZgB0AHcAYQByAGUALgAAVGhpcyBGb250IFNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBTSUwgT3BlbiBGb250IExpY2Vuc2UsIFZlcnNpb24gMS4xLiBUaGlzIEZvbnQgU29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgU0lMIE9wZW4gRm9udCBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UsIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyBnb3Zlcm5pbmcgeW91ciB1c2Ugb2YgdGhpcyBGb250IFNvZnR3YXJlLgAAaAB0AHQAcAA6AC8ALwBzAGMAcgBpAHAAdABzAC4AcwBpAGwALgBvAHIAZwAvAE8ARgBMAABodHRwOi8vc2NyaXB0cy5zaWwub3JnL09GTAAAAAAAAgAAAAAAAP6aAGYAAAAAAAAAAAAAAAAAAAAAAAAAAABPAAAAAQECAQMBBAAdAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgETARQBFQEWARcBGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBKgErASwBLQEuAS8BMAExATIBMwE0ATUBNgE3ATgBOQE6ATsBPAE9AT4BPwFAAUEBQgFDAUQBRQFGAUcBSAFJAUoBSwFMAU0HdW5pMDAwRAd1bmlGRUZGB3VuaTAwQTAGdTEwQzAwBnUxMEMwMQZ1MTBDMDIGdTEwQzAzBnUxMEMwNAZ1MTBDMDUGdTEwQzA2BnUxMEMwNwZ1MTBDMDgGdTEwQzA5BnUxMEMwQQZ1MTBDMEIGdTEwQzBDBnUxMEMwRAZ1MTBDMEUGdTEwQzBGBnUxMEMxMAZ1MTBDMTEGdTEwQzEyBnUxMEMxMwZ1MTBDMTQGdTEwQzE1BnUxMEMxNgZ1MTBDMTcGdTEwQzE4BnUxMEMxOQZ1MTBDMUEGdTEwQzFCBnUxMEMxQwZ1MTBDMUQGdTEwQzFFBnUxMEMxRgZ1MTBDMjAGdTEwQzIxBnUxMEMyMgZ1MTBDMjMGdTEwQzI0BnUxMEMyNQZ1MTBDMjYGdTEwQzI3BnUxMEMyOAZ1MTBDMjkGdTEwQzJBBnUxMEMyQgZ1MTBDMkMGdTEwQzJEBnUxMEMyRQZ1MTBDMkYGdTEwQzMwBnUxMEMzMQZ1MTBDMzIGdTEwQzMzBnUxMEMzNAZ1MTBDMzUGdTEwQzM2BnUxMEMzNwZ1MTBDMzgGdTEwQzM5BnUxMEMzQQZ1MTBDM0IGdTEwQzNDBnUxMEMzRAZ1MTBDM0UGdTEwQzNGBnUxMEM0MAZ1MTBDNDEGdTEwQzQyBnUxMEM0MwZ1MTBDNDQGdTEwQzQ1BnUxMEM0NgZ1MTBDNDcGdTEwQzQ4AAAAAAIACAAC//8AAwABAAAADAAAABYAAAACAAEAAQBOAAEABAAAAAIAAAAAAAAAAQAAAADVpCcIAAAAAM1k7OgAAAAA08TlHg==) format('truetype'); font-weight: normal; font-style: normal; } 


body {
    font-family: 'Roboto', sans-serif;
    font-size: 12px;
background: #ebebeb;
    color: #333;
}

.text-convert {
font-family: Noto Sans Old Turkic;
}

form { width: 100%; margin: 50px auto;}
.form-group { display: grid; margin: 10px; width: 100%; }
.form-group textarea{ margin: 2px; border-color: #bdbdbd; background: #fff; border: 1px solid; box-shadow: inset 0 1px 2px rgba(0,0,0,.1);}
.form-group .text-original{border-radius: 3px 3px 0 0;}
.form-group .text-convert{border-radius: 0 0 3px 3px;}
.form-group select{border-radius: 0;margin-left: 2px; margin-right: 2px;  border-color: #bdbdbd; background: #fff; border: 1px solid; box-shadow: inset 0 1px 2px rgba(0,0,0,.1);}
.form-actions { text-align: center;}

.form-options{display: flex; flex-direction: row; border: 1px dotted #bbb; padding: 5px; background: #e1e1e1; color: #777; font-weight: 600; width: 100%; }
.form-options label{margin-left: 10px; text-transform: lowercase;font-family: Noto Sans Old Turkic;}

.tab {
    overflow: hidden; border: 1px solid #ccc;  background-color: #f1f1f1;
}

.tab button {
    background-color: inherit; float: left; border: none; outline: none; cursor: pointer; padding: 14px 16px; transition: 0.3s; font-size: 17px;
}

.tab button:hover {
    background-color: #ddd;
}

.tab button.active {
    background-color: #ccc;
}

.tabcontent {
    display: none;
    padding: 6px 12px;
    border: 1px solid #ccc;
    border-top: none;
}

blogger-clickTrap { position: unset;}
</style>
<script type="text/javascript">
// Controller
// needs  jquery
$(document).ready(function () {
    $(".btn-clear").click(function(){
  $(".text-original").val("");
  $(".text-convert").val("");
 });

 $(".text-original").on('change keyup paste', function(){
  var text = $(this).val();
  $(".text-convert").val(toBitig(text));
 });

 $(".func-letter-a").on('change', function(){
  first_ae = !first_ae;
  stateChange();
 });
 $(".func-letter-en").on('change', function(){
  enisey_a = !enisey_a;
  stateChange();
 });
 $(".func-letter-k").on('change', function(){
  nosingk = !nosingk;
  stateChange();
 });
 $(".func-letter-i").on('change', function(){
  itoiy = !itoiy;
  stateChange();
 });
 $(".func-marks").on('change', function(){
  funcs = !funcs;
  stateChange();
 });
 $(".method-selection").on('change', function(){
  convert_method = $(this).val();
  stateChange();
 });

 function stateChange(){
  var text = $('.text-original').val();
  $(".text-convert").val(toBitig(text));
 }
});
</script>

Steps (Algorithm or Block diagram without diagrams)
1. To convert the text to standard (my own standard*) Turkic latin alphabet, except Cyrillic "и" and "у";
2. To divide text into words;
3. To divide word into syllables;
4. To translate the syllable to Bitig

<script type="text/javascript">
const 
 ABC    = 'abcdefghijklmnopqrstuvwxyzäıöüŋğşçñ',
 VOWELS    = 'aeiouäıöü',
 BACK_VOWELS   = 'aıou',
 FRONT_VOWELS  = 'äeiöü',
 CONSONANTS    = 'bcdfghjklmnpqrstvwyzŋğşçñ',
 a = { 'дж':'c', 'къ':'q', 'нг':'ñ', 'дз':'z', 'гъ':'ğ', 'оь':'ö', 'уь':'ü', 'аь':'ä', 'нъ':'ñ', 'дь':'j', 'нь':'ñ',  /* Crime, Siberian Turkc*/
   'ә':'ä','ӑ':'ä','ə':'ä','â':'ä','ê':'ä','і':'i','ө':'ö','ӗ':'e','é':'e','ұ':'u','ү':'ü','ӳ':'ü','ў':'ü','ӱ':'ü',
   'ң':'ñ','ҥ':'ñ','ғ':'ğ','ґ':'ğ','ҕ':'ğ','қ':'q','ҡ':'q','ҳ':'q','һ':'q','h':'q','x':'q',
   'ï':'и','w':'у',
   'ҙ':'z','ҫ':'ç','ӌ':'ç','җ':'c',
   'tengri':'teñri','tenri':'teñri',    
   'ё':'yo','й':'y','ц':'s','у':'u','к':'k','е':'e','н':'n','г':'g','ш':'ş',
   'щ':'şş','з':'z','х':'q','ъ':'','ф':'p','ы':'ı','в':'v','а':'a','п':'p',
   'р':'r','о':'o','л':'l','д':'d','ж':'j', 'я':'ya','ч':'ç','с':'s',
   'м':'m', /*'и':'i' */ 'т':'t','ь':'','б':'b','ю':'yу'},

 VOWELS_BITIG   = ['𐰀', '𐰀', '𐰃', '𐰆', '𐰆', '𐰅', '𐰃', '𐰇', '𐰇'],
 CONSONANTS_BITIG  = ['𐰉', '𐰲', '𐰑', '𐰯', '𐰏', '𐰴', '𐰖', '𐰚', '𐰞', '𐰢', '𐰣', '𐰯', '𐰴', '𐰺', '𐰽', '𐱃', '𐰉', '𐰉', '𐰖', '𐰔', '𐰭', '𐰍', '𐱁', '𐰲', '𐰭'],
 FRONT_BITIG   = ['𐰋', '𐰓', '𐰏', '𐰚', '𐱅', '𐰠', '𐰤', '𐰼', '𐰾', '𐰘', '𐰢', '𐰯', '𐰭', '𐰭', '𐰔', '𐱁', '𐰲', '𐰘', '𐰲', '𐰋'],

 BACK_LATIN   = 'bdğqtlnrsympñŋzşçjcwgk',
 FRONT_LATIN  = 'bdgktlnrsympñŋzşçjcw',
 BACK_BITIG_Q  = ['𐰉', '𐰑', '𐰍', '𐰴', '𐱃', '𐰞', '𐰣', '𐰺', '𐰽', '𐰖', '𐰢', '𐰯', '𐰭', '𐰭', '𐰔', '𐱁', '𐰲', '𐰖', '𐰲', '𐰉', '𐰍', '𐰴'],
 BACK_BITIG_K  = ['𐰉', '𐰑', '𐰍', '𐰴', '𐱃', '𐰞', '𐰣', '𐰺', '𐰽', '𐰖', '𐰢', '𐰯', '𐰭', '𐰭', '𐰔', '𐱁', '𐰲', '𐰖', '𐰲', '𐰉', '𐰏', '𐰚'],

 UK = '𐰜', OQ = '𐰸', QI = '𐰶', NT = '𐰦', LT = '𐰡', NC = '𐰨', NY = '𐰪', VI = '𐰃', VO = '𐰆', VU = '𐰇', // const ic = '𐰱',
 CRI = 'и', CRW = 'у',
  
 REGEX   = /[^aeiouäıöü]*[aeiouäıöü]+(?:[^aeiouäıöü]*$|[^aeiouäıöü](?=[^aeiouäıöü]))?/gi,
 REGEXTNK  = /k|n|g|ş|t|b|e|ä/,
 REGEXTNKW  = /k|g/,
 REGEXVOWEL = /a|e|i|o|u|ä|ı|ö|ü/;

var itoiy = false, first_ae = false, enisey_a = true, nosingk = true, funcs = false, convert_method = 'over';
var word_length;

// Converter
function syllabify(word) { 
 var s = '';
 let m;
 while ((m = REGEX.exec(word)) !== null) {
  if (m.index === REGEX.lastIndex) {REGEX.lastIndex++;} // This is necessary to avoid infinite loops with zero-width matches
  m.forEach((match, groupIndex) => {     // The result can be accessed through the `m`-variable.
    s += (s !== '' ? ' ' : '') + match;  // console.log(`Found match, group ${groupIndex}: ${match}`);
  });
 }
 return s;
}

function latinize(word) {
  return word
   .replace('I','ı').replace('İ','i') /* Turkish extra ordinaries*/
   .toLowerCase()
   .split('').map(function (char) { return a[char] || char;}).join('');
}

function removePunctuations(s) {
        var res = '';
   s.split('').map(function (char) {
    var c = a[char] || char;
            if (ABC.indexOf(c) !== -1 || c === '\n' || c === CRI || c === CRW) {
            // if (Character.isLetterOrDigit(c) || c.equals('\n')) {
                res += c;
            } else {
                res += ' ' + c + ' ';
            }
        });
        return res;
    }

function toBitig(input){
 var words = latinize(input);
 if (!enisey_a){ words = words.replace('ä', 'e'); }
 words = removePunctuations(words);
 words = words
     .replace('\n', ' Z ')
     .trim()
     .replace('\\s{2,}', ' ')
     .split(' ');
        
 var sentence = '', last = '';
  words.forEach((word, index) => {
  
  if (itoiy && (word.indexOf(CRI) !== -1 || word.indexOf(CRW) !== -1)) { /* Normalize Kazak и & у letter */
   word = diphthongI(word);
   word = diphthongW(word);
  } else {
   word = word
      .replace(CRI, 'i')
      .replace(CRW, 'u');
  }
  // word = (itoiy && word.indexOf(CRI) !== -1) ? diphthongI(word) : word.replace(CRI, 'i');
  // word = (itoiy && word.indexOf(CRW) !== -1) ? diphthongW(word) : word.replace(CRW, 'u');;

  var add;
  if (!funcs){
   add = ((sentence === '' || last === '\n' || word === 'Z' || last === ' : ' || last === ' ' || last === '   ' || last === '') ? '' : ' : ') + 
   (word === 'Z' ? '\n' 
    : ((word.length == 1 && ABC.indexOf(word.charAt(0)) === -1  && word !== 'Z' ) ? '' 
    : wordToBitig(word)) ); 
  } else {
   var funs = '.,:؛؟)}]>»?;،.!';
   add =  ((sentence === '' || last === '\n' || funs.indexOf(last) !== -1) ? '' : ' ')
    +
    ((word.length == 1 && ABC.indexOf(word.charAt(0)) === -1 && word !== 'Z') ? (word === '?' ? '؟' : (word === ',' ? '،' : (word === ';' ? '؛' : word + (word.indexOf('?') !== -1 ? ' ' : ''))) )
    :  (word === 'Z' ? '\n' : wordToBitig(word)) );
  }
  sentence += add;
  last = (word === 'Z' ? '\n' : add);
 });
 return sentence; 
}

function diphthongI(word){  // change cyrillic И to iy or ıy  (for Kazak abc)
 console.log('И word: ', word);
 if (word === CRI) return 'iy'; // if word is only И letter
 if (word.length === 2 || (word.length === 3 && CONSONANTS.indexOf(word.charAt(2)) !== -1)) { // 2 letter or (3 letter and last is consonants)
  return word.replace(CRI, (word.match(REGEXTNK) ? 'iy' : 'ıy'));
 } else {
  var new_word = '';
  for (var i = 0; i < word.length; i++){
   var c = word.charAt(i);
   if (c !== CRI){  // if current letter is not И
    new_word += c;
   } else {    // current letter is И
    new_word += (word.charAt(i < 2 ? i : i - 1).match(REGEXTNK) ? 'iy' : 'ıy');
   }
  }
  return new_word;
 }
}

function diphthongW(word){
 if (word === CRW) return 'ub';
 if(word.length === 2){
  /* v[w] */ if (VOWELS.indexOf(word.charAt(0)) !== -1) return word.replace(CRW, 'w');
  /* [w]v */ if (VOWELS.indexOf(word.charAt(1)) !== -1) return word.replace(CRW, (FRONT_VOWELS.indexOf(word.charAt(1)) !== -1 ? 'üw' : 'uw'));
  /* [w]c OR c[w] */ return word.replace(CRW, (word.match(REGEXTNK) ? 'üw' : 'uw'));
 } 
 var new_word = '';
 for (var i = 0; i < word.length; i++){
  var c = word.charAt(i);
  if (c != CRW){
   new_word += c;
  } else {
   if (i === 0){
    new_word += ((FRONT_VOWELS.indexOf(word.charAt(1)) !== -1 || word.charAt(1).match(REGEXTNKW)) ? 'üw' : 'uw');
   } else if (i === 1){
    new_word += (VOWELS.indexOf(word.charAt(0)) !== -1 ? 'w' : 
                 (word.charAt(0).match(REGEXTNKW) ? 'üw' : 'uw'));
   } else {
    new_word += (VOWELS.indexOf(word.charAt(i -1)) !== -1 ? 'w' :
                 (word.charAt(i - 1).match(REGEXTNK) ? 'iw' : 'ıw') );
   }
  }
 }
 return new_word || word;
}
  
function getCons(c, v){
 if (BACK_VOWELS.indexOf(v) !== -1){
  return BACK_LATIN.indexOf(c) !== -1 && nosingk ? BACK_BITIG_Q[BACK_LATIN.indexOf(c)] : CONSONANTS_BITIG[CONSONANTS.indexOf(c)];
 } else if (FRONT_VOWELS.indexOf(v) !== -1){
  return FRONT_LATIN.indexOf(c) !== -1 ? FRONT_BITIG[FRONT_LATIN.indexOf(c)] : CONSONANTS_BITIG[CONSONANTS.indexOf(c)];
 }
 return c;
}

function getCC(c){
 switch(c){
  case 'nt':
  case 'nd':
   return NT;
  case 'lt':
  case 'ld':
   return LT;
  case 'ny':
   return NY;
  case 'nç':
  case 'nş':
   return NC;
  default:
   return '';
 }
}
  
function getAE(v, bool){
 return (v === 'a' || v === 'e') && bool ? '' : VOWELS_BITIG[VOWELS.indexOf(v)];
}

 function wordToBitig(word){
 console.log('\nWORD: |', word);
 var bitig_word = '';
 var syll = '';
 word_length = word.length;
 if (word.match(REGEXVOWEL) && word.length > 1){
  var divided = syllabify(word).split(' ');
  var last_c = ' ';
  // var i = 0;
  divided.forEach((tmp, i) => {
   var syll_length = tmp.length;
   var c0 = tmp.charAt(0);
   var c1 = syll_length > 1 ? tmp.charAt(1) : ' ';
   var c2 = syll_length > 2 ? tmp.charAt(2) : ' ';
   var c3 = syll_length > 3 ? tmp.charAt(3) : ' ';

   var is_last = (i === divided.length - 1);
   var is_first = (i === 0);

   console.log('current syllabic: |',i, is_first, is_last, tmp);
   
   switch (syll_length){
    case 1:
     if (ABC.indexOf(c0) !== -1){
      syll = CONSONANTS.indexOf(c0) !== -1 ? getCons(c0, 'a') : (VOWELS.indexOf(c0) !== -1 ? getAE(c0, (!first_ae && i === 0)) : c0);
     } else { syll = c0;}
     break;
    case 2:
     syll = syll2(c0, c1, is_first, is_last, true);
     break;
    case 3:
     syll = syll3(c0, c1, c2, is_first, is_last);
     break;
    case 4:
     syll = syll4(c0, c1, c2, c3, is_first, is_last);
     break;
    default:
     syll += c0 + c1 + c2 + c3;
     break;
   }

   if ( i > 1 && (('uqu oqo oqu uqo'.indexOf(tmp) !== -1 && last_c === 'q') || ('quq qoq'.indexOf(tmp) !== -1 && 'ou'.indexOf(last_c) !== -1)
     || (nosingk && (('uku oko oku uko'.indexOf(tmp) !== -1 && is_last_c === 'k') || ('kuk kok'.indexOf(tmp) !== -1 && 'ou'.indexOf(last_c) !== -1) )))){
    bitig_word = bitig_word.substring(0, bitig_word.length -2) + OQ + syll.substring(2, syll.length);
   } else if (getCC(last_c + c0) !== ''){
    bitig_word = bitig_word.substring(0, bitig_word.length -2) + getCC(last_c + c0) + syll.substring(2, syll.length);
   } else {
    bitig_word += syll;
   }   
   last_c = tmp.charAt(syll_length - 1);
  });
 } else {
  for (var i = 0; i < word.length; i++){
   var c = word.charAt(i);
   if (CONSONANTS.indexOf(c) !== -1){
    syll += CONSONANTS_BITIG[CONSONANTS.indexOf(c)];
   } else if (VOWELS.indexOf(c) !== -1){
    syll += VOWELS_BITIG[VOWELS.indexOf(c)];
   } else {
    syll += c;
   }
  }
  bitig_word += syll;
 }

 if (convert_method !== 'no') bitig_word = getHarmony(bitig_word);
 return bitig_word;
}

 function getHarmony(word){
 var ret = '';
 if (convert_method === 'over' || convert_method === 'lib') {
  var o = VO + VU;
  var ii = VI;
  var pre = '';
  for (var i = 0; i < word.length - 1; i += 2){
   var c = word.substring(i, i + 2);
   if (pre === '' || i === word.length - 2){
    pre = (o + ii).indexOf(c) !== -1 ? c : '';
    ret += c;
   } else  if (o.indexOf(pre) !== -1 && o.indexOf(c) !== -1){
    ret += '';
    pre = o.indexOf(c) !== -1 ? c : '';
   } else {
    if (convert_method === 'over' && (o + ii).indexOf(pre) !== -1 && (o + ii).indexOf(c) !== -1) {
     ret += '';
     pre = ((o + ii).indexOf(c) !== -1 ? c : '');
    } else {
     ret += c;
    }
   }
  }
 }
 return ret;
}

 function syll2(c0, c1, first, last, setv){
  var bitig_syll = '';
        // if (last && !first){
        if (!first){
            bitig_syll = VC(c0, c1, last);
        } else {
            if (VOWELS.indexOf(c1) !== -1){ //cv
    if (nosingk && c0 === 'k' && BACK_VOWELS.indexOf(c1) !== -1){ c0 = 'q'; }
    if ((first || last) && word_length !== 2 && c0 === 'q' && c1 === 'ı'){
     bitig_syll = QI + getAE(c1, !last);
    } else if ((first || last) && word_length !== 2 && c0 === 'q' && (c1 === 'u' || c1 === 'o')){
     bitig_syll = OQ + getAE(c1, !last);
    } else {
                 bitig_syll = getCons(c0, c1) + getAE(c1, !last);
    }
            } else {// vc
    if (nosingk && c1 === 'k' && BACK_VOWELS.indexOf(c0) !== -1){
     c1 = 'q';
    }
    if ((first || last) && c0 == 'ı' && c1 == 'q'){
     bitig_syll = QI;// + getCons(c1, c0);
    } else if ((first || last) && (c0 == 'o' || c0 == 'u') && c1 == 'q'){
     bitig_syll = OQ;// + getCons(c1, c0);
    } else {
                 bitig_syll = getAE(c0, !first_ae && first && setv) + getCons(c1, c0);
    }
            }
        }
        return bitig_syll;
    }

function syll3(c0, c1, c2, first, last){
        var bitig_syll = '';
        if (VOWELS.indexOf(c1) !== -1){
            // cvc
   if (nosingk){
    if (c0 === 'k' && BACK_VOWELS.indexOf(c1) !== -1){ c0 = 'q'; }
    if (c2 === 'k' && BACK_VOWELS.indexOf(c1) !== -1){ c2 = 'q'; }
   }
   if (c0 === 'k' && (c1 === 'ö' || c1 === 'ü')){
    bitig_syll = UK + (first ? VU : '') + getCons(c2, c1);
   } else if (first && c0 === 'q' && c1 === 'ı'){
    bitig_syll = QI + VI + getCons(c2, c1);
   } else if (c1 === 'ı' && c2 === 'q'){
    bitig_syll = getCons(c0, c1) + QI;
   } else if (first && c0 === 'q' && (c1 === 'o' || c1 === 'u')){
    bitig_syll = OQ + VO + getCons(c2, c1);
   } else if ((c1 === 'o' || c1 === 'u') && c2 === 'q'){
    bitig_syll = getCons(c0, c1) + OQ;
   } else {
     bitig_syll = getCons(c0, c1) + ((c1 === 'a' || c1 === 'e') ? getCons(c2, c1) : VC(c1, c2, last));//syll2(c1, c2, false, true, true);
   }
        } else if (VOWELS.indexOf(c0) !== -1) {
            // vcc
            bitig_syll = getAE(c0, (last && !first_ae) || !last) + doubleCons(c0, c1, c2);
        }
        return bitig_syll;
    }

function syll4(c0, c1, c2, c3, first, last){
 var bitig_syll;
 if (VOWELS.indexOf(c1) !== -1){ // cvcc
  bitig_syll = doubleCons(c1, c2, c3);
  return getCons(c0, c1) + getAE(c1, true) + bitig_syll;
 } else { //ccvc
  bitig_syll = doubleCons(c2, c0, c1);
  return bitig_syll + syll2(c2, c3, false, last, false);
 }
}

function doubleCons(v, c0, c1){
 switch(c0 + c1){
  case 'nt':
  case 'nd':
   return NT;
  case 'lt':
  case 'ld':
   return LT;
  case 'ny':
   return NY;
  case 'nç':
   return NC;
  default:
   return (getCons(c0, v) + getCons(c1, v));
 }
}

function VC(c0, c1, last){
        var bitig_syll = '';
        var vc = c0 + c1;
        switch (vc){
            case 'oq':
            case 'uq':
    bitig_syll = OQ;
                break;
            case 'qo':
            case 'qu':
                bitig_syll = OQ + '𐰆';
                break;
            case 'ök':
            case 'ük':
    bitig_syll = UK;
                break;
            case 'kü':
            case 'kö':
                bitig_syll = UK + (last ? '' : VU);
                break;
   case 'qı':
    bitig_syll = QI;
    break;
   case 'ıq':
    bitig_syll = QI + VI;
    break;
            default:
                if (VOWELS.indexOf(c1) !== -1){ // cv
                    bitig_syll = getCons(c0, c1) + getAE(c1, !last);
                } else // vc
                    bitig_syll =  getAE(c0, last) + getCons(c1, c0);
                break;
        }
        return bitig_syll;
    } 
</script>

1 comment:

  1. Wow! Exactly what I was looking for. Thank you!

    ReplyDelete