ymdp 0.1.10 → 0.1.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (109) hide show
  1. data/.gitignore +2 -0
  2. data/Gemfile +8 -1
  3. data/History.txt +13 -2
  4. data/Rakefile +7 -0
  5. data/VERSION +1 -1
  6. data/features/data/app/assets/yrb/en-US/keys_en-US.pres +1 -0
  7. data/features/data/app/javascripts/application.js +7 -0
  8. data/features/data/app/stylesheets/application.css +3 -0
  9. data/features/data/app/views/layouts/application.html.haml +25 -0
  10. data/features/data/app/views/page.html.haml +2 -0
  11. data/{spec → features}/data/config/config.yml +5 -6
  12. data/features/data/config/content.yml +2 -0
  13. data/features/data/config/jslint.js +1 -0
  14. data/features/data/config/servers.yml +10 -0
  15. data/features/step_definitions/ymdp_steps.rb +54 -0
  16. data/features/support/env.rb +40 -0
  17. data/features/ymdp.feature +61 -0
  18. data/lib/ymdp.rb +7 -12
  19. data/lib/ymdp/base.rb +16 -65
  20. data/lib/ymdp/commands/generate.rb +2 -4
  21. data/lib/ymdp/compiler/base.rb +10 -8
  22. data/lib/ymdp/compiler/domains.rb +2 -1
  23. data/lib/ymdp/compiler/template.rb +29 -18
  24. data/lib/ymdp/{processor → compressor}/compressor.rb +6 -1
  25. data/{spec/data/script → lib/ymdp/compressor}/yuicompressor-2.4.2.jar +0 -0
  26. data/lib/ymdp/configuration/config.rb +3 -4
  27. data/lib/ymdp/configuration/constants.rb +22 -19
  28. data/lib/ymdp/tasks/ymdp.rake +0 -2
  29. data/{spec/data/script → lib/ymdp/validator}/jslint.js +0 -0
  30. data/lib/ymdp/{processor → validator}/validator.rb +30 -38
  31. data/lib/ymdp/{application.rb → view/application.rb} +0 -0
  32. data/lib/ymdp/{application_view.rb → view/application_view.rb} +4 -4
  33. data/lib/ymdp/{asset_tag_helper.rb → view/asset_tag_helper.rb} +0 -0
  34. data/lib/ymdp/{tag_helper.rb → view/tag_helper.rb} +0 -0
  35. data/spec/application_spec.rb +2 -0
  36. data/spec/application_view_spec.rb +6 -6
  37. data/spec/compiler_template_spec.rb +4 -4
  38. data/spec/compressor_spec.rb +11 -7
  39. data/spec/configuration_spec.rb +3 -0
  40. data/spec/default_settings.rb +1 -1
  41. data/spec/domains_spec.rb +1 -1
  42. data/spec/spec_helper.rb +1 -0
  43. data/spec/stubs.rb +4 -1
  44. data/spec/validator_spec.rb +45 -40
  45. data/spec/ymdp_base_spec.rb +10 -7
  46. data/ymdp.gemspec +25 -76
  47. metadata +32 -76
  48. data/lib/ymdp/processor/form_post.rb +0 -62
  49. data/lib/ymdp/processor/w3c.rb +0 -24
  50. data/spec/data/Rakefile +0 -3
  51. data/spec/data/VERSION +0 -1
  52. data/spec/data/app/.gitignore +0 -1
  53. data/spec/data/app/assets/images/lightbox/lightbox_bg.png +0 -0
  54. data/spec/data/app/assets/javascripts/OpenMailIntl.js +0 -291
  55. data/spec/data/app/assets/javascripts/controls.js +0 -965
  56. data/spec/data/app/assets/javascripts/date.js +0 -104
  57. data/spec/data/app/assets/javascripts/dragdrop.js +0 -974
  58. data/spec/data/app/assets/javascripts/effects.js +0 -1123
  59. data/spec/data/app/assets/javascripts/lowpro.js +0 -320
  60. data/spec/data/app/assets/javascripts/prototype.js +0 -4874
  61. data/spec/data/app/assets/javascripts/scriptaculous.js +0 -68
  62. data/spec/data/app/assets/yrb/en-US/application_en-US.pres +0 -7
  63. data/spec/data/app/helpers/application_helper.rb +0 -3
  64. data/spec/data/app/javascripts/application.js +0 -580
  65. data/spec/data/app/javascripts/debug.js +0 -138
  66. data/spec/data/app/javascripts/flash.js +0 -96
  67. data/spec/data/app/javascripts/header.js +0 -13
  68. data/spec/data/app/javascripts/help.js +0 -76
  69. data/spec/data/app/javascripts/i18n.js +0 -235
  70. data/spec/data/app/javascripts/launcher.js +0 -159
  71. data/spec/data/app/javascripts/logger.js +0 -61
  72. data/spec/data/app/javascripts/tag_helper.js +0 -178
  73. data/spec/data/app/stylesheets/application.css +0 -0
  74. data/spec/data/app/stylesheets/ie.css +0 -0
  75. data/spec/data/app/stylesheets/ie6.css +0 -0
  76. data/spec/data/app/stylesheets/ie7.css +0 -0
  77. data/spec/data/app/stylesheets/ie8.css +0 -0
  78. data/spec/data/app/stylesheets/lightbox.css +0 -30
  79. data/spec/data/app/stylesheets/non_ie.css +0 -0
  80. data/spec/data/app/views/layouts/application.html.haml +0 -37
  81. data/spec/data/app/views/page.html.haml +0 -1
  82. data/spec/data/app/views/shared/_error.html.haml +0 -8
  83. data/spec/data/app/views/shared/_flash.html.haml +0 -2
  84. data/spec/data/app/views/shared/_javascripts.html.haml +0 -22
  85. data/spec/data/app/views/shared/_loading.html.haml +0 -13
  86. data/spec/data/app/views/shared/_stylesheets.html.haml +0 -23
  87. data/spec/data/config/categories.yml +0 -6
  88. data/spec/data/config/config.yml.example +0 -30
  89. data/spec/data/config/constants.rb +0 -52
  90. data/spec/data/config/content.yml +0 -2
  91. data/spec/data/config/servers.yml +0 -10
  92. data/spec/data/config/servers.yml.example +0 -10
  93. data/spec/data/lib/init.rb +0 -13
  94. data/spec/data/lib/tasks/environment.rake +0 -4
  95. data/spec/data/lib/tasks/keys.rake +0 -3
  96. data/spec/data/lib/tasks/setup.rake +0 -13
  97. data/spec/data/lib/tasks/ymdp.rake +0 -4
  98. data/spec/data/script/build +0 -9
  99. data/spec/data/script/config +0 -13
  100. data/spec/data/script/destroy +0 -18
  101. data/spec/data/script/generate +0 -4
  102. data/spec/data/script/gitrm +0 -17
  103. data/spec/data/script/growl +0 -6
  104. data/spec/data/script/images +0 -48
  105. data/spec/data/script/langs +0 -29
  106. data/spec/data/script/translate +0 -5
  107. data/spec/data/script/ymdt +0 -1895
  108. data/spec/data/script/ymdt.old +0 -1890
  109. data/test.rb +0 -46
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ymdp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.10
4
+ version: 0.1.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeff Coleman
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-01-22 00:00:00 -06:00
12
+ date: 2010-01-25 00:00:00 -06:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -162,6 +162,16 @@ dependencies:
162
162
  - !ruby/object:Gem::Version
