xcodeproj 0.28.2 → 1.0.0
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 +4 -4
- data/lib/xcodeproj/command/config_dump.rb +2 -1
- data/lib/xcodeproj/config/other_linker_flags_parser.rb +5 -2
- data/lib/xcodeproj/config.rb +14 -5
- data/lib/xcodeproj/constants.rb +62 -27
- data/lib/xcodeproj/differ.rb +7 -7
- data/lib/xcodeproj/gem_version.rb +1 -1
- data/lib/xcodeproj/plist/ffi/core_foundation.rb +441 -0
- data/lib/xcodeproj/plist/ffi/dev_tools_core.rb +188 -0
- data/lib/xcodeproj/plist/ffi.rb +119 -0
- data/lib/xcodeproj/plist/plist_gem.rb +27 -0
- data/lib/xcodeproj/plist.rb +89 -0
- data/lib/xcodeproj/project/object/build_configuration.rb +15 -0
- data/lib/xcodeproj/project/object/build_rule.rb +28 -0
- data/lib/xcodeproj/project/object/group.rb +28 -0
- data/lib/xcodeproj/project/object/helpers/file_references_factory.rb +1 -1
- data/lib/xcodeproj/project/object/native_target.rb +26 -7
- data/lib/xcodeproj/project/object.rb +16 -3
- data/lib/xcodeproj/project/object_attributes.rb +10 -0
- data/lib/xcodeproj/project/object_dictionary.rb +2 -0
- data/lib/xcodeproj/project/object_list.rb +16 -4
- data/lib/xcodeproj/project/project_helper.rb +1 -1
- data/lib/xcodeproj/project/uuid_generator.rb +1 -0
- data/lib/xcodeproj/project.rb +36 -12
- data/lib/xcodeproj/scheme/build_action.rb +5 -2
- data/lib/xcodeproj/scheme/environment_variables.rb +170 -0
- data/lib/xcodeproj/scheme/launch_action.rb +16 -0
- data/lib/xcodeproj/scheme/test_action.rb +18 -0
- data/lib/xcodeproj/scheme.rb +5 -5
- data/lib/xcodeproj/workspace/file_reference.rb +2 -3
- data/lib/xcodeproj/workspace/group_reference.rb +64 -0
- data/lib/xcodeproj/workspace.rb +127 -34
- data/lib/xcodeproj.rb +1 -1
- metadata +29 -17
- data/lib/xcodeproj/plist_helper.rb +0 -758
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 4661a83a53151976f7e363d73feda6f24df578e0
|
|
4
|
+
data.tar.gz: c9a08f7dca14cd343e14ab4bfbb0e2f46bbf89fd
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 45849f18963cedccdb3d56284f9f7b9ae4eb671750dce2acb138b3760072afdd116b293953b0a476b521df35a24e074c56d52a0b942425a384619b0aefdea6b5
|
|
7
|
+
data.tar.gz: 0c32c169f15589f51712eec8ae8bf7f95f62781ba3e31eb20e38593768e89ed9d4ada6ecaec33d00be49b2224765710565af3517a509e21c385286a6f4eda850
|
|
@@ -19,11 +19,12 @@ module Xcodeproj
|
|
|
19
19
|
|
|
20
20
|
self.arguments = [
|
|
21
21
|
CLAide::Argument.new('PROJECT', false),
|
|
22
|
+
CLAide::Argument.new('OUTPUT', false),
|
|
22
23
|
]
|
|
23
24
|
|
|
24
25
|
def initialize(argv)
|
|
25
26
|
self.xcodeproj_path = argv.shift_argument
|
|
26
|
-
@output_path
|
|
27
|
+
@output_path = Pathname(argv.shift_argument || '.')
|
|
27
28
|
|
|
28
29
|
super
|
|
29
30
|
end
|
|
@@ -8,7 +8,7 @@ module Xcodeproj
|
|
|
8
8
|
# @return [Hash{Symbol, Array[String]}] Splits the given
|
|
9
9
|
# other linker flags value by type.
|
|
10
10
|
#
|
|
11
|
-
# @param [String] flags
|
|
11
|
+
# @param [String, Array] flags
|
|
12
12
|
# The other linker flags value.
|
|
13
13
|
#
|
|
14
14
|
def self.parse(flags)
|
|
@@ -21,7 +21,10 @@ module Xcodeproj
|
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
key = nil
|
|
24
|
-
|
|
24
|
+
if flags.is_a? String
|
|
25
|
+
flags = split(flags)
|
|
26
|
+
end
|
|
27
|
+
flags.each do |token|
|
|
25
28
|
case token
|
|
26
29
|
when '-framework'
|
|
27
30
|
key = :frameworks
|
data/lib/xcodeproj/config.rb
CHANGED
|
@@ -82,7 +82,7 @@ module Xcodeproj
|
|
|
82
82
|
def to_s(prefix = nil)
|
|
83
83
|
include_lines = includes.map { |path| "#include \"#{normalized_xcconfig_path(path)}\"" }
|
|
84
84
|
settings = to_hash(prefix).sort_by(&:first).map { |k, v| "#{k} = #{v}".strip }
|
|
85
|
-
|
|
85
|
+
(include_lines + settings).join("\n") << "\n"
|
|
86
86
|
end
|
|
87
87
|
|
|
88
88
|
# Writes the serialized representation of the internal data to the given
|
|
@@ -275,9 +275,17 @@ module Xcodeproj
|
|
|
275
275
|
#
|
|
276
276
|
def merge_attributes!(attributes)
|
|
277
277
|
@attributes.merge!(attributes) do |_, v1, v2|
|
|
278
|
-
v1
|
|
279
|
-
|
|
280
|
-
|
|
278
|
+
v1 = v1.strip
|
|
279
|
+
v2 = v2.strip
|
|
280
|
+
v1_split = v1.shellsplit
|
|
281
|
+
v2_split = v2.shellsplit
|
|
282
|
+
if (v2_split - v1_split).empty? || v1_split.first(v2_split.size) == v2_split
|
|
283
|
+
v1
|
|
284
|
+
elsif v2_split.first(v1_split.size) == v1_split
|
|
285
|
+
v2
|
|
286
|
+
else
|
|
287
|
+
"#{v1} #{v2}"
|
|
288
|
+
end
|
|
281
289
|
end
|
|
282
290
|
end
|
|
283
291
|
|
|
@@ -317,7 +325,8 @@ module Xcodeproj
|
|
|
317
325
|
def extract_key_value(line)
|
|
318
326
|
match = line.match(KEY_VALUE_PATTERN)
|
|
319
327
|
if match
|
|
320
|
-
key
|
|
328
|
+
key = match[1]
|
|
329
|
+
value = match[2]
|
|
321
330
|
[key.strip, value.strip]
|
|
322
331
|
else
|
|
323
332
|
[]
|
data/lib/xcodeproj/constants.rb
CHANGED
|
@@ -4,17 +4,17 @@ module Xcodeproj
|
|
|
4
4
|
module Constants
|
|
5
5
|
# @return [String] The last known iOS SDK (stable).
|
|
6
6
|
#
|
|
7
|
-
LAST_KNOWN_IOS_SDK = '9.
|
|
7
|
+
LAST_KNOWN_IOS_SDK = '9.3'
|
|
8
8
|
|
|
9
9
|
# @return [String] The last known OS X SDK (stable).
|
|
10
10
|
#
|
|
11
|
-
LAST_KNOWN_OSX_SDK
|
|
11
|
+
LAST_KNOWN_OSX_SDK = '10.11'
|
|
12
12
|
|
|
13
|
-
# @return [String] The last known tvOS SDK (
|
|
14
|
-
LAST_KNOWN_TVOS_SDK = '9.
|
|
13
|
+
# @return [String] The last known tvOS SDK (stable).
|
|
14
|
+
LAST_KNOWN_TVOS_SDK = '9.2'
|
|
15
15
|
|
|
16
|
-
# @return [String] The last known watchOS SDK.
|
|
17
|
-
LAST_KNOWN_WATCHOS_SDK = '2.
|
|
16
|
+
# @return [String] The last known watchOS SDK (stable).
|
|
17
|
+
LAST_KNOWN_WATCHOS_SDK = '2.2'
|
|
18
18
|
|
|
19
19
|
# @return [String] The last known archive version to Xcodeproj.
|
|
20
20
|
#
|
|
@@ -25,15 +25,15 @@ module Xcodeproj
|
|
|
25
25
|
|
|
26
26
|
# @return [String] The last known object version to Xcodeproj.
|
|
27
27
|
#
|
|
28
|
-
LAST_KNOWN_OBJECT_VERSION
|
|
28
|
+
LAST_KNOWN_OBJECT_VERSION = 47
|
|
29
29
|
|
|
30
30
|
# @return [String] The last known object version to Xcodeproj.
|
|
31
31
|
#
|
|
32
|
-
LAST_UPGRADE_CHECK
|
|
32
|
+
LAST_UPGRADE_CHECK = '0700'
|
|
33
33
|
|
|
34
34
|
# @return [String] The last known object version to Xcodeproj.
|
|
35
35
|
#
|
|
36
|
-
LAST_SWIFT_UPGRADE_CHECK = '
|
|
36
|
+
LAST_SWIFT_UPGRADE_CHECK = '0730'
|
|
37
37
|
|
|
38
38
|
# @return [String] The version of `.xcscheme` files supported by Xcodeproj
|
|
39
39
|
#
|
|
@@ -113,12 +113,14 @@ module Xcodeproj
|
|
|
113
113
|
:bundle => 'com.apple.product-type.bundle',
|
|
114
114
|
:octest_bundle => 'com.apple.product-type.bundle',
|
|
115
115
|
:unit_test_bundle => 'com.apple.product-type.bundle.unit-test',
|
|
116
|
+
:ui_test_bundle => 'com.apple.product-type.bundle.ui-testing',
|
|
116
117
|
:app_extension => 'com.apple.product-type.app-extension',
|
|
117
118
|
:command_line_tool => 'com.apple.product-type.tool',
|
|
118
119
|
:watch_app => 'com.apple.product-type.application.watchapp',
|
|
119
120
|
:watch2_app => 'com.apple.product-type.application.watchapp2',
|
|
120
121
|
:watch_extension => 'com.apple.product-type.watchkit-extension',
|
|
121
122
|
:watch2_extension => 'com.apple.product-type.watchkit2-extension',
|
|
123
|
+
:tv_extension => 'com.apple.product-type.tv-app-extension',
|
|
122
124
|
}.freeze
|
|
123
125
|
|
|
124
126
|
# @return [Hash] The extensions or the various product UTIs.
|
|
@@ -138,13 +140,16 @@ module Xcodeproj
|
|
|
138
140
|
#
|
|
139
141
|
COMMON_BUILD_SETTINGS = {
|
|
140
142
|
:all => {
|
|
141
|
-
'PRODUCT_NAME' => '$(TARGET_NAME)',
|
|
142
143
|
'ENABLE_STRICT_OBJC_MSGSEND' => 'YES',
|
|
144
|
+
'GCC_NO_COMMON_BLOCKS' => 'YES',
|
|
145
|
+
'PRODUCT_NAME' => '$(TARGET_NAME)',
|
|
143
146
|
}.freeze,
|
|
144
147
|
[:debug] => {
|
|
148
|
+
'DEBUG_INFORMATION_FORMAT' => 'dwarf',
|
|
145
149
|
'MTL_ENABLE_DEBUG_INFO' => 'YES',
|
|
146
150
|
}.freeze,
|
|
147
151
|
[:release] => {
|
|
152
|
+
'DEBUG_INFORMATION_FORMAT' => 'dwarf-with-dsym',
|
|
148
153
|
'MTL_ENABLE_DEBUG_INFO' => 'NO',
|
|
149
154
|
}.freeze,
|
|
150
155
|
[:ios] => {
|
|
@@ -163,23 +168,18 @@ module Xcodeproj
|
|
|
163
168
|
# Empty?
|
|
164
169
|
}.freeze,
|
|
165
170
|
[:release, :osx] => {
|
|
166
|
-
|
|
171
|
+
# Empty?
|
|
167
172
|
}.freeze,
|
|
168
173
|
[:debug, :ios] => {
|
|
169
174
|
# Empty?
|
|
170
175
|
}.freeze,
|
|
171
176
|
[:debug, :application, :swift] => {
|
|
172
177
|
'SWIFT_OPTIMIZATION_LEVEL' => '-Onone',
|
|
173
|
-
'ENABLE_TESTABILITY' => 'YES',
|
|
174
178
|
}.freeze,
|
|
175
|
-
[:debug, :
|
|
176
|
-
'
|
|
177
|
-
}.freeze,
|
|
178
|
-
[:debug, :framework, :swift] => {
|
|
179
|
-
'ENABLE_TESTABILITY' => 'YES',
|
|
179
|
+
[:debug, :swift] => {
|
|
180
|
+
'SWIFT_OPTIMIZATION_LEVEL' => '-Onone',
|
|
180
181
|
}.freeze,
|
|
181
182
|
[:debug, :static_library, :swift] => {
|
|
182
|
-
'ENABLE_TESTABILITY' => 'YES',
|
|
183
183
|
}.freeze,
|
|
184
184
|
[:framework] => {
|
|
185
185
|
'VERSION_INFO_PREFIX' => '',
|
|
@@ -200,25 +200,43 @@ module Xcodeproj
|
|
|
200
200
|
[:osx, :framework] => {
|
|
201
201
|
'LD_RUNPATH_SEARCH_PATHS' => ['$(inherited)', '@executable_path/../Frameworks', '@loader_path/Frameworks'],
|
|
202
202
|
'FRAMEWORK_VERSION' => 'A',
|
|
203
|
+
'CODE_SIGN_IDENTITY' => '-',
|
|
203
204
|
'COMBINE_HIDPI_IMAGES' => 'YES',
|
|
204
205
|
}.freeze,
|
|
206
|
+
[:watchos, :framework] => {
|
|
207
|
+
'APPLICATION_EXTENSION_API_ONLY' => 'YES',
|
|
208
|
+
'LD_RUNPATH_SEARCH_PATHS' => ['$(inherited)', '@executable_path/Frameworks', '@loader_path/Frameworks'],
|
|
209
|
+
'TARGETED_DEVICE_FAMILY' => '4',
|
|
210
|
+
}.freeze,
|
|
211
|
+
[:tvos, :framework] => {
|
|
212
|
+
'LD_RUNPATH_SEARCH_PATHS' => ['$(inherited)', '@executable_path/Frameworks', '@loader_path/Frameworks'],
|
|
213
|
+
'TARGETED_DEVICE_FAMILY' => '3',
|
|
214
|
+
}.freeze,
|
|
205
215
|
[:framework, :swift] => {
|
|
206
216
|
'DEFINES_MODULE' => 'YES',
|
|
207
217
|
}.freeze,
|
|
208
|
-
[:debug, :framework, :swift] => {
|
|
209
|
-
'SWIFT_OPTIMIZATION_LEVEL' => '-Onone',
|
|
210
|
-
}.freeze,
|
|
211
218
|
[:osx, :static_library] => {
|
|
219
|
+
'CODE_SIGN_IDENTITY' => '-',
|
|
212
220
|
'EXECUTABLE_PREFIX' => 'lib',
|
|
213
221
|
}.freeze,
|
|
214
222
|
[:ios, :static_library] => {
|
|
223
|
+
'CODE_SIGN_IDENTITY[sdk=iphoneos*]' => 'iPhone Developer',
|
|
224
|
+
'OTHER_LDFLAGS' => '-ObjC',
|
|
225
|
+
'SKIP_INSTALL' => 'YES',
|
|
226
|
+
}.freeze,
|
|
227
|
+
[:watchos, :static_library] => {
|
|
228
|
+
'OTHER_LDFLAGS' => '-ObjC',
|
|
229
|
+
'SKIP_INSTALL' => 'YES',
|
|
230
|
+
}.freeze,
|
|
231
|
+
[:tvos, :static_library] => {
|
|
215
232
|
'OTHER_LDFLAGS' => '-ObjC',
|
|
216
233
|
'SKIP_INSTALL' => 'YES',
|
|
217
234
|
}.freeze,
|
|
218
235
|
[:osx, :dynamic_library] => {
|
|
219
|
-
'
|
|
236
|
+
'CODE_SIGN_IDENTITY' => '-',
|
|
220
237
|
'DYLIB_COMPATIBILITY_VERSION' => '1',
|
|
221
238
|
'DYLIB_CURRENT_VERSION' => '1',
|
|
239
|
+
'EXECUTABLE_PREFIX' => 'lib',
|
|
222
240
|
}.freeze,
|
|
223
241
|
[:application] => {
|
|
224
242
|
'ASSETCATALOG_COMPILER_APPICON_NAME' => 'AppIcon',
|
|
@@ -226,12 +244,26 @@ module Xcodeproj
|
|
|
226
244
|
[:ios, :application] => {
|
|
227
245
|
'CODE_SIGN_IDENTITY[sdk=iphoneos*]' => 'iPhone Developer',
|
|
228
246
|
'LD_RUNPATH_SEARCH_PATHS' => ['$(inherited)', '@executable_path/Frameworks'],
|
|
247
|
+
'TARGETED_DEVICE_FAMILY' => '1,2',
|
|
229
248
|
}.freeze,
|
|
230
249
|
[:osx, :application] => {
|
|
231
250
|
'COMBINE_HIDPI_IMAGES' => 'YES',
|
|
232
251
|
'CODE_SIGN_IDENTITY' => '-',
|
|
233
252
|
'LD_RUNPATH_SEARCH_PATHS' => ['$(inherited)', '@executable_path/../Frameworks'],
|
|
234
253
|
}.freeze,
|
|
254
|
+
[:watchos, :application] => {
|
|
255
|
+
'SKIP_INSTALL' => 'YES',
|
|
256
|
+
'TARGETED_DEVICE_FAMILY' => '4',
|
|
257
|
+
}.freeze,
|
|
258
|
+
[:watchos, :application, :swift] => {
|
|
259
|
+
'EMBEDDED_CONTENT_CONTAINS_SWIFT' => 'YES',
|
|
260
|
+
}.freeze,
|
|
261
|
+
[:tvos, :application] => {
|
|
262
|
+
'ASSETCATALOG_COMPILER_APPICON_NAME' => 'App Icon & Top Shelf Image',
|
|
263
|
+
'ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME' => 'LaunchImage',
|
|
264
|
+
'TARGETED_DEVICE_FAMILY' => '3',
|
|
265
|
+
'LD_RUNPATH_SEARCH_PATHS' => ['$(inherited)', '@executable_path/Frameworks'],
|
|
266
|
+
}.freeze,
|
|
235
267
|
[:bundle] => {
|
|
236
268
|
'PRODUCT_NAME' => '$(TARGET_NAME)',
|
|
237
269
|
'WRAPPER_EXTENSION' => 'bundle',
|
|
@@ -241,9 +273,10 @@ module Xcodeproj
|
|
|
241
273
|
'SDKROOT' => 'iphoneos',
|
|
242
274
|
}.freeze,
|
|
243
275
|
[:osx, :bundle] => {
|
|
276
|
+
'CODE_SIGN_IDENTITY' => '-',
|
|
244
277
|
'COMBINE_HIDPI_IMAGES' => 'YES',
|
|
245
|
-
'SDKROOT' => 'macosx',
|
|
246
278
|
'INSTALL_PATH' => '$(LOCAL_LIBRARY_DIR)/Bundles',
|
|
279
|
+
'SDKROOT' => 'macosx',
|
|
247
280
|
}.freeze,
|
|
248
281
|
}.freeze
|
|
249
282
|
|
|
@@ -252,19 +285,20 @@ module Xcodeproj
|
|
|
252
285
|
PROJECT_DEFAULT_BUILD_SETTINGS = {
|
|
253
286
|
:all => {
|
|
254
287
|
'ALWAYS_SEARCH_USER_PATHS' => 'NO',
|
|
288
|
+
'CLANG_ANALYZER_NONNULL' => 'YES',
|
|
255
289
|
'CLANG_CXX_LANGUAGE_STANDARD' => 'gnu++0x',
|
|
256
290
|
'CLANG_CXX_LIBRARY' => 'libc++',
|
|
291
|
+
'CLANG_ENABLE_MODULES' => 'YES',
|
|
257
292
|
'CLANG_ENABLE_OBJC_ARC' => 'YES',
|
|
293
|
+
'CLANG_WARN__DUPLICATE_METHOD_MATCH' => 'YES',
|
|
258
294
|
'CLANG_WARN_BOOL_CONVERSION' => 'YES',
|
|
259
295
|
'CLANG_WARN_CONSTANT_CONVERSION' => 'YES',
|
|
260
296
|
'CLANG_WARN_DIRECT_OBJC_ISA_USAGE' => 'YES',
|
|
261
|
-
'CLANG_WARN__DUPLICATE_METHOD_MATCH' => 'YES',
|
|
262
297
|
'CLANG_WARN_EMPTY_BODY' => 'YES',
|
|
263
298
|
'CLANG_WARN_ENUM_CONVERSION' => 'YES',
|
|
264
299
|
'CLANG_WARN_INT_CONVERSION' => 'YES',
|
|
265
300
|
'CLANG_WARN_OBJC_ROOT_CLASS' => 'YES',
|
|
266
301
|
'CLANG_WARN_UNREACHABLE_CODE' => 'YES',
|
|
267
|
-
'CLANG_ENABLE_MODULES' => 'YES',
|
|
268
302
|
'GCC_C_LANGUAGE_STANDARD' => 'gnu99',
|
|
269
303
|
'GCC_WARN_64_TO_32_BIT_CONVERSION' => 'YES',
|
|
270
304
|
'GCC_WARN_ABOUT_RETURN_TYPE' => 'YES',
|
|
@@ -279,12 +313,13 @@ module Xcodeproj
|
|
|
279
313
|
'VALIDATE_PRODUCT' => 'YES',
|
|
280
314
|
}.freeze,
|
|
281
315
|
:debug => {
|
|
282
|
-
'ONLY_ACTIVE_ARCH' => 'YES',
|
|
283
316
|
'COPY_PHASE_STRIP' => 'NO',
|
|
317
|
+
'ENABLE_TESTABILITY' => 'YES',
|
|
284
318
|
'GCC_DYNAMIC_NO_PIC' => 'NO',
|
|
285
319
|
'GCC_OPTIMIZATION_LEVEL' => '0',
|
|
286
320
|
'GCC_PREPROCESSOR_DEFINITIONS' => ['DEBUG=1', '$(inherited)'],
|
|
287
321
|
'GCC_SYMBOLS_PRIVATE_EXTERN' => 'NO',
|
|
322
|
+
'ONLY_ACTIVE_ARCH' => 'YES',
|
|
288
323
|
}.freeze,
|
|
289
324
|
}.freeze
|
|
290
325
|
|
|
@@ -313,6 +348,6 @@ module Xcodeproj
|
|
|
313
348
|
|
|
314
349
|
# @return [Array] The extensions which are associated with header files.
|
|
315
350
|
#
|
|
316
|
-
HEADER_FILES_EXTENSIONS = %w(.h .hh .hpp .ipp .tpp).freeze
|
|
351
|
+
HEADER_FILES_EXTENSIONS = %w(.h .hh .hpp .ipp .tpp .hxx .def).freeze
|
|
317
352
|
end
|
|
318
353
|
end
|
data/lib/xcodeproj/differ.rb
CHANGED
|
@@ -43,19 +43,19 @@ module Xcodeproj
|
|
|
43
43
|
# @return [Nil] if the given values are equal.
|
|
44
44
|
#
|
|
45
45
|
def self.diff(value_1, value_2, options = {})
|
|
46
|
-
options[:key_1]
|
|
47
|
-
options[:key_2]
|
|
46
|
+
options[:key_1] ||= 'value_1'
|
|
47
|
+
options[:key_2] ||= 'value_2'
|
|
48
48
|
options[:id_key] ||= nil
|
|
49
49
|
|
|
50
|
-
if value_1.class == value_2.class
|
|
51
|
-
|
|
50
|
+
method = if value_1.class == value_2.class
|
|
51
|
+
case value_1
|
|
52
52
|
when Hash then :hash_diff
|
|
53
53
|
when Array then :array_diff
|
|
54
54
|
else :generic_diff
|
|
55
55
|
end
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
56
|
+
else
|
|
57
|
+
:generic_diff
|
|
58
|
+
end
|
|
59
59
|
send(method, value_1, value_2, options)
|
|
60
60
|
end
|
|
61
61
|
|