lookbook 2.0.0.beta.2 → 2.0.0.beta.4

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.
Files changed (126) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/lookbook/css/fonts.css +33 -0
  3. data/app/assets/lookbook/css/lookbook.css +7 -0
  4. data/app/assets/lookbook/css/themes/blue.css +4 -1
  5. data/app/assets/lookbook/css/themes/green.css +4 -1
  6. data/app/assets/lookbook/css/themes/indigo.css +4 -1
  7. data/app/assets/lookbook/css/themes/rose.css +4 -1
  8. data/app/assets/lookbook/css/themes/zinc.css +4 -1
  9. data/app/assets/lookbook/fonts/Inter-italic.var.woff2 +0 -0
  10. data/app/assets/lookbook/fonts/Inter-roman.var.woff2 +0 -0
  11. data/app/assets/lookbook/fonts/SourceCodeVariable-Italic.ttf.woff2 +0 -0
  12. data/app/assets/lookbook/fonts/SourceCodeVariable-Roman.ttf.woff2 +0 -0
  13. data/app/assets/lookbook/img/lucide-sprite.svg +869 -869
  14. data/app/assets/lookbook/js/lib/lookbook.js +12 -2
  15. data/app/components/lookbook/code/highlight_github.css +16 -17
  16. data/app/components/lookbook/dimensions_display/component.js +4 -7
  17. data/app/components/lookbook/file_source/component.html.erb +9 -0
  18. data/app/components/lookbook/file_source/component.rb +73 -0
  19. data/app/components/lookbook/header/component.html.erb +11 -8
  20. data/app/components/lookbook/icon/component.css +1 -1
  21. data/app/components/lookbook/icon/component.html.erb +1 -1
  22. data/app/components/lookbook/icon/component.rb +4 -1
  23. data/app/components/lookbook/logo/component.html.erb +6 -0
  24. data/app/components/lookbook/logo/component.rb +15 -0
  25. data/app/components/lookbook/message/component.css +33 -0
  26. data/app/components/lookbook/message/component.html.erb +26 -0
  27. data/app/components/lookbook/message/component.rb +13 -0
  28. data/app/components/lookbook/nav/entity/component.html.erb +2 -2
  29. data/app/components/lookbook/nav/entity/component.rb +1 -1
  30. data/app/components/lookbook/page_tabs/component.html.erb +2 -2
  31. data/app/components/lookbook/params/field/component.css +3 -3
  32. data/app/components/lookbook/prose/component.css +8 -1
  33. data/app/components/lookbook/prose/component.html.erb +6 -1
  34. data/app/components/lookbook/prose/component.rb +2 -2
  35. data/app/controllers/concerns/lookbook/targetable_concern.rb +2 -16
  36. data/app/controllers/lookbook/application_controller.rb +38 -14
  37. data/app/controllers/lookbook/embeds_controller.rb +3 -4
  38. data/app/controllers/lookbook/inspector_controller.rb +4 -12
  39. data/app/controllers/lookbook/pages_controller.rb +15 -27
  40. data/app/controllers/lookbook/preview_controller.rb +30 -2
  41. data/app/controllers/lookbook/previews_controller.rb +13 -15
  42. data/app/views/layouts/lookbook/application.html.erb +1 -0
  43. data/app/views/layouts/lookbook/skeleton.html.erb +2 -2
  44. data/app/views/lookbook/errors/default.html.erb +40 -0
  45. data/app/views/lookbook/errors/not_found.html.erb +10 -0
  46. data/app/views/lookbook/index.html.erb +29 -24
  47. data/app/views/lookbook/pages/show.html.erb +9 -8
  48. data/app/views/lookbook/partials/_blank_slate.html.erb +7 -0
  49. data/config/app.yml +8 -0
  50. data/config/routes.rb +2 -0
  51. data/lib/lookbook/engine.rb +12 -5
  52. data/lib/lookbook/entities/concerns/annotatable_entity.rb +26 -1
  53. data/lib/lookbook/entities/concerns/inspectable_entity.rb +17 -2
  54. data/lib/lookbook/entities/concerns/locatable_entity.rb +51 -7
  55. data/lib/lookbook/entities/concerns/navigable_entity.rb +14 -1
  56. data/lib/lookbook/entities/entity.rb +34 -12
  57. data/lib/lookbook/entities/page_entity.rb +68 -10
  58. data/lib/lookbook/entities/page_section_entity.rb +4 -0
  59. data/lib/lookbook/entities/preview_entity.rb +107 -17
  60. data/lib/lookbook/entities/renderable_entity.rb +47 -9
  61. data/lib/lookbook/entities/rendered_scenario_entity.rb +17 -6
  62. data/lib/lookbook/entities/scenario_entity.rb +77 -16
  63. data/lib/lookbook/entities/scenario_group_entity.rb +82 -9
  64. data/lib/lookbook/helpers/page_helper.rb +26 -1
  65. data/lib/lookbook/helpers/ui_elements_helper.rb +0 -24
  66. data/lib/lookbook/param.rb +1 -1
  67. data/lib/lookbook/services/markdown_renderer.rb +2 -4
  68. data/lib/lookbook/stores/config_store.rb +0 -12
  69. data/lib/lookbook/support/errors/config_error.rb +1 -1
  70. data/lib/lookbook/support/errors/error.rb +64 -0
  71. data/lib/lookbook/support/errors/parser_error.rb +1 -1
  72. data/lib/lookbook/support/errors/preview_template_error.rb +1 -1
  73. data/lib/lookbook/support/errors/routing_error.rb +7 -0
  74. data/lib/lookbook/support/errors/template_error.rb +7 -0
  75. data/lib/lookbook/version.rb +1 -1
  76. data/public/lookbook-assets/Inter-italic.var.69eb0fe1.woff2 +0 -0
  77. data/public/lookbook-assets/Inter-italic.var.736a7044.woff2 +0 -0
  78. data/public/lookbook-assets/Inter-roman.var.b695afbe.woff2 +0 -0
  79. data/public/lookbook-assets/Inter-roman.var.fbdd51d0.woff2 +0 -0
  80. data/public/lookbook-assets/SourceCodeVariable-Italic.cad97b83.otf +0 -0
  81. data/public/lookbook-assets/SourceCodeVariable-Italic.ttf.09b4354a.woff2 +0 -0
  82. data/public/lookbook-assets/SourceCodeVariable-Italic.ttf.fcd7e9f4.woff2 +0 -0
  83. data/public/lookbook-assets/SourceCodeVariable-Roman.185ddb17.otf +0 -0
  84. data/public/lookbook-assets/SourceCodeVariable-Roman.ttf.118e9f22.woff2 +0 -0
  85. data/public/lookbook-assets/SourceCodeVariable-Roman.ttf.91043609.woff2 +0 -0
  86. data/public/lookbook-assets/css/lookbook.css +417 -58
  87. data/public/lookbook-assets/css/lookbook.css.map +1 -1
  88. data/public/lookbook-assets/css/themes/blue.css +4 -1
  89. data/public/lookbook-assets/css/themes/blue.css.map +1 -1
  90. data/public/lookbook-assets/css/themes/green.css +4 -1
  91. data/public/lookbook-assets/css/themes/green.css.map +1 -1
  92. data/public/lookbook-assets/css/themes/indigo.css +4 -1
  93. data/public/lookbook-assets/css/themes/indigo.css.map +1 -1
  94. data/public/lookbook-assets/css/themes/rose.css +4 -1
  95. data/public/lookbook-assets/css/themes/rose.css.map +1 -1
  96. data/public/lookbook-assets/css/themes/zinc.css +4 -1
  97. data/public/lookbook-assets/css/themes/zinc.css.map +1 -1
  98. data/public/lookbook-assets/img/lucide-sprite.svg +869 -869
  99. data/public/lookbook-assets/js/index.js +173 -173
  100. data/public/lookbook-assets/js/index.js.map +1 -1
  101. data/public/lookbook-assets/js/lookbook-core.js +4 -2
  102. data/public/lookbook-assets/js/lookbook.js +4 -2
  103. metadata +31 -26
  104. data/app/views/layouts/lookbook/shell.html.erb +0 -25
  105. data/app/views/lookbook/404.html.erb +0 -15
  106. data/app/views/lookbook/error.html.erb +0 -46
  107. data/lib/lookbook/error.rb +0 -120
  108. data/lib/lookbook/support/errors/lookbook_error.rb +0 -21
  109. data/lib/tasks/lookbook_tasks.rake +0 -10
  110. data/public/lookbook-assets/css/app.css +0 -2341
  111. data/public/lookbook-assets/css/app.css.map +0 -11
  112. data/public/lookbook-assets/css/themes/zinc.css.map.91837.5 +0 -1
  113. data/public/lookbook-assets/feather-sprite.svg +0 -1
  114. data/public/lookbook-assets/js/app.js +0 -10862
  115. data/public/lookbook-assets/js/app.js.map +0 -2571
  116. data/public/lookbook-assets/js/embed.js +0 -1427
  117. data/public/lookbook-assets/js/embed.js.91837.6 +0 -0
  118. data/public/lookbook-assets/js/embed.js.map +0 -1
  119. data/public/lookbook-assets/js/lookbook-core.js.map +0 -1
  120. data/public/lookbook-assets/js/lookbook.js.map +0 -1
  121. data/public/lookbook-assets/lookbook-esm.js +0 -1427
  122. data/public/lookbook-assets/lookbook-esm.js.map +0 -1
  123. data/public/lookbook-assets/lookbook-global.js +0 -1427
  124. data/public/lookbook-assets/lookbook-global.js.map +0 -1
  125. data/public/lookbook-assets/lookbook.js +0 -1427
  126. data/public/lookbook-assets/lookbook.js.map +0 -1
