shigeki 0.1.0

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 (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/shigeki.rb +83 -0
  3. metadata +49 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 3066dbf67160b36ff52a946e253fbeabd7f781ca9219ed96179f554ed6076f48
4
+ data.tar.gz: 9cc6eb21368ee10fcb3d574a32a7cfc3b3448e051a3442b5028d055a6731daac
5
+ SHA512:
6
+ metadata.gz: d49288da4cc96a567fcaf1e3adc58c73a9f375f58275303a9f225049baae302e2179ef0f698bed65dbee4d26b2f25dc47a6e6f5031d83c50311a5da030b53e62
7
+ data.tar.gz: 0f1bdc9d67dc0840d659bbd1ae7e21acab36553ef9270d654be2765030b9358a5902f0a7c8ac34ee2cb358fc61956abc60f064e0276d071fea4b9e891713de20
data/lib/shigeki.rb ADDED
@@ -0,0 +1,83 @@
1
+ class Shigeki
2
+ attr_accessor :controller_name
3
+
4
+ def initialize(controller_name)
5
+ @controller_name = controller_name
6
+ end
7
+
8
+ def data(&)
9
+ builder = Builder.new(controller_name)
10
+
11
+ builder.instance_eval(&)
12
+
13
+ builder.to_h
14
+ end
15
+
16
+ class Builder
17
+ attr_accessor :controller_name
18
+
19
+ def initialize(controller_name)
20
+ @controller_name = controller_name
21
+ @data = {}
22
+ end
23
+
24
+ def to_h
25
+ @data
26
+ end
27
+
28
+ def controller
29
+ @data = @data.deep_merge(controller: controller_name)
30
+
31
+ self
32
+ end
33
+
34
+ # Define short hand methods for common events
35
+ %i[
36
+ ajax
37
+ change
38
+ click
39
+ show
40
+ submit
41
+ success
42
+ ].each do |event|
43
+ define_method(:"action_#{event}") do |method|
44
+ action(method:, event:)
45
+ end
46
+ end
47
+
48
+ def action(method:, event: nil)
49
+ action_data = "#{controller_name}##{method}"
50
+ action_data = "#{event}->#{action_data}" if event.present?
51
+
52
+ @data = @data.deep_merge(action: action_data)
53
+
54
+ self
55
+ end
56
+
57
+ def target(name)
58
+ target_key = "#{controller_name_underscored}_target"
59
+
60
+ @data = @data.deep_merge(target_key => name)
61
+
62
+ self
63
+ end
64
+
65
+ def value(name:, content:)
66
+ target_key = "#{controller_name_underscored}_#{name}_value"
67
+
68
+ @data = @data.deep_merge(target_key => content)
69
+
70
+ self
71
+ end
72
+
73
+ def other(hash)
74
+ @data = @data.deep_merge(hash)
75
+
76
+ self
77
+ end
78
+
79
+ def controller_name_underscored
80
+ controller_name.tr '-', '_'
81
+ end
82
+ end
83
+ end
metadata ADDED
@@ -0,0 +1,49 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: shigeki
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Tom Qin
8
+ - Jonathan Evans
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2024-10-24 00:00:00.000000000 Z
13
+ dependencies: []
14
+ description: A class based approach to setting Stimulus data attributes in haml files
15
+ email:
16
+ - xqin@revela.co
17
+ - jevans@revela.co
18
+ executables: []
19
+ extensions: []
20
+ extra_rdoc_files: []
21
+ files:
22
+ - lib/shigeki.rb
23
+ homepage: https://github.com/Revela/Shigeki
24
+ licenses:
25
+ - MIT
26
+ metadata:
27
+ homepage_uri: https://github.com/Revela/Shigeki
28
+ source_code_uri: https://github.com/Revela/Shigeki
29
+ changelog_uri: https://github.com/Revela/Shigeki/blob/main/CHANGELOG.md
30
+ post_install_message:
31
+ rdoc_options: []
32
+ require_paths:
33
+ - lib
34
+ required_ruby_version: !ruby/object:Gem::Requirement
35
+ requirements:
36
+ - - ">="
37
+ - !ruby/object:Gem::Version
38
+ version: 2.6.0
39
+ required_rubygems_version: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ requirements: []
45
+ rubygems_version: 3.3.27
46
+ signing_key:
47
+ specification_version: 4
48
+ summary: A Stimulus Wrapper
49
+ test_files: []