import Lexers from './../../grammar/';

const DEFAULT_LANG = "pt";

export const LanguageService  = Object.freeze({

  getLang: () => {
    const lang = localStorage.getItem('ivprog.lang');
    if (lang === null || lang === undefined) {
      console.warn("Internal Error. User language information has not been set. Returning default...");
      return LanguageService.getDefaultLang();
    }
    return lang;
  },

  getDefaultLang: () => {
    return DEFAULT_LANG;
  },

  getCurrentLexer: () => {
    const langInfo = Lexers[LanguageService.getLang()];
    if(langInfo === null || langInfo === undefined) {
      return Lexers[DEFAULT_LANG].lexer;
    } else {
      return langInfo.lexer;
    }
  },

  getCurrentLangFuncs: () => {
    const langInfo = Lexers[LanguageService.getLang()];
    if(langInfo === null || langInfo === undefined) {
      return Lexers[DEFAULT_LANG].langFuncs;
    } else {
      return langInfo.langFuncs;
    }
  },

  getCurrentLangLibs: () => {
    const langInfo = Lexers[LanguageService.getLang()];
    if(langInfo === null || langInfo === undefined) {
      return Lexers[DEFAULT_LANG].langLibs;
    }
    return langInfo.langLibs;
  }

});