rollup-plugin-ec-lang.js 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. /**
  2. * Find language definations.
  3. *
  4. * Usage:
  5. *
  6. * import ecLangPlugin from 'echarts/build/rollup-plugin-ec-lang';
  7. * let rollupConfig = {
  8. * plugins: [
  9. * ecLangPlugin({lang: 'en'}),
  10. * ...
  11. * ]
  12. * };
  13. */
  14. const {resolve} = require('path');
  15. const {readFileSync} = require('fs');
  16. /**
  17. * @param {Object} [opt]
  18. * @param {string} [opt.lang=null] null/undefined/'' or 'en' or 'fi' or a file path.
  19. */
  20. function getPlugin(opt) {
  21. let lang = opt && opt.lang || '';
  22. return {
  23. load: function (absolutePath) {
  24. if (/\/src\/lang\.js$/.test(absolutePath)) {
  25. let langPath = getLangFileInfo(lang).absolutePath;
  26. if (langPath) {
  27. absolutePath = langPath;
  28. }
  29. }
  30. return readFileSync(absolutePath, 'utf-8');
  31. }
  32. };
  33. }
  34. /**
  35. * @param {string} lang null/undefined/'' or 'en' or 'fi' or a file path.
  36. * @return {Object} {isOuter, absolutePath}
  37. */
  38. let getLangFileInfo = getPlugin.getLangFileInfo = function (lang) {
  39. let absolutePath;
  40. let isOuter = false;
  41. if (lang) {
  42. if (/^[a-zA-Z]{2}$/.test(lang)) {
  43. absolutePath = resolve(__dirname, '../', 'src/lang' + lang.toUpperCase() + '.js')
  44. }
  45. else {
  46. isOuter = true;
  47. // `lang` is an absolute path or a relative path based on process.cwd().
  48. absolutePath = resolve(lang);
  49. }
  50. }
  51. return {isOuter, absolutePath};
  52. };
  53. module.exports = getPlugin;