163
163
  version: "0"
164
164
  version:
165
+ - !ruby/object:Gem::Dependency
166
+ name: w3c_validators
167
+ type: :runtime
168
+ version_requirement:
169
+ version_requirements: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: "0"
174
+ version:
165
175
  description: Framework for developing applications in the Yahoo! Mail Development Platform.
166
176
  email: progressions@gmail.com
167
177
  executables: []
@@ -181,10 +191,19 @@ files:
181
191
  - README.rdoc
182
192
  - Rakefile
183
193
  - VERSION
194
+ - features/data/app/assets/yrb/en-US/keys_en-US.pres
195
+ - features/data/app/javascripts/application.js
196
+ - features/data/app/stylesheets/application.css
197
+ - features/data/app/views/layouts/application.html.haml
198
+ - features/data/app/views/page.html.haml
199
+ - features/data/config/config.yml
200
+ - features/data/config/content.yml
201
+ - features/data/config/jslint.js
202
+ - features/data/config/servers.yml
203
+ - features/step_definitions/ymdp_steps.rb
204
+ - features/support/env.rb
205
+ - features/ymdp.feature
184
206
  - lib/ymdp.rb
185
- - lib/ymdp/application.rb
186
- - lib/ymdp/application_view.rb
187
- - lib/ymdp/asset_tag_helper.rb
188
207
  - lib/ymdp/base.rb
