Sha256: d0d72444384c3121f3aad8857a083a06bf26997524e30e4e110baf6a85dd8ce8

Contents?: true

Size: 1.97 KB

Versions: 56

Compression:

Stored size: 1.97 KB

Contents

# frozen_string_literal: true

require_relative 'helper'

REPO_URL = 'https://github.com/lipis/flag-icons.git'
REPO_NAME = 'lipis-flag-icons'
ICONS_PACK_MODULE_PATH = 'lib/phlex/icons/flag.rb'
ICONS_PACK_PATH = 'lib/phlex/icons/flag'

TEMPLATE = ERB.new <<~TEMPLATE
  # frozen_string_literal: true

  # rubocop:disable #{ROBOCOP_DISABLE_WARNINGS}
  module Phlex
    module Icons
      module Flag
        class <%= icon_name %> < Base
          def square
            <%= square_icon %>
          end

          def rectangle
            <%= rectangle_icon %>
          end
        end
      end
    end
  end
  # rubocop:enable #{ROBOCOP_DISABLE_WARNINGS}
TEMPLATE

def main
  run_generator do
    new_version = JSON.parse(File.read("generators/#{REPO_NAME}/package.json"))['version']
    update_icon_path_version(new_version)

    icon_file_names.tqdm.each { create_icon_component(_1) }
  end
end

def icon_file_names
  Dir.glob("generators/#{REPO_NAME}/flags/1x1/*").map { |file| File.basename(file) }
end

def create_icon_component(icon_file_name)
  File.write(
    File.join(ICONS_PACK_PATH, component_file_name(icon_file_name)),
    TEMPLATE.result_with_hash(
      icon_name: component_class_name(icon_file_name),
      square_icon: read_and_convert_icon(square_icon_file_path(icon_file_name)),
      rectangle_icon: read_and_convert_icon(rectangle_icon_file_path(icon_file_name))
    )
  )
end

def read_and_convert_icon(icon_file_path)
  icon_file_content = File.read(icon_file_path)
                          .sub(/id="flag-icons-[^"]*"/, '')

  Phlexing::Converter.convert(icon_file_content)
                     .sub('svg(', "svg(\n**attrs,")
                     .sub('xmlns:xlink:', '"xmlns:xlink":')
                     .gsub('xlink:href:', '"xlink:href":')
end

def square_icon_file_path(icon_file_name)
  "generators/#{REPO_NAME}/flags/1x1/#{icon_file_name}"
end

def rectangle_icon_file_path(icon_file_name)
  "generators/#{REPO_NAME}/flags/4x3/#{icon_file_name}"
end

main if __FILE__ == $PROGRAM_NAME

Version data entries

56 entries across 56 versions & 8 rubygems

Version Path
phlex-icons-bootstrap-1.1.0 generators/flag.rb
phlex-icons-flag-1.1.0 generators/flag.rb
phlex-icons-radix-1.1.0 generators/flag.rb
phlex-icons-lucide-1.1.0 generators/flag.rb
phlex-icons-remix-1.1.0 generators/flag.rb
phlex-icons-tabler-1.1.0 generators/flag.rb
phlex-icons-1.1.0 generators/flag.rb
phlex-icons-hero-1.1.0 generators/flag.rb
phlex-icons-flag-1.0.0 generators/flag.rb
phlex-icons-1.0.0 generators/flag.rb
phlex-icons-remix-1.0.0 generators/flag.rb
phlex-icons-hero-1.0.0 generators/flag.rb
phlex-icons-tabler-1.0.0 generators/flag.rb
phlex-icons-radix-1.0.0 generators/flag.rb
phlex-icons-lucide-1.0.0 generators/flag.rb
phlex-icons-bootstrap-1.0.0 generators/flag.rb