phrase 0.4.1 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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