189
208
  - lib/ymdp/commands/build.rb
190
209
  - lib/ymdp/commands/generate.rb
@@ -193,88 +212,29 @@ files:
193
212
  - lib/ymdp/compiler/git_helper.rb
194
213
  - lib/ymdp/compiler/options.rb
195
214
  - lib/ymdp/compiler/template.rb
215
+ - lib/ymdp/compressor/compressor.rb
216
+ - lib/ymdp/compressor/yuicompressor-2.4.2.jar
196
217
  - lib/ymdp/configuration/config.rb
197
218
  - lib/ymdp/configuration/constants.rb
198
219
  - lib/ymdp/generator/templates/javascript.js
199
220
  - lib/ymdp/generator/templates/stylesheet.css
200
221
  - lib/ymdp/generator/templates/translation.pres
201
222
  - lib/ymdp/generator/templates/view.html.haml
202
- - lib/ymdp/processor/compressor.rb
203
- - lib/ymdp/processor/form_post.rb
204
- - lib/ymdp/processor/validator.rb
205
- - lib/ymdp/processor/w3c.rb
206
223
  - lib/ymdp/support/file.rb
207
- - lib/ymdp/tag_helper.rb
208
224
  - lib/ymdp/tasks/keys.rake
209
225
  - lib/ymdp/tasks/ymdp.rake
226
+ - lib/ymdp/validator/jslint.js
227
+ - lib/ymdp/validator/validator.rb
228
+ - lib/ymdp/view/application.rb
229
+ - lib/ymdp/view/application_view.rb
230
+ - lib/ymdp/view/asset_tag_helper.rb
231
+ - lib/ymdp/view/tag_helper.rb
210
232
  - spec/application_spec.rb
211
233
  - spec/application_view_spec.rb
212
234
  - spec/compiler_spec.rb
213
235
  - spec/compiler_template_spec.rb
214
236
  - spec/compressor_spec.rb
215
237
  - spec/configuration_spec.rb
