turbo_ready 0.0.4 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ class TurboReady::StringWrapper
4
+ include TurboReady::TagHelper
5
+ attr_reader :turbo_stream_string
6
+
7
+ delegate_missing_to :turbo_stream_string
8
+
9
+ def initialize(turbo_stream_string, turbo_stream_strings: Set.new)
10
+ @turbo_stream_string = turbo_stream_string
11
+ @turbo_stream_strings = turbo_stream_strings
12
+ @turbo_stream_strings << turbo_stream_string
13
+ end
14
+
15
+ def invoke(...)
16
+ TurboReady::StringWrapper.new turbo_stream_invoke_tag(...), turbo_stream_strings: turbo_stream_strings
17
+ end
18
+
19
+ def to_s
20
+ turbo_stream_strings.to_a.join("\n").html_safe
21
+ end
22
+
23
+ private
24
+
25
+ def turbo_stream_strings
26
+ @turbo_stream_strings ||= Set.new
27
+ end
28
+ end
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ module TurboReady::TagHelper
4
+ def turbo_stream_invoke_tag(method, args: [], selector: nil, camelize: true, id: nil)
5
+ id = SecureRandom.uuid if id.blank?
6
+ payload = HashWithIndifferentAccess.new(id: id.to_s, selector: selector)
7
+ payload.merge! method_details(method, args: args, camelize: camelize)
8
+ payload.select! { |_, v| v.present? }
9
+ %(<turbo-stream action="invoke" target="DOM"><template>#{payload.to_json}</template></turbo-stream>).html_safe
10
+ end
11
+
12
+ private
13
+
14
+ def method_details(method, args: [], camelize: true)
15
+ if camelize
16
+ method = camelize_method(method)
17
+ args = camelize_args(args)
18
+ end
19
+
20
+ method_parts = method.to_s.split(".")
21
+
22
+ HashWithIndifferentAccess.new(
23
+ receiver: method_parts[0..-2].join("."),
24
+ method: method_parts.last,
25
+ args: args
26
+ )
27
+ end
28
+
29
+ def camelize_method(method)
30
+ method.to_s.split(".").map { |s| s.camelize(:lower) }.join(".")
31
+ end
32
+
33
+ def camelize_args(args = [])
34
+ args.map do |param|
35
+ if param.is_a? Hash
36
+ param.deep_transform_keys { |key| key.to_s.camelize(:lower) }
37
+ else
38
+ param
39
+ end
40
+ end
41
+ end
42
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module TurboReady
4
- VERSION = "0.0.4"
4
+ VERSION = "0.0.7"
5
5
  end
data/lib/turbo_ready.rb CHANGED
@@ -1,12 +1,3 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "turbo_ready/version"
4
- require "turbo_ready/railtie"
5
- require "turbo_ready/string"
6
- require "turbo_ready/tag_builder"
7
-
8
- module TurboReady
9
- def self.patch!
10
- Turbo::Streams::TagBuilder.send :include, TurboReady::TagBuilder
11
- end
12
- end
3
+ require "turbo_ready/engine"
data/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "turbo_ready",
3
- "version": "0.0.3",
3
+ "version": "0.0.6",
4
4
  "description": "Take full control of the DOM with Turbo Streams",
5
5
  "main": "app/assets/builds/turbo_ready.js",
6
6
  "repository": "https://github.com/hopsoft/turbo_ready",
@@ -10,7 +10,7 @@
10
10
  "@hotwired/turbo-rails": ">= 7.1"
11
11
  },
12
12
  "devDependencies": {
13
- "esbuild": "^0.14.48",
13
+ "esbuild": "^0.15.5",
14
14
  "eslint": "^8.19.0",
15
15
  "prettier-standard": "^16.4.1"
16
16
  },
data/turbo_ready.gemspec CHANGED
@@ -2,27 +2,36 @@
2
2
 
3
3
  require_relative "lib/turbo_ready/version"
4
4
 
5
- Gem::Specification.new do |spec|
6
- spec.name = "turbo_ready"
7
- spec.version = TurboReady::VERSION
8
- spec.authors = ["Nate Hopkins (hopsoft)"]
9
- spec.email = ["natehop@gmail.com"]
10
- spec.homepage = "https://github.com/hopsoft/turbo_ready"
11
- spec.summary = "Take full control of the DOM with Turbo Streams"
12
- spec.description = spec.summary
13
- spec.license = "MIT"
5
+ Gem::Specification.new do |s|
6
+ s.name = "turbo_ready"
7
+ s.version = TurboReady::VERSION
8
+ s.authors = ["Nate Hopkins (hopsoft)"]
9
+ s.email = ["natehop@gmail.com"]
10
+ s.homepage = "https://github.com/hopsoft/turbo_ready"
11
+ s.summary = "Take full control of the DOM with Turbo Streams"
12
+ s.description = s.summary
13
+ s.license = "MIT"
14
14
 
15
- spec.metadata["homepage_uri"] = spec.homepage
16
- spec.metadata["source_code_uri"] = spec.homepage
17
- spec.metadata["changelog_uri"] = spec.homepage + "/blob/master/CHANGELOG.md"
15
+ s.metadata["homepage_uri"] = s.homepage
16
+ s.metadata["source_code_uri"] = s.homepage
17
+ s.metadata["changelog_uri"] = s.homepage + "/blob/master/CHANGELOG.md"
18
18
 
19
- spec.files = Dir["lib/**/*.rb", "app/**/*", "bin/*", "[A-Z]*"]
19
+ s.files = Dir["lib/**/*.rb", "app/**/*", "bin/*", "[A-Z]*"]
20
20
 
21
- spec.add_dependency "rails", ">= 6.1"
22
- spec.add_dependency "turbo-rails", ">= 1.1"
21
+ s.add_dependency "rails", ">= 6.1"
22
+ s.add_dependency "turbo-rails", ">= 1.1"
23
23
 
24
- spec.add_development_dependency "magic_frozen_string_literal"
25
- spec.add_development_dependency "pry-byebug"
26
- spec.add_development_dependency "standardrb"
27
- spec.add_development_dependency "tocer"
24
+ s.add_development_dependency "capybara"
25
+ s.add_development_dependency "importmap-rails"
26
+ s.add_development_dependency "magic_frozen_string_literal"
27
+ s.add_development_dependency "net-smtp"
28
+ s.add_development_dependency "pry-byebug"
29
+ s.add_development_dependency "puma"
30
+ s.add_development_dependency "rake"
31
+ s.add_development_dependency "rexml"
32
+ s.add_development_dependency "selenium-webdriver"
33
+ s.add_development_dependency "sprockets-rails"
34
+ s.add_development_dependency "sqlite3"
35
+ s.add_development_dependency "standardrb"
36
+ s.add_development_dependency "webdrivers"
28
37
  end