phrase 0.4.14 → 0.4.15

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 (54) hide show
  1. checksums.yaml +15 -0
  2. data/lib/ext/hash.rb +1 -1
  3. data/lib/generators/phrase/install_generator.rb +1 -1
  4. data/lib/generators/templates/phrase.rb +4 -4
  5. data/lib/phrase/adapters/fast_gettext.rb +3 -3
  6. data/lib/phrase/api/client.rb +27 -27
  7. data/lib/phrase/api/config.rb +3 -3
  8. data/lib/phrase/api/exceptions.rb +1 -1
  9. data/lib/phrase/api/query_params.rb +2 -2
  10. data/lib/phrase/backend/phrase_service.rb +12 -12
  11. data/lib/phrase/cache.rb +7 -7
  12. data/lib/phrase/config.rb +18 -18
  13. data/lib/phrase/delegate.rb +2 -2
  14. data/lib/phrase/delegate/fast_gettext.rb +1 -1
  15. data/lib/phrase/delegate/i18n.rb +26 -26
  16. data/lib/phrase/formats.rb +15 -13
  17. data/lib/phrase/formats/csv.rb +1 -1
  18. data/lib/phrase/formats/custom.rb +2 -2
  19. data/lib/phrase/formats/gettext.rb +1 -1
  20. data/lib/phrase/formats/ini.rb +1 -1
  21. data/lib/phrase/formats/json.rb +1 -1
  22. data/lib/phrase/formats/node_json.rb +23 -0
  23. data/lib/phrase/formats/php_array.rb +1 -1
  24. data/lib/phrase/formats/plist.rb +1 -1
  25. data/lib/phrase/formats/properties.rb +1 -1
  26. data/lib/phrase/formats/properties_xml.rb +1 -1
  27. data/lib/phrase/formats/qt_phrase_book.rb +1 -1
  28. data/lib/phrase/formats/qt_translation_source.rb +2 -2
  29. data/lib/phrase/formats/resx.rb +1 -1
  30. data/lib/phrase/formats/resx_windowsphone.rb +1 -1
  31. data/lib/phrase/formats/simple_json.rb +2 -2
  32. data/lib/phrase/formats/strings.rb +4 -4
  33. data/lib/phrase/formats/tmx.rb +2 -2
  34. data/lib/phrase/formats/xliff.rb +2 -2
  35. data/lib/phrase/formats/xml.rb +6 -6
  36. data/lib/phrase/formats/yaml.rb +2 -2
  37. data/lib/phrase/formats/yaml_symfony.rb +2 -2
  38. data/lib/phrase/tool.rb +2 -2
  39. data/lib/phrase/tool/commands.rb +1 -1
  40. data/lib/phrase/tool/commands/base.rb +14 -14
  41. data/lib/phrase/tool/commands/init.rb +4 -4
  42. data/lib/phrase/tool/commands/pull.rb +13 -13
  43. data/lib/phrase/tool/commands/show_help.rb +1 -1
  44. data/lib/phrase/tool/commands/show_version.rb +3 -3
  45. data/lib/phrase/tool/commands/tags.rb +1 -1
  46. data/lib/phrase/tool/config.rb +3 -3
  47. data/lib/phrase/tool/encoding_detector.rb +3 -3
  48. data/lib/phrase/tool/locale.rb +8 -8
  49. data/lib/phrase/tool/options.rb +3 -3
  50. data/lib/phrase/tool/options_factory.rb +11 -11
  51. data/lib/phrase/tool/tag_validator.rb +2 -2
  52. data/lib/phrase/version.rb +1 -1
  53. data/lib/phrase/view_helpers.rb +2 -2
  54. metadata +66 -37
@@ -4,14 +4,14 @@ class Phrase::Tool::EncodingDetector
4
4
  def self.file_seems_to_be_utf16?(file)
5
5
  file_seems_to_be_utf16_be?(file) or file_seems_to_be_utf16_le?(file)
6
6
  end
7
-
7
+
8
8
  def self.file_seems_to_be_utf16_be?(file)
9
9
  input = IO.read(file, 2)
10
10
  input and input.bytes.to_a == [0xFE, 0xFF]
11
11
  end
12
-
12
+
13
13
  def self.file_seems_to_be_utf16_le?(file)
14
14
  input = IO.read(file, 2)