216
- - spec/data/Rakefile
217
- - spec/data/VERSION
218
- - spec/data/app/.gitignore
219
- - spec/data/app/assets/images/lightbox/lightbox_bg.png
220
- - spec/data/app/assets/javascripts/OpenMailIntl.js
221
- - spec/data/app/assets/javascripts/controls.js
222
- - spec/data/app/assets/javascripts/date.js
223
- - spec/data/app/assets/javascripts/dragdrop.js
224
- - spec/data/app/assets/javascripts/effects.js
225
- - spec/data/app/assets/javascripts/lowpro.js
226
- - spec/data/app/assets/javascripts/prototype.js
227
- - spec/data/app/assets/javascripts/scriptaculous.js
228
- - spec/data/app/assets/yrb/en-US/application_en-US.pres
229
- - spec/data/app/helpers/application_helper.rb
230
- - spec/data/app/javascripts/application.js
231
- - spec/data/app/javascripts/debug.js
232
- - spec/data/app/javascripts/flash.js
233
- - spec/data/app/javascripts/header.js
234
- - spec/data/app/javascripts/help.js
235
- - spec/data/app/javascripts/i18n.js
236
- - spec/data/app/javascripts/launcher.js
237
- - spec/data/app/javascripts/logger.js
238
- - spec/data/app/javascripts/tag_helper.js
239
- - spec/data/app/stylesheets/application.css
240
- - spec/data/app/stylesheets/ie.css
241
- - spec/data/app/stylesheets/ie6.css
242
- - spec/data/app/stylesheets/ie7.css
243
- - spec/data/app/stylesheets/ie8.css
244
- - spec/data/app/stylesheets/lightbox.css
245
- - spec/data/app/stylesheets/non_ie.css
246
- - spec/data/app/views/layouts/application.html.haml
247
- - spec/data/app/views/page.html.haml
248
- - spec/data/app/views/shared/_error.html.haml
249
- - spec/data/app/views/shared/_flash.html.haml
250
- - spec/data/app/views/shared/_javascripts.html.haml
251
- - spec/data/app/views/shared/_loading.html.haml
252
- - spec/data/app/views/shared/_stylesheets.html.haml
253
- - spec/data/config/categories.yml
254
- - spec/data/config/config.yml
255
- - spec/data/config/config.yml.example
256
- - spec/data/config/constants.rb
257
- - spec/data/config/content.yml
258
- - spec/data/config/servers.yml
259
- - spec/data/config/servers.yml.example
260
- - spec/data/lib/init.rb
261
- - spec/data/lib/tasks/environment.rake
262
- - spec/data/lib/tasks/keys.rake
263
- - spec/data/lib/tasks/setup.rake
264
- - spec/data/lib/tasks/ymdp.rake
265
- - spec/data/script/build
266
- - spec/data/script/config
267
- - spec/data/script/destroy
268
- - spec/data/script/generate
269
- - spec/data/script/gitrm
270
- - spec/data/script/growl
271
- - spec/data/script/images
272
- - spec/data/script/jslint.js
273
- - spec/data/script/langs
274
- - spec/data/script/translate
275
- - spec/data/script/ymdt
276
- - spec/data/script/ymdt.old
277
- - spec/data/script/yuicompressor-2.4.2.jar
278
238
  - spec/default_settings.rb
279
239
  - spec/domains_spec.rb
280
240
  - spec/file_spec.rb
@@ -285,7 +245,6 @@ files:
285
245
  - spec/validator_spec.rb
286
246
  - spec/ymdp_base_spec.rb
287
247
  - spec/ymdp_spec.rb
288
- - test.rb
289
248
  - ymdp.gemspec
290
249
  has_rdoc: true
291
250
  homepage: http://github.com/progressions/ymdp
@@ -322,9 +281,6 @@ test_files:
322
281
  - spec/compiler_template_spec.rb
323
282
  - spec/compressor_spec.rb
324
283
  - spec/configuration_spec.rb
325
- - spec/data/app/helpers/application_helper.rb
326
- - spec/data/config/constants.rb
327
- - spec/data/lib/init.rb
328
284
  - spec/default_settings.rb
329
285
  - spec/domains_spec.rb
330
286
  - spec/file_spec.rb
