Class: JekyllImgFlow::Tags::TagRegistry

Inherits:
Object
  • Object
show all
Defined in:
lib/jekyll-imgflow/tags/tag_registry.rb

Overview

Registry for managing tags

Class Method Summary collapse

Class Method Details

.available_tagsObject



20
21
22
23
24
# File 'lib/jekyll-imgflow/tags/tag_registry.rb', line 20

def self.available_tags
  @tags ||= {}
  discover_tags unless @tags_discovered
  @tags.keys
end

.discover_tagsObject

Dynamic tag discovery



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/jekyll-imgflow/tags/tag_registry.rb', line 27

def self.discover_tags
  return if @tags_discovered

  @tags ||= {}
  tags_dir = File.dirname(__FILE__)

  Dir.glob(File.join(tags_dir, "*_tag.rb")).each do |file|
    next if File.basename(file) == "base_tag.rb"

    tag_name = File.basename(file, ".rb").gsub("_tag", "")
    register_tag_from_file(tag_name)
  end

  @tags_discovered = true
  Jekyll.logger.debug "ImgFlow:", "Discovered #{@tags.size} tags"
end

.get_tag(name) ⇒ Object



14
15
16
17
18
# File 'lib/jekyll-imgflow/tags/tag_registry.rb', line 14

def self.get_tag(name)
  @tags ||= {}
  discover_tags unless @tags_discovered
  @tags[name.to_sym]
end

.register_tag(name, tag_class) ⇒ Object



9
10
11
12
# File 'lib/jekyll-imgflow/tags/tag_registry.rb', line 9

def self.register_tag(name, tag_class)
  @tags ||= {}
  @tags[name.to_sym] = tag_class
end

.register_tag_from_file(name) ⇒ Object



44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/jekyll-imgflow/tags/tag_registry.rb', line 44

def self.register_tag_from_file(name)
  class_name = "#{name.split('_').map(&:capitalize).join}Tag"

  begin
    require_relative "#{name}_tag"
    tag_class = JekyllImgFlow::Tags.const_get(class_name)
    register_tag name.to_sym, tag_class
    Jekyll.logger.debug "ImgFlow:", "Registered tag: #{name} (#{class_name})"
  rescue NameError => e
    Jekyll.logger.warn "ImgFlow:", "Failed to load tag #{name}: #{e.message}"
  rescue LoadError => e
    Jekyll.logger.warn "ImgFlow:", "Failed to require tag #{name}: #{e.message}"
  end
end

.reset!Object

Force discovery (useful for testing)



64
65
66
67
# File 'lib/jekyll-imgflow/tags/tag_registry.rb', line 64

def self.reset!
  @tags = {}
  @tags_discovered = false
end

.tags_discovered?Boolean

Returns:

  • (Boolean)


59
60
61
# File 'lib/jekyll-imgflow/tags/tag_registry.rb', line 59

def self.tags_discovered?
  @tags_discovered ||= false
end