heartml 1.0.0.beta12 → 1.0.0.beta13

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: 8636b5bf59b3faa6b18cbc6848a794cecb3e9935cd209e8a85e619ebdeda5f79
4
- data.tar.gz: beb6d956c8df7357c26c45aca81bd87222c8e476c42fb0b4907636c88a7785e1
3
+ metadata.gz: 34d9fbdea2b6e1a13db6ef196832ecc26e8b9b7309ab535e55322a1bc41f9365
4
+ data.tar.gz: 6a290783cd1351a473b78ba06640afad21591ab8d8c2c3d55b8c719e4d1b8d88
5
5
  SHA512:
6
- metadata.gz: 168d6809c47bc848bbed8d523fcbaf910df5ee0e5bbe04020ae91ed3b0c10bba005af4c0e556dcb05b14bb9877553757eea0d00da8fa0c5dd4033b24b52c45f1
7
- data.tar.gz: 20285cb72493c1ce3f2fadbb95cd9f78cfb1ef11130602830974a420034457523cb9821a9e540ddfb2fa193ec054af5945b473f7c4d6cec947b28034d5b172b4
6
+ metadata.gz: 70a1840042e1dde5b672d3716475013f3249f2fc9a53affb8ed97eca4fe096e7a904f73a596b0b048db66231ccc6a4aeeef9ce3e5c45d581c36a0308275328f1
7
+ data.tar.gz: a59ed8c042924e27ffe47f3fad6a13e7d506450b1d5e426f4c29fbde5edd5a005c59b67ced6c2c7b20f2e5c2e9b594814bde901b961e80fa87433a36174e1495
data/CHANGELOG.md CHANGED
@@ -2,6 +2,10 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [1.0.0.beta13] - 2024-04-08
6
+
7
+ - Add final Rails & ViewComponent config
8
+
5
9
  ## [1.0.0.beta12] - 2024-03-10
6
10
 
7
11
  - Bugfix: shouldn't swallow `host-*` attributes for Ruby initializers
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- heartml (1.0.0.beta12)
4
+ heartml (1.0.0.beta13)
5
5
  concurrent-ruby (~> 1.2)
6
6
  nokolexbor (>= 0.4.2)
7
7
 
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Heartml
4
+ module Rails
5
+ module Helpers
6
+ def render_heartml(&) = Heartml::TemplateRenderer.new(body: capture(&), context: self).().to_html
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,52 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Heartml
4
+ module Rails
5
+ class Railtie < ::Rails::Railtie
6
+ module ReloadDocsInDevelopment
7
+ extend ActiveSupport::Concern
8
+
9
+ included do
10
+ before_action :reload_docs
11
+ end
12
+
13
+ def reload_docs
14
+ Heartml.registered_elements.each { _1.instance_variable_set(:@doc, nil) }
15
+ end
16
+ end
17
+
18
+ require "heartml/rails/helpers"
19
+ ActionView::Helpers.include Heartml::Rails::Helpers
20
+
21
+ initializer "heartml.monkypatch_view_component" do |_app|
22
+ require "view_component/base"
23
+ require "heartml/rails/view_component_base"
24
+ ViewComponent::Base.class_eval do
25
+ def self.heartml = include Heartml::Rails::ViewComponentBase
26
+ end
27
+ rescue LoadError
28
+ # no ViewComponent to patch
29
+ end
30
+
31
+ initializer "heartml.reload_docs_in_development" do |_app|
32
+ unless ::Rails.env.production?
33
+ ActiveSupport.on_load(:action_controller_base) do
34
+ include ReloadDocsInDevelopment
35
+ end
36
+ end
37
+ end
38
+
39
+ config.to_prepare do
40
+ next if ::Rails.env.production?
41
+
42
+ components_folder = ::Rails.root.join("app", "components")
43
+ unless File.directory?(components_folder)
44
+ ::Rails.logger.error "Heartml: missing `app/components' folder, cannot load elements"
45
+ next
46
+ end
47
+
48
+ ::Rails.autoloaders.main.eager_load_dir components_folder
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,38 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Heartml
4
+ module Rails
5
+ module ViewComponentBase
6
+ def self.included(klass)
7
+ klass.remove_method :render_template_for
8
+ klass.extend ClassMethods
9
+ klass.include Heartml
10
+ end
11
+
12
+ def render_in(view_context, rendering_mode: :string, &block)
13
+ self.rendering_mode = rendering_mode
14
+ super(view_context, &block)
15
+ end
16
+
17
+ def render_template_for(*) = call
18
+
19
+ module ClassMethods
20
+ def compile(*)
21
+ # no-op
22
+ end
23
+
24
+ def compiled? = true
25
+
26
+ def inherited(klass)
27
+ super(klass)
28
+ klass.source_location = caller_locations(1, 10).reject { |l| l.label == "inherited" }[0].path
29
+ klass.virtual_path = klass.source_location.gsub(
30
+ %r{(.*#{Regexp.quote(ViewComponent::Base.config.view_component_path)})|(\.rb)}, ""
31
+ )
32
+ Heartml::ServerEffects.included_extras(klass)
33
+ klass.directives.merge! directives
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
@@ -2,5 +2,5 @@
2
2
 
3
3
  module Heartml
4
4
  # @return [String]
5
- VERSION = "1.0.0.beta12"
5
+ VERSION = "1.0.0.beta13"
6
6
  end
data/lib/heartml.rb CHANGED
@@ -398,4 +398,4 @@ end
398
398
 
399
399
  require_relative "heartml/template_renderer"
400
400
  require_relative "heartml/bridgetown_renderer" if defined?(Bridgetown)
401
- require_relative "heartml/railtie" if defined?(Rails::Railtie)
401
+ require_relative "heartml/rails/railtie" if defined?(Rails::Railtie)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: heartml
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.beta12
4
+ version: 1.0.0.beta13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jared White
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-03-11 00:00:00.000000000 Z
11
+ date: 2024-04-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: concurrent-ruby
@@ -59,7 +59,9 @@ files:
59
59
  - lib/heartml/bridgetown_renderer.rb
60
60
  - lib/heartml/fragment.rb
61
61
  - lib/heartml/query_selection.rb
62
- - lib/heartml/railtie.rb
62
+ - lib/heartml/rails/helpers.rb
63
+ - lib/heartml/rails/railtie.rb
64
+ - lib/heartml/rails/view_component_base.rb
63
65
  - lib/heartml/server_effects.rb
64
66
  - lib/heartml/template_renderer.rb
65
67
  - lib/heartml/version.rb
@@ -1,37 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Heartml
4
- class Railtie < ::Rails::Railtie
5
- module ReloadDocsInDevelopment
6
- extend ActiveSupport::Concern
7
-
8
- included do
9
- before_action :reload_docs
10
- end
11
-
12
- def reload_docs
13
- Heartml.registered_elements.each { _1.instance_variable_set(:@doc, nil) }
14
- end
15
- end
16
-
17
- initializer "heartml.reload_docs_in_development" do |_app|
18
- unless Rails.env.production?
19
- ActiveSupport.on_load(:action_controller_base) do
20
- include ReloadDocsInDevelopment
21
- end
22
- end
23
- end
24
-
25
- config.to_prepare do
26
- next if Rails.env.production?
27
-
28
- components_folder = Rails.root.join("app", "components")
29
- unless File.directory?(components_folder)
30
- Rails.logger.error "Heartml: missing `app/components' folder, cannot load elements"
31
- next
32
- end
33
-
34
- Rails.autoloaders.main.eager_load_dir components_folder
35
- end
36
- end
37
- end