heroicons_helper 0.4.1 → 0.4.2

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: 80e090d354ed7b42e47a7436e723b4bd438a75aaa558856a830ed78a3fcbb3d5
4
- data.tar.gz: 475b59fd40ed8e85775eb620131fa0425f17608d6d1c8f2d1f4aa90c8327735b
3
+ metadata.gz: 32e795de2bdf5ffe8332a8e4d6cdb04def32910875e359606d5fcc65dc31f82d
4
+ data.tar.gz: ea6e061f06312b495ed529102e10972a06f10462134ef0d96f32de246ee7bd2e
5
5
  SHA512:
6
- metadata.gz: d45fea85415d4fac7ed79f0cf1563dd3fd7dabf87780714dc41d5e3bc09ca3d9581d58f1312db7be08f9803fad2389417b90d3aea1fb74acb18c0ffe8b4ad1ff
7
- data.tar.gz: 703138870cb157f666d37d3df838dfaccd1b5d12d20c2e98c78ec7db2b57ed804c074c00a220d61e431104b62ae9168eb9eb9c12c88805ab9a24581fe8c53d09
6
+ metadata.gz: 07b15015752f2446cd1939ad3a330bffa9a313142b55d291e4ed1941b68ee047f5591ef921978deb0cb3619da28ab66a1da9f7e1e1ac06faafd011df61ca46ba
7
+ data.tar.gz: dd8578a59db2b627bb809b59051e5d2f238c9c559f6cfe1d0ee91f7eb1ab56d2d5ab88e93f6be5e45f040089d5fb0332b767a7db3df367dcadc5ffe16e3d1ae6
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # HeroiconsHelper
2
2
 
3
- This gem helps you use Heroicons in your Ruby projects. It's inspired by [heroicons-ruby](https://github.com/chunlea/heroicons-ruby) and [octicons](https://github.com/primer/octicons).
3
+ This gem helps you use Heroicons in your Ruby projects. It's inspired by [heroicons-ruby](https://github.com/chunlea/heroicons-ruby) and [octicons_gem](https://github.com/primer/octicons/tree/main/lib/octicons_gem).
4
4
 
5
5
  ## Installation
6
6
 
@@ -25,12 +25,12 @@ include HeroiconsHelper
25
25
  You'll have a brand new method called `heroicon` whose signature looks like this:
26
26
 
27
27
  ```ruby
28
- heroicon(symbol, variant, attributes: {})
28
+ heroicon(icon, variant, attributes: {})
29
29
  ```
30
30
 
31
31
  where
32
32
 
33
- * `symbol` is the heroicons name
33
+ * `icon` is the Heroicon name (eg. `:bell` or `"bell")
34
34
  * `variant` is the type of Heroicons (eg., `outline` or `solid`)
35
35
  * `attributes` are any additional HTML attributes to add on to the resulting `svg` element
36
36
 
@@ -3,17 +3,17 @@
3
3
  module HeroiconsHelper
4
4
  # Icon to show heroicons by name and variant.
5
5
  class Icon
6
- attr_reader :path, :attributes, :width, :height, :symbol, :variant, :keywords
6
+ attr_reader :path, :attributes, :width, :height, :name, :variant, :keywords
7
7
 
8
8
  VARIANT_OUTLINE = "outline"
9
9
  VARIANT_SOLID = "solid"
10
10
  VARIANTS = [VARIANT_OUTLINE, VARIANT_SOLID].freeze
11
11
 
12
- def initialize(symbol, variant, attributes: {})
13
- @symbol = symbol.to_s
12
+ def initialize(name, variant, attributes: {})
13
+ @name = name.to_s
14
14
  @variant = variant.to_s
15
15
 
16
- heroicon = get_heroicon(@symbol, @variant)
16
+ heroicon = get_heroicon(@name, @variant)
17
17
 
18
18
  @path = heroicon["path"]
19
19
  @width = heroicon["width"]
@@ -54,7 +54,7 @@ module HeroiconsHelper
54
54
 
55
55
  # prepare the octicon class
56
56
  private def classes
57
- "heroicon heroicon-#{@symbol}-#{@variant} #{@attributes[:class]} ".strip
57
+ "heroicon heroicon-#{@name}-#{@variant} #{@attributes[:class]} ".strip
58
58
  end
59
59
 
60
60
  private def variant_attributes
@@ -101,17 +101,17 @@ module HeroiconsHelper
101
101
  (width.to_i * @height) / @width
102
102
  end
103
103
 
104
- private def get_heroicon(symbol, variant)
105
- raise ArgumentError, "Icon name can't be empty" if symbol.empty?
104
+ private def get_heroicon(name, variant)
105
+ raise ArgumentError, "Icon name can't be empty" if name.empty?
106
106
 
107
107
  raise ArgumentError, "Variant `#{variant.inspect}` is invalid; must be one of #{VARIANTS.join(", ")}" unless VARIANTS.include?(variant)
108
108
 
109
- icon = HeroiconsHelper::ICON_SYMBOLS[symbol]
109
+ icon = HeroiconsHelper::ICON_NAMES[name]
110
110
 
111
- raise ArgumentError, "Couldn't find Heroicon for `#{symbol.inspect}`" unless icon
111
+ raise ArgumentError, "Couldn't find Heroicon for `#{name.inspect}`" unless icon
112
112
 
113
113
  icon_variant = icon["variants"][variant]
114
- raise ArgumentError, "Heroicon for `#{symbol.inspect}` doesn't have variant `#{variant.inspect}`" unless icon_variant
114
+ raise ArgumentError, "Heroicon for `#{name.inspect}` doesn't have variant `#{variant.inspect}`" unless icon_variant
115
115
 
116
116
  {
117
117
  "name" => icon["name"],
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module HeroiconsHelper
4
- VERSION = "0.4.1"
4
+ VERSION = "0.4.2"
5
5
  end
@@ -7,9 +7,22 @@ require "json"
7
7
 
8
8
  module HeroiconsHelper
9
9
  file_data = File.read(File.join(File.dirname(__FILE__), "./heroicons_helper/data.json"))
10
- ICON_SYMBOLS = JSON.parse(file_data).freeze
10
+ ICON_NAMES = JSON.parse(file_data).freeze
11
11
 
12
- def heroicon(symbol, variant:, **attributes)
13
- ::HeroiconsHelper::Icon.new(symbol, variant, attributes: attributes)
12
+ def heroicon(name, variant:, **attributes)
13
+ cache_key = HeroiconsHelper::Cache.get_key(
14
+ name: name,
15
+ variant: variant,
16
+ height: attributes[:height],
17
+ width: attributes[:width]
18
+ )
19
+
20
+ cached_heroicon = HeroiconsHelper::Cache.read(cache_key)
21
+ return cached_heroicon unless cached_heroicon.nil?
22
+
23
+ heroicon = ::HeroiconsHelper::Icon.new(name, variant, attributes: attributes)
24
+ HeroiconsHelper::Cache.set(cache_key, heroicon)
25
+
26
+ heroicon
14
27
  end
15
28
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: heroicons_helper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Garen J. Torikian
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-06-11 00:00:00.000000000 Z
11
+ date: 2022-06-15 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: A package that distributes Heroicons as a gem, for easy inclusion in
14
14
  Ruby projects.