Module: Bunto::Assets::Liquid::Tag::Proxies

Defined in:
lib/bunto/assets/liquid/tag/proxies.rb

Class Method Summary collapse

Class Method Details

.add(name, tag, *args, &block) ⇒ Object




26
27
28
# File 'lib/bunto/assets/liquid/tag/proxies.rb', line 26

def self.add(name, tag, *args, &block)
  add_by_class(*generate_class(name, tag, &block), *args)
end

.add_by_class(class_, name, tag, *args) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
# File 'lib/bunto/assets/liquid/tag/proxies.rb', line 12

def self.add_by_class(class_, name, tag, *args)
  proc_ = proc { |v| [v.to_s, v, v.to_sym] }
  all << {
    :name => proc_.call(name).uniq,
    :args => [args].flatten.map(&proc_).flatten.uniq,
    :tags => [ tag].flatten.map(&proc_).flatten.uniq,
    :class  => class_
  }

  all
end

.allObject




86
87
88
# File 'lib/bunto/assets/liquid/tag/proxies.rb', line 86

def self.all
  @_all ||= Set.new
end

.base_keysObject




40
41
42
43
44
# File 'lib/bunto/assets/liquid/tag/proxies.rb', line 40

def self.base_keys
  all.select { |val| val[:class].is_a?(Symbol) }.map do |val|
    val[:name]
  end.flatten
end

.get(name, tag = nil, arg = nil) ⇒ Object




54
55
56
57
58
59
60
61
62
63
64
# File 'lib/bunto/assets/liquid/tag/proxies.rb', line 54

def self.get(name, tag = nil, arg = nil)
  if name && tag && arg then get_by_name_and_tag_and_arg(name, tag, arg)
  elsif name && tag
    get_by_name_and_tag(name, tag)

  else
    all.select do |val|
      val[:name].include?(name)
    end
  end
end

.get_by_name_and_tag(name, tag) ⇒ Object




77
78
79
80
81
82
# File 'lib/bunto/assets/liquid/tag/proxies.rb', line 77

def self.get_by_name_and_tag(name, tag)
  all.select do |val|
    val[:name].include?(name) && (val[:tags].include?(:all) || val[:tags] \
      .include?(tag))
  end
end

.get_by_name_and_tag_and_arg(name, tag, arg) ⇒ Object




68
69
70
71
72
73
# File 'lib/bunto/assets/liquid/tag/proxies.rb', line 68

def self.get_by_name_and_tag_and_arg(name, tag, arg)
  all.select do |val|
    val[:name].include?(name) && (val[:tags].include?(:all) || val[:tags] \
      .include?(tag)) && val[:args].include?(arg)
  end
end

.has?(name, tag = nil, arg = nil) ⇒ Boolean


Returns:

  • (Boolean)


48
49
50
# File 'lib/bunto/assets/liquid/tag/proxies.rb', line 48

def self.has?(name, tag = nil, arg = nil)
  get(name, tag, arg).any?
end

.keysObject




32
33
34
35
36
# File 'lib/bunto/assets/liquid/tag/proxies.rb', line 32

def self.keys
  all.select { |val| !val[:class].is_a?(Symbol) }.map do |val|
    val[:name]
  end.flatten
end