From 07472bbe60a7bebccdb7ca99ff3471cc836c1735 Mon Sep 17 00:00:00 2001 From: Vladimir Grinenko Date: Thu, 19 Dec 2013 15:25:44 +0200 Subject: [PATCH] #329 Use bemhtml from bem-xjst --- .bem/lib/bemhtml.js | 10 ---- .bem/lib/bemhtml/api.js | 54 ------------------- .bem/lib/bemhtml/cache.js | 37 ------------- .bem/techs/bemhtml.js | 20 ++++--- .bem/techs/bemtree.js | 10 +--- .../i-bem__i18n-test.js | 2 +- .../i-bem/i-bem.test.bemhtml/basic-test.js | 2 +- .../i-bem/i-bem.test.bemhtml/i-bem-test.js | 2 +- package.json | 2 +- 9 files changed, 20 insertions(+), 119 deletions(-) delete mode 100644 .bem/lib/bemhtml.js delete mode 100644 .bem/lib/bemhtml/api.js delete mode 100644 .bem/lib/bemhtml/cache.js diff --git a/.bem/lib/bemhtml.js b/.bem/lib/bemhtml.js deleted file mode 100644 index 75deaa57a..000000000 --- a/.bem/lib/bemhtml.js +++ /dev/null @@ -1,10 +0,0 @@ -// -// API -// -exports.translate = require('./bemhtml/api').translate; -exports.compile = require('./bemhtml/api').compile; - -// -// Naive-Cache -// -exports.cache = require('./bemhtml/cache'); diff --git a/.bem/lib/bemhtml/api.js b/.bem/lib/bemhtml/api.js deleted file mode 100644 index 944d5af6d..000000000 --- a/.bem/lib/bemhtml/api.js +++ /dev/null @@ -1,54 +0,0 @@ -var bem_xjst = require('bem-xjst'), - vm = require('vm'); - -var api = exports; - -// -// ### function translate (source) -// #### @source {String} BEMHTML Source code -// #### @options {Object} Compilation options **optional** -// Returns source translated to javascript -// -api.translate = function translate(source, options) { - options || (options = {}); - - var xjstJS = bem_xjst.generate(source, { - optimize: !options.devMode - }), - exportName = options.exportName || 'BEMHTML'; - - return [ - '(function(g) {\n', - ' var __xjst = (function(exports) {\n', - ' ' + xjstJS + ';', - ' return exports;', - ' })({});', - ' var defineAsGlobal = true;', - ' if(typeof exports === "object") {', - ' exports["' + exportName + '"] = __xjst;', - ' defineAsGlobal = false;', - ' }', - ' if(typeof modules === "object") {', - ' modules.define("' + exportName + '", function(provide) { provide(__xjst) });', - ' defineAsGlobal = false;', - ' }', - ' defineAsGlobal && (g["' + exportName + '"] = __xjst);', - '})(this);' - ].join('\n'); -}; - -// -// ### function compile (source) -// #### @source {String} BEMHTML Source code -// #### @options {Object} Compilation options **optional** -// Returns generator function -// -api.compile = function compile(source, options) { - var body = exports.translate(source, options), - context = { exports: {} }; - - if (options && options.devMode) context.console = console; - vm.runInNewContext(body, context); - - return context.exports.BEMHTML; -}; diff --git a/.bem/lib/bemhtml/cache.js b/.bem/lib/bemhtml/cache.js deleted file mode 100644 index c14fb55f6..000000000 --- a/.bem/lib/bemhtml/cache.js +++ /dev/null @@ -1,37 +0,0 @@ -var cache = exports; - -// -// ### function Cache () -// Naive-cache constructor -// -function Cache() { - this.map = {}; -}; - -// -// ### function create() -// Constructor wrapper -// -cache.create = function create() { - return new Cache(); -}; - -// -// ### function set (key, value) -// #### @key {String} cache key -// #### @value {Any} value -// Put key into cache -// -Cache.prototype.set = function set(key, value) { - this.map[key] = value; -}; - -// -// ### function get (key) -// #### @key {String} cache key -// Get value from the cache -// -Cache.prototype.get = function get(key) { - if (this.map.hasOwnProperty(key)) return this.map[key]; - return undefined; -}; diff --git a/.bem/techs/bemhtml.js b/.bem/techs/bemhtml.js index c0aa0da28..f0c2e3ecf 100644 --- a/.bem/techs/bemhtml.js +++ b/.bem/techs/bemhtml.js @@ -38,12 +38,20 @@ exports.techMixin = { getCompiledResult : function(sources) { sources = sources.join('\n'); - var BEMHTML = require('../lib/bemhtml'); - return BEMHTML.translate(sources, { - devMode : process.env.BEMHTML_ENV == 'development', - cache : process.env.BEMHTML_CACHE == 'on', - exportName : 'BEMHTML' - }); + var BEMHTML = require('bem-xjst/lib/bemhtml'), + exportName = this.getExportName(), + optimize = process.env[exportName + '_ENV'] != 'development'; + + return BEMHTML.generate(sources, { + wrap: true, + exportName: exportName, + optimize: optimize, + cache : optimize && process.env[exportName + '_CACHE'] == 'on' + }); + }, + + getExportName: function() { + return 'BEMHTML'; } }; diff --git a/.bem/techs/bemtree.js b/.bem/techs/bemtree.js index facb82954..c4dd0020f 100644 --- a/.bem/techs/bemtree.js +++ b/.bem/techs/bemtree.js @@ -12,14 +12,8 @@ exports.techMixin = { return ['bemtree']; }, - getCompiledResult : function(sources) { - sources = sources.join('\n'); - - var BEMHTML = require('../lib/bemhtml'); - return BEMHTML.translate(sources, { - devMode : process.env.BEMTREE_ENV == 'development', - exportName : 'BEMTREE' - }); + getExportName: function() { + return 'BEMTREE'; } }; diff --git a/common.blocks/i-bem/__i18n/i-bem__i18n.test.bemhtml/i-bem__i18n-test.js b/common.blocks/i-bem/__i18n/i-bem__i18n.test.bemhtml/i-bem__i18n-test.js index efa471304..804de7474 100644 --- a/common.blocks/i-bem/__i18n/i-bem__i18n.test.bemhtml/i-bem__i18n-test.js +++ b/common.blocks/i-bem/__i18n/i-bem__i18n.test.bemhtml/i-bem__i18n-test.js @@ -4,7 +4,7 @@ var ASSERT = require('assert'), FS = require('fs'), PATH = require('path'), - BEMHTML = require('../../../../.bem/lib/bemhtml'), + BEMHTML = require('bem-xjst/lib/bemhtml'), resolve = PATH.resolve.bind(null, __dirname), cores = [ '../_dummy/i-bem__i18n_dummy_yes.bemhtml', diff --git a/common.blocks/i-bem/i-bem.test.bemhtml/basic-test.js b/common.blocks/i-bem/i-bem.test.bemhtml/basic-test.js index 98e442169..34e16d582 100644 --- a/common.blocks/i-bem/i-bem.test.bemhtml/basic-test.js +++ b/common.blocks/i-bem/i-bem.test.bemhtml/basic-test.js @@ -1,5 +1,5 @@ var assert = require('assert'), - bemhtml = require('../../../.bem/lib/bemhtml'); + bemhtml = require('bem-xjst/lib/bemhtml'); suite('BEMHTML Compiler', function() { function unit(name, src, data, dst) { diff --git a/common.blocks/i-bem/i-bem.test.bemhtml/i-bem-test.js b/common.blocks/i-bem/i-bem.test.bemhtml/i-bem-test.js index 845b7b5d3..47892b5ae 100644 --- a/common.blocks/i-bem/i-bem.test.bemhtml/i-bem-test.js +++ b/common.blocks/i-bem/i-bem.test.bemhtml/i-bem-test.js @@ -1,7 +1,7 @@ var assert = require('assert'), fs = require('fs'), path = require('path'), - bemhtml = require('../../../.bem/lib/bemhtml'), + bemhtml = require('bem-xjst/lib/bemhtml'), iBem = fs.readFileSync(path.resolve( __dirname, '../i-bem.bemhtml' diff --git a/package.json b/package.json index 961b18c76..60f24bd63 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "license": "MIT", "dependencies": { "ym": "0.0.12", - "bem-xjst": "~0.3.1", + "bem-xjst": "0.4.0", "bemhtml-compat": "~0.0.4", "bem-environ": "~1.2.0" },