import Lexers from './../../grammar/';
import line_i18n from 'line-i18n';

const DEFAULT_LANG = "pt";

class LanguageServiceExtended extends line_i18n.LanguageService {

  constructor () {
    super("ivprog.lang", DEFAULT_LANG);
  }

  getCurrentLexer () {
    const langInfo = Lexers[this.getLang()];
    if(langInfo === null || langInfo === undefined) {
      return Lexers[this.getDefaultLang()].lexer;
    } else {
      return langInfo.lexer;
    }
  }

  getCurrentLangFuncs () {
    const langInfo = Lexers[this.getLang()];
    if(langInfo === null || langInfo === undefined) {
      return Lexers[this.getDefaultLang()].langFuncs;
    } else {
      return langInfo.langFuncs;
    }
  }

  getCurrentLangLibs () {
    const langInfo = Lexers[this.getLang()];
    if(langInfo === null || langInfo === undefined) {
      return Lexers[this.getDefaultLang()].langLibs;
    }
    return langInfo.langLibs;
  }
}

export const LanguageService  = Object.freeze(new LanguageServiceExtended());