class ActionView::Storybook::StoryConfig
Attributes
content_block[RW]
controls[RW]
id[R]
layout[RW]
name[R]
parameters[RW]
template[R]
Public Class Methods
configure(id, name, layout, template, &configuration)
click to toggle source
# File lib/action_view/storybook/story_config.rb, line 49 def self.configure(id, name, layout, template, &configuration) config = new(id, name, layout, template) ActionView::Storybook::Dsl::StoryDsl.evaluate!(config, &configuration) config end
new(id, name, layout, template)
click to toggle source
# File lib/action_view/storybook/story_config.rb, line 13 def initialize(id, name, layout, template) @id = id @name = name @layout = layout @template = template @controls = [] end
Public Instance Methods
pretty_name(name)
click to toggle source
# File lib/action_view/storybook/story_config.rb, line 55 def pretty_name(name) name.to_s.humanize.titlecase end
to_csf_params()
click to toggle source
# File lib/action_view/storybook/story_config.rb, line 21 def to_csf_params validate! csf_params = { name: pretty_name(name), parameters: { server: { id: id, params: { story_name: name } } } } csf_params.deep_merge!(parameters: parameters) if parameters.present? controls.each do |control| csf_params.deep_merge!(control.to_csf_params) end csf_params end
values_from_params(params)
click to toggle source
# File lib/action_view/storybook/story_config.rb, line 41 def values_from_params(params) controls.map do |control| value = control.value_from_param(params[control.param]) value = control.value if value.nil? # nil only not falsey [control.param, value] end.to_h end
Protected Instance Methods
valid_controls()
click to toggle source
# File lib/action_view/storybook/story_config.rb, line 61 def valid_controls control_names = controls.map(&:name) duplicate_names = control_names.group_by(&:itself).map { |k, v| k if v.length > 1 }.compact return if duplicate_names.empty? errors.add(:controls, :invalid, message: "Control #{'names'.pluralize(duplicate_names.count)} #{duplicate_names.to_sentence} are repeated") end