Untitled

 avatar
unknown
plain_text
2 years ago
1.1 kB
4
Indexable
class Tag
  TAG_SETTINGS = {}

  def self.profile_tag_groups
    TAG_SETTINGS['profile_tag_groups'] || []
  end

  def self.video_tag_groups
    TAG_SETTINGS['video_tag_groups'] || []
  end

  def self.single_tag_groups
    TAG_SETTINGS['single_tag_groups'] || []
  end

  def self.map_for_profile
    video_tag_groups.each_with_object({}) do |method_name, result|
      result[method_name] = get_tag_group(method_name).keys
    end
  end

  def self.map_for_video
    video_tag_groups.each_with_object({}) do |method_name, result|
      result[method_name] = get_tag_group(method_name).values.uniq
    end
  end

  def self.single?(tag)
    tag.in? single_tag_groups
  end

  def self.multiple?(tag)
    !single?(tag)
  end

  def self.permited_attrs
    profile_tag_groups.each_with_object([]) do |method_name, result|
      result << (single?(method_name) ? method_name : { method_name => [] })
    end
  end

  def self.find_video_tags(tags)
    video_tag_groups.inject([]) do |result, method_name|
      result + get_tag_group(method_name).slice(*tags).values
    end.uniq
  end

  def self.get_tag_group(name)
    TAG_SETTINGS[name]
  end
end
Editor is loading...