Sha256: 95449f0ba47547149f44e6fac7e9da9096ada235fe04f0faf365c48a6099b699

Contents?: true

Size: 1.08 KB

Versions: 2

Compression:

Stored size: 1.08 KB

Contents

require 'jshintrb'

module ZendeskAppsSupport
  module Validations
    module Translations
      TRANSLATIONS_PATH = %r{^translations/(.*)\.json$}
      VALID_LOCALE = /^[a-z]{2}(-\w{2,3})?$/

      class << self
        def call(package)
          package.files.inject([]) do |errors, file|
            if path_match = TRANSLATIONS_PATH.match(file.relative_path)
              errors << locale_error(file, path_match[1]) << json_error(file)
            end
            errors
          end.compact
        end

        private

        def locale_error(file, locale)
          return nil if VALID_LOCALE =~ locale
          ValidationError.new('translation.invalid_locale', :file => file.relative_path)
        end

        def json_error(file)
          json = MultiJson.load(file.read)
          return nil if json.kind_of?(Hash)
          ValidationError.new('translation.not_json_object', :file => file.relative_path)
        rescue MultiJson::DecodeError => e
          ValidationError.new('translation.not_json', :file => file.relative_path, :errors => e)
        end

      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
zendesk_apps_support-1.7.0 lib/zendesk_apps_support/validations/translations.rb
zendesk_apps_support-1.6.0 lib/zendesk_apps_support/validations/translations.rb