From 1270ef2767a064950bd4457f838e025040795245 Mon Sep 17 00:00:00 2001 From: Sebastian Celis Date: Thu, 27 Jul 2017 09:10:38 -0500 Subject: Fix language detection for .po formatters The old regular expressions were only supporting two character language identifiers. This commit allows languages to scale to things like "en-GB". Fixes #199 --- lib/twine/formatters/django.rb | 2 +- lib/twine/formatters/gettext.rb | 6 ++---- test/test_formatters.rb | 10 +++++++++- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/lib/twine/formatters/django.rb b/lib/twine/formatters/django.rb index 5c88766..4687c1a 100644 --- a/lib/twine/formatters/django.rb +++ b/lib/twine/formatters/django.rb @@ -16,7 +16,7 @@ module Twine def determine_language_given_path(path) path_arr = path.split(File::SEPARATOR) path_arr.each do |segment| - match = /(..)\.po$/.match(segment) + match = /([a-z]{2}(-[A-Za-z]{2})?)\.po$/.match(segment) return match[1] if match end diff --git a/lib/twine/formatters/gettext.rb b/lib/twine/formatters/gettext.rb index d63e944..c0dc1ac 100644 --- a/lib/twine/formatters/gettext.rb +++ b/lib/twine/formatters/gettext.rb @@ -18,10 +18,8 @@ module Twine def determine_language_given_path(path) path_arr = path.split(File::SEPARATOR) path_arr.each do |segment| - match = /(..)\.po$/.match(segment) - if match - return match[1] - end + match = /([a-z]{2}(-[A-Za-z]{2})?)\.po$/.match(segment) + return match[1] if match end return diff --git a/test/test_formatters.rb b/test/test_formatters.rb index 6c40a5b..ae10a69 100644 --- a/test/test_formatters.rb +++ b/test/test_formatters.rb @@ -267,7 +267,6 @@ class TestJQueryFormatter < FormatterTest end class TestGettextFormatter < FormatterTest - def setup super Twine::Formatters::Gettext end @@ -290,6 +289,10 @@ class TestGettextFormatter < FormatterTest assert_equal content('formatter_gettext.po'), formatter.format_file('en') end + def test_deducts_language_and_region + language = "en-GB" + assert_equal language, @formatter.determine_language_given_path("#{language}.po") + end end class TestTizenFormatter < FormatterTest @@ -329,6 +332,11 @@ class TestDjangoFormatter < FormatterTest formatter.twine_file = @twine_file assert_equal content('formatter_django.po'), formatter.format_file('en') end + + def test_deducts_language_and_region + language = "en-GB" + assert_equal language, @formatter.determine_language_given_path("#{language}.po") + end end class TestFlashFormatter < FormatterTest -- cgit v1.2.3