JSDoc3, fest.bem
#!+ /**
* @class Folder
* @param {Object} [attrs] аттрибуты (опционально)
#!- */
var Folder = function (attrs) {
this.attrs = attrs;
};
Folder.prototype = /** @lends Folder.prototype */{
#!+ /**
* Установить свойство
* @param {string} key имя свойства (обязательно)
* @param {*} value значение (обязательно)
* @returns {Folder}
#!- */
set: function (key) { ... },
#!+ /**
* Получить свойство
* @param {string} key имя свойства (обязательно)
* @returns {*}
#!- */
get: function (key) { ... }
};
/**
* @class Folder
* @param {Object} [attrs] аттрибуты (опционально)
*/
var Folder = function (attrs) {
this.attrs = attrs;
};
Folder.prototype = /** @lends Folder# */{
/**
* Установить свойство
* @param {string} key имя свойства (обязательно)
* @param {*} value значение (обязательно)
* @returns {Folder}
*/
set: function (key) { ... },
/**
* Получить свойство
* @param {string} key имя свойства (обязательно)
* @returns {*}
*/
get: function (key) { ... }
};
var Folder = Model.extend(/** Folder# */{
method: _createFunction("...")
});
var Folder = Model.extend(/** Folder# */{
/**
#! * @method Folder#method
#!+ * @param {string} foo
* @param {number} bar
#!- * @returns {*}
*/
method: _createFunction("...")
});
define(["Folder", "Letter"], function (Folder, Letter) {
// ...
});
define(["Folder", "Letter"], function (
/** Folder */Folder,
/** Letter */Letter
) {
// ...
});
module.exports = {
open: function (chunk) {
#! chunk.pushStr(">!--", true);
},
close: function (chunk) {
#! chunk.pushStr("--<", true);
}
};
module.exports = {
open: function (chunk, node) {
chunk
#!+ .vars("__fest_if", {
#! value: this.getAttr(node, "test", "expr"),
#! defaults: false
#!- })
#! .add("if(__fest_if) {")
;
},
close: function (chunk) {
#! chunk.add("}");
}
};
<!-- Определяем блок "btn" --> <div bem:block="btn"> #!+ <!-- Добавляем модификатор "btn_icon" в зависимости от параметров --> #!- <bem:mod name="icon" test="params.icon"/> #!+ <!-- Определяем элемент "btn__text" --> <span bem:elem="text"> #!+ <!-- Добавляем модификатор "btn__text_pad" в зависимости от модификатора "btn_icon" --> #!- <bem:mod name="pad" has-mod="icon"/> <fest:value>params.text</fest:value> #!- </span> </div>
<!-- Используем блок "btn" -->
#! <bem:btn>{ text: "foo", mods: ["main"] }</bem:btn>
#! <bem:btn>{ text: "bar", icon: true }</bem:btn>