@@ -1,62 +0,0 @@
1
- # from http://devlicio.us/blogs/sergio_pereira/archive/2008/04/02/xhtml-validation-script-using-ruby.aspx
2
-
3
- require 'rubygems'
4
- require 'mime/types'
5
- require 'net/http'
6
- begin
7
- require 'CGI'
8
- rescue StandardError => e
9
- # puts e.message
10
- end
11
-
12
- class FormField
13
- attr_accessor :name, :value
14
- def initialize( name, value )
15
- @name = name
16
- @value = value
17
- end
18
-
19
- def to_form_data
20
- field = CGI::escape(@name)
21
- "Content-Disposition: form-data; name=\"#{field}\"" +
22
- "\r\n\r\n#{@value}\r\n"
23
- end
24
- end
25
-
26
- class FileField
27
- attr_accessor :name, :path, :content
28
- def initialize( name, path, content )
29
- @name = name
30
- @path = "#{path}.html"
31
- @content = content
32
- end
33
-
34
- def to_form_data
35
- "Content-Disposition: form-data; " +
36
- "name=\"#{CGI::escape(@name)}\"; " +
37
- "filename=\"#{@path}\"\r\n" +
38
- "Content-Transfer-Encoding: binary\r\n" +
39
- "Content-Type: #{MIME::Types.type_for(@path)}" +
40
- "\r\n\r\n#{@content}\r\n"
41
- end
42
- end
43
-
44
- class MultipartPost
45
- SEPARATOR = 'willvalidate-aaaaaabbbb0000'
46
- REQ_HEADER = {
47
- "Content-type" => "multipart/form-data, boundary=#{SEPARATOR} "
48
- }
49
-
50
- def self.build_form_data ( form_fields )
51
- fields = []
52
- form_fields.each do |key, value|
53
- if value.instance_of?(File)
54
- fields << FileField.new(key.to_s, value.path, value.read)
55
- else
56
- fields << FormField.new(key.to_s, value)
57
- end
58
- end
59
- fields.collect {|f| "--#{SEPARATOR}\r\n#{f.to_form_data}" }.join("") +
60
- "--#{SEPARATOR}--"
61
- end
62
- end
@@ -1,24 +0,0 @@
1
- class W3CPoster
2
- def self.post_file_to_w3c_validator(file_path, doc_type)
3
- query = MultipartPost.build_form_data(
4
- :uploaded_file => File.new(file_path, 'r'),
5
- :charset => '(detect automatically)',
6
- :doctype => doc_type,
7
- :group => '1'
8
- )
9
-
10
- Net::HTTP.start('validator.w3.org') do |http|
11
- http.post2("/check", query, MultipartPost::REQ_HEADER)
12
- end
13
- end
14
-
15
- def self.valid_response?(w3c_response)
16
- html = w3c_response.read_body
17
- html.include? "[Valid]"
18
- end
19
-
20
- def self.w3c_valid?(file_path)
21
- resp = post_file_to_w3c_validator(file_path, 'HTML 4.01 Strict')
22
- valid_response?(resp)
23
- end
24
- end
@@ -1,3 +0,0 @@
1
- Dir["./lib/tasks/*.rake"].each do |file|
2
- load file
3
- end
@@ -1 +0,0 @@
1
- 6.0.0 Felucia
@@ -1 +0,0 @@
1
- assets.zip
@@ -1,291 +0,0 @@
1
- /**
2
- * The OpenMailIntl class provides minimal internationalization
3
- * support for OpenMail.
4
- * @module openmailintl
5
- */
6
-
7
- /**
8
- * The OpenMailIntl class provides minimal internationalization
9
- * support for OpenMail.
10
- * @class OpenMailIntl
11
- */
12
-
13
- /*global window, YAHOO, ActiveXObject, XMLHttpRequest */
14
-
15
- var OpenMailIntl = function () {
16
-
17
- var openmailintl = {};
18
-
19
- /**
20
- * Returns the user's preferred languages as a list of
21
- * RFC 4646 language tags in decreasing priority order.
22
- * @method getPreferredLanguages
23
- * @private
24
- * @return {String[]} A list of RFC 4646 language tags.
25
- */
26
- var getPreferredLanguages = function () {
27
- // this is a stub until OpenMail can synchronously provide
28
- // a complete and accurate language list
29
- var intl, match;
30
- intl = "us";
31
- match = window.location.href.match(/[\?&]\.intl=([a-z0-9]{2})/);
32
- if (match) {
33
- intl = match[1];
34
- }
35
- switch (intl) {
36
- // only support Mail INTLs
37
- case "aa": return ["en-AA"];
38
- case "ar": return ["es-AR"];
39
- case "au": return ["en-AU"];
40
- case "br": return ["pt-BR"];
41
- case "ca": return ["en-CA"];
42
- case "cf": return ["fr-CA"];
43
- case "cl": return ["es-CL"];
44
- case "cn": return ["zh-Hans-CN"];
45
- case "co": return ["es-CO"];
46
- case "de": return ["de-DE"];
47
- case "dk": return ["da-DK"];
48
- case "e1": return ["es-US"];
49
- case "es": return ["es-ES"];
50
- case "fr": return ["fr-FR"];
51
- case "hk": return ["zh-Hant-HK"];
52
- case "cn": return ["zh-Hant-CN"];
53
- case "in": return ["en-IN"];
54
- case "it": return ["it-IT"];
55
- case "jp": return ["ja-JP"];
56
- case "kr": return ["ko-KR"];
57
- case "mx": return ["es-MX"];
58
- case "my": return ["en-MY"];
59
- case "nl": return ["nl-NL"];
60
- case "no": return ["nb-NO"];
61
- case "nz": return ["en-NZ"];
62
- case "pe": return ["es-PE"];
63
- case "ph": return ["en-PH"];
64
- case "pl": return ["pl-PL"];
65
- case "ru": return ["ru-RU"];
66
- case "se": return ["sv-SE"];
67
- case "sg": return ["en-SG"];
68
- case "th": return ["th-TH"];
69
- case "tr": return ["tr-TR"];
70
- case "tw": return ["zh-Hant-TW"];
71
- case "uk": return ["en-GB"];
72
- case "us": return ["en-US"];
73
- case "ve": return ["es-VE"];
74
- case "vn": return ["vi-VN"];
75
- case "id": return ["id-ID"];
76
- default: return ["en-US"];
77
- }
78
- };
79
-
80
- /**
81
- * Returns the language among those available that
82
- * best matches the user's preferences, using the Lookup
83
- * algorithm of RFC 4647.
84
- * If none of the available languages meets the user's preferences,
85
- * then <code>availableLanguages[0]</code> is returned.
86
- * @method findBestLanguage
87
- * @param {String[]} availableLanguages The list of languages
88
- * that the application supports, represented as RFC 4646 language
89
- * tags.
90
- * @return {String} The available language that best matches the
91
- * user's preferences.
92
- */
93
- openmailintl.findBestLanguage = function (availableLanguages) {
94
-
95
- var preferencesList, i, language, normalized, result, index, normalization;
96
-
97
- preferencesList = getPreferredLanguages();
98
-
99
- // check whether the list of available languages
100
- // contains language; if so return it
101
- function scan(language) {
102
- var i;
103
- for (i = 0; i < availableLanguages.length; i += 1) {
104
- if (language.toLowerCase() === availableLanguages[i].toLowerCase()) {
105
- return availableLanguages[i];
106
- }
107
- }
108
- }
109
-
110
- normalization = {
111
- "zh-hk": "zh-Hant-TW",
112
- "zh-cn": "zh-Hant-CN",
113
- "zh-tw": "zh-Hant-TW",
114
- "zh": "zh-Hant-CN",
115
- "hk": "zh-Hant-TW",
116
- "en": "en-US",
117
- "es": "es-ES",
118
- "fr": "fr-FR",
119
- "hi": "hi-IN",
120
- "id": "id-ID",
121
- "it": "it-IT",
122
- "ja": "ja-JP",
123
- "kr": "ko-KR",
124
- "nb": "nb-NO",
125
- "nl": "nl-NL",
126
- "pl": "pl-PL",
127
- "pt": "pt-BR",
128
- "ru": "ru-RU",
129
- "sv": "sv-SE",
130
- "th": "th-TH",
131
- "tr": "tr-TR",
132
- "vi": "vi-VN",
133
- "zh": "zh-Hans-CN",
134
- "zh-cn": "zh-Hans-CN",
135
- "zh-hk": "zh-Hant-HK",
136
- "zh-tw": "zh-Hant-TW"
137
- };
138
- if (YAHOO.lang.isString(preferencesList)) {
139
- preferencesList = preferencesList.split(/[, ]/);
140
- }
141
- for (i = 0; i < preferencesList.length; i += 1) {
142
- language = preferencesList[i];
143
- if (!language) {
144
- continue;
145
- }
146
- normalized = normalization[language.toLowerCase()];
147
- if (normalized) {
148
- language = normalized;
149
- }
150
- // check the fallback sequence for one language
151
- while (language.length > 0) {
152
- result = scan(language);
153
- if (result) {
154
- return result;
155
- } else {
156
- index = language.lastIndexOf("-");
157
- if (index >= 0) {
158
- language = language.substring(0, index);
159
- // one-character subtags get cut along with the following subtag
160
- if (index >= 2 && language.charAt(index - 2) === "-") {
161
- language = language.substring(0, index - 2);
162
- }
163
- } else {
164
- // nothing available for this language
165
- break;
166
- }
167
- }
168
- }
169
- }
170
-
171
- // we use the first available language as the default
172
- return availableLanguages[0];
173
- };
174
-
175
-
176
- var getFile = function (url) {
177
- var XHR;
178
- if (window.XMLHttpRequest) {
179
- XHR = new XMLHttpRequest();
180
- } else {
181
- XHR = new ActiveXObject("Microsoft.XMLHTTP");
182
- }
183
- if (XHR) {
184
- XHR.open("GET", url, false);
185
- XHR.send(null);
186
- if (XHR.status === 200) {
187
- return XHR.responseText;
188
- }
189
- }
190
- };
191
-
192
- /**
193
- * Retrieves a language specific JSON file that's part of the application's assets,
194
- * and returns the decoded JSON object.
195
- * The method first looks for the asset with the name <code>assetPath + baseName + "_" + language + ".json"</code>.
196
- * If that asset doesn't exist, it looks for the asset with the name <code>assetPath + baseName + ".json"</code>.
197
- * @method getResources
198
- * @param {String} assetPath The path to the assets of the application.
199
- * @param {String} baseName The base name of a resource bundle.
200
- * @param {String} language The language for which resources are needed, as an RFC 4646 language tag.
201
- * @return {Object} The object decoded from the JSON file found.
202
- */
203
- openmailintl.getResources = function (assetPath, baseName, language) {
204
- var url, contents;
205
-
206
- if (assetPath.charAt(assetPath.length - 1) !== "/") {
207
- assetPath += "/";
208
- }
209
- if (language) {
210
- url = assetPath + baseName + "_" + language + ".json";
211
- } else {
212
- url = assetPath + baseName + ".json";
213
- }
214
-
215
- contents = getFile(url);
216
- if (contents) {
217
- try {
218
- return YAHOO.lang.JSON.parse(contents);
219
- } catch (x) {
220
- }
221
- }
222
- if (language) {
223
- return this.getResources(assetPath, baseName);
224
- } else {
225
- throw new Error("bundle " + baseName + " for language " + language + " not found.");
226
- }
227
- };
228
-
229
- /**
230
- * Formats a string by substituting parameters into the pattern.
231
- * The pattern syntax is similar to that of the Java
232
- * <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/text/MessageFormat.html">MessageFormat class</a>,
233
- * but currently only the following format elements are supported:
234
- * <ul>
235
- * <li>{ <i>ArgumentIndex</i> }
236
- * <li>{ <i>ArgumentIndex</i> , number }
237
- * <li>{ <i>ArgumentIndex</i> , date }
238
- * </ul>
239
- * Quote characters do not escape braces; if you want to use
240
- * a literal brace, write it as &amp;#x007b; or &amp;#x007d;.
241
- * @method formatMessage
242
- * @param {String} pattern The pattern string into which the arguments are inserted.
243
- * @param {Object[]} arguments The objects to insert into the pattern string.
244
- * @param {String} language The language for which arguments such as numbers and dates
245
- * should be formatted.
246
- * @return {String} The pattern string with substituted parameters.
247
- */
248
- openmailintl.formatMessage = function (pattern, args, language) {
249
- var i, j, k, token, key, value, meta;
250
-
251
- for (;;) {
252
- i = pattern.lastIndexOf('{');
253
- if (i < 0) {
254
- break;
255
- }
256
- j = pattern.indexOf('}', i);
257
- if (i + 1 >= j) {
258
- break;
259
- }
260
-
261
- // extract format element information
262
- token = pattern.substring(i + 1, j);
263
- key = token;
264
- meta = null;
265
- k = key.indexOf(',');
266
- if (k > -1) {
267
- meta = key.substring(k + 1);
268
- key = key.substring(0, k);
269
- }
270
-
271
- // lookup the value
272
- value = args[key];
273
-
274
- if (meta !== null) {
275
- if (meta.indexOf("date") === 0 && value instanceof Date) {
276
- value = value.toLocaleString();
277
- } else if (meta.indexOf("number") === 0 && typeof value === "number") {
278
- value = value.toLocaleString();
279
- }
280
- }
281
-
282
- pattern = pattern.substring(0, i) + value + pattern.substring(j + 1);
283
- }
284
-
285
- return pattern;
286
- };
287
-
288
- return openmailintl;
289
-
290
- }();
291
-