Class: Lookbook::Config
- Inherits:
-
Object
- Object
- Lookbook::Config
- Defined in:
- lib/lookbook/config.rb
Instance Method Summary collapse
- #[](key) ⇒ Object
- #[]=(key, value) ⇒ Object
- #amend_inspector_panel(name, opts = {}) ⇒ Object
- #components_path ⇒ Object
- #define_inspector_panel(name, opts = {}) ⇒ Object
-
#initialize ⇒ Config
constructor
A new instance of Config.
- #inspector_panel_defaults ⇒ Object
- #inspector_panels(&block) ⇒ Object
- #listen_extensions=(extensions = []) ⇒ Object
- #listen_paths ⇒ Object
- #page_paths ⇒ Object
- #page_paths=(paths = []) ⇒ Object
- #parser_registry_path ⇒ Object
- #preview_paths ⇒ Object
- #preview_paths=(paths = []) ⇒ Object
- #preview_srcdoc=(enable) ⇒ Object
- #project_name ⇒ Object
- #remove_inspector_panel(name) ⇒ Object
- #runtime_parsing=(value) ⇒ Object
- #to_h ⇒ Object
- #to_json(*a) ⇒ Object
- #ui_theme=(name) ⇒ Object
- #ui_theme_overrides(&block) ⇒ Object
Constructor Details
#initialize ⇒ Config
Returns a new instance of Config.
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/lookbook/config.rb', line 7 def initialize @options = Store.new({}, true) @options.set({ project_name: "Lookbook", log_level: 2, auto_refresh: true, components_path: "app/components", page_controller: "Lookbook::PageController", page_route: "pages", page_paths: ["test/components/docs"], page_options: {}, markdown_options: Markdown::DEFAULT_OPTIONS, preview_paths: [], preview_display_params: {}, preview_srcdoc: nil, preview_tags: {}, preview_disable_action_view_annotations: true, sort_examples: false, listen: Rails.env.development?, listen_paths: [], listen_extensions: ["rb", "html.*"], listen_use_polling: false, cable_mount_path: "/cable", cable_logger: Lookbook.logger, parser_registry_path: "tmp/storage/.yardoc", ui_theme: "indigo", ui_theme_overrides: {}, ui_favicon: true, hooks: { after_initialize: [], before_exit: [], after_change: [] }, debug_menu: Rails.env.development?, experimental_features: false, inspector_panels: { preview: { pane: :main, position: 1, partial: "lookbook/previews/panels/preview", hotkey: "v", panel_classes: "overflow-hidden", padded: false, system: true }, output: { pane: :main, position: 2, partial: "lookbook/previews/panels/output", label: "HTML", hotkey: "h", padded: false, system: true }, source: { pane: :drawer, position: 1, partial: "lookbook/previews/panels/source", label: "Source", hotkey: "s", copy: ->(data) { data.examples.map { |e| e.source }.join("\n") }, padded: false, system: true }, notes: { pane: :drawer, position: 2, partial: "lookbook/previews/panels/notes", label: "Notes", hotkey: "n", disabled: ->(data) { data.examples.select { |e| e.notes.present? }.none? }, padded: false, system: true }, params: { pane: :drawer, position: 3, partial: "lookbook/previews/panels/params", label: "Params", hotkey: "p", disabled: ->(data) { data.preview.params.none? }, padded: false, system: true } } }) end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(name, *args) ⇒ Object (protected)
259 260 261 |
# File 'lib/lookbook/config.rb', line 259 def method_missing(name, *args) @options.send(name, *args) end |
Instance Method Details
#[](key) ⇒ Object
220 221 222 223 224 225 226 |
# File 'lib/lookbook/config.rb', line 220 def [](key) if respond_to? key.to_sym public_send(key.to_sym) else @options[key.to_sym] end end |
#[]=(key, value) ⇒ Object
228 229 230 231 232 233 234 235 |
# File 'lib/lookbook/config.rb', line 228 def []=(key, value) setter_key = "#{key}=".to_sym if respond_to? setter_key public_send(setter_key, value) else @options[key.to_sym] = value end end |
#amend_inspector_panel(name, opts = {}) ⇒ Object
173 174 175 176 177 178 179 |
# File 'lib/lookbook/config.rb', line 173 def amend_inspector_panel(name, opts = {}) if opts == false @options.inspector_panels[name] = false else @options.inspector_panels[name].merge!(opts) end end |
#components_path ⇒ Object
115 116 117 |
# File 'lib/lookbook/config.rb', line 115 def components_path absolute_path(@options.components_path) end |
#define_inspector_panel(name, opts = {}) ⇒ Object
161 162 163 164 165 166 167 168 169 170 171 |
# File 'lib/lookbook/config.rb', line 161 def define_inspector_panel(name, opts = {}) pane = opts[:pane].presence || :drawer siblings = inspector_panels.select { |key, panel| panel.pane == pane } opts[:position] ||= siblings.size + 1 @options.inspector_panels[name] = opts siblings.each do |key, panel| if panel.position >= opts[:position] panel.position += 1 end end end |
#inspector_panel_defaults ⇒ Object
185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 |
# File 'lib/lookbook/config.rb', line 185 def inspector_panel_defaults { id: ->(data) { "inspector-panel-#{data.name}" }, partial: "lookbook/previews/panels/content", content: nil, label: ->(data) { data.name.titleize }, pane: :drawer, position: ->(data) { data.index_position }, hotkey: nil, disabled: false, show: true, copy: nil, panel_classes: nil, locals: {}, system: false } end |
#inspector_panels(&block) ⇒ Object
152 153 154 155 156 157 158 159 |
# File 'lib/lookbook/config.rb', line 152 def inspector_panels(&block) panels = Store.new(@options.inspector_panels.select { |key, panel| panel != false }) if block yield panels else panels end end |
#listen_extensions=(extensions = []) ⇒ Object
143 144 145 146 |
# File 'lib/lookbook/config.rb', line 143 def listen_extensions=(extensions = []) @options.listen_extensions += extensions if extensions.is_a? Array @options.listen_extensions.uniq! end |
#listen_paths ⇒ Object
139 140 141 |
# File 'lib/lookbook/config.rb', line 139 def listen_paths normalize_paths(@options.listen_paths) end |
#page_paths ⇒ Object
123 124 125 |
# File 'lib/lookbook/config.rb', line 123 def page_paths normalize_paths(@options.page_paths) end |
#page_paths=(paths = []) ⇒ Object
119 120 121 |
# File 'lib/lookbook/config.rb', line 119 def page_paths=(paths = []) @options.page_paths += paths if paths.is_a? Array end |
#parser_registry_path ⇒ Object
148 149 150 |
# File 'lib/lookbook/config.rb', line 148 def parser_registry_path absolute_path(@options.parser_registry_path) end |
#preview_paths ⇒ Object
131 132 133 |
# File 'lib/lookbook/config.rb', line 131 def preview_paths normalize_paths(@options.preview_paths) end |
#preview_paths=(paths = []) ⇒ Object
127 128 129 |
# File 'lib/lookbook/config.rb', line 127 def preview_paths=(paths = []) @options.preview_paths += paths if paths.is_a? Array end |
#preview_srcdoc=(enable) ⇒ Object
135 136 137 |
# File 'lib/lookbook/config.rb', line 135 def preview_srcdoc=(enable) Lookbook.logger.warn "The `preview_srcdoc` config option is deprecated and will be removed in v2.0" end |
#project_name ⇒ Object
111 112 113 |
# File 'lib/lookbook/config.rb', line 111 def project_name @options.project_name == false ? nil : @options.project_name end |
#remove_inspector_panel(name) ⇒ Object
181 182 183 |
# File 'lib/lookbook/config.rb', line 181 def remove_inspector_panel(name) amend_inspector_panel(name, false) end |
#runtime_parsing=(value) ⇒ Object
107 108 109 |
# File 'lib/lookbook/config.rb', line 107 def runtime_parsing=(value) Lookbook.logger.warn "The `runtime_parsing` config option has been deprecated and will be removed in v2.0" end |
#to_h ⇒ Object
237 238 239 |
# File 'lib/lookbook/config.rb', line 237 def to_h @options.to_h end |
#to_json(*a) ⇒ Object
241 242 243 |
# File 'lib/lookbook/config.rb', line 241 def to_json(*a) to_h.to_json(*a) end |
#ui_theme=(name) ⇒ Object
203 204 205 206 207 208 209 210 |
# File 'lib/lookbook/config.rb', line 203 def ui_theme=(name) name = name.to_s if Theme.valid_theme?(name) @options.ui_theme = name else Lookbook.logger.warn "'#{name}' is not a valid Lookbook theme. Theme setting not changed." end end |
#ui_theme_overrides(&block) ⇒ Object
212 213 214 215 216 217 218 |
# File 'lib/lookbook/config.rb', line 212 def ui_theme_overrides(&block) if block yield @options.ui_theme_overrides else @options.ui_theme_overrides end end |