class_variants 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2792db3c19b185d0e6742eda0c1a2f0857875aafbed636ce538b2dcab7ec9fd5
4
- data.tar.gz: 9fa284780eb2349119f181f88fb34cb11c6aae3dbdbbda66f26ba7f806e3ea4f
3
+ metadata.gz: 0b60f4147746cf609f268e92a4ed0a0835b6e89f5a2fb7e0cc10b210e3a35565
4
+ data.tar.gz: d308f7f0deddd82ca3ed03080308be226ab8c9ef53dfc26ecfc8d9298c9e631b
5
5
  SHA512:
6
- metadata.gz: 887fdd4337ce24b0c6821d64db55b457fc78c507958ae4d4d7d328b4b4ff67452651eb1fab0e6b56e42cd42790159e23610fee68ac6525a5adca3a3a6830d127
7
- data.tar.gz: 8076a00c2878faf314c01cbf4c2a5fa82a63888d4a38f755a8a054b0bd0f0067a2e6fc097bc9e5457f5816f83d2f7269e8ba0aed5917f12ed8d1ee9de7d1081e
6
+ metadata.gz: b82570da933a7323038ad487f5055b5c2e8d04c50174a9cd6feeb42beac9304dd1592f0db5eac531c83c5de86f949dd1e0a69548eb1947e835cd032aa77017b4
7
+ data.tar.gz: 6d02b21c6813ae0ca41a8a069a05d370c6f5acfc6ef32427c04383c4fbcf4a01d78e7c3728c2eb6cee3878c7471f161fe2951cbd15679c17254005f020659dff
@@ -0,0 +1,9 @@
1
+ module ClassVariants
2
+ module ActionView
3
+ module Helpers
4
+ def class_variants(classes, **args)
5
+ ClassVariants::Instance.new classes, **args
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,39 @@
1
+ class ClassVariants::Instance
2
+ attr_reader :classes
3
+ attr_reader :variants
4
+ attr_reader :defaults
5
+
6
+ def initialize(classes = "", variants: {}, defaults: {})
7
+ @classes = classes
8
+ @variants = variants
9
+ @defaults = defaults
10
+ end
11
+
12
+ def render(**settings)
13
+ result = []
14
+
15
+ # Add the default classes if any provided
16
+ result << classes if classes
17
+
18
+ # Keep the applied variants so we can later apply the defaults
19
+ applied_options = []
20
+
21
+ # Go through each keys provided
22
+ settings.each do |key, value|
23
+ if variants.keys.include? key
24
+ applied_options << key
25
+ result << variants[key][value]
26
+ end
27
+ end
28
+
29
+ if defaults.present?
30
+ defaults.each do |key, key_to_use|
31
+ unless applied_options.include? key
32
+ result << @variants[key][key_to_use] if @variants[key].present?
33
+ end
34
+ end
35
+ end
36
+
37
+ result.join " "
38
+ end
39
+ end
@@ -0,0 +1,12 @@
1
+ require 'rails/railtie'
2
+
3
+ module ClassVariants
4
+ class Railtie < ::Rails::Railtie
5
+ initializer "class_variants.action_view" do |app|
6
+ ActiveSupport.on_load :action_view do
7
+ require "class_variants/action_view/helpers"
8
+ include ClassVariants::ActionView::Helpers
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,3 @@
1
+ module ClassVariants
2
+ VERSION = "0.0.3" unless const_defined?(:VERSION)
3
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: class_variants
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adrian Marin
@@ -17,6 +17,10 @@ extensions: []
17
17
  extra_rdoc_files: []
18
18
  files:
19
19
  - lib/class_variants.rb
20
+ - lib/class_variants/action_view/helpers.rb
21
+ - lib/class_variants/instance.rb
22
+ - lib/class_variants/railtie.rb
23
+ - lib/class_variants/version.rb
20
24
  homepage: https://github.com/avo-hq/class_variants
21
25
  licenses:
22
26
  - MIT