lib/internal.js
function h_like_gh_other(hash) {
    // TODO: four exceptions are snih, muh, nah and dṛh
    var vowel_before_Q = hash.stem.slice(-1);
    var short_vowel = Const.longshort[vowel_before_Q];
    var re = new RegExp(vowel_before_Q + '$');
    var short_stem = hash.stem.replace(re, short_vowel);
    short_stem = [short_stem, 'ह्'].join('');
    var stem = [hash.stem, 'ह्'].join('');
    if (stem == hash.stem && short_stem == hash.stem) return;
    hash.stems = _.uniq([stem, short_stem]);
    if (debug) log('mod: h_like_gh_other', stem);
}
function h_like_gh_other(hash) {
    // TODO: four exceptions are snih, muh, nah and dṛh
    var vowel_before_Q = hash.stem.slice(-1);
    var short_vowel = Const.longshort[vowel_before_Q];
    var re = new RegExp(vowel_before_Q + '$');
    var short_stem = hash.stem.replace(re, short_vowel);
    short_stem = [short_stem, 'ह्'].join('');
    var stem = [hash.stem, 'ह्'].join('');
    if (stem == hash.stem && short_stem == hash.stem) return;
    hash.stems = _.uniq([stem, short_stem]);
    if (debug) log('mod: h_like_gh_other', stem);
}
function h_like_gh_other ( hash ) { // TODO: four exceptions are snih, muh, nah and dṛh var vowel_before_Q = hash . stem . slice ( - 1 ) ; var short_vowel = Const . longshort [ vowel_before_Q ] ; var re = new RegExp ( vowel_before_Q + '$' ) ; var short_stem = hash . stem . replace ( re , short_vowel ) ; short_stem = [ short_stem , 'ह्'].jo i n ('') ; var stem = [ hash . stem , 'ह्'].jo i n ('') ; if ( stem == hash . stem && short_stem == hash . stem ) return ; hash . stems = _ . uniq ( [ stem , short_stem ] ) ; if ( debug ) log ( 'mod: h_like_gh_other' , stem ) ; }
three things: 1) changes t, th, and dh — if they follow the h — into ḍh, 2) lengthens the vowel in front of it, if possible, 3) disappears
three things : 1 ) changes t th and dh — if they follow the h — into ḍh 2 ) lengthens the vowel in front of it if possible 3 ) disappears