bem / bh

BH template engine
http://bem.github.io/bh/
MIT License
69 stars 32 forks source link

Proposal: ctx.if() #157

Closed Yeti-or closed 9 years ago

Yeti-or commented 9 years ago

Добавить сахара: вместо:

ctx
  .mix({ elem : 'control' })

if (ctx.mod('disabled') {
 ctx.attr('tabindex', -1)
} else {
 ctx.attr('title', 'yeah')
}
ctx.js(false)

писать что то типа такого:

ctx
  .mix({ elem : 'control' })
  .if(ctx.mod('disabled'), function(predicate) {
      if (predicate) {
        ctx.attr('tabindex', -1)
      else 
        ctx.attr('title', 'yeah')
  })
  .js(true)
Yeti-or commented 9 years ago

ради чейнинга всё

megatolya commented 9 years ago

кажется только более нечитаемо станет)

mishanga commented 9 years ago

Мне тоже не нравится. На самом деле тебе ничто не мешает расширить Ctx у себя на проекте.

qfox commented 9 years ago

@mishanga Как на счет добавить сахара для расширения Ctx? Сейчас оно расширяется с помощью utils, который создается динамически, и все лежит в одном файле. Не думал про разнесение на три файла: сам BH, Ctx, и все, что связано с toHTML?

mishanga commented 9 years ago

Не вижу смысла усложнять всё. Задача решается тривиально:

bh = new BH();
bh.utils.if = function(expr, fnTrue, fnFalse) {
    if (expr) fnTrue && fnTrue();
    else fnFalse && fnFalse();
    return this;
}