Advertisement
stuppid_bot

Untitled

Sep 10th, 2013
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.80 KB | None | 0 0
  1. (function (root) {
  2. var isDom = root === window;
  3. var self = isDom ? (root.Temp = {}) : root.exports;
  4.  
  5. self.escape = function (str) {
  6. return str.replace(/<|>|'|"/g, function (unit) {
  7. return {
  8. '<': '&lt;',
  9. '>': '&gt;',
  10. '\'': '&#39;',
  11. '"': '&quot;'
  12. } [unit];
  13. });
  14. };
  15.  
  16. self.compile = function (str) {
  17. var re = /(\$|#)\{(.*?)\}|<\?(.*?)\?>/g;
  18. var match;
  19. var start = 0;
  20. var end;
  21. var c = 'var escape=' + self.escape + ';with(context){';
  22.  
  23. for (;;) {
  24. match = re.exec(str);
  25. end = (match ? re.lastIndex : str.length) - 1;
  26. c += 'out+="'
  27. + str.substr(start, end)
  28. .replace(/\\/g, '\\\\')
  29. .replace(/"/g, '\\"')
  30. + '";';
  31.  
  32. if (!match) {
  33. break;
  34. }
  35. }
  36.  
  37. while (match = re.exec(str)) {
  38. c += 'out+="'
  39. + str.substr(pos, re.lastIndex)
  40. .replace(/\\/g, '\\\\')
  41. .replace(/"/g, '\\"')
  42. + '";'
  43.  
  44.  
  45.  
  46. if (matches[3] === undefined) {
  47. c += 'out+=' + (matches[1] == '$' ? 'escape(' + matches[2] + ')' : matches[2]) + ';';
  48. }
  49. else {
  50. c += matches[3]
  51. }
  52. }
  53. };
  54.  
  55. self.parse = function (str, data) {
  56. //
  57. };
  58.  
  59. self.render = isDom
  60. ? function (id) {
  61. var el = root.document.getElementById(id);
  62.  
  63. return function (data) {
  64. return self.parse(el.innerHTML, data);
  65. };
  66. }
  67.  
  68. : (function () {
  69. var fs = require('fs');
  70. var data = fs.readFileSync(filename, 'utf8');
  71. var view = self.parse(data);
  72.  
  73. fs.watchFile(filename, function (curr, prev) {
  74. fs.readFile(filename, 'utf8', function (err, data) {
  75. if (err) {
  76. throw err;
  77. }
  78.  
  79. content = data;
  80. });
  81. });
  82.  
  83. return function (data) {
  84. return self.parse(content, data);
  85. };
  86. })();
  87. })(window || module);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement