lookbook 0.7.2.beta.2 → 0.7.2.beta.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 990948c73a9d1c658a44b0ae4ac88c2c850fa92dfe9e40551b4634311113fe87
4
- data.tar.gz: a203b8a19a1b9dc3d3ec91af757b1bb75edd84fed009e329f720b7e5891f737e
3
+ metadata.gz: e5c4fab31fdd907dfcc4e990f703be32ce602db1729187d88c88abf60cc126bc
4
+ data.tar.gz: 57373e4f626acbbe451532587758f8962ba9186314d31752001f3b05baef5338
5
5
  SHA512:
6
- metadata.gz: bb588034ce795c97cccffbf1d7de75bbce28895009975576e8d2bcf50a3e4878771fe38cba600aa6986d59b3e3579023a2782a8dc0cc4bd349376a8bd67978b5
7
- data.tar.gz: 3485c0882de17d7a3c63a27872a79615043d7c03651e555394f53accaed865c36b45e43f086deb23dd8d0a4118049ac4cbd936943765afb619e0a9e413287d7e
6
+ metadata.gz: 4fc584e15f47fb60256e7fa49111df0a97fe7ac1a588c8e84657957e321cd1e9f627700a5969fd7efa03bf26a923005dc742ab277f2e993416fc1c83a2a5af89
7
+ data.tar.gz: 69a701e03da79385d9302e61c9df58b364eaf3e2f2160e8660c762810d9851a943297b061ad962af6fb0b056754e3b8af191c32a64f098a1487c1599bc668965
@@ -28,10 +28,7 @@ module Lookbook
28
28
  @title = @page.title
29
29
  rescue => exception
30
30
  render "lookbook/error", locals: {
31
- error: Lookbook::Error.new(exception, {
32
- file_path: @page.full_path,
33
- source_code: @page.content
34
- })
31
+ error: Lookbook::Error.new(exception, file_path: @page.full_path, source_code: @page.content)
35
32
  }
36
33
  end
37
34
  end