@@ -9,12 +9,14 @@ const $8c6f87050723dba0$var$whiteListedAttributes = [
9
9
  "actions",
10
10
  "param-*"
11
11
  ];
12
- function $8c6f87050723dba0$var$initEmbeds() {
12
+ function $8c6f87050723dba0$var$initEmbeds(root = document) {
13
13
  if (typeof window.iFrameResize !== "function") {
14
14
  console.error("Lookbook embeds require the 'iframe-resizer' library to be available. Skipping embed instantiation.");
15
15
  return;
16
16
  }
17
- const embeds = Array.from(document.querySelectorAll("lookbook-embed"));
17
+ if (typeof root === "string") root = document.querySelector(root);
18
+ if (!root) return console.error("Could not initialize Lookbook embeds. Root node not found.");
19
+ const embeds = Array.from(root.querySelectorAll("lookbook-embed"));
18
20
  embeds.forEach((embed)=>{
19
21
  const attrs = Array.from(embed.attributes);
20
22
  const wrapper = $8c6f87050723dba0$var$createWrapper();
@@ -848,12 +848,14 @@ const $8c6f87050723dba0$var$whiteListedAttributes = [
848
848
  "actions",
849
849
  "param-*"
850
850
  ];
851
- function $8c6f87050723dba0$var$initEmbeds() {
851
+ function $8c6f87050723dba0$var$initEmbeds(root = document) {
852
852
  if (typeof window.iFrameResize !== "function") {
853
853
  console.error("Lookbook embeds require the 'iframe-resizer' library to be available. Skipping embed instantiation.");
854
854
  return;
855
855
  }
856
- const embeds = Array.from(document.querySelectorAll("lookbook-embed"));
856
+ if (typeof root === "string") root = document.querySelector(root);
857
+ if (!root) return console.error("Could not initialize Lookbook embeds. Root node not found.");
858
+ const embeds = Array.from(root.querySelectorAll("lookbook-embed"));
857
859
  embeds.forEach((embed)=>{
858
860
  const attrs = Array.from(embed.attributes);
859
861
  const wrapper = $8c6f87050723dba0$var$createWrapper();
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: 2.0.0.beta.2
4
+ version: 2.0.0.beta.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mark Perkins
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-02-14 00:00:00.000000000 Z
11
+ date: 2023-03-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: css_parser
@@ -164,6 +164,7 @@ extra_rdoc_files: []
164
164
  files:
165
165
  - LICENSE.txt
166
166
  - README.md
167
+ - app/assets/lookbook/css/fonts.css
167
168
  - app/assets/lookbook/css/lookbook.css
168
169
  - app/assets/lookbook/css/themes/blue.css
169
170
  - app/assets/lookbook/css/themes/green.css
@@ -171,6 +172,10 @@ files:
171
172
  - app/assets/lookbook/css/themes/rose.css
172
173
  - app/assets/lookbook/css/themes/zinc.css
173
174
  - app/assets/lookbook/css/tooltip.css
175
+ - app/assets/lookbook/fonts/Inter-italic.var.woff2
176
+ - app/assets/lookbook/fonts/Inter-roman.var.woff2
177
+ - app/assets/lookbook/fonts/SourceCodeVariable-Italic.ttf.woff2
178
+ - app/assets/lookbook/fonts/SourceCodeVariable-Roman.ttf.woff2
174
179
  - app/assets/lookbook/img/lucide-sprite.svg
175
180
  - app/assets/lookbook/js/app.js
176
181
  - app/assets/lookbook/js/components/clipboard.js
@@ -231,6 +236,8 @@ files:
231
236
  - app/components/lookbook/embed_code_dropdown/component.html.erb
232
237
  - app/components/lookbook/embed_code_dropdown/component.js
233
238
  - app/components/lookbook/embed_code_dropdown/component.rb
239
+ - app/components/lookbook/file_source/component.html.erb
240
+ - app/components/lookbook/file_source/component.rb
234
241
  - app/components/lookbook/filter/component.html.erb
235
242
  - app/components/lookbook/filter/component.js
236
243
  - app/components/lookbook/filter/component.rb
@@ -245,6 +252,11 @@ files:
245
252
  - app/components/lookbook/inspector_panel/component.css
246
253
  - app/components/lookbook/inspector_panel/component.html.erb
247
254
  - app/components/lookbook/inspector_panel/component.rb
255
+ - app/components/lookbook/logo/component.html.erb
256
+ - app/components/lookbook/logo/component.rb
257
+ - app/components/lookbook/message/component.css
258
+ - app/components/lookbook/message/component.html.erb
259
+ - app/components/lookbook/message/component.rb
248
260
  - app/components/lookbook/nav/component.html.erb
249
261
  - app/components/lookbook/nav/component.js
250
262
  - app/components/lookbook/nav/component.rb
@@ -306,11 +318,10 @@ files:
306
318
  - app/helpers/lookbook/application_helper.rb
307
319
  - app/views/layouts/lookbook/application.html.erb
308
320
  - app/views/layouts/lookbook/embed.html.erb
309
- - app/views/layouts/lookbook/shell.html.erb
310
321
  - app/views/layouts/lookbook/skeleton.html.erb
311
- - app/views/lookbook/404.html.erb
312
322
  - app/views/lookbook/embeds/show.html.erb
313
- - app/views/lookbook/error.html.erb
323
+ - app/views/lookbook/errors/default.html.erb
324
+ - app/views/lookbook/errors/not_found.html.erb
314
325
  - app/views/lookbook/index.html.erb
315
326
  - app/views/lookbook/inspector/inputs/_color.html.erb
316
327
  - app/views/lookbook/inspector/inputs/_range.html.erb
@@ -326,6 +337,7 @@ files:
326
337
  - app/views/lookbook/inspector/panels/_source.html.erb
327
338
  - app/views/lookbook/inspector/show.html.erb
328
339
  - app/views/lookbook/pages/show.html.erb
340
+ - app/views/lookbook/partials/_blank_slate.html.erb
329
341
  - app/views/lookbook/partials/_iframe_content_scripts.html.erb
330
342
  - app/views/lookbook/partials/_user_styles.html.erb
331
343
  - app/views/lookbook/previews/group.html.erb
@@ -361,7 +373,6 @@ files:
361
373
  - lib/lookbook/entities/rendered_scenario_entity.rb
362
374
  - lib/lookbook/entities/scenario_entity.rb
363
375
  - lib/lookbook/entities/scenario_group_entity.rb
364
- - lib/lookbook/error.rb
365
376
  - lib/lookbook/features.rb
366
377
  - lib/lookbook/file_watcher.rb
367
378
  - lib/lookbook/helpers/class_names_helper.rb
@@ -407,9 +418,11 @@ files:
407
418
  - lib/lookbook/stores/tag_store.rb
408
419
  - lib/lookbook/support/deprecation.rb
409
420
  - lib/lookbook/support/errors/config_error.rb
410
- - lib/lookbook/support/errors/lookbook_error.rb
421
+ - lib/lookbook/support/errors/error.rb
411
422
  - lib/lookbook/support/errors/parser_error.rb
412
423
  - lib/lookbook/support/errors/preview_template_error.rb
424
+ - lib/lookbook/support/errors/routing_error.rb
425
+ - lib/lookbook/support/errors/template_error.rb
413
426
  - lib/lookbook/support/evented_file_update_checker.rb
414
427
  - lib/lookbook/support/null_object.rb
415
428
  - lib/lookbook/support/null_websocket.rb
@@ -434,9 +447,16 @@ files:
434
447
  - lib/lookbook/theme.rb
435
448
  - lib/lookbook/version.rb
436
449
  - lib/lookbook/websocket.rb
437
- - lib/tasks/lookbook_tasks.rake
438
- - public/lookbook-assets/css/app.css
439
- - public/lookbook-assets/css/app.css.map
450
+ - public/lookbook-assets/Inter-italic.var.69eb0fe1.woff2
451
+ - public/lookbook-assets/Inter-italic.var.736a7044.woff2
452
+ - public/lookbook-assets/Inter-roman.var.b695afbe.woff2
453
+ - public/lookbook-assets/Inter-roman.var.fbdd51d0.woff2
454
+ - public/lookbook-assets/SourceCodeVariable-Italic.cad97b83.otf
455
+ - public/lookbook-assets/SourceCodeVariable-Italic.ttf.09b4354a.woff2
456
+ - public/lookbook-assets/SourceCodeVariable-Italic.ttf.fcd7e9f4.woff2
457
+ - public/lookbook-assets/SourceCodeVariable-Roman.185ddb17.otf
458
+ - public/lookbook-assets/SourceCodeVariable-Roman.ttf.118e9f22.woff2
459
+ - public/lookbook-assets/SourceCodeVariable-Roman.ttf.91043609.woff2
440
460
  - public/lookbook-assets/css/lookbook.css
441
461
  - public/lookbook-assets/css/lookbook.css.map
442
462
  - public/lookbook-assets/css/themes/blue.css
@@ -449,28 +469,13 @@ files:
449
469
  - public/lookbook-assets/css/themes/rose.css.map
450
470
  - public/lookbook-assets/css/themes/zinc.css
451
471
  - public/lookbook-assets/css/themes/zinc.css.map
452
- - public/lookbook-assets/css/themes/zinc.css.map.91837.5
453
- - public/lookbook-assets/feather-sprite.svg
454
472
  - public/lookbook-assets/img/lucide-sprite.svg
455
- - public/lookbook-assets/js/app.js
456
- - public/lookbook-assets/js/app.js.map
457
- - public/lookbook-assets/js/embed.js
458
- - public/lookbook-assets/js/embed.js.91837.6
459
- - public/lookbook-assets/js/embed.js.map
460
473
  - public/lookbook-assets/js/iframe.js
461
474
  - public/lookbook-assets/js/iframe.js.map
462
475
  - public/lookbook-assets/js/index.js
463
476
  - public/lookbook-assets/js/index.js.map
464
477
  - public/lookbook-assets/js/lookbook-core.js
465
- - public/lookbook-assets/js/lookbook-core.js.map
466
478
  - public/lookbook-assets/js/lookbook.js
467
- - public/lookbook-assets/js/lookbook.js.map
468
- - public/lookbook-assets/lookbook-esm.js
469
- - public/lookbook-assets/lookbook-esm.js.map
470
- - public/lookbook-assets/lookbook-global.js
471
- - public/lookbook-assets/lookbook-global.js.map
472
- - public/lookbook-assets/lookbook.js
473
- - public/lookbook-assets/lookbook.js.map
474
479
  homepage: https://github.com/ViewComponent/lookbook
475
480
  licenses:
476
481
  - MIT
@@ -491,7 +496,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
491
496
  - !ruby/object:Gem::Version
492
497
  version: 1.3.1
493
498
  requirements: []
494
- rubygems_version: 3.3.7
499
+ rubygems_version: 3.4.7
495
500
  signing_key:
496
501
  specification_version: 4
497
502
  summary: A native development UI for ViewComponent
@@ -1,25 +0,0 @@
1
- <%= content_for :body do %>
2
- <div
3
- id="app"
4
- x-data="app"
5
- x-cloak
6
- @popstate.window="handleNavigation"
7
- @click.document="hijax"
8
- @navigation:start="closeMobileSidebar"
9
- class="w-screen h-screen grid grid-rows-[40px_1fr] relative">
10
-
11
- <% if content_for? :user_styles %>
12
- <style media="all" id="user-styles">
13
- <%= content_for :user_styles -%>
14
- </style>
15
- <% end %>
16
-
17
- <%= lookbook_render :header, id: "app-header", debug_menu: @config.debug_menu do |header| %>
18
- <% header.branding { @config.project_name } %>
19
- <% end %>
20
-
21
- <%= content_for?(:shell) ? yield(:shell) : yield %>
22
- </div>
23
- <% end %>
24
-
25
- <%= render template: "layouts/lookbook/skeleton" %>
@@ -1,15 +0,0 @@
1
- <div class="bg-white flex flex-col items-center justify-center h-screen w-full">
2
- <div class="px-4 text-center max-w-sm">
3
- <%= icon :alert_triangle, size: 10, class: "text-red-300 mx-auto" %>
4
- <div class="mt-3">
5
- <h5 class="text-base">
6
- <%== message %>
7
- </h5>
8
- <% if defined?(description) %>
9
- <p class="mt-2 opacity-50 text-sm">
10
- <%== description %>
11
- </p>
12
- <% end %>
13
- </div>
14
- </div>
15
- </div>
@@ -1,46 +0,0 @@
1
- <%
2
- error = error.is_a?(Lookbook::Error) ? error : Lookbook::Error.new(error)
3
- @title = error.title
4
- %>
5
-
6
- <div class="flex flex-col h-screen">
7
- <div class="h-full bg-red-50 overflow-y-auto">
8
- <header class="mx-8 py-6">
9
- <h2 class="text-xl font-bold text-red-700"><%= error.title %></h2>
10
- </header>
11
-
12
- <div class="flex-none px-8 py-6 mb-8 border-t border-b border-red-200 bg-red-100 text-base font-mono leading-relaxed">
13
- <pre class="whitespace-pre-wrap font-sans leading-tight text-red-900"><%= error.message %></pre>
14
- </div>
15
-
16
- <% if error.file_name %>
17
- <div class="text-sm mx-8 mb-2 font-mono">
18
- <span><%= error.file_name %></span>
19
- <% if error.line_number %>
20
- <span>[line <strong><%= error.line_number %></strong>]</span>
21
- <% end %>
22
- </div>
23
- <% end %>
24
-
25
- <% if error.source_code %>
26
- <div class="mx-8 border border-red-200 max-w-screen-lg">
27
- <%= lookbook_render :code,
28
- language: error.file_lang,
29
- highlight_lines: [error.source_code[:highlighted_line]],
30
- start_line: error.source_code[:start_line],
31
- line_numbers: true do %><%= h(error.source_code[:code]) %><% end %>
32
- </div>
33
- <% end %>
34
-
35
- <h3 class="font-bold mb-2 px-8 py-2 mt-8 sticky top-0 bg-red-50">Full stack trace:</h3>
36
- <div class="text-xs font-mono">
37
- <div class="px-8 pb-10 text-gray-400 leading-relaxed">
38
- <% error.backtrace.each do |line| %>
39
- <div class="hover:text-gray-900 transition-colors duration-100">
40
- <%= line %>
41
- </div>
42
- <% end %>
43
- </div>
44
- </div>
45
- </div>
46
- </div>
@@ -1,120 +0,0 @@
1
- module Lookbook
2
- class Error < StandardError
3
- delegate :full_message, :backtrace, :to_s, to: :original
4
-
5
- LINES_AROUND = 3
6
-
7
- def initialize(original = nil, title: nil, message: nil, file_path: nil, file_name: nil, line_number: nil, source_code: nil)
8
- @original = original
9
- @title = title
10
- @message = message
11
- @file_path = file_path
12
- @file_name = file_name
13
- @line_number = line_number
14
- @source_code = source_code
15
- super()
16
- end
17
-
18
- def source_code
19
- lines = source_code_lines
20
-
21
- if lines.present? && line_number.is_a?(Integer)
22
- start_line = source_code_start_line(lines)
23
- end_line = source_code_end_line(lines)
24
- highlighted_line = source_code_highlighted_line(lines)
25
-
26
- line_count = end_line - start_line
27
- relevant_lines = lines.slice(start_line - 1, line_count + 1)
28
- if relevant_lines.present?
29
- empty_start_lines = 0
30
- relevant_lines.each do |line|
31
- break unless line.strip.empty?
32
- empty_start_lines += 1
33
- end
34
-
35
- {
36
- code: relevant_lines.join("\n").lstrip,
37
- start_line: start_line,
38
- highlighted_line: highlighted_line - empty_start_lines
39
- }
40
- end
41
-
42
- end
43
- end
44
-
45
- def source_code_lines
46
- if file_path || @source_code
47
- if @source_code
48
- @source_code.split("\n")
49
- else
50
- full_path = Rails.root.join(file_path)
51
- File.read(full_path).split("\n") if File.exist? full_path
52
- end
53
- end
54
- end
55
-
56
- def file_lang
57
- lang = Lookbook::Lang.guess(file_path)
58
- lang.present? ? lang[:name] : "plaintext"
59
- end
60
-
61
- def title
62
- @title || original.class.to_s
63
- end
64
-
65
- def message
66
- (@message || original.message).gsub("(<unknown>):", "").strip.upcase_first
67
- end
68
-
69
- def file_name
70
- if @file_name == false
71
- nil
72
- else
73
- @file_name || file_path
74
- end
75
- end
76
-
77
- def file_path
78
- path = if @file_path.nil?
79
- parsed_backtrace[0][0] if parsed_backtrace.any?
80
- else
81
- @file_path.presence || nil
82
- end
83
- path.nil? ? nil : path.to_s.delete_prefix("#{Rails.root}/")
84
- end
85
-
86
- def line_number
87
- number = if @line_number.nil?
88
- parsed_backtrace[0][1] if parsed_backtrace.any?
89
- else
90
- @line_number.presence || nil
91
- end
92
- number.present? ? number.to_i : number
93
- end
94
-
95
- def parsed_backtrace
96
- backtrace.map do |x|
97
- x =~ /^(.+?):(\d+)(|:in `(.+)')$/
98
- [$1, $2, $4]
99
- end
100
- end
101
-
102
- protected
103
-
104
- def original
105
- @original.presence || self
106
- end
107
-
108
- def source_code_start_line(lines)
109
- [(line_number - LINES_AROUND), 1].max unless line_number.nil?
110
- end
111
-
112
- def source_code_end_line(lines)
113
- [line_number + LINES_AROUND, lines&.size || Infinity].min
114
- end
115
-
116
- def source_code_highlighted_line(lines)
117
- [line_number - source_code_start_line(lines) + 1, 1].max unless line_number.nil?
118
- end
119
- end
120
- end
@@ -1,21 +0,0 @@
1
- module Lookbook
2
- class LookbookError < StandardError
3
- attr_reader :scope, :original, :message
4
-
5
- def initialize(msg = nil, scope: nil, original: nil)
6
- @scope = scope
7
- @original = original
8
- @message = msg
9
- super(msg)
10
- end
11
-
12
- def full_message
13
- if msg.nil?
14
- message
15
- else
16
- scope_str = scope.nil? ? "[#{scope}]" : ""
17
- "#{scope_str} #{message}".strip
18
- end
19
- end
20
- end
21
- end
@@ -1,10 +0,0 @@
1
- require_relative "../lookbook"
2
-
3
- namespace :lookbook do
4
- namespace :previews do
5
- desc "Preparse the previews"
6
- task preparse: :environment do
7
- puts "The lookbook:preparse task is no longer required and will be removed in v2.0"
8
- end
9
- end
10
- end