shigeki 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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: []