trip_advisor 0.0.15

Sign up to get free protection for your applications and to get access to all the features.
Files changed (115) hide show
  1. checksums.yaml +7 -0
  2. data/.document +5 -0
  3. data/.gitignore +52 -0
  4. data/.rspec +1 -0
  5. data/.ruby-version +1 -0
  6. data/.travis.yml +5 -0
  7. data/Gemfile +4 -0
  8. data/Gemfile.lock +118 -0
  9. data/LICENSE.txt +20 -0
  10. data/README.md +23 -0
  11. data/Rakefile +7 -0
  12. data/lib/trip_advisor/api.rb +45 -0
  13. data/lib/trip_advisor/build.rb +221 -0
  14. data/lib/trip_advisor/rake_tasks.rb +182 -0
  15. data/lib/trip_advisor/resource_manager.rb +101 -0
  16. data/lib/trip_advisor/strings_file.rb +112 -0
  17. data/lib/trip_advisor/translation.rb +63 -0
  18. data/lib/trip_advisor/translation_tool.rb +110 -0
  19. data/lib/trip_advisor/version.rb +3 -0
  20. data/lib/trip_advisor.rb +5 -0
  21. data/run_tests.sh +6 -0
  22. data/spec/api_spec.rb +34 -0
  23. data/spec/builder_spec.rb +262 -0
  24. data/spec/fixtures/AndroidStrings.txt +21 -0
  25. data/spec/fixtures/Strings.txt +47 -0
  26. data/spec/fixtures/project.git/.gitignore +1 -0
  27. data/spec/fixtures/project.git/BUILD.json +7 -0
  28. data/spec/fixtures/project.git/Code/Project.h +0 -0
  29. data/spec/fixtures/project.git/Code/Project.m +0 -0
  30. data/spec/fixtures/project.git/Gemfile +3 -0
  31. data/spec/fixtures/project.git/Gemfile.lock +38 -0
  32. data/spec/fixtures/project.git/HEAD +1 -0
  33. data/spec/fixtures/project.git/LICENSE +1 -0
  34. data/spec/fixtures/project.git/Podfile +6 -0
  35. data/spec/fixtures/project.git/Podfile.lock +14 -0
  36. data/spec/fixtures/project.git/Project.podspec +14 -0
  37. data/spec/fixtures/project.git/TestProject/Images.xcassets/AppIcon.appiconset/Contents.json +23 -0
  38. data/spec/fixtures/project.git/TestProject/Images.xcassets/LaunchImage.launchimage/Contents.json +23 -0
  39. data/spec/fixtures/project.git/TestProject/TATPAppDelegate.h +15 -0
  40. data/spec/fixtures/project.git/TestProject/TATPAppDelegate.m +49 -0
  41. data/spec/fixtures/project.git/TestProject/TestProject-Info.plist +38 -0
  42. data/spec/fixtures/project.git/TestProject/TestProject-Prefix.pch +16 -0
  43. data/spec/fixtures/project.git/TestProject/en.lproj/InfoPlist.strings +1 -0
  44. data/spec/fixtures/project.git/TestProject/main.m +18 -0
  45. data/spec/fixtures/project.git/TestProject.xcodeproj/project.pbxproj +1020 -0
  46. data/spec/fixtures/project.git/TestProject.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  47. data/spec/fixtures/project.git/TestProject.xcodeproj/project.xcworkspace/xcuserdata/blake.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  48. data/spec/fixtures/project.git/TestProject.xcodeproj/xcuserdata/blake.xcuserdatad/xcschemes/TestProject.xcscheme +96 -0
  49. data/spec/fixtures/project.git/TestProject.xcodeproj/xcuserdata/blake.xcuserdatad/xcschemes/xcschememanagement.plist +27 -0
  50. data/spec/fixtures/project.git/TestProject.xcworkspace/contents.xcworkspacedata +1 -0
  51. data/spec/fixtures/project.git/TestProjectTests/TestProjectTests-Info.plist +22 -0
  52. data/spec/fixtures/project.git/TestProjectTests/TestProjectTests.m +34 -0
  53. data/spec/fixtures/project.git/TestProjectTests/en.lproj/InfoPlist.strings +1 -0
  54. data/spec/fixtures/project.git/VERSION +1 -0
  55. data/spec/fixtures/project.git/config +7 -0
  56. data/spec/fixtures/project.git/description +1 -0
  57. data/spec/fixtures/project.git/index +0 -0
  58. data/spec/fixtures/project.git/info/exclude +6 -0
  59. data/spec/fixtures/project.git/logs/HEAD +1 -0
  60. data/spec/fixtures/project.git/logs/refs/heads/master +1 -0
  61. data/spec/fixtures/project.git/objects/00/a6b3f80ebbe4019f03461416061e8805e6eab1 +0 -0
  62. data/spec/fixtures/project.git/objects/03/c303d5552f29d366d11a13448c3c18e94c3bfa +0 -0
  63. data/spec/fixtures/project.git/objects/03/ff7c3a95a196ac8ad1d53db2bd4fb4c80507c1 +0 -0
  64. data/spec/fixtures/project.git/objects/0a/7123364a174ffda52d29a18cdd31fd325bbd6c +0 -0
  65. data/spec/fixtures/project.git/objects/0d/183cba8b0a5e477ea1d001130c222af19b8324 +0 -0
  66. data/spec/fixtures/project.git/objects/0e/6ba5232c3c2f8a7e435794e845b5dc9f339d8b +0 -0
  67. data/spec/fixtures/project.git/objects/25/5b4ee687ed1337cffb10e6d07bb89ee6e5d180 +0 -0
  68. data/spec/fixtures/project.git/objects/25/60a2b9ab9323ca61a0fdebd3b4af46dbe4c272 +0 -0
  69. data/spec/fixtures/project.git/objects/2b/f8bd93d56787a7548c7f8960a94f05c269b486 +0 -0
  70. data/spec/fixtures/project.git/objects/38/439105a884d2556443c7b5c645034e67fb7987 +0 -0
  71. data/spec/fixtures/project.git/objects/3e/efcb9dd5b38e2c1dc061052455dd97bcd51e6c +0 -0
  72. data/spec/fixtures/project.git/objects/53/8b3019ab68814604fbc8e017d09b690c22728c +0 -0
  73. data/spec/fixtures/project.git/objects/59/c178850684e21fafbebedeff15b2b522402af2 +0 -0
  74. data/spec/fixtures/project.git/objects/62/037867910d9aa803d7e02addc26574e270d3d8 +0 -0
  75. data/spec/fixtures/project.git/objects/66/05c1af131470a3b635d166f2591917b32f3b82 +0 -0
  76. data/spec/fixtures/project.git/objects/69/67e396037a52d8300eb9dc8a1e9f7155dd55bf +0 -0
  77. data/spec/fixtures/project.git/objects/6b/5ad4043aee9bc0936466760665f870d4f2f40f +0 -0
  78. data/spec/fixtures/project.git/objects/6c/fc746d4ecf2e3ac67bb0cf6c4013e1aff9b1f1 +0 -0
  79. data/spec/fixtures/project.git/objects/6f/3b0ab36651ca648408c176f81e4b2e202efa0b +0 -0
  80. data/spec/fixtures/project.git/objects/74/3435c9bee5c433fe166891e698fdc70d81a3de +0 -0
  81. data/spec/fixtures/project.git/objects/96/81bfb8ec019f74df384cfb66d68e94bd6d9005 +0 -0
  82. data/spec/fixtures/project.git/objects/99/fa9259e929fe3bee4791ff2a63070fc0358c0a +3 -0
  83. data/spec/fixtures/project.git/objects/a1/5f8980cfbf126a9a0b3ddf7fb1c3fbd6480934 +2 -0
  84. data/spec/fixtures/project.git/objects/a3/96706db4ec4cfca4d984d38b90dc8098bded40 +1 -0
  85. data/spec/fixtures/project.git/objects/b4/42134ccda2b0b1813288e7e04a401a4bef2b59 +0 -0
  86. data/spec/fixtures/project.git/objects/b9/2732c79e00cf2fad5ceceb61bbc7a9a9739d2c +0 -0
  87. data/spec/fixtures/project.git/objects/ba/01f5352549018dfdb95423b9e0974443ec0346 +1 -0
  88. data/spec/fixtures/project.git/objects/ba/8dd7d2162334426facd310f62ed923eb6f4cf5 +0 -0
  89. data/spec/fixtures/project.git/objects/bf/422763a0101a5971e15d53581acb825b4d38b8 +0 -0
  90. data/spec/fixtures/project.git/objects/c7/9ebd3ada1309bae694b8e6760592b1254e035c +2 -0
  91. data/spec/fixtures/project.git/objects/ca/7ced48ee61e517fc57576a33dc9d95f5d4f539 +2 -0
  92. data/spec/fixtures/project.git/objects/ce/eed5f059b6d374d08e0b1e732463842b3a5a91 +0 -0
  93. data/spec/fixtures/project.git/objects/d7/89fd591fee7d26c2f40c6614b5a91931377f88 +0 -0
  94. data/spec/fixtures/project.git/objects/d8/ec4dbb2804f53fd863cd0adb830c5bf4e85a1d +0 -0
  95. data/spec/fixtures/project.git/objects/dc/680e07f12748657d5a798495f08ce3ad884f0b +0 -0
  96. data/spec/fixtures/project.git/objects/de/de871ad5691708aca809557a823082a70dde69 +0 -0
  97. data/spec/fixtures/project.git/objects/e0/30730e56be52e4dc293c829f73e0c586073ad2 +0 -0
  98. data/spec/fixtures/project.git/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 +0 -0
  99. data/spec/fixtures/project.git/objects/e6/f7f8a92eb3177d10a809b96f41905e9be4cc2b +0 -0
  100. data/spec/fixtures/project.git/objects/ed/7115c4ae4c1885ee75f6ffe946b559546efd28 +0 -0
  101. data/spec/fixtures/project.git/objects/f1/e01dd1256054d5717ef0c89008f0a22639e273 +2 -0
  102. data/spec/fixtures/project.git/objects/f9/3e9c03a56aba331bcd98cb2ef00ba0003de285 +0 -0
  103. data/spec/fixtures/project.git/refs/heads/master +1 -0
  104. data/spec/fixtures/search.json +14159 -0
  105. data/spec/fixtures/search_results_1-50.html +1076 -0
  106. data/spec/fixtures/search_results_101-110.html +476 -0
  107. data/spec/fixtures/search_results_51-100.html +1076 -0
  108. data/spec/fixtures/translation_details.html +728 -0
  109. data/spec/fixtures/translation_details.json +738 -0
  110. data/spec/spec_helper.rb +28 -0
  111. data/spec/strings_file_spec.rb +225 -0
  112. data/spec/translation_spec.rb +21 -0
  113. data/spec/translation_tool_spec.rb +146 -0
  114. data/trip_advisor.gemspec +38 -0
  115. metadata +474 -0
