Sha256: d4c002c6652222c1692e0a50fa40f2a56462ac4cec92e34f74aed2314dbf0374
Contents?: true
Size: 1.5 KB
Versions: 20
Compression:
Stored size: 1.5 KB
Contents
# frozen_string_literal: true module I18n::Tasks module Command module OptionParsers module Locale module Validator VALID_LOCALE_RE = /\A\w[\w\-.]*\z/i.freeze def validate!(locale) if VALID_LOCALE_RE !~ locale fail CommandError, I18n.t('i18n_tasks.cmd.errors.invalid_locale', invalid: locale) end locale end end module Parser module_function extend Validator # @param [#base_locale, #locales] context def call(val, context) if val.blank? || val == 'base' context.base_locale else validate! val end end end module ListParser module_function extend Validator # @param [#base_locale,#locales] context def call(vals, context) if vals == %w[all] || vals.blank? context.locales else move_base_locale_to_front!(vals.map { |v| v == 'base' ? context.base_locale : v }, context.base_locale) end.tap do |locales| locales.each { |locale| validate! locale } end end def move_base_locale_to_front!(locales, base_locale) if (pos = locales.index(base_locale)) && pos.positive? locales[pos], locales[0] = locales[0], locales[pos] end locales end end end end end end
Version data entries
20 entries across 20 versions & 3 rubygems