run_loop 2.0.3 → 2.0.4

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a8403b809c77ed9bb5a876c9bc7cc7f0733c20ae
4
- data.tar.gz: ea5ad513d6ecbefba8ed142c2873cf223f5aa434
3
+ metadata.gz: e9c68f1e0cd883ed6796d16d7af7dd49f6f6e777
4
+ data.tar.gz: a6f8130ab34d01005a3651a7a54beae831361348
5
5
  SHA512:
6
- metadata.gz: c8dbb03f07bafc933824334aade0e708ccafeed6adace48cb5252f04a33777b85dc4557d26caae01dbb3a2427cd52431bd8502ca6210f6a8164f2a3de375d1c5
7
- data.tar.gz: f57a4be469cdf506acc8bdc9b869ce0f5ebbec3ef53cc849440e2911c8a26fcc314c9266917f2092fe62d8a63e70b1a7e8dcb3ff06673db530a9a040e77d2e9d
6
+ metadata.gz: b7ddaa8a86996843f70b4d53a5c0b901dce4e437d1767c68a5e8ab38d5363db28a20c033c61d417ef496bf9ffabcf3a8d57baff8d3be55b131a4d2c4e15a73ce
7
+ data.tar.gz: 919d5a052d4b47b72f531bc5618a77e8082ac46e4004994fe435148df84510058aae9bc0678c4aeeb4d0a18f58b6e0ba648f650b0d677e94bf8911440bba6218
data/lib/run_loop.rb CHANGED
@@ -26,6 +26,8 @@ require 'run_loop/patches/awesome_print'
26
26
  require 'run_loop/core_simulator'
27
27
  require 'run_loop/simctl/plists'
28
28
  require 'run_loop/template'
29
+ require "run_loop/locale"
30
+ require "run_loop/language"
29
31
 
30
32
  module RunLoop
31
33
 
data/lib/run_loop/app.rb CHANGED
@@ -67,6 +67,24 @@ module RunLoop
67
67
  identifier
68
68
  end
69
69
 
70
+ # Inspects the app's file for the server version
71
+ def calabash_server_version
72
+ if valid?
73
+ path_to_bin = File.join(path, executable_name)
74
+ xcrun ||= RunLoop::Xcrun.new
75
+ hash = xcrun.exec(["strings", path_to_bin])
76
+ unless hash.nil?
77
+ version_str = hash[:out][/CALABASH VERSION: \d+\.\d+\.\d+/, 0]
78
+ unless version_str.nil? || version_str == ""
79
+ server_ver = version_str.split(":")[1].delete(' ')
80
+ RunLoop::Version.new(server_ver)
81
+ end
82
+ end
83
+ else
84
+ raise 'Path is not valid'
85
+ end
86
+ end
87
+
70
88
  # Returns the sha1 of the application.
71
89
  def sha1
72
90
  RunLoop::Directory.directory_digest(path)
data/lib/run_loop/core.rb CHANGED
@@ -474,7 +474,9 @@ Logfile: #{log_file}
474
474
  # version.
475
475
  def self.default_simulator(xcode=RunLoop::Xcode.new)
476
476
 
477
- if xcode.version_gte_72?
477
+ if xcode.version_gte_73?
478
+ "iPhone 6s (9.3)"
479
+ elsif xcode.version_gte_72?
478
480
  "iPhone 6s (9.2)"
479
481
  elsif xcode.version_gte_71?
480
482
  "iPhone 6s (9.1)"
@@ -237,6 +237,61 @@ $ bundle exec run-loop simctl manage-processes
237
237
  hash
238
238
  end
239
239
 
240
+ # @!visibility private
241
+ #
242
+ # @param [RunLoop::Device, String] device a simulator UDID, instruments-ready
243
+ # name, or a RunLoop::Device.
244
+ #
245
+ # @param [String] locale_code a locale code
246
+ #
247
+ # @raise [ArgumentError] if no device can be found matching the UDID or
248
+ # instruments-ready name
249
+ # @raise [ArgumentError] if device is not a simulator
250
+ # @raise [ArgumentError] if locale_code is invalid
251
+ def self.set_locale(device, locale_code)
252
+ if device.is_a?(RunLoop::Device)
253
+ simulator = device
254
+ else
255
+ simulator = RunLoop::Device.device_with_identifier(device)
256
+ end
257
+
258
+ if simulator.physical_device?
259
+ raise ArgumentError,
260
+ "The locale cannot be set on physical devices"
261
+ end
262
+
263
+ self.quit_simulator
264
+ RunLoop.log_debug("Setting locale to '#{locale_code}'")
265
+ simulator.simulator_set_locale(locale_code)
266
+ end
267
+
268
+ # @!visibility private
269
+ #
270
+ # @param [RunLoop::Device, String] device a simulator UDID, instruments-ready
271
+ # name, or a RunLoop::Device
272
+ # @param [String] lang_code a language code
273
+ #
274
+ # @raise [ArgumentError] if no device can be found matching the UDID or
275
+ # instruments-ready name
276
+ # @raise [ArgumentError] if device is not a simulator
277
+ # @raise [ArgumentError] if language_code is invalid
278
+ def self.set_language(device, lang_code)
279
+ if device.is_a?(RunLoop::Device)
280
+ simulator = device
281
+ else
282
+ simulator = RunLoop::Device.device_with_identifier(device)
283
+ end
284
+
285
+ if simulator.physical_device?
286
+ raise ArgumentError,
287
+ "The language cannot be set on physical devices"
288
+ end
289
+
290
+ self.quit_simulator
291
+ RunLoop.log_debug("Setting preferred language to '#{lang_code}'")
292
+ simulator.simulator_set_language(lang_code)
293
+ end
294
+
240
295
  # @!visibility private
241
296
  def self.simulator_pid
242
297
  @@simulator_pid
@@ -38,6 +38,7 @@ module RunLoop
38
38
  attr_reader :simulator_accessibility_plist_path
39
39
  attr_reader :simulator_preferences_plist_path
40
40
  attr_reader :simulator_log_file_path
41
+ attr_reader :pbuddy
41
42
 
42
43
  # Create a new device.
43
44
  #
@@ -266,6 +267,14 @@ Please update your sources.))
266
267
  end.call
267
268
  end
268
269
 
270
+ # @!visibility private
271
+ def simulator_global_preferences_path
272
+ @simulator_global_preferences_path ||= lambda do
273
+ return nil if physical_device?
274
+ File.join(simulator_root_dir, "data/Library/Preferences/.GlobalPreferences.plist")
275
+ end.call
276
+ end
277
+
269
278
  # @!visibility private
270
279
  # Is this the first launch of this Simulator?
271
280
  #
@@ -393,6 +402,89 @@ Please update your sources.))
393
402
  end
394
403
  end
395
404
 
405
+ # @!visibility private
406
+ #
407
+ # Sets the AppleLocale key in the .GlobalPreferences.plist file
408
+ #
409
+ # @param [String] locale_code a locale code
410
+ #
411
+ # @return [RunLoop::Locale] a locale instance
412
+ #
413
+ # @raise [RuntimeError] if this is a physical device
414
+ # @raise [ArgumentError] if the locale code is invalid
415
+ def simulator_set_locale(locale_code)
416
+ if physical_device?
417
+ raise RuntimeError, "This method is for Simulators only"
418
+ end
419
+
420
+ locale = RunLoop::Locale.locale_for_code(locale_code, self)
421
+
422
+ global_plist = simulator_global_preferences_path
423
+ pbuddy.plist_set("AppleLocale", "string", locale.code, global_plist)
424
+
425
+ locale
426
+ end
427
+
428
+ # @!visibility private
429
+ #
430
+ # Returns the AppleLanguages array in global plist as an array
431
+ #
432
+ # @return [Array<String>] list of language codes
433
+ def simulator_languages
434
+ global_plist = simulator_global_preferences_path
435
+ out = pbuddy.plist_read("AppleLanguages", global_plist)
436
+
437
+ # example: "Array {\n en\n en-US\n}"
438
+ # I am intentionally punting on this because I don't want
439
+ # to track down edge cases until the output of this method
440
+ # is actually used.
441
+ result = [out]
442
+ begin
443
+ result = out.strip.gsub(/[\{\}]/, "").split($-0).map do |elm|
444
+ elm.strip
445
+ end[1..-1]
446
+ rescue => e
447
+ RunLoop.log_debug("Caught error #{e.message} trying to parse '#{out}'")
448
+ end
449
+
450
+ result
451
+ end
452
+
453
+ # @!visibility private
454
+ #
455
+ # Sets the first element in the AppleLanguages array to lang_code.
456
+ #
457
+ # @param [String] lang_code a language code
458
+ #
459
+ # @return [Array<String>] list of language codes
460
+ #
461
+ # @raise [RuntimeError] if this is a physical device
462
+ # @raise [ArgumentError] if the language code is invalid
463
+ def simulator_set_language(lang_code)
464
+ if physical_device?
465
+ raise RuntimeError, "This method is for Simulators only"
466
+ end
467
+
468
+ if !RunLoop::Language.valid_code_for_device?(lang_code, self)
469
+ raise ArgumentError,
470
+ "The language code '#{lang_code}' is not valid for this device"
471
+ end
472
+
473
+ global_plist = simulator_global_preferences_path
474
+
475
+ cmd = [
476
+ "PlistBuddy",
477
+ "-c",
478
+ "Add :AppleLanguages:0 string '#{lang_code}'",
479
+ global_plist
480
+ ]
481
+
482
+ # RunLoop::PlistBuddy cannot add items to arrays.
483
+ xcrun.exec(cmd, {:log_cmd => true})
484
+
485
+ simulator_languages
486
+ end
487
+
396
488
  private
397
489
 
398
490
  # @!visibility private
@@ -427,6 +519,11 @@ Please update your sources.))
427
519
  RunLoop::Xcrun.new
428
520
  end
429
521
 
522
+ # @!visibility private
523
+ def pbuddy
524
+ RunLoop::PlistBuddy.new
525
+ end
526
+
430
527
  # @!visibility private
431
528
  def detect_state_from_line(line)
432
529
 
data/lib/run_loop/ipa.rb CHANGED
@@ -87,6 +87,26 @@ module RunLoop
87
87
  }.call
88
88
  end
89
89
 
90
+ # Inspects the app's file for the server version
91
+ def calabash_server_version
92
+ if bundle_dir.nil? || !File.exist?(bundle_dir)
93
+ raise "Expected a '#{File.basename(path).split('.').first}.app'\nat path '#{payload_dir}'"
94
+ else
95
+ if !executable_name.nil? && executable_name != ''
96
+ path_to_bin = File.join(bundle_dir, executable_name)
97
+ xcrun ||= RunLoop::Xcrun.new
98
+ hash = xcrun.exec(["strings", path_to_bin])
99
+ unless hash.nil?
100
+ version_str = hash[:out][/CALABASH VERSION: \d+\.\d+\.\d+/, 0]
101
+ unless version_str.nil? || version_str == ""
102
+ server_ver = version_str.split(":")[1].delete(' ')
103
+ RunLoop::Version.new(server_ver)
104
+ end
105
+ end
106
+ end
107
+ end
108
+ end
109
+
90
110
  private
91
111
 
92
112
  def tmpdir