@@ -0,0 +1,262 @@
1
+ require 'spec_helper'
2
+ require 'trip_advisor/build'
3
+ require 'ostruct'
4
+ require 'fileutils'
5
+
6
+ # Alias out Pod::Spec as an OpenStruct so that we can access its fields
7
+ module Pod
8
+ class Spec < OpenStruct
9
+ def initialize
10
+ super
11
+ yield self if block_given?
12
+ end
13
+ end
14
+ end
15
+
16
+ module BuildHelpers
17
+ def project_path
18
+ File.join(root_path, 'project.git')
19
+ end
20
+ end
21
+
22
+ class TestSpecRepo
23
+ attr_reader :path, :name, :repo
24
+
25
+ def initialize
26
+ @path = Dir.mktmpdir
27
+ @repo = Rugged::Repository.init_at(@path, :bare)
28
+ make_initial_commit
29
+ @name = File.basename(path)
30
+ end
31
+
32
+ def url
33
+ "file://#{path}"
34
+ end
35
+
36
+ def user_path
37
+ File.expand_path(File.join("~/.cocoapods/repos", name))
38
+ end
39
+
40
+ private
41
+ def make_initial_commit
42
+ oid = repo.write("This is a test Spec Repository.", :blob)
43
+ index = Rugged::Index.new
44
+ index.add(:path => "README.md", :oid => oid, :mode => 0100644)
45
+
46
+ options = {}
47
+ options[:tree] = index.write_tree(repo)
48
+ options[:author] = { :email => "testuser@github.com", :name => 'Test Author', :time => Time.now }
49
+ options[:committer] = { :email => "testuser@github.com", :name => 'Test Author', :time => Time.now }
50
+ options[:message] = "Making a commit via Rugged!"
51
+ options[:parents] = []
52
+ options[:update_ref] = 'HEAD'
53
+
54
+ Rugged::Commit.create(repo, options)
55
+ end
56
+ end
57
+
58
+ describe TripAdvisor::AdHocBuild do
59
+ include BuildHelpers
60
+
61
+ before(:each) do
62
+ # Initialize a new empty repository to add as a remote
63
+ @remote_dir = Dir.mktmpdir
64
+ Rugged::Repository.init_at(@remote_dir, :bare)
65
+
66
+ # Sync the fixture project into a temporary path to work with
67
+ @project_dir = Dir.mktmpdir
68
+ repo = Rugged::Repository.clone_at(project_path, @project_dir)
69
+ podfile_path = File.join(@project_dir, 'Project.podspec')
70
+ podfile_contents = File.read(podfile_path)
71
+ podfile_contents.gsub!('$GIT_URL', "file://#{@remote_dir}")
72
+ File.open(podfile_path, 'w') { |f| f << podfile_contents }
73
+
74
+ # Configure the project under test
75
+ config = repo.config
76
+ config['user.name'] = 'Project Builder'
77
+ config['user.email'] = 'builder@example.com'
78
+
79
+ # Add the empty repository as a remote on the project under test
80
+ repo = Rugged::Repository.new(@project_dir)
81
+ remote = Rugged::Remote.lookup(repo, 'origin')
82
+ remote.url = @remote_dir
83
+ remote.save
84
+ end
85
+
86
+ after(:each) do
87
+ FileUtils.remove_entry_secure(@project_dir)
88
+ FileUtils.remove_entry_secure(@remote_dir)
89
+ end
90
+
91
+ it "generates build info" do
92
+ build = TripAdvisor::AdHocBuild.new(@project_dir)
93
+ info = build.info
94
+ end
95
+
96
+ it "generates a version based on the release version and timestamp" do
97
+ time = Time.at(1381331500)
98
+ Time.stub(:now).and_return(time)
99
+ build = TripAdvisor::AdHocBuild.new(@project_dir)
100
+ build.version.should == "1.0.0-b20131009151140"
101
+ end
102
+
103
+ it "generates the correct tag name" do
104
+ time = Time.at(1381331500)
105
+ Time.stub(:now).and_return(time)
106
+ build = TripAdvisor::AdHocBuild.new(@project_dir)
107
+ build.tag_name.should == "builds/v1.0.0-b20131009151140"
108
+ end
109
+
110
+ it "has a proper default for remotes" do
111
+ build = TripAdvisor::AdHocBuild.new(@project_dir)
112
+ build.remotes.should == ['origin']
113
+ end
114
+
115
+ it "only calls `git remote` once when access remotes" do
116
+ build = TripAdvisor::AdHocBuild.new(@project_dir)
117
+ build.should_receive(:`).with('git remote').once.and_return('origin')
118
+ build.remotes
119
+ build.remotes
120
+ end
121
+
122
+ it "has a proper default for pod_repo" do
123
+ build = TripAdvisor::AdHocBuild.new(@project_dir)
124
+ build.pod_repo.should == 'tripadvisor'
125
+ end
126
+
127
+ it "has a proper default for version_prefix" do
128
+ build = TripAdvisor::AdHocBuild.new(@project_dir)
129
+ build.version_prefix.should == 'v'
130
+ end
131
+
132
+ context 'when building' do
133
+ before(:each) do
134
+ time = Time.at(1381331500)
135
+ Time.stub(:now).and_return(time)
136
+ @spec_repo = TestSpecRepo.new
137
+ system("pod repo add #{@spec_repo.name} #{@spec_repo.url}")
138
+ @build = TripAdvisor::AdHocBuild.new(@project_dir)
139
+ @build.pod_repo = @spec_repo.name
140
+ @build.build!
141
+ end
142
+
143
+ after(:each) do
144
+ FileUtils.remove_entry_secure(@spec_repo.path)
145
+ system("pod repo remove #{@spec_repo.name}")
146
+ end
147
+
148
+ it "updates the BUILD.json file" do
149
+ build_info = File.join(@project_dir, 'BUILD.json')
150
+ info = Oj.load(File.read(build_info))
151
+ info['version'].should == '1.0.0-b20131009151140'
152
+ info['branch'].should == 'master'
153
+ info['sha1'].should_not be_nil
154
+ info['author'].should == 'Project Builder <builder@example.com>'
155
+ info['date'].should == '2013-10-09T15:11:40Z'
156
+ end
157
+
158
+ it "updates the Project.podspec file" do
159
+ podspec_path = File.join(@project_dir, 'Project.podspec')
160
+ spec = eval(File.read(podspec_path), nil, podspec_path)
161
+ spec.version.should == '1.0.0-b20131009151140'
162
+ spec.source[:tag].should == 'builds/v1.0.0-b20131009151140'
163
+ end
164
+
165
+ it "pushes the tag to the remote repository" do
166
+ repo = Rugged::Repository.new(@remote_dir)
167
+ ref = Rugged::Reference.lookup(repo, "refs/tags/builds/v1.0.0-b20131009151140")
168
+ ref.should_not be_nil
169
+ end
170
+
171
+ it "pushes the podspec to the spec repository" do
172
+ path = File.join(@spec_repo.user_path, 'Project', @build.version, 'Project.podspec')
173
+ File.exists?(path).should be_true
174
+ end
175
+ end
176
+
177
+ describe TripAdvisor::ReleaseBuild do
178
+ include BuildHelpers
179
+
180
+ it "generates build info" do
181
+ build = TripAdvisor::ReleaseBuild.new(@project_dir, "1.0.1")
182
+ info = build.info
183
+ end
184
+
185
+ it "generates a version based on the release version" do
186
+ build = TripAdvisor::ReleaseBuild.new(@project_dir, "1.0.1")
187
+ build.version.should == "1.0.1"
188
+ end
189
+
190
+ it "generates the correct tag name" do
191
+ build = TripAdvisor::ReleaseBuild.new(@project_dir, "1.0.1")
192
+ build.tag_name.should == "v1.0.1"
193
+ end
194
+
195
+ it "has a proper default for remotes" do
196
+ build = TripAdvisor::ReleaseBuild.new(@project_dir, "1.0.1")
197
+ build.remotes.should == ['origin']
198
+ end
199
+
200
+ it "only calls `git remote` once when access remotes" do
201
+ build = TripAdvisor::ReleaseBuild.new(@project_dir, "1.0.1")
202
+ build.should_receive(:`).with('git remote').once.and_return('origin')
203
+ build.remotes
204
+ build.remotes
205
+ end
206
+
207
+ it "has a proper default for pod_repo" do
208
+ build = TripAdvisor::ReleaseBuild.new(@project_dir, "1.0.1")
209
+ build.pod_repo.should == 'tripadvisor'
210
+ end
211
+
212
+ it "has a proper default for version_prefix" do
213
+ build = TripAdvisor::ReleaseBuild.new(@project_dir, "1.0.1")
214
+ build.version_prefix.should == 'v'
215
+ end
216
+
217
+ context 'when building' do
218
+ before(:each) do
219
+ time = Time.at(1381331500)
220
+ Time.stub(:now).and_return(time)
221
+ @spec_repo = TestSpecRepo.new
222
+ system("pod repo add #{@spec_repo.name} #{@spec_repo.url}")
223
+ @build = TripAdvisor::ReleaseBuild.new(@project_dir, "1.0.1")
224
+ @build.pod_repo = @spec_repo.name
225
+ @build.build!
226
+ end
227
+
228
+ after(:each) do
229
+ FileUtils.remove_entry_secure(@spec_repo.path)
230
+ system("pod repo remove #{@spec_repo.name}")
231
+ end
232
+
233
+ it "updates the BUILD.json file" do
234
+ build_info = File.join(@project_dir, 'BUILD.json')
235
+ info = Oj.load(File.read(build_info))
236
+ info['version'].should == '1.0.1'
237
+ info['branch'].should == 'master'
238
+ info['sha1'].should_not be_nil
239
+ info['author'].should == 'Project Builder <builder@example.com>'
240
+ info['date'].should == '2013-10-09T15:11:40Z'
241
+ end
242
+
243
+ it "updates the Project.podspec file" do
244
+ podspec_path = File.join(@project_dir, 'Project.podspec')
245
+ spec = eval(File.read(podspec_path), nil, podspec_path)
246
+ spec.version.should == '1.0.1'
247
+ spec.source[:tag].should == 'v1.0.1'
248
+ end
249
+
250
+ it "pushes the tag to the remote repository" do
251
+ repo = Rugged::Repository.new(@remote_dir)
252
+ ref = Rugged::Reference.lookup(repo, "refs/tags/v1.0.1")
253
+ ref.should_not be_nil
254
+ end
255
+
256
+ it "pushes the podspec to the spec repository" do
257
+ path = File.join(@spec_repo.user_path, 'Project', @build.version, 'Project.podspec')
258
+ File.exists?(path).should be_true
259
+ end
260
+ end
261
+ end
262
+ end
@@ -0,0 +1,21 @@
1
+ [[Uncategorized]]
2
+ [flights_app_arrival]
3
+ comment = Arrival Airport Selection Title
4
+ en = Arrival
5
+ [flights_app_business_class]
6
+ en = Business Class
7
+ es = Clase Business
8
+ [flights_app_city_or_airport]
9
+ comment = Airport Search Bar Placeholder Text
10
+ en = City or Airport
11
+ es = Ciudad o aeropuerto
12
+ [flights_app_forward_button_text]
13
+ comment = Web View Forward Button
14
+ en = Forward
15
+ es = Adelante
16
+ [flights_app_amenities_with_colon]
17
+ comment = 'Amenities:' label text preceeding icons describing various amenities available on a flight
18
+ en = ` Amenities:`
19
+ es = ` Servicios:`
20
+ [flights_app_number_of_passengers]
21
+ en = %1$d Passengers
@@ -0,0 +1,47 @@
1
+ [[Uncategorized]]
2
+ [%1$@ %2$@]
3
+ en = %1$@ %2$@
4
+ es = %1$@ %2$@
5
+ comment = Marketing Airline and Flight Number
6
+ [%1$@ (%2$@)]
7
+ en = %1$@ (%2$@)
8
+ comment = Airport Name with Code
9
+ [%1$@ - %2$@]
10
+ en = %1$@ - %2$@
11
+ comment = '{Departure Date} - {Return Date}' Label
12
+ [%1$@ operates flight #%2$@]
13
+ en = %1$@ operates flight #%2$@
14
+ comment = {Operating Airline Name} operates flight #{Flight Number}
15
+ [%1$@ to %2$@]
16
+ en = %1$@ to %2$@
17
+ [%1$@ to %2$@, %3$@]
18
+ en = %1$@ to %2$@, %3$@
19
+ comment = Airport Code to Airport Code with Stops Accessibility Label
20
+ [%1$@, %2$@]
21
+ en = %1$@, %2$@
22
+ [%1$@, %2$@, %3$@ (%4$@) to %5$@ (%6$@), Departs %7$@, Arrives %8$@, Equipment: %9$@, Class: %10$@, Flight Duration: %11$@, Available Amenities: %12$@]
23
+ en = %1$@, %2$@, %3$@ (%4$@) to %5$@ (%6$@), Departs %7$@, Arrives %8$@, Equipment: %9$@, Class: %10$@, Flight Duration: %11$@, Available Amenities: %12$@
24
+ comment = Accessibility Label describing Marketing Airline, Flight Number, Departure/Arrival City (Airport Code), Aircraft, Seat Class, Flight Duration & Amenities
25
+ [%1$@, %2$@, %3$@ to %4$@, %5$@ to %6$@]
26
+ en = %1$@, %2$@, %3$@ to %4$@, %5$@ to %6$@
27
+ comment = '{Departure Date}, {Marketing Airline Name}, {Departure Airport Code} to {Arrival Airport Code}, {Departure Time} to {Arrival Time}' Accessibility Label
28
+ [%1$@, %2$@, %3$d]
29
+ en = %1$@, %2$@, %3$d
30
+ comment = Itinerary Group Price, Name, and Itinerary Count
31
+ [%1$@, ---]
32
+ en = %1$@, ---
33
+ comment = Persona Name without Minimum Price
34
+ [%1$@, Book now on %2$@]
35
+ en = %1$@, Book now on %2$@
36
+ comment = '{Total Price}, Book now on {Site Name}' Call to Action
37
+ [%1$@, Travel Time: %2$@]
38
+ en = %1$@, Travel Time: %2$@
39
+ comment = Itinerary Price with Travel Duration
40
+ [%1$d Filters]
41
+ en = %1$d Filters
42
+ comment = Clear '{Number of Active Filters} Filters' Button Title
43
+ [%1$d Passengers]
44
+ en = %1$d Passengers
45
+ [%1$d Results]
46
+ en = %1$d Results
47
+ comment = Multiple Search Results Count
@@ -0,0 +1 @@
1
+ Pods
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": "1.0.0",
3
+ "date": "2013-10-09T13:56:24Z",
4
+ "branch": "development",
5
+ "sha1": "d68234c79b89bb584565ac633b0820da3a80bf56",
6
+ "author": "Blake Watters <bwatters@tripadvisor.com>"
7
+ }
File without changes
File without changes
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'cocoapods'
@@ -0,0 +1,38 @@
1
+ GEM
2
+ remote: https://rubygems.org/
3
+ specs:
4
+ activesupport (3.2.14)
5
+ i18n (~> 0.6, >= 0.6.4)
6
+ multi_json (~> 1.0)
7
+ claide (0.3.2)
8
+ cocoapods (0.25.0)
9
+ activesupport (~> 3.0)
10
+ claide (~> 0.3.2)
11
+ cocoapods-core (= 0.25.0)
12
+ cocoapods-downloader (~> 0.2.0)
13
+ colored (~> 1.2)
14
+ escape (~> 0.0.4)
15
+ json (~> 1.8)
16
+ open4 (~> 1.3)
17
+ xcodeproj (~> 0.11.0)
18
+ cocoapods-core (0.25.0)
19
+ activesupport (~> 3.0)
20
+ json (~> 1.8)
21
+ nap (~> 0.5)
22
+ cocoapods-downloader (0.2.0)
23
+ colored (1.2)
24
+ escape (0.0.4)
25
+ i18n (0.6.5)
26
+ json (1.8.0)
27
+ multi_json (1.8.0)
28
+ nap (0.5.1)
29
+ open4 (1.3.0)
30
+ xcodeproj (0.11.1)
31
+ activesupport (~> 3.0)
32
+ colored (~> 1.2)
33
+
34
+ PLATFORMS
35
+ ruby
36
+
37
+ DEPENDENCIES
38
+ cocoapods
@@ -0,0 +1 @@
1
+ ref: refs/heads/master
@@ -0,0 +1 @@
1
+ This project is proprietary software that is copyright 2013 TripAdvisor, LLC.
@@ -0,0 +1,6 @@
1
+ source 'https://github.com/CocoaPods/Specs.git'
2
+ source 'http://gitlab01d.d.tripadvisor.com/mobile/ta-specs.git'
3
+
4
+ platform :ios, 6.0
5
+
6
+ pod 'Project', :path => '.'
@@ -0,0 +1,14 @@
1
+ PODS:
2
+ - Project (1.0.0)
3
+
4
+ DEPENDENCIES:
5
+ - Project (from `.`)
6
+
7
+ EXTERNAL SOURCES:
8
+ Project:
9
+ :path: .
10
+
11
+ SPEC CHECKSUMS:
12
+ Project: 46cf48e698b54a340bb4cb5f2958995290cc1891
13
+
14
+ COCOAPODS: 0.32.1
@@ -0,0 +1,14 @@
1
+ Pod::Spec.new do |s|
2
+ s.name = 'Project'
3
+ s.version = '1.0.0'
4
+ s.summary = 'Project is an example project used by the TripAdvisor build automation'
5
+ s.homepage = 'http://github.com/GateGuru/trip_advisor'
6
+ s.author = { 'Blake Watters' => 'bwatters@tripadvisor.com' }
7
+ s.source = { :git => '$GIT_URL', :tag => "v#{s.version}" }
8
+ s.license = 'Commercial'
9
+
10
+ s.source_files = 'Code/**/*.{h,m}'
11
+
12
+ # Platform setup
13
+ s.requires_arc = true
14
+ end
@@ -0,0 +1,23 @@
1
+ {
2
+ "images" : [
3
+ {
4
+ "idiom" : "iphone",
5
+ "size" : "29x29",
6
+ "scale" : "2x"
7
+ },
8
+ {
9
+ "idiom" : "iphone",
10
+ "size" : "40x40",
11
+ "scale" : "2x"
12
+ },
13
+ {
14
+ "idiom" : "iphone",
15
+ "size" : "60x60",
16
+ "scale" : "2x"
17
+ }
18
+ ],
19
+ "info" : {
20
+ "version" : 1,
21
+ "author" : "xcode"
22
+ }
23
+ }
@@ -0,0 +1,23 @@
1
+ {
2
+ "images" : [
3
+ {
4
+ "orientation" : "portrait",
5
+ "idiom" : "iphone",
6
+ "extent" : "full-screen",
7
+ "minimum-system-version" : "7.0",
8
+ "scale" : "2x"
9
+ },
10
+ {
11
+ "orientation" : "portrait",
12
+ "idiom" : "iphone",
13
+ "subtype" : "retina4",
14
+ "extent" : "full-screen",
15
+ "minimum-system-version" : "7.0",
16
+ "scale" : "2x"
17
+ }
18
+ ],
19
+ "info" : {
20
+ "version" : 1,
21
+ "author" : "xcode"
22
+ }
23
+ }
@@ -0,0 +1,15 @@
1
+ //
2
+ // TATPAppDelegate.h
3
+ // TestProject
4
+ //
5
+ // Created by Blake Watters on 10/9/13.
6
+ // Copyright (c) 2013 TripAdvisor. All rights reserved.
7
+ //
8
+
9
+ #import <UIKit/UIKit.h>
10
+
11
+ @interface TATPAppDelegate : UIResponder <UIApplicationDelegate>
12
+
13
+ @property (strong, nonatomic) UIWindow *window;
14
+
15
+ @end
@@ -0,0 +1,49 @@
1
+ //
2
+ // TATPAppDelegate.m
3
+ // TestProject
4
+ //
5
+ // Created by Blake Watters on 10/9/13.
6
+ // Copyright (c) 2013 TripAdvisor. All rights reserved.
7
+ //
8
+
9
+ #import "TATPAppDelegate.h"
10
+
11
+ @implementation TATPAppDelegate
12
+
13
+ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
14
+ {
15
+ self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
16
+ // Override point for customization after application launch.
17
+ self.window.backgroundColor = [UIColor whiteColor];
18
+ [self.window makeKeyAndVisible];
19
+ return YES;
20
+ }
21
+
22
+ - (void)applicationWillResignActive:(UIApplication *)application
23
+ {
24
+ // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
25
+ // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
26
+ }
27
+
28
+ - (void)applicationDidEnterBackground:(UIApplication *)application
29
+ {
30
+ // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
31
+ // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
32
+ }
33
+
34
+ - (void)applicationWillEnterForeground:(UIApplication *)application
35
+ {
36
+ // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
37
+ }
38
+
39
+ - (void)applicationDidBecomeActive:(UIApplication *)application
40
+ {
41
+ // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
42
+ }
43
+
44
+ - (void)applicationWillTerminate:(UIApplication *)application
45
+ {
46
+ // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
47
+ }
48
+
49
+ @end
@@ -0,0 +1,38 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+ <plist version="1.0">
4
+ <dict>
5
+ <key>CFBundleDevelopmentRegion</key>
6
+ <string>en</string>
7
+ <key>CFBundleDisplayName</key>
8
+ <string>${PRODUCT_NAME}</string>
9
+ <key>CFBundleExecutable</key>
10
+ <string>${EXECUTABLE_NAME}</string>
11
+ <key>CFBundleIdentifier</key>
12
+ <string>com.tripadvisor.TestProject.${PRODUCT_NAME:rfc1034identifier}</string>
13
+ <key>CFBundleInfoDictionaryVersion</key>
14
+ <string>6.0</string>
15
+ <key>CFBundleName</key>
16
+ <string>${PRODUCT_NAME}</string>
17
+ <key>CFBundlePackageType</key>
18
+ <string>APPL</string>
19
+ <key>CFBundleShortVersionString</key>
20
+ <string>1.0</string>
21
+ <key>CFBundleSignature</key>
22
+ <string>????</string>
23
+ <key>CFBundleVersion</key>
24
+ <string>1.0</string>
25
+ <key>LSRequiresIPhoneOS</key>
26
+ <true/>
27
+ <key>UIRequiredDeviceCapabilities</key>
28
+ <array>
29
+ <string>armv7</string>
30
+ </array>
31
+ <key>UISupportedInterfaceOrientations</key>
32
+ <array>
33
+ <string>UIInterfaceOrientationPortrait</string>
34
+ <string>UIInterfaceOrientationLandscapeLeft</string>
35
+ <string>UIInterfaceOrientationLandscapeRight</string>
36
+ </array>
37
+ </dict>
38
+ </plist>
@@ -0,0 +1,16 @@
1
+ //
2
+ // Prefix header
3
+ //
4
+ // The contents of this file are implicitly included at the beginning of every source file.
5
+ //
6
+
7
+ #import <Availability.h>
8
+
9
+ #ifndef __IPHONE_3_0
10
+ #warning "This project uses features only available in iOS SDK 3.0 and later."
11
+ #endif
12
+
13
+ #ifdef __OBJC__
14
+ #import <UIKit/UIKit.h>
15
+ #import <Foundation/Foundation.h>
16
+ #endif
@@ -0,0 +1 @@
1
+ /* Localized versions of Info.plist keys */
@@ -0,0 +1,18 @@
1
+ //
2
+ // main.m
3
+ // TestProject
4
+ //
5
+ // Created by Blake Watters on 10/9/13.
6
+ // Copyright (c) 2013 TripAdvisor. All rights reserved.
7
+ //
8
+
9
+ #import <UIKit/UIKit.h>
10
+
11
+ #import "TATPAppDelegate.h"
12
+
13
+ int main(int argc, char * argv[])
14
+ {
15
+ @autoreleasepool {
16
+ return UIApplicationMain(argc, argv, nil, NSStringFromClass([TATPAppDelegate class]));
17
+ }
18
+ }