Repository: bem/bh (js)

Issue:
ctx.apply: Rename to ctx.process and describe

Pull request:
ctx.apply: Rename to ctx.process and describe
close #135 

Patch:
diff --git a/README.md b/README.md
index 590adbc..10eee0d 100644
--- a/README.md
+++ b/README.md
@@ -312,7 +312,15 @@ Error: Infinite matcher loop detected at "button".
 
 `Ctx` class instances are passed to all templates. All class methods in a set mode return the class instance.
 
-Let's examine the class methods:
+## ctx.process(bemJson)
+
+This class method applies templates for given BEMJSON tree in the current context. It returns the processed BEMJSON.
+
+```javascript
+bh.match('button', function(ctx) {
+    bh.toHtml(ctx.process({ elem: 'control' }));
+});
+```
 
 ## ctx.tag([value[, force]])
 
diff --git a/README.ru.md b/README.ru.md
index 3051c6e..97f8123 100644
--- a/README.ru.md
+++ b/README.ru.md
@@ -297,7 +297,15 @@ Error: Infinite matcher loop detected at "button".
 
 Инстанции класса `Ctx` передаются во все шаблоны. Все методы класса в set-режиме возвращают инстанцию класса, то есть реализуют чейнинг.
 
-Рассмотрим методы класса:
+## ctx.process(bemJson)
+
+Применяет шаблоны для переданного BEMJSON-дерева в текущем контексте. Возвращает результат преобразований.
+
+```javascript
+bh.match('button', function(ctx) {
+    bh.toHtml(ctx.process({ elem: 'control' }));
+});
+```
 
 ## ctx.tag([value[, force]])
 
diff --git a/lib/bh.js b/lib/bh.js
index 9a61afc..41dda23 100644
--- a/lib/bh.js
+++ b/lib/bh.js
@@ -177,7 +177,7 @@ function BH() {
          * @param {BemJson} bemJson
          * @returns {Object|Array}
          */
-        apply: function(bemJson) {
+        process: function(bemJson) {
             var prevCtx = this.ctx,
                 prevNode = this.node;
             var res = this.bh.processBemJson(bemJson, prevCtx.block);


Test patch:
diff --git a/test/test.apply.js b/test/test.apply.js
index 7985278..7204253 100644
--- a/test/test.apply.js
+++ b/test/test.apply.js
@@ -1,7 +1,7 @@
 var BH = require('../lib/bh');
 require('chai').should();
 
-describe('ctx.apply()', function() {
+describe('bh.apply()', function() {
     var bh;
     beforeEach(function() {
         bh = new BH();
@@ -17,36 +17,4 @@ describe('ctx.apply()', function() {
         });
         bh.apply({ block: 'link' }).should.equal('');
     });
-
-    it('should return valid processed element', function() {
-        bh.match('button', function(ctx) {
-            var inner = ctx.apply({ block: 'button', elem: 'inner' });
-            inner.tag.should.equal('span');
-            ctx.content(inner);
-        });
-        bh.match('button__inner', function(ctx) {
-            ctx.tag('span');
-        });
-        bh.apply({ block: 'button' }).should.equal(
-            '<div class="button">' +
-                '<span class="button__inner"></span>' +
-            '</div>'
-        );
-    });
-
-    it('should return valid processed element with no block name', function() {
-        bh.match('button', function(ctx) {
-            var inner = ctx.apply({ elem: 'inner' });
-            inner.tag.should.equal('span');
-            ctx.content(inner);
-        });
-        bh.match('button__inner', function(ctx) {
-            ctx.tag('span');
-        });
-        bh.apply({ block: 'button' }).should.equal(
-            '<div class="button">' +
-                '<span class="button__inner"></span>' +
-            '</div>'
-        );
-    });
 });
diff --git a/test/test.process.js b/test/test.process.js
new file mode 100644
index 0000000..c1493e3
--- /dev/null
+++ b/test/test.process.js
@@ -0,0 +1,33 @@
+var BH = require('../lib/bh');
+require('chai').should();
+
+describe('ctx.process()', function() {
+    var bh;
+    beforeEach(function() {
+        bh = new BH();
+    });
+
+    it('should return valid processed json', function() {
+        bh.match('search', function(ctx) {
+            ctx.content(ctx.process({ block: 'input' }));
+        });
+        bh.match('input', function(ctx) {
+            ctx.tag('input');
+        });
+        bh.apply({ block: 'search' }).should.equal(
+            '<div class="search"><input class="input"/></div>'
+        );
+    });
+
+    it('should return valid processed element with no block name', function() {
+        bh.match('button', function(ctx) {
+            ctx.content(ctx.process({ elem: 'inner' }));
+        });
+        bh.match('button__inner', function(ctx) {
+            ctx.tag('span');
+        });
+        bh.apply({ block: 'button' }).should.equal(
+            '<div class="button"><span class="button__inner"></span></div>'
+        );
+    });
+});