heroicons_helper 0.4.1 → 0.4.2

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.
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.