phrase 0.4.1 → 0.4.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. data/.gitignore +0 -2
  2. data/.travis.yml +1 -0
  3. data/lib/phrase.rb +1 -0
  4. data/lib/phrase/api/client.rb +11 -2
  5. data/lib/phrase/delegate.rb +6 -2
  6. data/lib/phrase/formats.rb +151 -0
  7. data/lib/phrase/formats/csv.rb +19 -0
  8. data/lib/phrase/{tool/formats → formats}/custom.rb +3 -1
  9. data/lib/phrase/formats/gettext.rb +27 -0
  10. data/lib/phrase/formats/gettext_template.rb +19 -0
  11. data/lib/phrase/formats/ini.rb +19 -0
  12. data/lib/phrase/formats/json.rb +19 -0
  13. data/lib/phrase/formats/plist.rb +19 -0
  14. data/lib/phrase/formats/properties.rb +19 -0
  15. data/lib/phrase/formats/properties_xml.rb +19 -0
  16. data/lib/phrase/formats/qt_phrase_book.rb +19 -0
  17. data/lib/phrase/formats/qt_translation_source.rb +19 -0
  18. data/lib/phrase/formats/resx.rb +19 -0
  19. data/lib/phrase/formats/resx_windowsphone.rb +19 -0
  20. data/lib/phrase/formats/simple_json.rb +19 -0
  21. data/lib/phrase/formats/strings.rb +39 -0
  22. data/lib/phrase/formats/tmx.rb +19 -0
  23. data/lib/phrase/formats/xliff.rb +19 -0
  24. data/lib/phrase/formats/xml.rb +49 -0
  25. data/lib/phrase/formats/yaml.rb +19 -0
  26. data/lib/phrase/formats/yaml_symfony.rb +19 -0
  27. data/lib/phrase/hash_flattener.rb +15 -14
  28. data/lib/phrase/tool.rb +1 -1
  29. data/lib/phrase/tool/commands/pull.rb +4 -4
  30. data/lib/phrase/tool/commands/push.rb +14 -6
  31. data/lib/phrase/tool/options.rb +2 -1
  32. data/lib/phrase/tool/options_factory.rb +5 -1
  33. data/lib/phrase/version.rb +1 -1
  34. metadata +43 -38
  35. data/lib/phrase/tool/formats.rb +0 -87
  36. data/lib/phrase/tool/formats/base.rb +0 -37
  37. data/lib/phrase/tool/formats/gettext.rb +0 -19
  38. data/lib/phrase/tool/formats/gettext_pot.rb +0 -11
  39. data/lib/phrase/tool/formats/ini.rb +0 -11
  40. data/lib/phrase/tool/formats/json.rb +0 -11
  41. data/lib/phrase/tool/formats/plist.rb +0 -11
  42. data/lib/phrase/tool/formats/properties.rb +0 -11
  43. data/lib/phrase/tool/formats/qt_phrase_book.rb +0 -11
  44. data/lib/phrase/tool/formats/qt_translation_source.rb +0 -11
  45. data/lib/phrase/tool/formats/resx.rb +0 -11
  46. data/lib/phrase/tool/formats/strings.rb +0 -31
  47. data/lib/phrase/tool/formats/xliff.rb +0 -11
  48. data/lib/phrase/tool/formats/xml.rb +0 -41
  49. data/lib/phrase/tool/formats/yaml.rb +0 -11
