Skip to content

Конфигурация

vill edited this page Mar 28, 2018 · 2 revisions

Для изменения настроек, необходимо создать файл config/initializers/bemer.rb и переопределить параметры по умолчанию:

# Параметры по умолчанию
Bemer.setup do |config|
  config.bem                      = false
  config.default_block_tag        = :div
  config.default_element_tag      = :div
  config.default_path_prefix      = nil
  config.element_name_separator   = '__'
  config.modifier_name_separator  = '_'
  config.modifier_value_separator = '_'
  config.path                     = 'app/bemer_components'
  config.prepend_asset_paths      = true
end

Параметр bem

Глобально включает или выключает генерацию данных связанных с БЭМ методологией, используется только в хелпере define_component. Порядок применения параметра bem:

/ config.bem = false

= define_component do |component|
  = component.block :block

/ => <div></div>
/ config.bem = true

= define_component do |component|
  = component.block :block

/ => <div class="block"></div>
/ config.bem = false                        # Самый низкий приоритет

= define_component bem: true do |component| # `config.bem` переопределен
  = component.block :block

/ => <div class="block"></div>
/ config.bem = true                          # Самый низкий приоритет

= define_component bem: false do |component| # `config.bem` переопределен
  = component.block :block

/ => <div></div>
/ config.bem = false                         # Самый низкий приоритет

= define_component bem: false do |component| # Следующий приоритет после `config.bem`
  = component.block :block, bem: true        # Самый высокий приоритет

/ => <div class="block"></div>
/ config.bem = true                         # Самый низкий приоритет

= define_component bem: true do |component| # Следующий приоритет после `config.bem`
  = component.block :block, bem: false      # Самый высокий приоритет

/ => <div></div>

Параметр default_block_tag

Устанавливает тег по умолчанию для сущностей типа блок, используется когда у сущности не указан (равен nil) HTML тег:

config.default_block_tag = :span

Параметр default_element_tag

Устанавливает тег по умолчанию для сущностей типа элемент, используется когда у сущности не указан (равен nil) HTML тег:

config.default_element_tag = :span

Параметр default_path_prefix

Добавляет префикс к пути/названию всех компонент, может быть Symbol, String, false, nil а также Proc и lambda которые должны возвращать Symbol, String, false или nil:

# Эквивалентные записи
config.default_path_prefix = 'common'
config.default_path_prefix = :common
config.default_path_prefix = proc { :common }
config.default_path_prefix = ->(path, view) { :common }

Если default_path_prefix является Proc или lambda тогда, при вызове будут переданы указанный путь/название компонента (как String) и представление (экземпляр Action View):

config.default_path_prefix = proc { |path| path.start_with?('admin') ? '' : :user }
config.default_path_prefix = lambda { |path, view|
  view.controller.instance_of?(Admin::ApplicationController) ? :admin : :user
}
config.default_path_prefix = lambda { |path, view|
  view.controller.class.name.deconstantize.underscore
}

При вызове render_component, refine_component параметр default_path_prefix будет использоваться:

# Эквивалентные записи
render_component(:modal)
refine_component(:modal, prefix: true)

параметр default_path_prefix не будет использоваться и путь/название компонента будет иметь следующие значения:

# Эквивалентные записи
render_component(:modal, prefix: '')    # => 'modal'
refine_component(:modal, prefix: false) # => 'modal'
refine_component(:modal, prefix: nil)   # => 'modal'
# Эквивалентные записи
render_component(:modal, prefix: :common)       # => 'common/modal'
render_component(:modal, prefix: 'common')      # => 'common/modal'
refine_component('common/modal', prefix: false) # => 'common/modal'

Параметр element_name_separator

Устанавливает разделитель между названием блока и названием элемента.

Параметр modifier_name_separator

Устанавливает разделитель между названием модификатора и названием блока или элемента:

config.modifier_name_separator = '--' # block__elem--modifier-name

Параметр modifier_value_separator

Устанавливает разделитель между названием модификатора и значением модификатора.

Параметр path

Устанавливает каталог в котором будут храниться все компоненты приложения, например если используется Webpacker, тогда можно указать подкаталог в его каталоге:

config.path = Webpacker.config.source_path.join('components')

Параметр prepend_asset_paths

Разрешает или запрещает добавлять пути до каталогов с компонентами в начало списка assets.paths, актуально только если приложение использует Sprockets.