Simple image host.
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

preprocess.js 1.4KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. var valueRegex = "([a-zA-Z0-9_\\-]+)#([a-zA-Z0-9_\\-]+)";
  2. var regexStr =
  3. "{{"+ //{{
  4. valueRegex+ //foo#bar - $1#$2
  5. "(?:"+ //<optional>
  6. " \\? "+ //?
  7. valueRegex+ //foo#bar - $3#$4
  8. " : "+ //:
  9. valueRegex+ //foo#bar - $5#$6
  10. ")?"+ //</optional>
  11. "}}"; //}}
  12. var localRegex = new RegExp(regexStr);
  13. var globalRegex = new RegExp(regexStr, "g");
  14. function getVal(ns, key, env) {
  15. var n = env[ns];
  16. if (typeof n === "function")
  17. return n(key);
  18. else if (n)
  19. return n[key];
  20. else
  21. throw new Error("Namespace "+ns+" doesn't exist.");
  22. }
  23. module.exports = function(str, env) {
  24. var placeholders = str.match(globalRegex);
  25. if (!placeholders)
  26. return str;
  27. placeholders.forEach(function(p) {
  28. var parts = p.match(localRegex);
  29. var s = parts[0];
  30. //Ternary
  31. if (parts[6]) {
  32. try {
  33. var cond = getVal(parts[1], parts[2], env);
  34. var val1 = getVal(parts[3], parts[4], env);
  35. var val2 = getVal(parts[5], parts[6], env);
  36. } catch (err) {
  37. return;
  38. }
  39. if (cond === true)
  40. str = str.replace(s, val1);
  41. else
  42. str = str.replace(s, val2);
  43. }
  44. //Direct value
  45. else {
  46. try {
  47. var val = getVal(parts[1], parts[2], env);
  48. } catch (err) {
  49. return;
  50. }
  51. if (val !== undefined && val !== null)
  52. str = str.replace(s, val);
  53. }
  54. });
  55. return str;
  56. }