15
15
  input and input.bytes.to_a == [0xFF, 0xFE]
16
16
  end
17
- end
17
+ end
@@ -2,25 +2,25 @@
2
2
 
3
3
  class Phrase::Tool::Locale
4
4
  attr_accessor :id, :name, :code, :is_default
5
-
5
+
6
6
  def initialize(attrs={})
7
7
  attrs.each do |key,value|
8
8
  self.send("#{key}=", value)
9
9
  end
10
10
  end
11
-
11
+
12
12
  def default?
13
13
  self.is_default == true
14
14
  end
15
-
15
+
16
16
  def ==(object)
17
17
  object.id == self.id
18
18
  end
19
-
19
+
20
20
  def self.find_default_locale
21
21
  all.select { |locale| locale.default? }.try(:first)
22
22
  end
23
-
23
+
24
24
  def self.all
25
25
  locales = []
26
26
  api_client.fetch_locales.each do |locale|
@@ -28,15 +28,15 @@ class Phrase::Tool::Locale
28
28
  end
29
29
  locales
30
30
  end
31
-
31
+
32
32
  def self.config
33
33
  config = Phrase::Tool::Config.new
34
34
  config.load
35
35
  end
36
36
  private_class_method :config
37
-
37
+
38
38
  def self.api_client
39
39
  Phrase::Api::Client.new(config.secret)
40
40
  end
41
41
  private_class_method :api_client
42
- end
42
+ end
@@ -8,18 +8,18 @@ class Phrase::Tool::Options
8
8
  @data = Phrase::Tool::Commands.possible_commands_with_options
9
9
  options.parse!(args)
10
10
  end
11
-
11
+
12
12
  def get(name)
13
13
  return @data.fetch(command_name).fetch(name.to_sym)
14
14
  rescue => e
15
15
  $stderr.puts "Invalid or missing option \"#{name}\" for command \"#{command_name}\""
16
16
  end
17
-
17
+
18
18
  private
19
19
  def options
20
20
  OptionsFactory.options_for(command_name, @data)
21
21
  end
22
-
22
+
23
23
  def command_name
24
24
  @command_name ||= (@command.present? and @data.has_key?(@command.to_sym)) ? @command.to_sym : :default
25
25
  end
@@ -13,7 +13,7 @@ class OptionsFactory
13
13
  opts.on("--secret=YOUR_AUTH_TOKEN", String, "Your auth token") do |secret|
14
14
  set[:secret] = secret
15
15
  end
16
-
16
+
17
17
  opts.on("--default-locale=en", String, "The default locale for your application") do |default_locale|
18
18
  set[:default_locale] = default_locale
19
19
  end
@@ -21,19 +21,19 @@ class OptionsFactory
21
21
  opts.on("--default-format=json", String, "The default format for locale files") do |format|
22
22
  set[:format] = format
23
23
  end
24
-
24
+
25
25
  opts.on("--domain=phrase", String, "The default domain or app prefix for locale files") do |domain|
26
26
  set[:domain] = domain
27
27
  end
28
-
28
+
29
29
  opts.on("--locale-directory=./", String, "The directory naming for locale files, e.g ./<locale.name>/ for subfolders with 'en' or 'de'") do |locale_directory|
30
30
  set[:locale_directory] = locale_directory
31
31
  end
32
-
32
+
33
33
  opts.on("--locale-filename=<domain>.<format>", String, "The filename for locale files") do |locale_filename|
34
34
  set[:locale_filename] = locale_filename
35
35
  end
36
-
36
+
37
37
  opts.on("--default-target=phrase/locales/", String, "The default target directory for locale files") do |target_directory|
38
38
  set[:target_directory] = target_directory
39
39
  end
@@ -46,11 +46,11 @@ class OptionsFactory
46
46
  opts.on("--tags=foo,bar", Array, "List of tags for phrase push (separated by comma)") do |tags|
47
47
  set[:tags] = tags
48
48
  end
49
-
49
+
50
50
  opts.on("-R", "--recursive", "Push files in subfolders as well (recursively)") do |recursive|
51
51
  set[:recursive] = true
52
52
  end
53
-
53
+
54
54
  opts.on("--locale=en", String, "Locale of the translations your file contain (required for formats that do not include the name of the locale in the file content)") do |locale|
