AyuntamientoMadrid/participacion

View on GitHub
app/components/sdg/goals/icon_component.rb

Summary

Maintainability
A
0 mins
Test Coverage
class SDG::Goals::IconComponent < ApplicationComponent
  attr_reader :goal
  delegate :code, to: :goal

  def initialize(goal)
    @goal = goal
  end

  def image_path
    if svg_available?
      svg_path(locale)
    else
      png_path(locale)
    end
  end

  private

    def image_text
      goal.code_and_title
    end

    def locale
      @locale ||= [*I18n.fallbacks[I18n.locale], "default"].find do |fallback|
        AssetFinder.find_asset(svg_path(fallback)) ||
          AssetFinder.find_asset(png_path(fallback))
      end
    end

    def svg_available?
      AssetFinder.find_asset(svg_path(locale))
    end

    def svg_path(locale)
      "#{base_path(locale)}.svg"
    end

    def png_path(locale)
      "#{base_path(locale)}.png"
    end

    def base_path(locale)
      "sdg/#{locale}/goal_#{code}"
    end
end