@@ -1,87 +0,0 @@
1
- # -*- encoding : utf-8 -*-
2
-
3
- module Phrase::Tool::Formats
4
- autoload :Base, 'phrase/tool/formats/base'
5
- autoload :Yaml, 'phrase/tool/formats/yaml'
6
- autoload :Gettext, 'phrase/tool/formats/gettext'
7
- autoload :GettextPot, 'phrase/tool/formats/gettext_pot'
8
- autoload :Xml, 'phrase/tool/formats/xml'
9
- autoload :Strings, 'phrase/tool/formats/strings'
10
- autoload :Xliff, 'phrase/tool/formats/xliff'
11
- autoload :QtPhraseBook, 'phrase/tool/formats/qt_phrase_book'
12
- autoload :QtTranslationSource, 'phrase/tool/formats/qt_translation_source'
13
- autoload :Json, 'phrase/tool/formats/json'
14
- autoload :Resx, 'phrase/tool/formats/resx'
15
- autoload :Ini, 'phrase/tool/formats/ini'
16
- autoload :Properties, 'phrase/tool/formats/properties'
17
- autoload :Plist, 'phrase/tool/formats/plist'
18
- autoload :Custom, 'phrase/tool/formats/custom'
19
-
20
- SUPPORTED_FORMATS = {
21
- custom: Phrase::Tool::Formats::Custom,
22
- yml: Phrase::Tool::Formats::Yaml,
23
- po: Phrase::Tool::Formats::Gettext,
24
- pot: Phrase::Tool::Formats::GettextPot,
25
- xml: Phrase::Tool::Formats::Xml,
26
- strings: Phrase::Tool::Formats::Strings,
27
- xlf: Phrase::Tool::Formats::Xliff,
28
- qph: Phrase::Tool::Formats::QtPhraseBook,
29
- ts: Phrase::Tool::Formats::QtTranslationSource,
30
- json: Phrase::Tool::Formats::Json,
31
- resx: Phrase::Tool::Formats::Resx,
32
- ini: Phrase::Tool::Formats::Ini,
33
- properties: Phrase::Tool::Formats::Properties,
34
- plist: Phrase::Tool::Formats::Plist,
35
- }
36
-
37
- def self.config
38
- @config ||= get_config
39
- end
40
-
41
- def self.get_config
42
- config = Phrase::Tool::Config.new
43
- config.load
44
- end
45
-
46
- def self.custom_handler
47
- handler_class_for_format(:custom)
48
- end
49
-
50
- def self.target_directory(format_name)
51
- handler = handler_class_for_format(format_name)
52
- custom_handler.target_directory || handler.target_directory
53
- end
54
-
55
- def self.directory_for_locale_in_format(locale, format_name)
56
- handler = handler_class_for_format(format_name)
57
- custom_directory = custom_handler.directory_for_locale(locale, format_name)
58
- custom_directory || handler.directory_for_locale(locale)
59
- end
60
-
61
- def self.filename_for_locale_in_format(locale, format_name)
62
- handler = handler_class_for_format(format_name)
63
- custom_filename = custom_handler.filename_for_locale(locale, format_name)
64
- custom_filename || handler.filename_for_locale(locale)
65
- end
66
-
67
- def self.file_format_exposes_locale?(file_path)
68
- format = guess_possible_file_format_from_file_path(file_path)
69
- format.nil? ? false : handler_class_for_format(format).locale_aware?
70
- end
71
-
72
- def self.detect_locale_name_from_file_path(file_path)
73
- format = guess_possible_file_format_from_file_path(file_path)
74
- format.nil? ? nil : handler_class_for_format(format).extract_locale_name_from_file_path(file_path)
75
- end
76
-
77
- def self.handler_class_for_format(format_name)
78
- SUPPORTED_FORMATS.fetch(format_name.to_sym)
79
- end
80
- private_class_method :handler_class_for_format
81
-
82
- def self.guess_possible_file_format_from_file_path(file_path)
83
- extension = file_path.split('.').last.downcase
84
- return SUPPORTED_FORMATS.has_key?(extension.to_sym) ? extension.to_sym : nil
85
- end
86
- private_class_method :guess_possible_file_format_from_file_path
87
- end
@@ -1,37 +0,0 @@
1
- # -*- encoding : utf-8 -*-
2
-
3
- class Phrase::Tool::Formats::Base
4
- def self.directory_for_locale(locale)
5
- "./"
6
- end
7
-
8
- def self.filename_for_locale(locale)
9
- raise "not implemented"
10
- end
11
-
12
- def self.extract_locale_name_from_file_path(file_path)
13
- nil
14
- end
15
-
16
- def self.default_locale_name
17
- Phrase::Tool::Locale.find_default_locale.try(:name)
18
- end
19
-
20
- def self.locale_aware?
21
- false
22
- end
23
-
24
- def self.target_directory
25
- "phrase/locales/"
26
- end
27
-
28
- def self.config
29
- @config ||= get_config
30
- end
31
-
32
- def self.get_config
33
- config = Phrase::Tool::Config.new
34
- config.load
35
- end
36
- private_class_method :config
37
- end
@@ -1,19 +0,0 @@
1
- # -*- encoding : utf-8 -*-
2
-
3
- class Phrase::Tool::Formats::Gettext < Phrase::Tool::Formats::Base
4
- def self.directory_for_locale(locale)
5
- "./#{locale.name}/"
6
- end
7
-
8
- def self.filename_for_locale(locale)
9
- "#{config.domain}.po"
10
- end
11
-
12
- def self.target_directory
13
- "locales/"
14
- end
15
-
16
- def self.locale_aware?
17
- true
18
- end
19
- end
@@ -1,11 +0,0 @@
1
- # -*- encoding : utf-8 -*-
2
-
3
- class Phrase::Tool::Formats::GettextPot < Phrase::Tool::Formats::Base
4
- def self.filename_for_locale(locale)
5
- "phrase.pot"
6
- end
7
-
8
- def self.locale_aware?
9
- false
10
- end
11
- end
@@ -1,11 +0,0 @@
1
- # -*- encoding : utf-8 -*-
2
-
3
- class Phrase::Tool::Formats::Ini < Phrase::Tool::Formats::Base
4
- def self.filename_for_locale(locale)
5
- "phrase.#{locale.name}.ini"
6
- end
7
-
8
- def self.locale_aware?
9
- true
10
- end
11
- end
@@ -1,11 +0,0 @@
1
- # -*- encoding : utf-8 -*-
2
-
3
- class Phrase::Tool::Formats::Json < Phrase::Tool::Formats::Base
4
- def self.filename_for_locale(locale)
5
- "phrase.#{locale.name}.json"
6
- end
7
-
8
- def self.locale_aware?
9
- true
10
- end
11
- end
@@ -1,11 +0,0 @@
1
- # -*- encoding : utf-8 -*-
2
-
3
- class Phrase::Tool::Formats::Plist < Phrase::Tool::Formats::Base
4
- def self.filename_for_locale(locale)
5
- "phrase.#{locale.name}.plist"
6
- end
7
-
8
- def self.locale_aware?
9
- true
10
- end
11
- end
@@ -1,11 +0,0 @@
1
- # -*- encoding : utf-8 -*-
2
-
3
- class Phrase::Tool::Formats::Properties < Phrase::Tool::Formats::Base
4
- def self.filename_for_locale(locale)
5
- "phrase.#{locale.name}.properties"
6
- end
7
-
8
- def self.locale_aware?
9
- true
10
- end
11
- end
@@ -1,11 +0,0 @@
1
- # -*- encoding : utf-8 -*-
2
-
3
- class Phrase::Tool::Formats::QtPhraseBook < Phrase::Tool::Formats::Base
4
- def self.filename_for_locale(locale)
5
- "phrase.#{locale.name}.qph"
6
- end
7
-
8
- def self.locale_aware?
9
- true
10
- end
11
- end
@@ -1,11 +0,0 @@
1
- # -*- encoding : utf-8 -*-
2
-
3
- class Phrase::Tool::Formats::QtTranslationSource < Phrase::Tool::Formats::Base
4
- def self.filename_for_locale(locale)
5
- "phrase.#{locale.name}.ts"
6
- end
7
-
8
- def self.locale_aware?
9
- true
10
- end
11
- end
@@ -1,11 +0,0 @@
1
- # -*- encoding : utf-8 -*-
2
-
3
- class Phrase::Tool::Formats::Resx < Phrase::Tool::Formats::Base
4
- def self.filename_for_locale(locale)
5
- "phrase.#{locale.name}.resx"
6
- end
7
-
8
- def self.locale_aware?
9
- true
10
- end
11
- end
@@ -1,31 +0,0 @@
1
- # -*- encoding : utf-8 -*-
2
-
3
- class Phrase::Tool::Formats::Strings < Phrase::Tool::Formats::Base
4
- def self.directory_for_locale(locale)
5
- name = locale.code || locale.name
6
- "#{formatted(name)}.lproj"
7
- end
8
-
9
- def self.filename_for_locale(locale)
10
- "Localizable.strings"
11
- end
12
-
13
- def self.target_directory
14
- "./"
15
- end
16
-
17
- def self.extract_locale_name_from_file_path(file_path)
18
- file_path.scan(/\/([a-zA-Z\-_]*).lproj\//i).first.try(:first)
19
- end
20
-
21
- def self.locale_aware?
22
- true
23
- end
24
-
25
- def self.formatted(name)
26
- return name unless name.include?("-")
27
- parts = name.split("-")
28
- "#{parts.first}_#{parts.last.upcase}"
29
- end
30
- private_class_method :formatted
31
- end
@@ -1,11 +0,0 @@
1
- # -*- encoding : utf-8 -*-
2
-
3
- class Phrase::Tool::Formats::Xliff < Phrase::Tool::Formats::Base
4
- def self.filename_for_locale(locale)
5
- "phrase.#{locale.name}.xlf"
6
- end
7
-
8
- def self.locale_aware?
9
- true
10
- end
11
- end
@@ -1,41 +0,0 @@
1
- # -*- encoding : utf-8 -*-
2
-
3
- class Phrase::Tool::Formats::Xml < Phrase::Tool::Formats::Base
4
- def self.directory_for_locale(locale)
5
- if locale.default?
6
- "values"
7
- else
8
- name = locale.code || locale.name
9
- "values-#{formatted(name)}"
10
- end
11
- end
12
-
13
- def self.filename_for_locale(locale)
14
- "strings.xml"
15
- end
16
-
17
- def self.target_directory
18
- "res/"
19
- end
20
-
21
- def self.extract_locale_name_from_file_path(file_path)
22
- return default_locale_name if file_path.scan(/\/values\/strings.xml/i).first
23
- locale_part = file_path.scan(/\/values-([a-zA-Z\-_]*)\/strings.xml/i).first.try(:first)
24
- if locale_part and locale_part.include?("-r")
25
- "#{locale_part.split("-r").first}-#{locale_part.split("-r").last}"
26
- else
27
- locale_part
28
- end
29
- end
30
-
31
- def self.locale_aware?
32
- true
33
- end
34
-
35
- def self.formatted(name)
36
- return name unless name.include?("-")
37
- parts = name.split("-")
38
- "#{parts.first}-r#{parts.last.upcase}"
39
- end
40
- private_class_method :formatted
41
- end
@@ -1,11 +0,0 @@
1
- # -*- encoding : utf-8 -*-
2
-
3
- class Phrase::Tool::Formats::Yaml < Phrase::Tool::Formats::Base
4
- def self.filename_for_locale(locale)
5
- "phrase.#{locale.name}.yml"
6
- end
7
-
8
- def self.locale_aware?
9
- true
10
- end
11
- end