From 754053226c233ebfc8232ce5694504d19d8401d4 Mon Sep 17 00:00:00 2001 From: Jeremy Date: Fri, 7 Nov 2025 13:47:55 -0800 Subject: [PATCH] Reorganize files to make HTML optional. Fixes #1783 --- spec/spec_helper.cr | 1 + src/charms/bool_extensions.cr | 2 +- src/charms/int16_extensions.cr | 2 +- src/charms/int32_extensions.cr | 2 +- src/charms/int64_extensions.cr | 2 +- src/html.cr | 9 +++++++++ src/lucky.cr | 1 - src/lucky/{ => html}/base_component.cr | 0 src/lucky/{ => html}/html_builder.cr | 4 ++-- src/lucky/{ => html}/html_page.cr | 0 src/lucky/{ => html}/mount_component.cr | 0 src/lucky/{ => html}/welcome_page.cr | 0 src/lucky/paginator/components/bootstrap_nav.cr | 3 +++ src/lucky/paginator/components/bulma_nav.cr | 3 +++ src/lucky/paginator/components/simple_nav.cr | 2 ++ src/lucky/{ => tags}/allowed_in_tags.cr | 0 16 files changed, 24 insertions(+), 7 deletions(-) create mode 100644 src/html.cr rename src/lucky/{ => html}/base_component.cr (100%) rename src/lucky/{ => html}/html_builder.cr (93%) rename src/lucky/{ => html}/html_page.cr (100%) rename src/lucky/{ => html}/mount_component.cr (100%) rename src/lucky/{ => html}/welcome_page.cr (100%) rename src/lucky/{ => tags}/allowed_in_tags.cr (100%) diff --git a/spec/spec_helper.cr b/spec/spec_helper.cr index e5955135b..c5f9b2740 100644 --- a/spec/spec_helper.cr +++ b/spec/spec_helper.cr @@ -1,5 +1,6 @@ require "spec" require "../src/lucky" +require "../src/html" require "../tasks/**" require "./support/**" diff --git a/src/charms/bool_extensions.cr b/src/charms/bool_extensions.cr index d8996deb3..db229f314 100644 --- a/src/charms/bool_extensions.cr +++ b/src/charms/bool_extensions.cr @@ -1,4 +1,4 @@ -require "../lucky/allowed_in_tags" +require "../lucky/tags/allowed_in_tags" struct Bool include ::Lucky::AllowedInTags diff --git a/src/charms/int16_extensions.cr b/src/charms/int16_extensions.cr index 2f78ead5c..1df544024 100644 --- a/src/charms/int16_extensions.cr +++ b/src/charms/int16_extensions.cr @@ -1,4 +1,4 @@ -require "../lucky/allowed_in_tags" +require "../lucky/tags/allowed_in_tags" struct Int16 include ::Lucky::AllowedInTags diff --git a/src/charms/int32_extensions.cr b/src/charms/int32_extensions.cr index 7a2e7f985..c643f556a 100644 --- a/src/charms/int32_extensions.cr +++ b/src/charms/int32_extensions.cr @@ -1,4 +1,4 @@ -require "../lucky/allowed_in_tags" +require "../lucky/tags/allowed_in_tags" struct Int32 include ::Lucky::AllowedInTags diff --git a/src/charms/int64_extensions.cr b/src/charms/int64_extensions.cr index 40e80cfe8..312935f5e 100644 --- a/src/charms/int64_extensions.cr +++ b/src/charms/int64_extensions.cr @@ -1,4 +1,4 @@ -require "../lucky/allowed_in_tags" +require "../lucky/tags/allowed_in_tags" struct Int64 include ::Lucky::AllowedInTags diff --git a/src/html.cr b/src/html.cr new file mode 100644 index 000000000..eb60d6cb9 --- /dev/null +++ b/src/html.cr @@ -0,0 +1,9 @@ +# These files are required when any HTML component is used. +# ``` +# require "lucky" +# require "lucky/html" +# ``` +# +require "./lucky/html/html_page" +require "./lucky/paginator/components/*" +require "./lucky/html/welcome_page" diff --git a/src/lucky.cr b/src/lucky.cr index aadc3c554..9614e1c8a 100644 --- a/src/lucky.cr +++ b/src/lucky.cr @@ -21,7 +21,6 @@ require "./lucky/route_helper" require "./lucky/*" require "./lucky/paginator/paginator" require "./lucky/paginator/*" -require "./lucky/paginator/components/*" module Lucky ROUTER = Lucky::Router.new diff --git a/src/lucky/base_component.cr b/src/lucky/html/base_component.cr similarity index 100% rename from src/lucky/base_component.cr rename to src/lucky/html/base_component.cr diff --git a/src/lucky/html_builder.cr b/src/lucky/html/html_builder.cr similarity index 93% rename from src/lucky/html_builder.cr rename to src/lucky/html/html_builder.cr index 3ae6b5ede..526ce7bab 100644 --- a/src/lucky/html_builder.cr +++ b/src/lucky/html/html_builder.cr @@ -1,5 +1,5 @@ -require "./tags/**" -require "./page_helpers/**" +require "../tags/**" +require "../page_helpers/**" require "./mount_component" module Lucky::HTMLBuilder diff --git a/src/lucky/html_page.cr b/src/lucky/html/html_page.cr similarity index 100% rename from src/lucky/html_page.cr rename to src/lucky/html/html_page.cr diff --git a/src/lucky/mount_component.cr b/src/lucky/html/mount_component.cr similarity index 100% rename from src/lucky/mount_component.cr rename to src/lucky/html/mount_component.cr diff --git a/src/lucky/welcome_page.cr b/src/lucky/html/welcome_page.cr similarity index 100% rename from src/lucky/welcome_page.cr rename to src/lucky/html/welcome_page.cr diff --git a/src/lucky/paginator/components/bootstrap_nav.cr b/src/lucky/paginator/components/bootstrap_nav.cr index dbf5bf726..8acb0a1f3 100644 --- a/src/lucky/paginator/components/bootstrap_nav.cr +++ b/src/lucky/paginator/components/bootstrap_nav.cr @@ -1,9 +1,12 @@ +require "../../html/base_component" + # Pagination component using Bootstrap styles # # https://getbootstrap.com/docs/4.0/components/pagination/ class Lucky::Paginator::BootstrapNav < Lucky::BaseComponent needs pages : Lucky::Paginator + @[Deprecated("Consider using Lucky::Paginator::SimpleNav or writing a custom component")] def render nav aria_label: "pagination", role: "navigation" do ul class: "pagination", aria_label: "pagination" do diff --git a/src/lucky/paginator/components/bulma_nav.cr b/src/lucky/paginator/components/bulma_nav.cr index 1f80e94d0..6efd09056 100644 --- a/src/lucky/paginator/components/bulma_nav.cr +++ b/src/lucky/paginator/components/bulma_nav.cr @@ -1,9 +1,12 @@ +require "../../html/base_component" + # Pagination component using Bulma Pagination styles # # https://bulma.io/documentation/components/pagination/ class Lucky::Paginator::BulmaNav < Lucky::BaseComponent needs pages : Lucky::Paginator + @[Deprecated("Consider using Lucky::Paginator::SimpleNav or writing a custom component")] def render nav aria_label: "pagination", class: "pagination", role: "navigation" do ul class: "pagination-list" do diff --git a/src/lucky/paginator/components/simple_nav.cr b/src/lucky/paginator/components/simple_nav.cr index 6e0e832e6..56e48716f 100644 --- a/src/lucky/paginator/components/simple_nav.cr +++ b/src/lucky/paginator/components/simple_nav.cr @@ -1,3 +1,5 @@ +require "../../html/base_component" + # Pagination component with raw html and no styling # # Typically you would copy paste this component source into your app diff --git a/src/lucky/allowed_in_tags.cr b/src/lucky/tags/allowed_in_tags.cr similarity index 100% rename from src/lucky/allowed_in_tags.cr rename to src/lucky/tags/allowed_in_tags.cr