@@ -66,7 +66,7 @@ module Lookbook
66
66
  {
67
67
  label: example.label,
68
68
  notes: example.notes,
69
- html: preview_controller.render_example_to_string(@preview, example.name),
69
+ html: preview_controller.process(:render_example_to_string, @preview, example.name),
70
70
  source: has_template ? example.template_source(render_args[:template]) : example.method_source,
71
71
  source_lang: has_template ? example.template_lang(render_args[:template]) : example.source_lang,
72
72
  params: example.params
@@ -74,7 +74,7 @@ module Lookbook
74
74
  end
75
75
 
76
76
  def render_examples(examples)
77
- preview_controller.render_in_layout_to_string("layouts/lookbook/preview", {examples: examples}, @preview.layout)
77
+ preview_controller.process(:render_in_layout_to_string, "layouts/lookbook/preview", {examples: examples}, @preview.layout)
78
78
  end
79
79
 
80
80
  def set_params
@@ -167,7 +167,6 @@ module Lookbook
167
167
  message_parts = exception.message.split("\n").first.split
168
168
  component_class = message_parts.first.constantize
169
169
  naughty_method = message_parts.last.delete("#").delete("`").delete(".")
170
- p naughty_method
171
170
  method = component_class.instance_method(naughty_method.to_sym)
172
171
  if method
173
172
  {
@@ -176,7 +175,7 @@ module Lookbook
176
175
  }
177
176
  end
178
177
  end
179
- Lookbook::Error.new(exception, error_params || {})
178
+ Lookbook::Error.new(exception, **(error_params || {}))
180
179
  end
181
180
  end
182
181
  end
@@ -10,7 +10,7 @@ module Lookbook
10
10
  end
11
11
 
12
12
  def code(language = "ruby", **opts, &block)
13
- render_component "code", {language: language, **opts}, &block
13
+ render_component "code", language: language, **opts, &block
14
14
  end
15
15
 
16
16
  if Rails.version.to_f < 6.1
@@ -19,12 +19,11 @@ module Lookbook
19
19
 
20
20
  if example
21
21
  @embed_counter += 1
22
- render_component "embed", {
22
+ render_component "embed",
23
23
  id: generate_id("embed", url_for, example.lookup_path, @embed_counter - 1),
24
24
  example: example,
25
25
  params: params,
26
26
  opts: opts
27
- }
28
27
  else
29
28
  embed_not_found
30
29
  end
@@ -83,36 +83,26 @@ module Lookbook
83
83
 
84
84
  config.after_initialize do
85
85
  @preview_listener = Listen.to(*config.lookbook.listen_paths, only: /\.(rb|html.*)$/) do |modified, added, removed|
86
- if Lookbook::Preview.errors.any?
87
- Lookbook::Preview.reload
88
- end
89
86
  begin
90
87
  parser.parse
91
88
  rescue
92
89
  end
93
- if Lookbook::Engine.websocket
94
- if modified.any? || removed.any? || added.none?
95
- Lookbook::Engine.websocket.broadcast("reload", {
96
- modified: modified,
97
- removed: removed,
98
- added: added
99
- })
100
- end
101
- end
90
+ Lookbook::Preview.clear_cache
91
+ Lookbook::Engine.websocket&.broadcast("reload", {
92
+ modified: modified,
93
+ removed: removed,
94
+ added: added
95
+ })
102
96
  end
103
97
  @preview_listener.start
104
98
 
105
99
  if Lookbook::Features.enabled?(:pages)
106
100
  @page_listener = Listen.to(*config.lookbook.page_paths.filter { |dir| Dir.exist? dir }, only: /\.(html.*|md.*)$/) do |modified, added, removed|
107
- if Lookbook::Engine.websocket
108
- if modified.any? || removed.any? || added.any?
109
- Lookbook::Engine.websocket.broadcast("reload", {
110
- modified: modified,
111
- removed: removed,
112
- added: added
113
- })
114
- end
115
- end
101
+ Lookbook::Engine.websocket&.broadcast("reload", {
102
+ modified: modified,
103
+ removed: removed,
104
+ added: added
105
+ })
116
106
  end
117
107
  @page_listener.start
118
108
  end
data/lib/lookbook/page.rb CHANGED
@@ -106,7 +106,7 @@ module Lookbook
106
106
  rescue => exception
107
107
  frontmatter = {}
108
108
  line_number_match = exception.message.match(/.*line\s(\d+)/)
109
- @errors.push(Lookbook::Error.new(exception, {
109
+ @errors.push(Lookbook::Error.new(exception, **{
110
110
  title: "YAML frontmatter parsing error",
111
111
  file_path: @pathname.to_s,
112
112
  line_number: line_number_match ? line_number_match[1] : false
@@ -96,62 +96,54 @@ module Lookbook
96
96
  !!find(path)
97
97
  end
98
98
 
99
+ def clear_cache
100
+ @previews = nil
101
+ end
102
+
99
103
  def all
100
- previews = load_previews.map do |p|
104
+ load_previews if preview_files.size > ViewComponent::Preview.descendants.size
105
+
106
+ return @previews if @previews.present?
107
+
108
+ previews = ViewComponent::Preview.descendants.map do |p|
101
109
  new(p)
102
110
  rescue
103
111
  Rails.logger.error "[lookbook] error instantiating preview\n#{exception.full_message}"
104
112
  end
105
113
 
114
+ if errors.any?
115
+ errors.each do |error|
116
+ Rails.logger.error "[lookbook] preview error\n#{error.full_message}\n"
117
+ end
118
+ end
119
+
106
120
  sorted_previews = previews.compact.sort_by { |preview| [preview.position, preview.label] }
107
- PreviewCollection.new(sorted_previews)
121
+ @previews ||= PreviewCollection.new(sorted_previews)
108
122
  end
109
123
 
110
124
  def errors
111
- @errors || []
112
- end
113
-
114
- def reload
115
- load_previews
125
+ @errors ||= []
116
126
  end
117
127
 
118
128
  protected
119
129
 
120
- def reset_files_data
121
- @loaded_files = []
122
- @errors = []
123
- end
124
-
125
130
  def load_previews
126
- reset_files_data if @loaded_files.nil?
127
- require_preview_files if @errors.any?
128
-
129
- preview_classes = ViewComponent::Preview.descendants
130
- if preview_files.size > preview_classes.size
131
- require_preview_files
132
- end
133
-
134
- ViewComponent::Preview.descendants.filter { |klass| @loaded_files.include? "#{klass.name.underscore}.rb" }
135
- end
136
-
137
- def require_preview_files
138
- reset_files_data
131
+ @errors = []
139
132
  preview_files.each do |file|
140
- require_dependency(file[:path])
141
- @loaded_files.push(file[:rel_path])
142
- rescue => exception
143
- Rails.logger.error "[lookbook] preview error\n#{exception.full_message}\n"
144
- @errors.push(Lookbook::Error.new(exception, {
145
- title: "Preview #{exception.class}",
146
- file_name: file[:rel_path],
147
- file_path: file[:path]
148
- }))
133
+ require_dependency file[:path]
134
+ rescue SyntaxError, StandardError => exception
135
+ @errors.push(
136
+ Lookbook::Error.new(exception,
137
+ title: "Preview #{exception.class}",
138
+ file_name: file[:rel_path],
139
+ file_path: file[:path])
140
+ )
149
141
  end
150
142
  end
151
143
 
152
144
  def preview_files
153
145
  files = Array(Lookbook.config.preview_paths).map do |preview_path|
154
- Dir["#{preview_path}/**/*_preview.rb"].map do |path|
146
+ Dir["#{preview_path}/**/*preview.rb"].map do |path|
155
147
  {
156
148
  path: path,
157
149
  base_path: preview_path,
@@ -11,12 +11,12 @@ module Lookbook
11
11
  opts = {}
12
12
  opts[:layout] = nil
13
13
  opts[:locals] = locals if locals.present?
14
- render_to_string template, opts
14
+ render html: render_to_string(template, **opts)
15
15
  end
16
16
 
17
17
  def render_in_layout_to_string(template, locals, layout = nil)
18
18
  append_view_path Lookbook::Engine.root.join("app/views")
19
- render_to_string template, locals: locals, **determine_layout(layout)
19
+ render html: render_to_string(template, locals: locals, **determine_layout(layout))
20
20
  end
21
21
  end
22
22
  end
@@ -31,7 +31,11 @@ module Lookbook
31
31
  end
32
32
 
33
33
  def display_params
34
- {}
34
+ merged = {}
35
+ examples.reverse.map do |example|
36
+ merged.merge! example.display_params
37
+ end
38
+ merged
35
39
  end
36
40
 
37
41
  def hidden?
@@ -1,3 +1,3 @@
1
1
  module Lookbook
2
- VERSION = "0.7.2.beta.2"
2
+ VERSION = "0.7.2.beta.5"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lookbook
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.2.beta.2
4
+ version: 0.7.2.beta.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mark Perkins
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-03-29 00:00:00.000000000 Z
11
+ date: 2022-04-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actioncable