55
55
  set[:locale] = locale
56
56
  end
@@ -75,7 +75,7 @@ class OptionsFactory
75
75
  opts.on("--format=yml", String, "See documentation for list of allowed formats") do |format|
76
76
  set[:format] = format
77
77
  end
78
-
78
+
79
79
  opts.on("--target=./phrase/locales", String, "Target folder to store locale files") do |target|
80
80
  set[:target] = target
81
81
  end
@@ -94,14 +94,14 @@ class OptionsFactory
94
94
  end
95
95
  end
96
96
  private_class_method :tags
97
-
97
+
98
98
  def self.default(opts, set)
99
99
  opts.banner = ""
100
-
100
+
101
101
  opts.on_tail("-v", "--version", "Show version number") do |version|
102
102
  set[:version] = true
103
103
  end
104
-
104
+
105
105
  opts.on_tail("-h", "--help", "Show help") do |help|
106
106
  set[:help] = true
107
107
  end
@@ -2,8 +2,8 @@
2
2
 
3
3
  class Phrase::Tool::TagValidator
4
4
  FORMAT = /\A[a-zA-Z0-9_-]+\z/
5
-
5
+
6
6
  def self.valid?(tag_name)
7
7
  (tag_name.to_s =~ FORMAT)
8
8
  end
9
- end
9
+ end
@@ -1,3 +1,3 @@
1
1
  module Phrase
2
- VERSION = "0.4.14"
2
+ VERSION = "0.4.15"
3
3
  end
@@ -1,9 +1,9 @@
1
1
  module Phrase::ViewHelpers
2
2
  def phrase_javascript(auth_token=nil)
3
3
  return "" unless Phrase.enabled?
4
-
4
+
5
5
  auth_token ||= Phrase.auth_token