@@ -0,0 +1,59 @@
1
+ module RunLoop
2
+ # @!visibility private
3
+ class Language
4
+
5
+ # @!visibility private
6
+ # Is the lang_code valid for this device?
7
+ def self.valid_code_for_device?(lang_code, device)
8
+ valid_codes = self.codes_for_device(device)
9
+ if valid_codes.nil?
10
+ false
11
+ else
12
+ valid_codes.include?(lang_code)
13
+ end
14
+ end
15
+
16
+ # @!visibility private
17
+ # Returns a list of known language codes for a device based on iOS version
18
+ #
19
+ # @param [RunLoop::Device] device
20
+ #
21
+ # @return [Array<String>] an array of language codes for the device
22
+ #
23
+ # @raise [ArgumentError] if there are no codes for a device version
24
+ def self.codes_for_device(device)
25
+ major_version = device.version.major
26
+ key = RunLoop::Version.new("#{major_version}.0")
27
+ LANGUAGE_CODES[key]
28
+ end
29
+
30
+ private
31
+
32
+ # @!visibility private
33
+ #
34
+ # Generated with:
35
+ #
36
+ # NSArray *identifiers = [[NSLocale availableLocaleIdentifiers]
37
+ # sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
38
+ # NSMutableOrderedSet *set = [NSMutableOrderedSet new];
39
+ # for (NSString *localeId in identifiers) {
40
+ # NSString *langCode = [NSLocale canonicalLanguageIdentifierFromString:localeId];
41
+ # [set addObject:langCode];
42
+ # }
43
+ #
44
+ # for (NSString *langCode in set) {
45
+ # printf("\"%s\",", [langCode cStringUsingEncoding:NSUTF8StringEncoding]);
46
+ # }
47
+ LANGUAGE_CODES = {
48
+ RunLoop::Version.new("9.0") => [
49
+ "af","af-NA","af-ZA","agq","agq-CM","ak","ak-GH","am","am-ET","ar","ar-001","ar-AE","ar-BH","ar-DJ","ar-DZ","ar-EG","ar-EH","ar-ER","ar-IL","ar-IQ","ar-JO","ar-KM","ar-KW","ar-LB","ar-LY","ar-MA","ar-MR","ar-OM","ar-PS","ar-QA","ar-SA","ar-SD","ar-SO","ar-SS","ar-SY","ar-TD","ar-TN","ar-YE","as","as-IN","asa","asa-TZ","az","az-Cyrl","az-Cyrl-AZ","az-AZ","bas","bas-CM","be","be-BY","bem","bem-ZM","bez","bez-TZ","bg","bg-BG","bm","bm-ML","bn","bn-BD","bn-IN","bo","bo-CN","bo-IN","br","br-FR","brx","brx-IN","bs","bs-Cyrl","bs-Cyrl-BA","bs-BA","ca","ca-AD","ca-ES","ca-FR","ca-IT","cgg","cgg-UG","chr","chr-US","ckb","ckb-IQ","ckb-IR","cs","cs-CZ","cy","cy-GB","da","da-DK","da-GL","dav","dav-KE","de","de-AT","de-BE","de-CH","de-DE","de-LI","de-LU","dje","dje-NE","dsb","dsb-DE","dua","dua-CM","dyo","dyo-SN","dz","dz-BT","ebu","ebu-KE","ee","ee-GH","ee-TG","el","el-CY","el-GR","en","en-001","en-150","en-AD","en-AG","en-AI","en-AL","en-AS","en-AT","en-AU","en-BA","en-BB","en-BE","en-BM","en-BS","en-BW","en-BZ","en-CA","en-CC","en-CH","en-CK","en-CM","en-CX","en-CY","en-CZ","en-DE","en-DG","en-DK","en-DM","en-EE","en-ER","en-ES","en-FI","en-FJ","en-FK","en-FM","en-FR","en-GB","en-GD","en-GG","en-GH","en-GI","en-GM","en-GR","en-GU","en-GY","en-HK","en-HR","en-HU","en-IE","en-IL","en-IM","en-IN","en-IO","en-IS","en-IT","en-JE","en-JM","en-KE","en-KI","en-KN","en-KY","en-LC","en-LR","en-LS","en-LT","en-LU","en-LV","en-ME","en-MG","en-MH","en-MO","en-MP","en-MS","en-MT","en-MU","en-MW","en-MY","en-NA","en-NF","en-NG","en-NL","en-NO","en-NR","en-NU","en-NZ","en-PG","en-PH","en-PK","en-PL","en-PN","en-PR","en-PT","en-PW","en-RO","en-RU","en-RW","en-SB","en-SC","en-SD","en-SE","en-SG","en-SH","en-SI","en-SK","en-SL","en-SS","en-SX","en-SZ","en-TC","en-TK","en-TO","en-TR","en-TT","en-TV","en-TZ","en-UG","en-UM","en-US","en-US-POSIX","en-VC","en-VG","en-VI","en-VU","en-WS","en-ZA","en-ZM","en-ZW","eo","es","es-419","es-AR","es-BO","es-CL","es-CO","es-CR","es-CU","es-DO","es-EA","es-EC","es-ES","es-GQ","es-GT","es-HN","es-IC","es-MX","es-NI","es-PA","es-PE","es-PH","es-PR","es-PY","es-SV","es-US","es-UY","es-VE","et","et-EE","eu","eu-ES","ewo","ewo-CM","fa","fa-AF","fa-IR","ff","ff-CM","ff-GN","ff-MR","ff-SN","fi","fi-FI","fil","fil-PH","fo","fo-FO","fr","fr-BE","fr-BF","fr-BI","fr-BJ","fr-BL","fr-CA","fr-CD","fr-CF","fr-CG","fr-CH","fr-CI","fr-CM","fr-DJ","fr-DZ","fr-FR","fr-GA","fr-GF","fr-GN","fr-GP","fr-GQ","fr-HT","fr-KM","fr-LU","fr-MA","fr-MC","fr-MF","fr-MG","fr-ML","fr-MQ","fr-MR","fr-MU","fr-NC","fr-NE","fr-PF","fr-PM","fr-RE","fr-RW","fr-SC","fr-SN","fr-SY","fr-TD","fr-TG","fr-TN","fr-VU","fr-WF","fr-YT","fur","fur-IT","fy","fy-NL","ga","ga-IE","gd","gd-GB","gl","gl-ES","gsw","gsw-CH","gsw-FR","gsw-LI","gu","gu-IN","guz","guz-KE","gv","gv-IM","ha","ha-GH","ha-NE","ha-NG","haw","haw-US","he","he-IL","hi","hi-IN","hr","hr-BA","hr-HR","hsb","hsb-DE","hu","hu-HU","hy","hy-AM","id","id-ID","ig","ig-NG","ii","ii-CN","is","is-IS","it","it-CH","it-IT","it-SM","iu","iu-Cans","iu-Cans-CA","ja","ja-JP","jgo","jgo-CM","jmc","jmc-TZ","ka","ka-GE","kab","kab-DZ","kam","kam-KE","kde","kde-TZ","kea","kea-CV","khq","khq-ML","ki","ki-KE","kk","kk-KZ","kkj","kkj-CM","kl","kl-GL","kln","kln-KE","km","km-KH","kn","kn-IN","ko","ko-KP","ko-KR","kok","kok-IN","ks","ks-Arab","ks-Arab-IN","ksb","ksb-TZ","ksf","ksf-CM","ksh","ksh-DE","kw","kw-GB","ky","ky-KG","lag","lag-TZ","lb","lb-LU","lg","lg-UG","lkt","lkt-US","ln","ln-AO","ln-CD","ln-CF","ln-CG","lo","lo-LA","lt","lt-LT","lu","lu-CD","luo","luo-KE","luy","luy-KE","lv","lv-LV","mas","mas-KE","mas-TZ","mer","mer-KE","mfe","mfe-MU","mg","mg-MG","mgh","mgh-MZ","mgo","mgo-CM","mk","mk-MK","ml","ml-IN","mn","mn-MN","mr","mr-IN","ms","ms-Arab","ms-Arab-BN","ms-Arab-MY","ms-BN","ms-MY","ms-SG","mt","mt-MT","mua","mua-CM","my","my-MM","naq","naq-NA","nb","nb-NO","nb-SJ","nd","nd-ZW","ne","ne-IN","ne-NP","nl","nl-AW","nl-BE","nl-BQ","nl-CW","nl-NL","nl-SR","nl-SX","nmg","nmg-CM","nn","nn-NO","nnh","nnh-CM","nus","nus-SD","nyn","nyn-UG","om","om-ET","om-KE","or","or-IN","os","os-GE","os-RU","pa","pa-Arab","pa-Arab-PK","pa-IN","pl","pl-PL","ps","ps-AF","pt","pt-AO","pt-BR","pt-CV","pt-GW","pt-MO","pt-MZ","pt-PT","pt-ST","pt-TL","qu","qu-BO","qu-EC","qu-PE","rm","rm-CH","rn","rn-BI","ro","ro-MD","ro-RO","rof","rof-TZ","ru","ru-BY","ru-KG","ru-KZ","ru-MD","ru-RU","ru-UA","rw","rw-RW","rwk","rwk-TZ","sah","sah-RU","saq","saq-KE","sbp","sbp-TZ","se","se-FI","se-NO","se-SE","seh","seh-MZ","ses","ses-ML","sg","sg-CF","shi","shi-MA","shi-Tfng","shi-Tfng-MA","si","si-LK","sk","sk-SK","sl","sl-SI","smn","smn-FI","sn","sn-ZW","so","so-DJ","so-ET","so-KE","so-SO","sq","sq-AL","sq-MK","sq-XK","sr","sr-BA","sr-ME","sr-RS","sr-XK","sr-Latn","sr-Latn-BA","sr-Latn-ME","sr-Latn-RS","sr-Latn-XK","sv","sv-AX","sv-FI","sv-SE","sw","sw-CD","sw-KE","sw-TZ","sw-UG","ta","ta-IN","ta-LK","ta-MY","ta-SG","te","te-IN","teo","teo-KE","teo-UG","tg","tg-TJ","th","th-TH","ti","ti-ER","ti-ET","tk","tk-TM","to","to-TO","tr","tr-CY","tr-TR","twq","twq-NE","tzm","tzm-MA","ug","ug-Arab","ug-Arab-CN","uk","uk-UA","ur","ur-IN","ur-PK","uz","uz-Arab","uz-Arab-AF","uz-UZ","uz-Latn","uz-Latn-UZ","vai","vai-Latn","vai-Latn-LR","vai-LR","vi","vi-VN","vun","vun-TZ","wae","wae-CH","xog","xog-UG","yav","yav-CM","yi","yi-001","yo","yo-BJ","yo-NG","zgh","zgh-MA","zh","zh-Hans","zh-Hans-CN","zh-Hans-HK","zh-Hans-MO","zh-Hans-SG","zh-Hant","zh-Hant-HK","zh-Hant-MO","zh-Hant-TW","zu","zu-ZA",
50
+ ],
51
+
52
+ RunLoop::Version.new("8.0") => [
53
+ "af","af-NA","af-ZA","agq","agq-CM","ak","ak-GH","am","am-ET","ar","ar-001","ar-AE","ar-BH","ar-DJ","ar-DZ","ar-EG","ar-EH","ar-ER","ar-IL","ar-IQ","ar-JO","ar-KM","ar-KW","ar-LB","ar-LY","ar-MA","ar-MR","ar-OM","ar-PS","ar-QA","ar-SA","ar-SD","ar-SO","ar-SS","ar-SY","ar-TD","ar-TN","ar-YE","as","as-IN","asa","asa-TZ","az","az-Cyrl","az-Cyrl-AZ","az-AZ","bas","bas-CM","be","be-BY","bem","bem-ZM","bez","bez-TZ","bg","bg-BG","bm","bm-ML","bn","bn-BD","bn-IN","bo","bo-CN","bo-IN","br","br-FR","brx","brx-IN","bs","bs-Cyrl","bs-Cyrl-BA","bs-BA","ca","ca-AD","ca-ES","ca-FR","ca-IT","cgg","cgg-UG","chr","chr-US","ckb","cs","cs-CZ","cy","cy-GB","da","da-DK","da-GL","dav","dav-KE","de","de-AT","de-BE","de-CH","de-DE","de-LI","de-LU","dje","dje-NE","dua","dua-CM","dyo","dyo-SN","dz","dz-BT","ebu","ebu-KE","ee","ee-GH","ee-TG","el","el-CY","el-GR","en","en-001","en-150","en-AD","en-AG","en-AI","en-AL","en-AS","en-AT","en-AU","en-BA","en-BB","en-BE","en-BM","en-BS","en-BW","en-BZ","en-CA","en-CC","en-CH","en-CK","en-CM","en-CX","en-CY","en-CZ","en-DE","en-DG","en-DK","en-DM","en-EE","en-ER","en-ES","en-FI","en-FJ","en-FK","en-FM","en-FR","en-GB","en-GD","en-GG","en-GH","en-GI","en-GM","en-GU","en-GY","en-HK","en-HR","en-HU","en-IE","en-IM","en-IN","en-IO","en-IS","en-IT","en-JE","en-JM","en-KE","en-KI","en-KN","en-KY","en-LC","en-LR","en-LS","en-LT","en-LU","en-LV","en-ME","en-MG","en-MH","en-MO","en-MP","en-MS","en-MT","en-MU","en-MW","en-NA","en-NF","en-NG","en-NL","en-NO","en-NR","en-NU","en-NZ","en-PG","en-PH","en-PK","en-PL","en-PN","en-PR","en-PT","en-PW","en-RO","en-RU","en-RW","en-SB","en-SC","en-SD","en-SE","en-SG","en-SH","en-SI","en-SK","en-SL","en-SS","en-SX","en-SZ","en-TC","en-TK","en-TO","en-TR","en-TT","en-TV","en-TZ","en-UG","en-UM","en-US","en-US-POSIX","en-VC","en-VG","en-VI","en-VU","en-WS","en-ZA","en-ZM","en-ZW","eo","es","es-419","es-AR","es-BO","es-CL","es-CO","es-CR","es-CU","es-DO","es-EA","es-EC","es-ES","es-GQ","es-GT","es-HN","es-IC","es-MX","es-NI","es-PA","es-PE","es-PH","es-PR","es-PY","es-SV","es-US","es-UY","es-VE","et","et-EE","eu","eu-ES","ewo","ewo-CM","fa","fa-AF","fa-IR","ff","ff-SN","fi","fi-FI","fil","fil-PH","fo","fo-FO","fr","fr-BE","fr-BF","fr-BI","fr-BJ","fr-BL","fr-CA","fr-CD","fr-CF","fr-CG","fr-CH","fr-CI","fr-CM","fr-DJ","fr-DZ","fr-FR","fr-GA","fr-GF","fr-GN","fr-GP","fr-GQ","fr-HT","fr-KM","fr-LU","fr-MA","fr-MC","fr-MF","fr-MG","fr-ML","fr-MQ","fr-MR","fr-MU","fr-NC","fr-NE","fr-PF","fr-PM","fr-RE","fr-RW","fr-SC","fr-SN","fr-SY","fr-TD","fr-TG","fr-TN","fr-VU","fr-WF","fr-YT","ga","ga-IE","gl","gl-ES","gsw","gsw-CH","gsw-LI","gu","gu-IN","guz","guz-KE","gv","gv-IM","ha","ha-GH","ha-NE","ha-NG","haw","haw-US","he","he-IL","hi","hi-IN","hr","hr-BA","hr-HR","hu","hu-HU","hy","hy-AM","id","id-ID","ig","ig-NG","ii","ii-CN","is","is-IS","it","it-CH","it-IT","it-SM","iu","iu-Cans","iu-Cans-CA","ja","ja-JP","jgo","jgo-CM","jmc","jmc-TZ","ka","ka-GE","kab","kab-DZ","kam","kam-KE","kde","kde-TZ","kea","kea-CV","khq","khq-ML","ki","ki-KE","kk","kk-KZ","kkj","kkj-CM","kl","kl-GL","kln","kln-KE","km","km-KH","kn","kn-IN","ko","ko-KP","ko-KR","kok","kok-IN","ks","ks-Arab","ks-Arab-IN","ksb","ksb-TZ","ksf","ksf-CM","kw","kw-GB","ky","ky-KG","lag","lag-TZ","lg","lg-UG","lkt","lkt-US","ln","ln-AO","ln-CD","ln-CF","ln-CG","lo","lo-LA","lt","lt-LT","lu","lu-CD","luo","luo-KE","luy","luy-KE","lv","lv-LV","mas","mas-KE","mas-TZ","mer","mer-KE","mfe","mfe-MU","mg","mg-MG","mgh","mgh-MZ","mgo","mgo-CM","mk","mk-MK","ml","ml-IN","mn","mn-MN","mr","mr-IN","ms","ms-Arab","ms-Arab-BN","ms-Arab-MY","ms-BN","ms-MY","ms-SG","mt","mt-MT","mua","mua-CM","my","my-MM","naq","naq-NA","nb","nb-NO","nb-SJ","nd","nd-ZW","ne","ne-IN","ne-NP","nl","nl-AW","nl-BE","nl-BQ","nl-CW","nl-NL","nl-SR","nl-SX","nmg","nmg-CM","nn","nn-NO","nnh","nnh-CM","nus","nus-SD","nyn","nyn-UG","om","om-ET","om-KE","or","or-IN","pa","pa-Arab","pa-Arab-PK","pa-IN","pl","pl-PL","ps","ps-AF","pt","pt-AO","pt-BR","pt-CV","pt-GW","pt-MO","pt-MZ","pt-PT","pt-ST","pt-TL","rm","rm-CH","rn","rn-BI","ro","ro-MD","ro-RO","rof","rof-TZ","ru","ru-BY","ru-KG","ru-KZ","ru-MD","ru-RU","ru-UA","rw","rw-RW","rwk","rwk-TZ","saq","saq-KE","sbp","sbp-TZ","seh","seh-MZ","ses","ses-ML","sg","sg-CF","shi","shi-MA","shi-Tfng","shi-Tfng-MA","si","si-LK","sk","sk-SK","sl","sl-SI","sn","sn-ZW","so","so-DJ","so-ET","so-KE","so-SO","sq","sq-AL","sq-MK","sq-XK","sr","sr-BA","sr-ME","sr-RS","sr-XK","sr-Latn","sr-Latn-BA","sr-Latn-ME","sr-Latn-RS","sr-Latn-XK","sv","sv-AX","sv-FI","sv-SE","sw","sw-KE","sw-TZ","sw-UG","swc","swc-CD","ta","ta-IN","ta-LK","ta-MY","ta-SG","te","te-IN","teo","teo-KE","teo-UG","tg","tg-TJ","th","th-TH","ti","ti-ER","ti-ET","tk","tk-TM","to","to-TO","tr","tr-CY","tr-TR","twq","twq-NE","tzm","tzm-MA","ug","ug-Arab","ug-Arab-CN","uk","uk-UA","ur","ur-IN","ur-PK","uz","uz-Arab","uz-Arab-AF","uz-UZ","uz-Latn","uz-Latn-UZ","vai","vai-Latn","vai-Latn-LR","vai-LR","vi","vi-VN","vun","vun-TZ","xog","xog-UG","yav","yav-CM","yo","yo-BJ","yo-NG","zgh","zgh-MA","zh","zh-Hans","zh-Hans-CN","zh-Hans-HK","zh-Hans-MO","zh-Hans-SG","zh-Hant","zh-Hant-HK","zh-Hant-MO","zh-Hant-TW","zu","zu-ZA",
54
+ ]
55
+ }.freeze
56
+
57
+ end
58
+ end
59
+
@@ -0,0 +1,98 @@
1
+ module RunLoop
2
+ # @!visibility private
3
+ class Locale
4
+
5
+ # @!visibility private
6
+ attr_reader :code
7
+ # @!visibility private
8
+ attr_reader :name
9
+
10
+ # @!visibility private
11
+ def initialize(code, name)
12
+ @code = code
13
+ @name = name
14
+ end
15
+
16
+ def to_s
17
+ "<#Locale (#{code}) #{name}>"
18
+ end
19
+
20
+ def inspect
21
+ to_s
22
+ end
23
+
24
+ # @!visiblity private
25
+ # Returns a locale instance given a device and locale code
26
+ #
27
+ # Only codes supported by Apple are allowed.
28
+ #
29
+ # @example
30
+ # de => German
31
+ # de_CH => Switzerland
32
+ #
33
+ # @param [RunLoop::Device] device the target device
34
+ # @param [String] locale_code identifies the code you want.
35
+ #
36
+ # @return [RunLoop::Locale] a locale instance.
37
+ #
38
+ # @raise [ArgumentError] if locale_code does not exist.
39
+ # @raise [ArgumentError] if the device iOS version is not supported.
40
+ def self.locale_for_code(locale_code, device)
41
+ version = device.version
42
+ locales = self.valid_locales(version)
43
+
44
+ match = locales[locale_code]
45
+
46
+ if match.nil?
47
+ raise ArgumentError,
48
+ %Q{There are no locales with code '#{locale_code}' for iOS version #{version.to_s}}
49
+ end
50
+
51
+ RunLoop::Locale.new(locale_code, match)
52
+ end
53
+
54
+ # @!visibility private
55
+ # Returns a list of locale objects given an iOS version.
56
+ #
57
+ # @param [RunLoop::Version] ios_version the version
58
+ # @return [Hash] a hash of locale code => locale name
59
+ def self.valid_locales(ios_version)
60
+ major_version = ios_version.major
61
+ key = RunLoop::Version.new("#{major_version}.0")
62
+ value = LOCALES[key]
63
+
64
+ if value.nil?
65
+ raise ArgumentError,
66
+ "There are no locales for iOS version: #{ios_version.to_s}"
67
+ else
68
+ value
69
+ end
70
+ end
71
+
72
+ private
73
+
74
+ # @!visibility private
75
+ #
76
+ # Generated using:
77
+ #
78
+ # NSArray *identifiers = [[NSLocale availableLocaleIdentifiers]
79
+ # sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
80
+ # NSLocale *locale = [NSLocale localeWithLocaleIdentifier:@"en_US"];
81
+ # NSMutableOrderedSet *set = [NSMutableOrderedSet new];
82
+ # for (NSString *localeId in identifiers) {
83
+ # printf("\"%s\" => \"%s\",", [localeId cStringUsingEncoding:NSUTF8StringEncoding],
84
+ # [[locale displayNameForKey:NSLocaleIdentifier
85
+ # value:localeId] cStringUsingEncoding:NSUTF8StringEncoding]);
86
+ # }
87
+ LOCALES = {
88
+ RunLoop::Version.new("9.0") => {
89
+ "af" => "Afrikaans","af_NA" => "Afrikaans (Namibia)","af_ZA" => "Afrikaans (South Africa)","agq" => "Aghem","agq_CM" => "Aghem (Cameroon)","ak" => "Akan","ak_GH" => "Akan (Ghana)","am" => "Amharic","am_ET" => "Amharic (Ethiopia)","ar" => "Arabic","ar_001" => "Arabic (World)","ar_AE" => "Arabic (United Arab Emirates)","ar_BH" => "Arabic (Bahrain)","ar_DJ" => "Arabic (Djibouti)","ar_DZ" => "Arabic (Algeria)","ar_EG" => "Arabic (Egypt)","ar_EH" => "Arabic (Western Sahara)","ar_ER" => "Arabic (Eritrea)","ar_IL" => "Arabic (Israel)","ar_IQ" => "Arabic (Iraq)","ar_JO" => "Arabic (Jordan)","ar_KM" => "Arabic (Comoros)","ar_KW" => "Arabic (Kuwait)","ar_LB" => "Arabic (Lebanon)","ar_LY" => "Arabic (Libya)","ar_MA" => "Arabic (Morocco)","ar_MR" => "Arabic (Mauritania)","ar_OM" => "Arabic (Oman)","ar_PS" => "Arabic (Palestinian Territories)","ar_QA" => "Arabic (Qatar)","ar_SA" => "Arabic (Saudi Arabia)","ar_SD" => "Arabic (Sudan)","ar_SO" => "Arabic (Somalia)","ar_SS" => "Arabic (South Sudan)","ar_SY" => "Arabic (Syria)","ar_TD" => "Arabic (Chad)","ar_TN" => "Arabic (Tunisia)","ar_YE" => "Arabic (Yemen)","as" => "Assamese","as_IN" => "Assamese (India)","asa" => "Asu","asa_TZ" => "Asu (Tanzania)","az" => "Azerbaijani","az_Cyrl" => "Azerbaijani (Cyrillic)","az_Cyrl_AZ" => "Azerbaijani (Cyrillic, Azerbaijan)","az_Latn" => "Azerbaijani (Latin)","az_Latn_AZ" => "Azerbaijani (Latin, Azerbaijan)","bas" => "Basaa","bas_CM" => "Basaa (Cameroon)","be" => "Belarusian","be_BY" => "Belarusian (Belarus)","bem" => "Bemba","bem_ZM" => "Bemba (Zambia)","bez" => "Bena","bez_TZ" => "Bena (Tanzania)","bg" => "Bulgarian","bg_BG" => "Bulgarian (Bulgaria)","bm" => "Bambara","bm_Latn" => "Bambara (Latin)","bm_Latn_ML" => "Bambara (Latin, Mali)","bn" => "Bengali","bn_BD" => "Bengali (Bangladesh)","bn_IN" => "Bengali (India)","bo" => "Tibetan","bo_CN" => "Tibetan (China)","bo_IN" => "Tibetan (India)","br" => "Breton","br_FR" => "Breton (France)","brx" => "Bodo","brx_IN" => "Bodo (India)","bs" => "Bosnian","bs_Cyrl" => "Bosnian (Cyrillic)","bs_Cyrl_BA" => "Bosnian (Cyrillic, Bosnia & Herzegovina)","bs_Latn" => "Bosnian (Latin)","bs_Latn_BA" => "Bosnian (Latin, Bosnia & Herzegovina)","ca" => "Catalan","ca_AD" => "Catalan (Andorra)","ca_ES" => "Catalan (Spain)","ca_FR" => "Catalan (France)","ca_IT" => "Catalan (Italy)","cgg" => "Chiga","cgg_UG" => "Chiga (Uganda)","chr" => "Cherokee","chr_US" => "Cherokee (United States)","ckb" => "Central Kurdish","ckb_IQ" => "Central Kurdish (Iraq)","ckb_IR" => "Central Kurdish (Iran)","cs" => "Czech","cs_CZ" => "Czech (Czech Republic)","cy" => "Welsh","cy_GB" => "Welsh (United Kingdom)","da" => "Danish","da_DK" => "Danish (Denmark)","da_GL" => "Danish (Greenland)","dav" => "Taita","dav_KE" => "Taita (Kenya)","de" => "German","de_AT" => "German (Austria)","de_BE" => "German (Belgium)","de_CH" => "German (Switzerland)","de_DE" => "German (Germany)","de_LI" => "German (Liechtenstein)","de_LU" => "German (Luxembourg)","dje" => "Zarma","dje_NE" => "Zarma (Niger)","dsb" => "Lower Sorbian","dsb_DE" => "Lower Sorbian (Germany)","dua" => "Duala","dua_CM" => "Duala (Cameroon)","dyo" => "Jola-Fonyi","dyo_SN" => "Jola-Fonyi (Senegal)","dz" => "Dzongkha","dz_BT" => "Dzongkha (Bhutan)","ebu" => "Embu","ebu_KE" => "Embu (Kenya)","ee" => "Ewe","ee_GH" => "Ewe (Ghana)","ee_TG" => "Ewe (Togo)","el" => "Greek","el_CY" => "Greek (Cyprus)","el_GR" => "Greek (Greece)","en" => "English","en_001" => "English (World)","en_150" => "English (Europe)","en_AD" => "English (Andorra)","en_AG" => "English (Antigua & Barbuda)","en_AI" => "English (Anguilla)","en_AL" => "English (Albania)","en_AS" => "English (American Samoa)","en_AT" => "English (Austria)","en_AU" => "English (Australia)","en_BA" => "English (Bosnia & Herzegovina)","en_BB" => "English (Barbados)","en_BE" => "English (Belgium)","en_BM" => "English (Bermuda)","en_BS" => "English (Bahamas)","en_BW" => "English (Botswana)","en_BZ" => "English (Belize)","en_CA" => "English (Canada)","en_CC" => "English (Cocos [Keeling] Islands)","en_CH" => "English (Switzerland)","en_CK" => "English (Cook Islands)","en_CM" => "English (Cameroon)","en_CX" => "English (Christmas Island)","en_CY" => "English (Cyprus)","en_CZ" => "English (Czech Republic)","en_DE" => "English (Germany)","en_DG" => "English (Diego Garcia)","en_DK" => "English (Denmark)","en_DM" => "English (Dominica)","en_EE" => "English (Estonia)","en_ER" => "English (Eritrea)","en_ES" => "English (Spain)","en_FI" => "English (Finland)","en_FJ" => "English (Fiji)","en_FK" => "English (Falkland Islands)","en_FM" => "English (Micronesia)","en_FR" => "English (France)","en_GB" => "English (United Kingdom)","en_GD" => "English (Grenada)","en_GG" => "English (Guernsey)","en_GH" => "English (Ghana)","en_GI" => "English (Gibraltar)","en_GM" => "English (Gambia)","en_GR" => "English (Greece)","en_GU" => "English (Guam)","en_GY" => "English (Guyana)","en_HK" => "English (Hong Kong SAR China)","en_HR" => "English (Croatia)","en_HU" => "English (Hungary)","en_IE" => "English (Ireland)","en_IL" => "English (Israel)","en_IM" => "English (Isle of Man)","en_IN" => "English (India)","en_IO" => "English (British Indian Ocean Territory)","en_IS" => "English (Iceland)","en_IT" => "English (Italy)","en_JE" => "English (Jersey)","en_JM" => "English (Jamaica)","en_KE" => "English (Kenya)","en_KI" => "English (Kiribati)","en_KN" => "English (St. Kitts & Nevis)","en_KY" => "English (Cayman Islands)","en_LC" => "English (St. Lucia)","en_LR" => "English (Liberia)","en_LS" => "English (Lesotho)","en_LT" => "English (Lithuania)","en_LU" => "English (Luxembourg)","en_LV" => "English (Latvia)","en_ME" => "English (Montenegro)","en_MG" => "English (Madagascar)","en_MH" => "English (Marshall Islands)","en_MO" => "English (Macau SAR China)","en_MP" => "English (Northern Mariana Islands)","en_MS" => "English (Montserrat)","en_MT" => "English (Malta)","en_MU" => "English (Mauritius)","en_MW" => "English (Malawi)","en_MY" => "English (Malaysia)","en_NA" => "English (Namibia)","en_NF" => "English (Norfolk Island)","en_NG" => "English (Nigeria)","en_NL" => "English (Netherlands)","en_NO" => "English (Norway)","en_NR" => "English (Nauru)","en_NU" => "English (Niue)","en_NZ" => "English (New Zealand)","en_PG" => "English (Papua New Guinea)","en_PH" => "English (Philippines)","en_PK" => "English (Pakistan)","en_PL" => "English (Poland)","en_PN" => "English (Pitcairn Islands)","en_PR" => "English (Puerto Rico)","en_PT" => "English (Portugal)","en_PW" => "English (Palau)","en_RO" => "English (Romania)","en_RU" => "English (Russia)","en_RW" => "English (Rwanda)","en_SB" => "English (Solomon Islands)","en_SC" => "English (Seychelles)","en_SD" => "English (Sudan)","en_SE" => "English (Sweden)","en_SG" => "English (Singapore)","en_SH" => "English (St. Helena)","en_SI" => "English (Slovenia)","en_SK" => "English (Slovakia)","en_SL" => "English (Sierra Leone)","en_SS" => "English (South Sudan)","en_SX" => "English (Sint Maarten)","en_SZ" => "English (Swaziland)","en_TC" => "English (Turks & Caicos Islands)","en_TK" => "English (Tokelau)","en_TO" => "English (Tonga)","en_TR" => "English (Turkey)","en_TT" => "English (Trinidad & Tobago)","en_TV" => "English (Tuvalu)","en_TZ" => "English (Tanzania)","en_UG" => "English (Uganda)","en_UM" => "English (U.S. Outlying Islands)","en_US" => "English (United States)","en_US_POSIX" => "English (United States, Computer)","en_VC" => "English (St. Vincent & Grenadines)","en_VG" => "English (British Virgin Islands)","en_VI" => "English (U.S. Virgin Islands)","en_VU" => "English (Vanuatu)","en_WS" => "English (Samoa)","en_ZA" => "English (South Africa)","en_ZM" => "English (Zambia)","en_ZW" => "English (Zimbabwe)","eo" => "Esperanto","es" => "Spanish","es_419" => "Spanish (Latin America)","es_AR" => "Spanish (Argentina)","es_BO" => "Spanish (Bolivia)","es_CL" => "Spanish (Chile)","es_CO" => "Spanish (Colombia)","es_CR" => "Spanish (Costa Rica)","es_CU" => "Spanish (Cuba)","es_DO" => "Spanish (Dominican Republic)","es_EA" => "Spanish (Ceuta & Melilla)","es_EC" => "Spanish (Ecuador)","es_ES" => "Spanish (Spain)","es_GQ" => "Spanish (Equatorial Guinea)","es_GT" => "Spanish (Guatemala)","es_HN" => "Spanish (Honduras)","es_IC" => "Spanish (Canary Islands)","es_MX" => "Spanish (Mexico)","es_NI" => "Spanish (Nicaragua)","es_PA" => "Spanish (Panama)","es_PE" => "Spanish (Peru)","es_PH" => "Spanish (Philippines)","es_PR" => "Spanish (Puerto Rico)","es_PY" => "Spanish (Paraguay)","es_SV" => "Spanish (El Salvador)","es_US" => "Spanish (United States)","es_UY" => "Spanish (Uruguay)","es_VE" => "Spanish (Venezuela)","et" => "Estonian","et_EE" => "Estonian (Estonia)","eu" => "Basque","eu_ES" => "Basque (Spain)","ewo" => "Ewondo","ewo_CM" => "Ewondo (Cameroon)","fa" => "Persian","fa_AF" => "Persian (Afghanistan)","fa_IR" => "Persian (Iran)","ff" => "Fulah","ff_CM" => "Fulah (Cameroon)","ff_GN" => "Fulah (Guinea)","ff_MR" => "Fulah (Mauritania)","ff_SN" => "Fulah (Senegal)","fi" => "Finnish","fi_FI" => "Finnish (Finland)","fil" => "Filipino","fil_PH" => "Filipino (Philippines)","fo" => "Faroese","fo_FO" => "Faroese (Faroe Islands)","fr" => "French","fr_BE" => "French (Belgium)","fr_BF" => "French (Burkina Faso)","fr_BI" => "French (Burundi)","fr_BJ" => "French (Benin)","fr_BL" => "French (St. Barthélemy)","fr_CA" => "French (Canada)","fr_CD" => "French (Congo - Kinshasa)","fr_CF" => "French (Central African Republic)","fr_CG" => "French (Congo - Brazzaville)","fr_CH" => "French (Switzerland)","fr_CI" => "French (Côte d’Ivoire)","fr_CM" => "French (Cameroon)","fr_DJ" => "French (Djibouti)","fr_DZ" => "French (Algeria)","fr_FR" => "French (France)","fr_GA" => "French (Gabon)","fr_GF" => "French (French Guiana)","fr_GN" => "French (Guinea)","fr_GP" => "French (Guadeloupe)","fr_GQ" => "French (Equatorial Guinea)","fr_HT" => "French (Haiti)","fr_KM" => "French (Comoros)","fr_LU" => "French (Luxembourg)","fr_MA" => "French (Morocco)","fr_MC" => "French (Monaco)","fr_MF" => "French (St. Martin)","fr_MG" => "French (Madagascar)","fr_ML" => "French (Mali)","fr_MQ" => "French (Martinique)","fr_MR" => "French (Mauritania)","fr_MU" => "French (Mauritius)","fr_NC" => "French (New Caledonia)","fr_NE" => "French (Niger)","fr_PF" => "French (French Polynesia)","fr_PM" => "French (St. Pierre & Miquelon)","fr_RE" => "French (Réunion)","fr_RW" => "French (Rwanda)","fr_SC" => "French (Seychelles)","fr_SN" => "French (Senegal)","fr_SY" => "French (Syria)","fr_TD" => "French (Chad)","fr_TG" => "French (Togo)","fr_TN" => "French (Tunisia)","fr_VU" => "French (Vanuatu)","fr_WF" => "French (Wallis & Futuna)","fr_YT" => "French (Mayotte)","fur" => "Friulian","fur_IT" => "Friulian (Italy)","fy" => "Western Frisian","fy_NL" => "Western Frisian (Netherlands)","ga" => "Irish","ga_IE" => "Irish (Ireland)","gd" => "Scottish Gaelic","gd_GB" => "Scottish Gaelic (United Kingdom)","gl" => "Galician","gl_ES" => "Galician (Spain)","gsw" => "Swiss German","gsw_CH" => "Swiss German (Switzerland)","gsw_FR" => "Swiss German (France)","gsw_LI" => "Swiss German (Liechtenstein)","gu" => "Gujarati","gu_IN" => "Gujarati (India)","guz" => "Gusii","guz_KE" => "Gusii (Kenya)","gv" => "Manx","gv_IM" => "Manx (Isle of Man)","ha" => "Hausa","ha_Latn" => "Hausa (Latin)","ha_Latn_GH" => "Hausa (Latin, Ghana)","ha_Latn_NE" => "Hausa (Latin, Niger)","ha_Latn_NG" => "Hausa (Latin, Nigeria)","haw" => "Hawaiian","haw_US" => "Hawaiian (United States)","he" => "Hebrew","he_IL" => "Hebrew (Israel)","hi" => "Hindi","hi_IN" => "Hindi (India)","hr" => "Croatian","hr_BA" => "Croatian (Bosnia & Herzegovina)","hr_HR" => "Croatian (Croatia)","hsb" => "Upper Sorbian","hsb_DE" => "Upper Sorbian (Germany)","hu" => "Hungarian","hu_HU" => "Hungarian (Hungary)","hy" => "Armenian","hy_AM" => "Armenian (Armenia)","id" => "Indonesian","id_ID" => "Indonesian (Indonesia)","ig" => "Igbo","ig_NG" => "Igbo (Nigeria)","ii" => "Sichuan Yi","ii_CN" => "Sichuan Yi (China)","is" => "Icelandic","is_IS" => "Icelandic (Iceland)","it" => "Italian","it_CH" => "Italian (Switzerland)","it_IT" => "Italian (Italy)","it_SM" => "Italian (San Marino)","iu" => "Inuktitut","iu_Cans" => "Inuktitut (Unified Canadian Aboriginal Syllabics)","iu_Cans_CA" => "Inuktitut (Unified Canadian Aboriginal Syllabics, Canada)","ja" => "Japanese","ja_JP" => "Japanese (Japan)","jgo" => "Ngomba","jgo_CM" => "Ngomba (Cameroon)","jmc" => "Machame","jmc_TZ" => "Machame (Tanzania)","ka" => "Georgian","ka_GE" => "Georgian (Georgia)","kab" => "Kabyle","kab_DZ" => "Kabyle (Algeria)","kam" => "Kamba","kam_KE" => "Kamba (Kenya)","kde" => "Makonde","kde_TZ" => "Makonde (Tanzania)","kea" => "Kabuverdianu","kea_CV" => "Kabuverdianu (Cape Verde)","khq" => "Koyra Chiini","khq_ML" => "Koyra Chiini (Mali)","ki" => "Kikuyu","ki_KE" => "Kikuyu (Kenya)","kk" => "Kazakh","kk_Cyrl" => "Kazakh (Cyrillic)","kk_Cyrl_KZ" => "Kazakh (Cyrillic, Kazakhstan)","kkj" => "Kako","kkj_CM" => "Kako (Cameroon)","kl" => "Kalaallisut","kl_GL" => "Kalaallisut (Greenland)","kln" => "Kalenjin","kln_KE" => "Kalenjin (Kenya)","km" => "Khmer","km_KH" => "Khmer (Cambodia)","kn" => "Kannada","kn_IN" => "Kannada (India)","ko" => "Korean","ko_KP" => "Korean (North Korea)","ko_KR" => "Korean (South Korea)","kok" => "Konkani","kok_IN" => "Konkani (India)","ks" => "Kashmiri","ks_Arab" => "Kashmiri (Arabic)","ks_Arab_IN" => "Kashmiri (Arabic, India)","ksb" => "Shambala","ksb_TZ" => "Shambala (Tanzania)","ksf" => "Bafia","ksf_CM" => "Bafia (Cameroon)","ksh" => "Colognian","ksh_DE" => "Colognian (Germany)","kw" => "Cornish","kw_GB" => "Cornish (United Kingdom)","ky" => "Kyrgyz","ky_Cyrl" => "Kyrgyz (Cyrillic)","ky_Cyrl_KG" => "Kyrgyz (Cyrillic, Kyrgyzstan)","lag" => "Langi","lag_TZ" => "Langi (Tanzania)","lb" => "Luxembourgish","lb_LU" => "Luxembourgish (Luxembourg)","lg" => "Ganda","lg_UG" => "Ganda (Uganda)","lkt" => "Lakota","lkt_US" => "Lakota (United States)","ln" => "Lingala","ln_AO" => "Lingala (Angola)","ln_CD" => "Lingala (Congo - Kinshasa)","ln_CF" => "Lingala (Central African Republic)","ln_CG" => "Lingala (Congo - Brazzaville)","lo" => "Lao","lo_LA" => "Lao (Laos)","lt" => "Lithuanian","lt_LT" => "Lithuanian (Lithuania)","lu" => "Luba-Katanga","lu_CD" => "Luba-Katanga (Congo - Kinshasa)","luo" => "Luo","luo_KE" => "Luo (Kenya)","luy" => "Luyia","luy_KE" => "Luyia (Kenya)","lv" => "Latvian","lv_LV" => "Latvian (Latvia)","mas" => "Masai","mas_KE" => "Masai (Kenya)","mas_TZ" => "Masai (Tanzania)","mer" => "Meru","mer_KE" => "Meru (Kenya)","mfe" => "Morisyen","mfe_MU" => "Morisyen (Mauritius)","mg" => "Malagasy","mg_MG" => "Malagasy (Madagascar)","mgh" => "Makhuwa-Meetto","mgh_MZ" => "Makhuwa-Meetto (Mozambique)","mgo" => "Metaʼ","mgo_CM" => "Metaʼ (Cameroon)","mk" => "Macedonian","mk_MK" => "Macedonian (Macedonia)","ml" => "Malayalam","ml_IN" => "Malayalam (India)","mn" => "Mongolian","mn_Cyrl" => "Mongolian (Cyrillic)","mn_Cyrl_MN" => "Mongolian (Cyrillic, Mongolia)","mr" => "Marathi","mr_IN" => "Marathi (India)","ms" => "Malay","ms_Arab" => "Malay (Arabic)","ms_Arab_BN" => "Malay (Arabic, Brunei)","ms_Arab_MY" => "Malay (Arabic, Malaysia)","ms_Latn" => "Malay (Latin)","ms_Latn_BN" => "Malay (Latin, Brunei)","ms_Latn_MY" => "Malay (Latin, Malaysia)","ms_Latn_SG" => "Malay (Latin, Singapore)","mt" => "Maltese","mt_MT" => "Maltese (Malta)","mua" => "Mundang","mua_CM" => "Mundang (Cameroon)","my" => "Burmese","my_MM" => "Burmese (Myanmar [Burma])","naq" => "Nama","naq_NA" => "Nama (Namibia)","nb" => "Norwegian Bokmål","nb_NO" => "Norwegian Bokmål (Norway)","nb_SJ" => "Norwegian Bokmål (Svalbard & Jan Mayen)","nd" => "North Ndebele","nd_ZW" => "North Ndebele (Zimbabwe)","ne" => "Nepali","ne_IN" => "Nepali (India)","ne_NP" => "Nepali (Nepal)","nl" => "Dutch","nl_AW" => "Dutch (Aruba)","nl_BE" => "Dutch (Belgium)","nl_BQ" => "Dutch (Caribbean Netherlands)","nl_CW" => "Dutch (Curaçao)","nl_NL" => "Dutch (Netherlands)","nl_SR" => "Dutch (Suriname)","nl_SX" => "Dutch (Sint Maarten)","nmg" => "Kwasio","nmg_CM" => "Kwasio (Cameroon)","nn" => "Norwegian Nynorsk","nn_NO" => "Norwegian Nynorsk (Norway)","nnh" => "Ngiemboon","nnh_CM" => "Ngiemboon (Cameroon)","nus" => "Nuer","nus_SD" => "Nuer (Sudan)","nyn" => "Nyankole","nyn_UG" => "Nyankole (Uganda)","om" => "Oromo","om_ET" => "Oromo (Ethiopia)","om_KE" => "Oromo (Kenya)","or" => "Oriya","or_IN" => "Oriya (India)","os" => "Ossetic","os_GE" => "Ossetic (Georgia)","os_RU" => "Ossetic (Russia)","pa" => "Punjabi","pa_Arab" => "Punjabi (Arabic)","pa_Arab_PK" => "Punjabi (Arabic, Pakistan)","pa_Guru" => "Punjabi (Gurmukhi)","pa_Guru_IN" => "Punjabi (Gurmukhi, India)","pl" => "Polish","pl_PL" => "Polish (Poland)","ps" => "Pashto","ps_AF" => "Pashto (Afghanistan)","pt" => "Portuguese","pt_AO" => "Portuguese (Angola)","pt_BR" => "Portuguese (Brazil)","pt_CV" => "Portuguese (Cape Verde)","pt_GW" => "Portuguese (Guinea-Bissau)","pt_MO" => "Portuguese (Macau SAR China)","pt_MZ" => "Portuguese (Mozambique)","pt_PT" => "Portuguese (Portugal)","pt_ST" => "Portuguese (São Tomé & Príncipe)","pt_TL" => "Portuguese (Timor-Leste)","qu" => "Quechua","qu_BO" => "Quechua (Bolivia)","qu_EC" => "Quechua (Ecuador)","qu_PE" => "Quechua (Peru)","rm" => "Romansh","rm_CH" => "Romansh (Switzerland)","rn" => "Rundi","rn_BI" => "Rundi (Burundi)","ro" => "Romanian","ro_MD" => "Romanian (Moldova)","ro_RO" => "Romanian (Romania)","rof" => "Rombo","rof_TZ" => "Rombo (Tanzania)","ru" => "Russian","ru_BY" => "Russian (Belarus)","ru_KG" => "Russian (Kyrgyzstan)","ru_KZ" => "Russian (Kazakhstan)","ru_MD" => "Russian (Moldova)","ru_RU" => "Russian (Russia)","ru_UA" => "Russian (Ukraine)","rw" => "Kinyarwanda","rw_RW" => "Kinyarwanda (Rwanda)","rwk" => "Rwa","rwk_TZ" => "Rwa (Tanzania)","sah" => "Sakha","sah_RU" => "Sakha (Russia)","saq" => "Samburu","saq_KE" => "Samburu (Kenya)","sbp" => "Sangu","sbp_TZ" => "Sangu (Tanzania)","se" => "Northern Sami","se_FI" => "Northern Sami (Finland)","se_NO" => "Northern Sami (Norway)","se_SE" => "Northern Sami (Sweden)","seh" => "Sena","seh_MZ" => "Sena (Mozambique)","ses" => "Koyraboro Senni","ses_ML" => "Koyraboro Senni (Mali)","sg" => "Sango","sg_CF" => "Sango (Central African Republic)","shi" => "Tachelhit","shi_Latn" => "Tachelhit (Latin)","shi_Latn_MA" => "Tachelhit (Latin, Morocco)","shi_Tfng" => "Tachelhit (Tifinagh)","shi_Tfng_MA" => "Tachelhit (Tifinagh, Morocco)","si" => "Sinhala","si_LK" => "Sinhala (Sri Lanka)","sk" => "Slovak","sk_SK" => "Slovak (Slovakia)","sl" => "Slovenian","sl_SI" => "Slovenian (Slovenia)","smn" => "Inari Sami","smn_FI" => "Inari Sami (Finland)","sn" => "Shona","sn_ZW" => "Shona (Zimbabwe)","so" => "Somali","so_DJ" => "Somali (Djibouti)","so_ET" => "Somali (Ethiopia)","so_KE" => "Somali (Kenya)","so_SO" => "Somali (Somalia)","sq" => "Albanian","sq_AL" => "Albanian (Albania)","sq_MK" => "Albanian (Macedonia)","sq_XK" => "Albanian (Kosovo)","sr" => "Serbian","sr_Cyrl" => "Serbian (Cyrillic)","sr_Cyrl_BA" => "Serbian (Cyrillic, Bosnia & Herzegovina)","sr_Cyrl_ME" => "Serbian (Cyrillic, Montenegro)","sr_Cyrl_RS" => "Serbian (Cyrillic, Serbia)","sr_Cyrl_XK" => "Serbian (Cyrillic, Kosovo)","sr_Latn" => "Serbian (Latin)","sr_Latn_BA" => "Serbian (Latin, Bosnia & Herzegovina)","sr_Latn_ME" => "Serbian (Latin, Montenegro)","sr_Latn_RS" => "Serbian (Latin, Serbia)","sr_Latn_XK" => "Serbian (Latin, Kosovo)","sv" => "Swedish","sv_AX" => "Swedish (Åland Islands)","sv_FI" => "Swedish (Finland)","sv_SE" => "Swedish (Sweden)","sw" => "Swahili","sw_CD" => "Swahili (Congo - Kinshasa)","sw_KE" => "Swahili (Kenya)","sw_TZ" => "Swahili (Tanzania)","sw_UG" => "Swahili (Uganda)","ta" => "Tamil","ta_IN" => "Tamil (India)","ta_LK" => "Tamil (Sri Lanka)","ta_MY" => "Tamil (Malaysia)","ta_SG" => "Tamil (Singapore)","te" => "Telugu","te_IN" => "Telugu (India)","teo" => "Teso","teo_KE" => "Teso (Kenya)","teo_UG" => "Teso (Uganda)","tg" => "Tajik","tg_Cyrl" => "Tajik (Cyrillic)","tg_Cyrl_TJ" => "Tajik (Cyrillic, Tajikistan)","th" => "Thai","th_TH" => "Thai (Thailand)","ti" => "Tigrinya","ti_ER" => "Tigrinya (Eritrea)","ti_ET" => "Tigrinya (Ethiopia)","tk" => "Turkmen","tk_Latn" => "Turkmen (Latin)","tk_Latn_TM" => "Turkmen (Latin, Turkmenistan)","to" => "Tongan","to_TO" => "Tongan (Tonga)","tr" => "Turkish","tr_CY" => "Turkish (Cyprus)","tr_TR" => "Turkish (Turkey)","twq" => "Tasawaq","twq_NE" => "Tasawaq (Niger)","tzm" => "Central Atlas Tamazight","tzm_Latn" => "Central Atlas Tamazight (Latin)","tzm_Latn_MA" => "Central Atlas Tamazight (Latin, Morocco)","ug" => "Uyghur","ug_Arab" => "Uyghur (Arabic)","ug_Arab_CN" => "Uyghur (Arabic, China)","uk" => "Ukrainian","uk_UA" => "Ukrainian (Ukraine)","ur" => "Urdu","ur_IN" => "Urdu (India)","ur_PK" => "Urdu (Pakistan)","uz" => "Uzbek","uz_Arab" => "Uzbek (Arabic)","uz_Arab_AF" => "Uzbek (Arabic, Afghanistan)","uz_Cyrl" => "Uzbek (Cyrillic)","uz_Cyrl_UZ" => "Uzbek (Cyrillic, Uzbekistan)","uz_Latn" => "Uzbek (Latin)","uz_Latn_UZ" => "Uzbek (Latin, Uzbekistan)","vai" => "Vai","vai_Latn" => "Vai (Latin)","vai_Latn_LR" => "Vai (Latin, Liberia)","vai_Vaii" => "Vai (Vai)","vai_Vaii_LR" => "Vai (Vai, Liberia)","vi" => "Vietnamese","vi_VN" => "Vietnamese (Vietnam)","vun" => "Vunjo","vun_TZ" => "Vunjo (Tanzania)","wae" => "Walser","wae_CH" => "Walser (Switzerland)","xog" => "Soga","xog_UG" => "Soga (Uganda)","yav" => "Yangben","yav_CM" => "Yangben (Cameroon)","yi" => "Yiddish","yi_001" => "Yiddish (World)","yo" => "Yoruba","yo_BJ" => "Yoruba (Benin)","yo_NG" => "Yoruba (Nigeria)","zgh" => "Standard Moroccan Tamazight","zgh_MA" => "Standard Moroccan Tamazight (Morocco)","zh" => "Chinese","zh_Hans" => "Chinese (Simplified)","zh_Hans_CN" => "Chinese (Simplified, China)","zh_Hans_HK" => "Chinese (Simplified, Hong Kong SAR China)","zh_Hans_MO" => "Chinese (Simplified, Macau SAR China)","zh_Hans_SG" => "Chinese (Simplified, Singapore)","zh_Hant" => "Chinese (Traditional)","zh_Hant_HK" => "Chinese (Traditional, Hong Kong SAR China)","zh_Hant_MO" => "Chinese (Traditional, Macau SAR China)","zh_Hant_TW" => "Chinese (Traditional, Taiwan)","zu" => "Zulu","zu_ZA" => "Zulu (South Africa)"
90
+ },
91
+
92
+ RunLoop::Version.new("8.0") => {
93
+ "af" => "Afrikaans","af_NA" => "Afrikaans (Namibia)","af_ZA" => "Afrikaans (South Africa)","agq" => "Aghem","agq_CM" => "Aghem (Cameroon)","ak" => "Akan","ak_GH" => "Akan (Ghana)","am" => "Amharic","am_ET" => "Amharic (Ethiopia)","ar" => "Arabic","ar_001" => "Arabic (World)","ar_AE" => "Arabic (United Arab Emirates)","ar_BH" => "Arabic (Bahrain)","ar_DJ" => "Arabic (Djibouti)","ar_DZ" => "Arabic (Algeria)","ar_EG" => "Arabic (Egypt)","ar_EH" => "Arabic (Western Sahara)","ar_ER" => "Arabic (Eritrea)","ar_IL" => "Arabic (Israel)","ar_IQ" => "Arabic (Iraq)","ar_JO" => "Arabic (Jordan)","ar_KM" => "Arabic (Comoros)","ar_KW" => "Arabic (Kuwait)","ar_LB" => "Arabic (Lebanon)","ar_LY" => "Arabic (Libya)","ar_MA" => "Arabic (Morocco)","ar_MR" => "Arabic (Mauritania)","ar_OM" => "Arabic (Oman)","ar_PS" => "Arabic (Palestinian Territories)","ar_QA" => "Arabic (Qatar)","ar_SA" => "Arabic (Saudi Arabia)","ar_SD" => "Arabic (Sudan)","ar_SO" => "Arabic (Somalia)","ar_SS" => "Arabic (South Sudan)","ar_SY" => "Arabic (Syria)","ar_TD" => "Arabic (Chad)","ar_TN" => "Arabic (Tunisia)","ar_YE" => "Arabic (Yemen)","as" => "Assamese","as_IN" => "Assamese (India)","asa" => "Asu","asa_TZ" => "Asu (Tanzania)","az" => "Azerbaijani","az_Cyrl" => "Azerbaijani (Cyrillic)","az_Cyrl_AZ" => "Azerbaijani (Cyrillic, Azerbaijan)","az_Latn" => "Azerbaijani (Latin)","az_Latn_AZ" => "Azerbaijani (Latin, Azerbaijan)","bas" => "Basaa","bas_CM" => "Basaa (Cameroon)","be" => "Belarusian","be_BY" => "Belarusian (Belarus)","bem" => "Bemba","bem_ZM" => "Bemba (Zambia)","bez" => "Bena","bez_TZ" => "Bena (Tanzania)","bg" => "Bulgarian","bg_BG" => "Bulgarian (Bulgaria)","bm" => "Bambara","bm_ML" => "Bambara (Mali)","bn" => "Bengali","bn_BD" => "Bengali (Bangladesh)","bn_IN" => "Bengali (India)","bo" => "Tibetan","bo_CN" => "Tibetan (China)","bo_IN" => "Tibetan (India)","br" => "Breton","br_FR" => "Breton (France)","brx" => "Bodo","brx_IN" => "Bodo (India)","bs" => "Bosnian","bs_Cyrl" => "Bosnian (Cyrillic)","bs_Cyrl_BA" => "Bosnian (Cyrillic, Bosnia and Herzegovina)","bs_Latn" => "Bosnian (Latin)","bs_Latn_BA" => "Bosnian (Latin, Bosnia and Herzegovina)","ca" => "Catalan","ca_AD" => "Catalan (Andorra)","ca_ES" => "Catalan (Spain)","ca_FR" => "Catalan (France)","ca_IT" => "Catalan (Italy)","cgg" => "Chiga","cgg_UG" => "Chiga (Uganda)","chr" => "Cherokee","chr_US" => "Cherokee (United States)","ckb" => "Sorani Kurdish","cs" => "Czech","cs_CZ" => "Czech (Czech Republic)","cy" => "Welsh","cy_GB" => "Welsh (United Kingdom)","da" => "Danish","da_DK" => "Danish (Denmark)","da_GL" => "Danish (Greenland)","dav" => "Taita","dav_KE" => "Taita (Kenya)","de" => "German","de_AT" => "German (Austria)","de_BE" => "German (Belgium)","de_CH" => "German (Switzerland)","de_DE" => "German (Germany)","de_LI" => "German (Liechtenstein)","de_LU" => "German (Luxembourg)","dje" => "Zarma","dje_NE" => "Zarma (Niger)","dua" => "Duala","dua_CM" => "Duala (Cameroon)","dyo" => "Jola-Fonyi","dyo_SN" => "Jola-Fonyi (Senegal)","dz" => "Dzongkha","dz_BT" => "Dzongkha (Bhutan)","ebu" => "Embu","ebu_KE" => "Embu (Kenya)","ee" => "Ewe","ee_GH" => "Ewe (Ghana)","ee_TG" => "Ewe (Togo)","el" => "Greek","el_CY" => "Greek (Cyprus)","el_GR" => "Greek (Greece)","en" => "English","en_001" => "English (World)","en_150" => "English (Europe)","en_AD" => "English (Andorra)","en_AG" => "English (Antigua and Barbuda)","en_AI" => "English (Anguilla)","en_AL" => "English (Albania)","en_AS" => "English (American Samoa)","en_AT" => "English (Austria)","en_AU" => "English (Australia)","en_BA" => "English (Bosnia and Herzegovina)","en_BB" => "English (Barbados)","en_BE" => "English (Belgium)","en_BM" => "English (Bermuda)","en_BS" => "English (Bahamas)","en_BW" => "English (Botswana)","en_BZ" => "English (Belize)","en_CA" => "English (Canada)","en_CC" => "English (Cocos [Keeling] Islands)","en_CH" => "English (Switzerland)","en_CK" => "English (Cook Islands)","en_CM" => "English (Cameroon)","en_CX" => "English (Christmas Island)","en_CY" => "English (Cyprus)","en_CZ" => "English (Czech Republic)","en_DE" => "English (Germany)","en_DG" => "English (Diego Garcia)","en_DK" => "English (Denmark)","en_DM" => "English (Dominica)","en_EE" => "English (Estonia)","en_ER" => "English (Eritrea)","en_ES" => "English (Spain)","en_FI" => "English (Finland)","en_FJ" => "English (Fiji)","en_FK" => "English (Falkland Islands)","en_FM" => "English (Micronesia)","en_FR" => "English (France)","en_GB" => "English (United Kingdom)","en_GD" => "English (Grenada)","en_GG" => "English (Guernsey)","en_GH" => "English (Ghana)","en_GI" => "English (Gibraltar)","en_GM" => "English (Gambia)","en_GU" => "English (Guam)","en_GY" => "English (Guyana)","en_HK" => "English (Hong Kong SAR China)","en_HR" => "English (Croatia)","en_HU" => "English (Hungary)","en_IE" => "English (Ireland)","en_IM" => "English (Isle of Man)","en_IN" => "English (India)","en_IO" => "English (British Indian Ocean Territory)","en_IS" => "English (Iceland)","en_IT" => "English (Italy)","en_JE" => "English (Jersey)","en_JM" => "English (Jamaica)","en_KE" => "English (Kenya)","en_KI" => "English (Kiribati)","en_KN" => "English (Saint Kitts and Nevis)","en_KY" => "English (Cayman Islands)","en_LC" => "English (Saint Lucia)","en_LR" => "English (Liberia)","en_LS" => "English (Lesotho)","en_LT" => "English (Lithuania)","en_LU" => "English (Luxembourg)","en_LV" => "English (Latvia)","en_ME" => "English (Montenegro)","en_MG" => "English (Madagascar)","en_MH" => "English (Marshall Islands)","en_MO" => "English (Macau SAR China)","en_MP" => "English (Northern Mariana Islands)","en_MS" => "English (Montserrat)","en_MT" => "English (Malta)","en_MU" => "English (Mauritius)","en_MW" => "English (Malawi)","en_NA" => "English (Namibia)","en_NF" => "English (Norfolk Island)","en_NG" => "English (Nigeria)","en_NL" => "English (Netherlands)","en_NO" => "English (Norway)","en_NR" => "English (Nauru)","en_NU" => "English (Niue)","en_NZ" => "English (New Zealand)","en_PG" => "English (Papua New Guinea)","en_PH" => "English (Philippines)","en_PK" => "English (Pakistan)","en_PL" => "English (Poland)","en_PN" => "English (Pitcairn Islands)","en_PR" => "English (Puerto Rico)","en_PT" => "English (Portugal)","en_PW" => "English (Palau)","en_RO" => "English (Romania)","en_RU" => "English (Russia)","en_RW" => "English (Rwanda)","en_SB" => "English (Solomon Islands)","en_SC" => "English (Seychelles)","en_SD" => "English (Sudan)","en_SE" => "English (Sweden)","en_SG" => "English (Singapore)","en_SH" => "English (Saint Helena)","en_SI" => "English (Slovenia)","en_SK" => "English (Slovakia)","en_SL" => "English (Sierra Leone)","en_SS" => "English (South Sudan)","en_SX" => "English (Sint Maarten)","en_SZ" => "English (Swaziland)","en_TC" => "English (Turks and Caicos Islands)","en_TK" => "English (Tokelau)","en_TO" => "English (Tonga)","en_TR" => "English (Turkey)","en_TT" => "English (Trinidad and Tobago)","en_TV" => "English (Tuvalu)","en_TZ" => "English (Tanzania)","en_UG" => "English (Uganda)","en_UM" => "English (U.S. Outlying Islands)","en_US" => "English (United States)","en_US_POSIX" => "English (United States, Computer)","en_VC" => "English (St. Vincent & Grenadines)","en_VG" => "English (British Virgin Islands)","en_VI" => "English (U.S. Virgin Islands)","en_VU" => "English (Vanuatu)","en_WS" => "English (Samoa)","en_ZA" => "English (South Africa)","en_ZM" => "English (Zambia)","en_ZW" => "English (Zimbabwe)","eo" => "Esperanto","es" => "Spanish","es_419" => "Spanish (Latin America)","es_AR" => "Spanish (Argentina)","es_BO" => "Spanish (Bolivia)","es_CL" => "Spanish (Chile)","es_CO" => "Spanish (Colombia)","es_CR" => "Spanish (Costa Rica)","es_CU" => "Spanish (Cuba)","es_DO" => "Spanish (Dominican Republic)","es_EA" => "Spanish (Ceuta and Melilla)","es_EC" => "Spanish (Ecuador)","es_ES" => "Spanish (Spain)","es_GQ" => "Spanish (Equatorial Guinea)","es_GT" => "Spanish (Guatemala)","es_HN" => "Spanish (Honduras)","es_IC" => "Spanish (Canary Islands)","es_MX" => "Spanish (Mexico)","es_NI" => "Spanish (Nicaragua)","es_PA" => "Spanish (Panama)","es_PE" => "Spanish (Peru)","es_PH" => "Spanish (Philippines)","es_PR" => "Spanish (Puerto Rico)","es_PY" => "Spanish (Paraguay)","es_SV" => "Spanish (El Salvador)","es_US" => "Spanish (United States)","es_UY" => "Spanish (Uruguay)","es_VE" => "Spanish (Venezuela)","et" => "Estonian","et_EE" => "Estonian (Estonia)","eu" => "Basque","eu_ES" => "Basque (Spain)","ewo" => "Ewondo","ewo_CM" => "Ewondo (Cameroon)","fa" => "Persian","fa_AF" => "Persian (Afghanistan)","fa_IR" => "Persian (Iran)","ff" => "Fulah","ff_SN" => "Fulah (Senegal)","fi" => "Finnish","fi_FI" => "Finnish (Finland)","fil" => "Filipino","fil_PH" => "Filipino (Philippines)","fo" => "Faroese","fo_FO" => "Faroese (Faroe Islands)","fr" => "French","fr_BE" => "French (Belgium)","fr_BF" => "French (Burkina Faso)","fr_BI" => "French (Burundi)","fr_BJ" => "French (Benin)","fr_BL" => "French (Saint Barthélemy)","fr_CA" => "French (Canada)","fr_CD" => "French (Congo - Kinshasa)","fr_CF" => "French (Central African Republic)","fr_CG" => "French (Congo - Brazzaville)","fr_CH" => "French (Switzerland)","fr_CI" => "French (Côte d’Ivoire)","fr_CM" => "French (Cameroon)","fr_DJ" => "French (Djibouti)","fr_DZ" => "French (Algeria)","fr_FR" => "French (France)","fr_GA" => "French (Gabon)","fr_GF" => "French (French Guiana)","fr_GN" => "French (Guinea)","fr_GP" => "French (Guadeloupe)","fr_GQ" => "French (Equatorial Guinea)","fr_HT" => "French (Haiti)","fr_KM" => "French (Comoros)","fr_LU" => "French (Luxembourg)","fr_MA" => "French (Morocco)","fr_MC" => "French (Monaco)","fr_MF" => "French (Saint Martin)","fr_MG" => "French (Madagascar)","fr_ML" => "French (Mali)","fr_MQ" => "French (Martinique)","fr_MR" => "French (Mauritania)","fr_MU" => "French (Mauritius)","fr_NC" => "French (New Caledonia)","fr_NE" => "French (Niger)","fr_PF" => "French (French Polynesia)","fr_PM" => "French (Saint Pierre and Miquelon)","fr_RE" => "French (Réunion)","fr_RW" => "French (Rwanda)","fr_SC" => "French (Seychelles)","fr_SN" => "French (Senegal)","fr_SY" => "French (Syria)","fr_TD" => "French (Chad)","fr_TG" => "French (Togo)","fr_TN" => "French (Tunisia)","fr_VU" => "French (Vanuatu)","fr_WF" => "French (Wallis and Futuna)","fr_YT" => "French (Mayotte)","ga" => "Irish","ga_IE" => "Irish (Ireland)","gl" => "Galician","gl_ES" => "Galician (Spain)","gsw" => "Swiss German","gsw_CH" => "Swiss German (Switzerland)","gsw_LI" => "Swiss German (Liechtenstein)","gu" => "Gujarati","gu_IN" => "Gujarati (India)","guz" => "Gusii","guz_KE" => "Gusii (Kenya)","gv" => "Manx","gv_IM" => "Manx (Isle of Man)","ha" => "Hausa","ha_Latn" => "Hausa (Latin)","ha_Latn_GH" => "Hausa (Latin, Ghana)","ha_Latn_NE" => "Hausa (Latin, Niger)","ha_Latn_NG" => "Hausa (Latin, Nigeria)","haw" => "Hawaiian","haw_US" => "Hawaiian (United States)","he" => "Hebrew","he_IL" => "Hebrew (Israel)","hi" => "Hindi","hi_IN" => "Hindi (India)","hr" => "Croatian","hr_BA" => "Croatian (Bosnia and Herzegovina)","hr_HR" => "Croatian (Croatia)","hu" => "Hungarian","hu_HU" => "Hungarian (Hungary)","hy" => "Armenian","hy_AM" => "Armenian (Armenia)","id" => "Indonesian","id_ID" => "Indonesian (Indonesia)","ig" => "Igbo","ig_NG" => "Igbo (Nigeria)","ii" => "Sichuan Yi","ii_CN" => "Sichuan Yi (China)","is" => "Icelandic","is_IS" => "Icelandic (Iceland)","it" => "Italian","it_CH" => "Italian (Switzerland)","it_IT" => "Italian (Italy)","it_SM" => "Italian (San Marino)","iu" => "Inuktitut","iu_Cans" => "Inuktitut (Unified Canadian Aboriginal Syllabics)","iu_Cans_CA" => "Inuktitut (Unified Canadian Aboriginal Syllabics, Canada)","ja" => "Japanese","ja_JP" => "Japanese (Japan)","jgo" => "Ngomba","jgo_CM" => "Ngomba (Cameroon)","jmc" => "Machame","jmc_TZ" => "Machame (Tanzania)","ka" => "Georgian","ka_GE" => "Georgian (Georgia)","kab" => "Kabyle","kab_DZ" => "Kabyle (Algeria)","kam" => "Kamba","kam_KE" => "Kamba (Kenya)","kde" => "Makonde","kde_TZ" => "Makonde (Tanzania)","kea" => "Kabuverdianu","kea_CV" => "Kabuverdianu (Cape Verde)","khq" => "Koyra Chiini","khq_ML" => "Koyra Chiini (Mali)","ki" => "Kikuyu","ki_KE" => "Kikuyu (Kenya)","kk" => "Kazakh","kk_Cyrl" => "Kazakh (Cyrillic)","kk_Cyrl_KZ" => "Kazakh (Cyrillic, Kazakhstan)","kkj" => "Kako","kkj_CM" => "Kako (Cameroon)","kl" => "Kalaallisut","kl_GL" => "Kalaallisut (Greenland)","kln" => "Kalenjin","kln_KE" => "Kalenjin (Kenya)","km" => "Khmer","km_KH" => "Khmer (Cambodia)","kn" => "Kannada","kn_IN" => "Kannada (India)","ko" => "Korean","ko_KP" => "Korean (North Korea)","ko_KR" => "Korean (South Korea)","kok" => "Konkani","kok_IN" => "Konkani (India)","ks" => "Kashmiri","ks_Arab" => "Kashmiri (Arabic)","ks_Arab_IN" => "Kashmiri (Arabic, India)","ksb" => "Shambala","ksb_TZ" => "Shambala (Tanzania)","ksf" => "Bafia","ksf_CM" => "Bafia (Cameroon)","kw" => "Cornish","kw_GB" => "Cornish (United Kingdom)","ky" => "Kyrgyz","ky_Cyrl" => "Kyrgyz (Cyrillic)","ky_Cyrl_KG" => "Kyrgyz (Cyrillic, Kyrgyzstan)","lag" => "Langi","lag_TZ" => "Langi (Tanzania)","lg" => "Ganda","lg_UG" => "Ganda (Uganda)","lkt" => "Lakota","lkt_US" => "Lakota (United States)","ln" => "Lingala","ln_AO" => "Lingala (Angola)","ln_CD" => "Lingala (Congo - Kinshasa)","ln_CF" => "Lingala (Central African Republic)","ln_CG" => "Lingala (Congo - Brazzaville)","lo" => "Lao","lo_LA" => "Lao (Laos)","lt" => "Lithuanian","lt_LT" => "Lithuanian (Lithuania)","lu" => "Luba-Katanga","lu_CD" => "Luba-Katanga (Congo - Kinshasa)","luo" => "Luo","luo_KE" => "Luo (Kenya)","luy" => "Luyia","luy_KE" => "Luyia (Kenya)","lv" => "Latvian","lv_LV" => "Latvian (Latvia)","mas" => "Masai","mas_KE" => "Masai (Kenya)","mas_TZ" => "Masai (Tanzania)","mer" => "Meru","mer_KE" => "Meru (Kenya)","mfe" => "Morisyen","mfe_MU" => "Morisyen (Mauritius)","mg" => "Malagasy","mg_MG" => "Malagasy (Madagascar)","mgh" => "Makhuwa-Meetto","mgh_MZ" => "Makhuwa-Meetto (Mozambique)","mgo" => "Meta'","mgo_CM" => "Meta' (Cameroon)","mk" => "Macedonian","mk_MK" => "Macedonian (Macedonia)","ml" => "Malayalam","ml_IN" => "Malayalam (India)","mn" => "Mongolian","mn_Cyrl" => "Mongolian (Cyrillic)","mn_Cyrl_MN" => "Mongolian (Cyrillic, Mongolia)","mr" => "Marathi","mr_IN" => "Marathi (India)","ms" => "Malay","ms_Arab" => "Malay (Arabic)","ms_Arab_BN" => "Malay (Arabic, Brunei)","ms_Arab_MY" => "Malay (Arabic, Malaysia)","ms_Latn" => "Malay (Latin)","ms_Latn_BN" => "Malay (Latin, Brunei)","ms_Latn_MY" => "Malay (Latin, Malaysia)","ms_Latn_SG" => "Malay (Latin, Singapore)","mt" => "Maltese","mt_MT" => "Maltese (Malta)","mua" => "Mundang","mua_CM" => "Mundang (Cameroon)","my" => "Burmese","my_MM" => "Burmese (Myanmar [Burma])","naq" => "Nama","naq_NA" => "Nama (Namibia)","nb" => "Norwegian Bokmål","nb_NO" => "Norwegian Bokmål (Norway)","nb_SJ" => "Norwegian Bokmål (Svalbard and Jan Mayen)","nd" => "North Ndebele","nd_ZW" => "North Ndebele (Zimbabwe)","ne" => "Nepali","ne_IN" => "Nepali (India)","ne_NP" => "Nepali (Nepal)","nl" => "Dutch","nl_AW" => "Dutch (Aruba)","nl_BE" => "Dutch (Belgium)","nl_BQ" => "Dutch (Caribbean Netherlands)","nl_CW" => "Dutch (Curaçao)","nl_NL" => "Dutch (Netherlands)","nl_SR" => "Dutch (Suriname)","nl_SX" => "Dutch (Sint Maarten)","nmg" => "Kwasio","nmg_CM" => "Kwasio (Cameroon)","nn" => "Norwegian Nynorsk","nn_NO" => "Norwegian Nynorsk (Norway)","nnh" => "Ngiemboon","nnh_CM" => "Ngiemboon (Cameroon)","nus" => "Nuer","nus_SD" => "Nuer (Sudan)","nyn" => "Nyankole","nyn_UG" => "Nyankole (Uganda)","om" => "Oromo","om_ET" => "Oromo (Ethiopia)","om_KE" => "Oromo (Kenya)","or" => "Oriya","or_IN" => "Oriya (India)","pa" => "Punjabi","pa_Arab" => "Punjabi (Arabic)","pa_Arab_PK" => "Punjabi (Arabic, Pakistan)","pa_Guru" => "Punjabi (Gurmukhi)","pa_Guru_IN" => "Punjabi (Gurmukhi, India)","pl" => "Polish","pl_PL" => "Polish (Poland)","ps" => "Pashto","ps_AF" => "Pashto (Afghanistan)","pt" => "Portuguese","pt_AO" => "Portuguese (Angola)","pt_BR" => "Portuguese (Brazil)","pt_CV" => "Portuguese (Cape Verde)","pt_GW" => "Portuguese (Guinea-Bissau)","pt_MO" => "Portuguese (Macau SAR China)","pt_MZ" => "Portuguese (Mozambique)","pt_PT" => "Portuguese (Portugal)","pt_ST" => "Portuguese (São Tomé and Príncipe)","pt_TL" => "Portuguese (Timor-Leste)","rm" => "Romansh","rm_CH" => "Romansh (Switzerland)","rn" => "Rundi","rn_BI" => "Rundi (Burundi)","ro" => "Romanian","ro_MD" => "Romanian (Moldova)","ro_RO" => "Romanian (Romania)","rof" => "Rombo","rof_TZ" => "Rombo (Tanzania)","ru" => "Russian","ru_BY" => "Russian (Belarus)","ru_KG" => "Russian (Kyrgyzstan)","ru_KZ" => "Russian (Kazakhstan)","ru_MD" => "Russian (Moldova)","ru_RU" => "Russian (Russia)","ru_UA" => "Russian (Ukraine)","rw" => "Kinyarwanda","rw_RW" => "Kinyarwanda (Rwanda)","rwk" => "Rwa","rwk_TZ" => "Rwa (Tanzania)","saq" => "Samburu","saq_KE" => "Samburu (Kenya)","sbp" => "Sangu","sbp_TZ" => "Sangu (Tanzania)","seh" => "Sena","seh_MZ" => "Sena (Mozambique)","ses" => "Koyraboro Senni","ses_ML" => "Koyraboro Senni (Mali)","sg" => "Sango","sg_CF" => "Sango (Central African Republic)","shi" => "Tachelhit","shi_Latn" => "Tachelhit (Latin)","shi_Latn_MA" => "Tachelhit (Latin, Morocco)","shi_Tfng" => "Tachelhit (Tifinagh)","shi_Tfng_MA" => "Tachelhit (Tifinagh, Morocco)","si" => "Sinhala","si_LK" => "Sinhala (Sri Lanka)","sk" => "Slovak","sk_SK" => "Slovak (Slovakia)","sl" => "Slovenian","sl_SI" => "Slovenian (Slovenia)","sn" => "Shona","sn_ZW" => "Shona (Zimbabwe)","so" => "Somali","so_DJ" => "Somali (Djibouti)","so_ET" => "Somali (Ethiopia)","so_KE" => "Somali (Kenya)","so_SO" => "Somali (Somalia)","sq" => "Albanian","sq_AL" => "Albanian (Albania)","sq_MK" => "Albanian (Macedonia)","sq_XK" => "Albanian (Kosovo)","sr" => "Serbian","sr_Cyrl" => "Serbian (Cyrillic)","sr_Cyrl_BA" => "Serbian (Cyrillic, Bosnia and Herzegovina)","sr_Cyrl_ME" => "Serbian (Cyrillic, Montenegro)","sr_Cyrl_RS" => "Serbian (Cyrillic, Serbia)","sr_Cyrl_XK" => "Serbian (Cyrillic, Kosovo)","sr_Latn" => "Serbian (Latin)","sr_Latn_BA" => "Serbian (Latin, Bosnia and Herzegovina)","sr_Latn_ME" => "Serbian (Latin, Montenegro)","sr_Latn_RS" => "Serbian (Latin, Serbia)","sr_Latn_XK" => "Serbian (Latin, Kosovo)","sv" => "Swedish","sv_AX" => "Swedish (Åland Islands)","sv_FI" => "Swedish (Finland)","sv_SE" => "Swedish (Sweden)","sw" => "Swahili","sw_KE" => "Swahili (Kenya)","sw_TZ" => "Swahili (Tanzania)","sw_UG" => "Swahili (Uganda)","swc" => "Congo Swahili","swc_CD" => "Congo Swahili (Congo - Kinshasa)","ta" => "Tamil","ta_IN" => "Tamil (India)","ta_LK" => "Tamil (Sri Lanka)","ta_MY" => "Tamil (Malaysia)","ta_SG" => "Tamil (Singapore)","te" => "Telugu","te_IN" => "Telugu (India)","teo" => "Teso","teo_KE" => "Teso (Kenya)","teo_UG" => "Teso (Uganda)","tg" => "Tajik","tg_Cyrl" => "Tajik (Cyrillic)","tg_Cyrl_TJ" => "Tajik (Cyrillic, Tajikistan)","th" => "Thai","th_TH" => "Thai (Thailand)","ti" => "Tigrinya","ti_ER" => "Tigrinya (Eritrea)","ti_ET" => "Tigrinya (Ethiopia)","tk" => "Turkmen","tk_Latn" => "Turkmen (Latin)","tk_Latn_TM" => "Turkmen (Latin, Turkmenistan)","to" => "Tongan","to_TO" => "Tongan (Tonga)","tr" => "Turkish","tr_CY" => "Turkish (Cyprus)","tr_TR" => "Turkish (Turkey)","twq" => "Tasawaq","twq_NE" => "Tasawaq (Niger)","tzm" => "Central Atlas Tamazight","tzm_Latn" => "Central Atlas Tamazight (Latin)","tzm_Latn_MA" => "Central Atlas Tamazight (Latin, Morocco)","ug" => "Uyghur","ug_Arab" => "Uyghur (Arabic)","ug_Arab_CN" => "Uyghur (Arabic, China)","uk" => "Ukrainian","uk_UA" => "Ukrainian (Ukraine)","ur" => "Urdu","ur_IN" => "Urdu (India)","ur_PK" => "Urdu (Pakistan)","uz" => "Uzbek","uz_Arab" => "Uzbek (Arabic)","uz_Arab_AF" => "Uzbek (Arabic, Afghanistan)","uz_Cyrl" => "Uzbek (Cyrillic)","uz_Cyrl_UZ" => "Uzbek (Cyrillic, Uzbekistan)","uz_Latn" => "Uzbek (Latin)","uz_Latn_UZ" => "Uzbek (Latin, Uzbekistan)","vai" => "Vai","vai_Latn" => "Vai (Latin)","vai_Latn_LR" => "Vai (Latin, Liberia)","vai_Vaii" => "Vai (Vai)","vai_Vaii_LR" => "Vai (Vai, Liberia)","vi" => "Vietnamese","vi_VN" => "Vietnamese (Vietnam)","vun" => "Vunjo","vun_TZ" => "Vunjo (Tanzania)","xog" => "Soga","xog_UG" => "Soga (Uganda)","yav" => "Yangben","yav_CM" => "Yangben (Cameroon)","yo" => "Yoruba","yo_BJ" => "Yoruba (Benin)","yo_NG" => "Yoruba (Nigeria)","zgh" => "Standard Moroccan Tamazight","zgh_MA" => "Standard Moroccan Tamazight (Morocco)","zh" => "Chinese","zh_Hans" => "Chinese (Simplified)","zh_Hans_CN" => "Chinese (Simplified, China)","zh_Hans_HK" => "Chinese (Simplified, Hong Kong SAR China)","zh_Hans_MO" => "Chinese (Simplified, Macau SAR China)","zh_Hans_SG" => "Chinese (Simplified, Singapore)","zh_Hant" => "Chinese (Traditional)","zh_Hant_HK" => "Chinese (Traditional, Hong Kong SAR China)","zh_Hant_MO" => "Chinese (Traditional, Macau SAR China)","zh_Hant_TW" => "Chinese (Traditional, Taiwan)","zu" => "Zulu","zu_ZA" => "Zulu (South Africa)"
94
+ }
95
+ }.freeze
96
+ end
97
+ end
98
+
@@ -2,21 +2,25 @@ require 'erb'
2
2
 
3
3
  module RunLoop
4
4
 
5
- # class to break up javascript templates in to reusable chunks
5
+ # @!visibility private
6
+ # Class to break up javascript templates in to reusable chunks
6
7
  class UIAScriptTemplate < ERB
8
+
9
+ # @!visibility private
7
10
  def initialize(template_root, template_relative_path)
8
11
  @template_root = template_root
9
- @template = File.read(File.join(@template_root, template_relative_path))
12
+ @template = File.read(File.join(@template_root, template_relative_path)).force_encoding("utf-8")
10
13
  super(@template)
11
14
  end
12
15
 
16
+ # @!visibility private
13
17
  def render_template(template_relative_path)
14
- return UIAScriptTemplate.new(@template_root, template_relative_path).result
18
+ UIAScriptTemplate.new(@template_root, template_relative_path).result
15
19
  end
16
20
 
21
+ # @!visibility private
17
22
  def result
18
23
  super(binding)
19
24
  end
20
25
  end
21
-
22
26
  end
@@ -1,5 +1,5 @@
1
1
  module RunLoop
2
- VERSION = "2.0.3"
2
+ VERSION = "2.0.4"
3
3
 
4
4
  # A model of a software release version that can be used to compare two versions.
5
5
  #
@@ -24,10 +24,18 @@ module RunLoop
24
24
  to_s
25
25
  end
26
26
 
27
- # Returns a version instance for `Xcode 7.1`; used to check for the
27
+ # Returns a version instance for `Xcode 7.3`; used to check for the
28
28
  # availability of features and paths to various items on the filesystem.
29
29
  #
30
- # @return [RunLoop::Version] 7.1
30
+ # @return [RunLoop::Version] 7.3
31
+ def v73
32
+ fetch_version(:v73)
33
+ end
34
+
35
+ # Returns a version instance for `Xcode 7.2`; used to check for the
36
+ # availability of features and paths to various items on the filesystem.
37
+ #
38
+ # @return [RunLoop::Version] 7.2
31
39
  def v72
32
40
  fetch_version(:v72)
33
41
  end
@@ -104,9 +112,16 @@ module RunLoop
104
112
  fetch_version(:v50)
105
113
  end
106
114
 
107
- # Is the active Xcode version 7.1 or above?
115
+ # Is the active Xcode version 7.3 or above?
108
116
  #
109
- # @return [Boolean] `true` if the current Xcode version is >= 7.1
117
+ # @return [Boolean] `true` if the current Xcode version is >= 7.3
118
+ def version_gte_73?
119
+ version >= v73
120
+ end
121
+
122
+ # Is the active Xcode version 7.2 or above?
123
+ #
124
+ # @return [Boolean] `true` if the current Xcode version is >= 7.2
110
125
  def version_gte_72?
111
126
  version >= v72
112
127
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: run_loop
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.3
4
+ version: 2.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Karl Krukow
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-07 00:00:00.000000000 Z
11
+ date: 2016-01-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json
@@ -104,20 +104,14 @@ dependencies:
104
104
  name: luffa
105
105
  requirement: !ruby/object:Gem::Requirement
106
106
  requirements:
107
- - - ">="
108
- - !ruby/object:Gem::Version
109
- version: 1.1.0
110
- - - "<"
107
+ - - "~>"
111
108
  - !ruby/object:Gem::Version
112
109
  version: '2.0'
113
110
  type: :development
114
111
  prerelease: false
115
112
  version_requirements: !ruby/object:Gem::Requirement
116
113
  requirements:
117
- - - ">="
118
- - !ruby/object:Gem::Version
119
- version: 1.1.0
120
- - - "<"
114
+ - - "~>"
121
115
  - !ruby/object:Gem::Version
122
116
  version: '2.0'
123
117
  - !ruby/object:Gem::Dependency
@@ -295,8 +289,10 @@ files:
295
289
  - lib/run_loop/instruments.rb
296
290
  - lib/run_loop/ipa.rb
297
291
  - lib/run_loop/l10n.rb
292
+ - lib/run_loop/language.rb
298
293
  - lib/run_loop/lipo.rb
299
294
  - lib/run_loop/lldb.rb
295
+ - lib/run_loop/locale.rb
300
296
  - lib/run_loop/logging.rb
301
297
  - lib/run_loop/patches/awesome_print.rb
302
298
  - lib/run_loop/plist_buddy.rb
@@ -343,7 +339,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
343
339
  version: '0'
344
340
  requirements: []
345
341
  rubyforge_project:
346
- rubygems_version: 2.4.8
342
+ rubygems_version: 2.5.1
347
343
  signing_key:
348
344
  specification_version: 4
349
345
  summary: The bridge between Calabash iOS and Xcode command-line tools like instruments