module Card::Set::Pattern::All

pattern-related Card instance methods

Public Instance Methods

concrete_patterns() click to toggle source
# File lib/card/set/pattern/all.rb, line 22
def concrete_patterns
  @concrete_patterns ||= Pattern.concrete.map { |sub| sub.new self }.compact
end
each_type_assigning_module_key() { |module_key| ... } click to toggle source
# File lib/card/set/pattern/all.rb, line 74
def each_type_assigning_module_key
  patterns.each do |p|
    next unless p.assigns_type

    module_key = p.module_key
    yield module_key if module_key
  end
end
in_set?(set_module) click to toggle source
# File lib/card/set/pattern/all.rb, line 62
def in_set? set_module
  patterns.map(&:module_key).include? set_module.shortname
end
include_module?(set) click to toggle source
# File lib/card/set/pattern/all.rb, line 70
def include_module? set
  singleton_class&.include? set
end
patterns() click to toggle source

new cards do not

# File lib/card/set/pattern/all.rb, line 27
def patterns
  @patterns ||= (new_card? ? concrete_patterns[1..-1] : concrete_patterns)
end
patterns?() click to toggle source
# File lib/card/set/pattern/all.rb, line 18
def patterns?
  defined? @patterns
end
prep_modules_for_caching() click to toggle source

Because Card works by including set-specific ruby modules on singleton classes, and singleton classes generally can’t be cached, we can never cache the cards in a completely ready-to-roll form.

However, we can optimize considerably by saving the list of ruby modules in environments where they won’t be changing (eg production) or at least the list of matching set patterns

# File lib/card/set/pattern/all.rb, line 13
def prep_modules_for_caching
  patterns
  set_modules if Cardio.config.cache_set_module_list
end
reset_patterns() click to toggle source
# File lib/card/set/pattern/all.rb, line 31
def reset_patterns
  # Rails.logger.info "resetting patterns: #{name}"
  @patterns = @concrete_patterns = nil
  @template = @virtual = nil
  @set_mods_loaded = @set_modules = @set_names = @rule_lookup_keys = nil
  @compound_only = nil # only applies to set cards
  true
end
rule_lookup_keys() click to toggle source
# File lib/card/set/pattern/all.rb, line 66
def rule_lookup_keys
  @rule_lookup_keys ||= patterns.map(&:rule_lookup_key).compact
end
safe_set_keys() click to toggle source
# File lib/card/set/pattern/all.rb, line 40
def safe_set_keys
  patterns.map(&:safe_key).reverse * " "
end
set_format_modules(klass) click to toggle source
# File lib/card/set/pattern/all.rb, line 49
def set_format_modules klass
  @set_format_modules ||= {}
  @set_format_modules[klass] =
    concrete_patterns[0..-2].reverse.map do |pattern|
      pattern.format_module_list klass
    end.flatten.compact
end
set_modules() click to toggle source
# File lib/card/set/pattern/all.rb, line 44
def set_modules
  @set_modules ||=
    concrete_patterns[0..-2].reverse.map(&:module_list).flatten.compact
end
set_names() click to toggle source
# File lib/card/set/pattern/all.rb, line 57
def set_names
  @set_names = patterns.map(&:to_s) if @set_names.nil?
  @set_names
end