6
- js =
6
+ js =
7
7
  %{<script>
8
8
  //<![CDATA[
9
9
  var phrase_auth_token = '#{auth_token}';
metadata CHANGED
@@ -1,126 +1,155 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: phrase
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.14
5
- prerelease:
4
+ version: 0.4.15
6
5
  platform: ruby
7
6
  authors:
8
7
  - Dynport GmbH
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-08-23 00:00:00.000000000 Z
11
+ date: 2013-09-16 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: colorize
16
- requirement: &70274078354580 !ruby/object:Gem::Requirement
17
- none: false
15
+ requirement: !ruby/object:Gem::Requirement
18
16
  requirements:
19
17
  - - ! '>='
20
18
  - !ruby/object:Gem::Version
21
19
  version: '0'
22
20
  type: :runtime
23
21
  prerelease: false
24
- version_requirements: *70274078354580
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ! '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
25
27
  - !ruby/object:Gem::Dependency
26
28
  name: json
27
- requirement: &70274078354120 !ruby/object:Gem::Requirement
28
- none: false
29
+ requirement: !ruby/object:Gem::Requirement
29
30
  requirements:
30
31
  - - ! '>='
31
32
  - !ruby/object:Gem::Version
32
33
  version: '0'
33
34
  type: :runtime
34
35
  prerelease: false
35
- version_requirements: *70274078354120
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ! '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
36
41
  - !ruby/object:Gem::Dependency
37
42
  name: i18n
38
- requirement: &70274078353660 !ruby/object:Gem::Requirement
39
- none: false
43
+ requirement: !ruby/object:Gem::Requirement
40
44
  requirements:
41
45
  - - ! '>='
42
46
  - !ruby/object:Gem::Version
43
47
  version: '0'
44
48
  type: :runtime
45
49
  prerelease: false
46
- version_requirements: *70274078353660
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
47
55
  - !ruby/object:Gem::Dependency
48
56
  name: rake
49
- requirement: &70274078353220 !ruby/object:Gem::Requirement
50
- none: false
57
+ requirement: !ruby/object:Gem::Requirement
51
58
  requirements:
52
59
  - - ! '>='
53
60
  - !ruby/object:Gem::Version
54
61
  version: '0'
55
62
  type: :development
56
63
  prerelease: false
57
- version_requirements: *70274078353220
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ! '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
58
69
  - !ruby/object:Gem::Dependency
59
70
  name: rspec
60
- requirement: &70274078352700 !ruby/object:Gem::Requirement
61
- none: false
71
+ requirement: !ruby/object:Gem::Requirement
62
72
  requirements:
63
73
  - - ! '>='
64
74
  - !ruby/object:Gem::Version
65
75
  version: '0'
66
76
  type: :development
67
77
  prerelease: false
68
- version_requirements: *70274078352700
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ! '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: webmock
71
- requirement: &70274078352200 !ruby/object:Gem::Requirement
72
- none: false
85
+ requirement: !ruby/object:Gem::Requirement
73
86
  requirements:
74
87
  - - ! '>='
75
88
  - !ruby/object:Gem::Version
76
89
  version: '0'
77
90
  type: :development
78
91
  prerelease: false
79
- version_requirements: *70274078352200
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ! '>='
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
80
97
  - !ruby/object:Gem::Dependency
81
98
  name: vcr
82
- requirement: &70274078351540 !ruby/object:Gem::Requirement
83
- none: false
99
+ requirement: !ruby/object:Gem::Requirement
84
100
  requirements:
85
101
  - - ! '>='
86
102
  - !ruby/object:Gem::Version
87
103
  version: '0'
88
104
  type: :development
89
105
  prerelease: false
90
- version_requirements: *70274078351540
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ! '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
91
111
  - !ruby/object:Gem::Dependency
92
112
  name: timecop
93
- requirement: &70274078350740 !ruby/object:Gem::Requirement
94
- none: false
113
+ requirement: !ruby/object:Gem::Requirement
95
114
  requirements:
96
115
  - - ! '>='
97
116
  - !ruby/object:Gem::Version
98
117
  version: '0'
99
118
  type: :development
100
119
  prerelease: false
101
- version_requirements: *70274078350740
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ! '>='
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
102
125
  - !ruby/object:Gem::Dependency
103
126
  name: genspec
104
- requirement: &70274078350320 !ruby/object:Gem::Requirement
105
- none: false
127
+ requirement: !ruby/object:Gem::Requirement
106
128
  requirements:
107
129
  - - ! '>='
108
130
  - !ruby/object:Gem::Version
109
131
  version: '0'
110
132
  type: :development
111
133
  prerelease: false
112
- version_requirements: *70274078350320
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ! '>='
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
113
139
  - !ruby/object:Gem::Dependency
114
140
  name: rails
115
- requirement: &70274078349860 !ruby/object:Gem::Requirement
116
- none: false
141
+ requirement: !ruby/object:Gem::Requirement
117
142
  requirements:
118
143
  - - ! '>='
119
144
  - !ruby/object:Gem::Version
120
145
  version: '0'
121
146
  type: :development
122
147
  prerelease: false
123
- version_requirements: *70274078349860
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ! '>='
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
124
153
  description: phrase allows you to edit translations in-place on the page itself. More
125
154
  information at phraseapp.com
126
155
  email:
@@ -171,6 +200,7 @@ files:
171
200
  - lib/phrase/formats/gettext_template.rb
172
201
  - lib/phrase/formats/ini.rb
173
202
  - lib/phrase/formats/json.rb
203
+ - lib/phrase/formats/node_json.rb
174
204
  - lib/phrase/formats/php_array.rb
175
205
  - lib/phrase/formats/plist.rb
176
206
  - lib/phrase/formats/properties.rb
@@ -207,26 +237,25 @@ files:
207
237
  - phrase.gemspec
208
238
  homepage: https://phraseapp.com
209
239
  licenses: []
240
+ metadata: {}
210
241
  post_install_message:
211
242
  rdoc_options: []
212
243
  require_paths:
213
244
  - lib
214
245
  required_ruby_version: !ruby/object:Gem::Requirement
215
- none: false
216
246
  requirements:
217
247
  - - ! '>='
218
248
  - !ruby/object:Gem::Version
219
249
  version: '0'
220
250
  required_rubygems_version: !ruby/object:Gem::Requirement
221
- none: false
222
251
  requirements:
223
252
  - - ! '>='
224
253
  - !ruby/object:Gem::Version
225
254
  version: 1.3.6
226
255
  requirements: []
227
256
  rubyforge_project: phrase
228
- rubygems_version: 1.8.10
257
+ rubygems_version: 2.0.5
229
258
  signing_key:
230
- specification_version: 3
259
+ specification_version: 4
231
260
  summary: The best way to manage i18n.
232
261
  test_files: []