Skip to content

Instantly share code, notes, and snippets.

GridDefine(colNum, col, gap, marginX, marginY = marginX * 1.5)
.Grid
gridWidth = colNum * col + (colNum - 1) * gap
inCols(prop = '', num, extra = 0)
{prop} num * col + (num - 1) * gap + extra
for i in 1..colNum
&_col_{i}
inCols(width, i)
Beast.decl({
Button: {
inherits: 'Control',
tag: 'button',
mod: {
Action: false,
Size: 'M',
/* ... */
},
param: {
/**
* @block Button Кнопка
* Основная в группе контролов
* @dep Control Icon
* @tag control
*/
Beast.decl({
Button: {
inherits: 'Control',
tag: 'button',
Beast.decl({
Counter: {
abstract:true,
countOn: {
// event: token
},
param: {
counterData: {
/* NDA */
}
/**
* @lib Ajax Асинхронные клиентские запросы
* @ver 0.1.0
* @arg {object} options {url:string, data:object, success:function, error:function, jsonp:boolean|string}
*/
function Ajax (options) {
var qs = ''
if (options.data) {
for (var key in options.data) {
qs += '&'+ key +'='+ encodeURIComponent(options.data[key])
/**
* @block Serp Поисковая выдача
* @dep grid head divider
* @tag serp
* @ext grid
*/
Beast.decl({
Serp: {
inherits:'Grid',
mod: {
/**
* @block Snippet Сниппет поисковой выдачи
* @dep typo Link ReadMore HorizontalScroll Button thumb
* @tag snippet
* @ext adapter typo
*/
Beast.decl({
Snippet: {
inherits: ['Typo', 'Adapter'],
mod: {
/**
* @block DocConsole Консоль с документацией к блокам
* @dep Locale Control
* @tag tools
* @ext locale
*/
Beast.decl({
DocConsole: {
inherits: 'Locale',
mod: {
/**
* @lib Dig Безопасная работа с json
* @ver 0.2.2
* @url github.yandex-team.ru/kovchiy/dig
*/
'use strict';
var Dig

Dig

Safe json data extraction.

Перед обращением к полям данных, пришедших от серверной ручки, нужно предвариетльно проверить наличие этих полей — в противном случае, код время от времени будет падать, а затем обрастать громоздкими условиями с проверкой всего на свете:

if (json.tv && Array.isArray(json.tv.events)) {
    json.events.forEach(function (event) {
        if (event.time &&
            event.time.text &&