cocoapods-core 0.17.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/LICENSE +20 -0
- data/README.md +36 -0
- data/lib/cocoapods-core/core_ui.rb +19 -0
- data/lib/cocoapods-core/dependency.rb +295 -0
- data/lib/cocoapods-core/gem_version.rb +6 -0
- data/lib/cocoapods-core/lockfile.rb +440 -0
- data/lib/cocoapods-core/platform.rb +171 -0
- data/lib/cocoapods-core/podfile/dsl.rb +459 -0
- data/lib/cocoapods-core/podfile/target_definition.rb +503 -0
- data/lib/cocoapods-core/podfile.rb +345 -0
- data/lib/cocoapods-core/requirement.rb +15 -0
- data/lib/cocoapods-core/source/validator.rb +183 -0
- data/lib/cocoapods-core/source.rb +284 -0
- data/lib/cocoapods-core/specification/consumer.rb +356 -0
- data/lib/cocoapods-core/specification/dsl/attribute.rb +245 -0
- data/lib/cocoapods-core/specification/dsl/attribute_support.rb +76 -0
- data/lib/cocoapods-core/specification/dsl/deprecations.rb +47 -0
- data/lib/cocoapods-core/specification/dsl/platform_proxy.rb +67 -0
- data/lib/cocoapods-core/specification/dsl.rb +1110 -0
- data/lib/cocoapods-core/specification/linter.rb +436 -0
- data/lib/cocoapods-core/specification/root_attribute_accessors.rb +152 -0
- data/lib/cocoapods-core/specification/set/presenter.rb +229 -0
- data/lib/cocoapods-core/specification/set/statistics.rb +277 -0
- data/lib/cocoapods-core/specification/set.rb +171 -0
- data/lib/cocoapods-core/specification/yaml.rb +60 -0
- data/lib/cocoapods-core/specification.rb +592 -0
- data/lib/cocoapods-core/standard_error.rb +84 -0
- data/lib/cocoapods-core/vendor/dependency.rb +264 -0
- data/lib/cocoapods-core/vendor/requirement.rb +208 -0
- data/lib/cocoapods-core/vendor/version.rb +333 -0
- data/lib/cocoapods-core/vendor.rb +56 -0
- data/lib/cocoapods-core/version.rb +99 -0
- data/lib/cocoapods-core/yaml_converter.rb +202 -0
- data/lib/cocoapods-core.rb +23 -0
- metadata +154 -0
@@ -0,0 +1,84 @@
|
|
1
|
+
module Pod
|
2
|
+
|
3
|
+
# Namespaces all the errors raised by CocoaPods.
|
4
|
+
#
|
5
|
+
class StandardError < ::StandardError; end
|
6
|
+
|
7
|
+
#-------------------------------------------------------------------------#
|
8
|
+
|
9
|
+
# Wraps an exception raised by a DSL file in order to show to the user the
|
10
|
+
# contents of the line that raised the exception.
|
11
|
+
#
|
12
|
+
class DSLError < StandardError
|
13
|
+
|
14
|
+
# @return [String] the description that should be presented to the user.
|
15
|
+
#
|
16
|
+
attr_reader :description
|
17
|
+
|
18
|
+
# @return [String] the path of the dsl file that raised the exception.
|
19
|
+
#
|
20
|
+
attr_reader :dsl_path
|
21
|
+
|
22
|
+
# @return [Exception] the backtrace of the exception raised by the
|
23
|
+
# evaluation of the dsl file.
|
24
|
+
#
|
25
|
+
attr_reader :backtrace
|
26
|
+
|
27
|
+
# @param [Exception] backtrace @see backtrace
|
28
|
+
# @param [String] dsl_path @see dsl_path
|
29
|
+
#
|
30
|
+
def initialize(description, dsl_path, backtrace)
|
31
|
+
@description = description
|
32
|
+
@dsl_path = dsl_path
|
33
|
+
@backtrace = backtrace
|
34
|
+
end
|
35
|
+
|
36
|
+
# The message of the exception reports the content of podspec for the
|
37
|
+
# line that generated the original exception.
|
38
|
+
#
|
39
|
+
# @example Output
|
40
|
+
#
|
41
|
+
# Invalid podspec at `RestKit.podspec` - undefined method
|
42
|
+
# `exclude_header_search_paths=' for #<Pod::Specification for
|
43
|
+
# `RestKit/Network (0.9.3)`>
|
44
|
+
#
|
45
|
+
# from spec-repos/master/RestKit/0.9.3/RestKit.podspec:36
|
46
|
+
# -------------------------------------------
|
47
|
+
# # because it would break: #import <CoreData/CoreData.h>
|
48
|
+
# > ns.exclude_header_search_paths = 'Code/RestKit.h'
|
49
|
+
# end
|
50
|
+
# -------------------------------------------
|
51
|
+
#
|
52
|
+
# @return [String] the message of the exception.
|
53
|
+
#
|
54
|
+
def message
|
55
|
+
unless @message
|
56
|
+
m = description.dup
|
57
|
+
|
58
|
+
return m unless backtrace && dsl_path && File.exist?(dsl_path)
|
59
|
+
|
60
|
+
trace_line = backtrace.find { |l| l =~ /#{dsl_path}/ }
|
61
|
+
return m unless trace_line
|
62
|
+
line_numer = trace_line.split(':')[1].to_i - 1
|
63
|
+
return m unless line_numer
|
64
|
+
lines = File.readlines(dsl_path.to_s)
|
65
|
+
indent = " # "
|
66
|
+
indicator = indent.dup.gsub("#", ">")
|
67
|
+
first_line = ( line_numer.zero? )
|
68
|
+
last_line = ( line_numer == (lines.count - 1) )
|
69
|
+
|
70
|
+
m << "\n #\n"
|
71
|
+
m << "#{indent}from #{trace_line.gsub(/:in.*$/,'')}\n"
|
72
|
+
m << "#{indent}-------------------------------------------\n"
|
73
|
+
m << "#{indent}#{ lines[line_numer - 1] }" unless first_line
|
74
|
+
m << "#{indicator}#{ lines[line_numer] }"
|
75
|
+
m << "#{indent}#{ lines[line_numer + 1] }" unless last_line
|
76
|
+
m << "\n" unless m.end_with?("\n")
|
77
|
+
m << "#{indent}-------------------------------------------\n"
|
78
|
+
m << " #"
|
79
|
+
@message = m
|
80
|
+
end
|
81
|
+
@message
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
@@ -0,0 +1,264 @@
|
|
1
|
+
module Pod::Vendor
|
2
|
+
|
3
|
+
# require "rubygems/requirement"
|
4
|
+
|
5
|
+
##
|
6
|
+
# The Dependency class holds a Gem name and a Gem::Requirement.
|
7
|
+
|
8
|
+
class Gem::Dependency
|
9
|
+
|
10
|
+
##
|
11
|
+
# Valid dependency types.
|
12
|
+
#--
|
13
|
+
# When this list is updated, be sure to change
|
14
|
+
# Gem::Specification::CURRENT_SPECIFICATION_VERSION as well.
|
15
|
+
|
16
|
+
TYPES = [
|
17
|
+
:development,
|
18
|
+
:runtime,
|
19
|
+
]
|
20
|
+
|
21
|
+
##
|
22
|
+
# Dependency name or regular expression.
|
23
|
+
|
24
|
+
attr_accessor :name
|
25
|
+
|
26
|
+
##
|
27
|
+
# Allows you to force this dependency to be a prerelease.
|
28
|
+
|
29
|
+
attr_writer :prerelease
|
30
|
+
|
31
|
+
##
|
32
|
+
# Constructs a dependency with +name+ and +requirements+. The last
|
33
|
+
# argument can optionally be the dependency type, which defaults to
|
34
|
+
# <tt>:runtime</tt>.
|
35
|
+
|
36
|
+
def initialize name, *requirements
|
37
|
+
if Regexp === name then
|
38
|
+
msg = ["NOTE: Dependency.new w/ a regexp is deprecated.",
|
39
|
+
"Dependency.new called from #{Gem.location_of_caller.join(":")}"]
|
40
|
+
warn msg.join("\n") unless Gem::Deprecate.skip
|
41
|
+
end
|
42
|
+
|
43
|
+
type = Symbol === requirements.last ? requirements.pop : :runtime
|
44
|
+
requirements = requirements.first if 1 == requirements.length # unpack
|
45
|
+
|
46
|
+
unless TYPES.include? type
|
47
|
+
raise ArgumentError, "Valid types are #{TYPES.inspect}, "
|
48
|
+
+ "not #{type.inspect}"
|
49
|
+
end
|
50
|
+
|
51
|
+
@name = name
|
52
|
+
@requirement = Gem::Requirement.create requirements
|
53
|
+
@type = type
|
54
|
+
@prerelease = false
|
55
|
+
|
56
|
+
# This is for Marshal backwards compatibility. See the comments in
|
57
|
+
# +requirement+ for the dirty details.
|
58
|
+
|
59
|
+
@version_requirements = @requirement
|
60
|
+
end
|
61
|
+
|
62
|
+
##
|
63
|
+
# A dependency's hash is the XOR of the hashes of +name+, +type+,
|
64
|
+
# and +requirement+.
|
65
|
+
|
66
|
+
def hash # :nodoc:
|
67
|
+
name.hash ^ type.hash ^ requirement.hash
|
68
|
+
end
|
69
|
+
|
70
|
+
def inspect # :nodoc:
|
71
|
+
"<%s type=%p name=%p requirements=%p>" %
|
72
|
+
[self.class, self.type, self.name, requirement.to_s]
|
73
|
+
end
|
74
|
+
|
75
|
+
##
|
76
|
+
# Does this dependency require a prerelease?
|
77
|
+
|
78
|
+
def prerelease?
|
79
|
+
@prerelease || requirement.prerelease?
|
80
|
+
end
|
81
|
+
|
82
|
+
def pretty_print q # :nodoc:
|
83
|
+
q.group 1, 'Gem::Dependency.new(', ')' do
|
84
|
+
q.pp name
|
85
|
+
q.text ','
|
86
|
+
q.breakable
|
87
|
+
|
88
|
+
q.pp requirement
|
89
|
+
|
90
|
+
q.text ','
|
91
|
+
q.breakable
|
92
|
+
|
93
|
+
q.pp type
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
##
|
98
|
+
# What does this dependency require?
|
99
|
+
|
100
|
+
def requirement
|
101
|
+
return @requirement if defined?(@requirement) and @requirement
|
102
|
+
|
103
|
+
# @version_requirements and @version_requirement are legacy ivar
|
104
|
+
# names, and supported here because older gems need to keep
|
105
|
+
# working and Dependency doesn't implement marshal_dump and
|
106
|
+
# marshal_load. In a happier world, this would be an
|
107
|
+
# attr_accessor. The horrifying instance_variable_get you see
|
108
|
+
# below is also the legacy of some old restructurings.
|
109
|
+
#
|
110
|
+
# Note also that because of backwards compatibility (loading new
|
111
|
+
# gems in an old RubyGems installation), we can't add explicit
|
112
|
+
# marshaling to this class until we want to make a big
|
113
|
+
# break. Maybe 2.0.
|
114
|
+
#
|
115
|
+
# Children, define explicit marshal and unmarshal behavior for
|
116
|
+
# public classes. Marshal formats are part of your public API.
|
117
|
+
|
118
|
+
if defined?(@version_requirement) && @version_requirement
|
119
|
+
version = @version_requirement.instance_variable_get :@version
|
120
|
+
@version_requirement = nil
|
121
|
+
@version_requirements = Gem::Requirement.new version
|
122
|
+
end
|
123
|
+
|
124
|
+
@requirement = @version_requirements if defined?(@version_requirements)
|
125
|
+
end
|
126
|
+
|
127
|
+
def requirements_list
|
128
|
+
requirement.as_list
|
129
|
+
end
|
130
|
+
|
131
|
+
def to_s # :nodoc:
|
132
|
+
if type != :runtime then
|
133
|
+
"#{name} (#{requirement}, #{type})"
|
134
|
+
else
|
135
|
+
"#{name} (#{requirement})"
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
139
|
+
##
|
140
|
+
# Dependency type.
|
141
|
+
|
142
|
+
def type
|
143
|
+
@type ||= :runtime
|
144
|
+
end
|
145
|
+
|
146
|
+
def == other # :nodoc:
|
147
|
+
Gem::Dependency === other &&
|
148
|
+
self.name == other.name &&
|
149
|
+
self.type == other.type &&
|
150
|
+
self.requirement == other.requirement
|
151
|
+
end
|
152
|
+
|
153
|
+
##
|
154
|
+
# Dependencies are ordered by name.
|
155
|
+
|
156
|
+
def <=> other
|
157
|
+
self.name <=> other.name
|
158
|
+
end
|
159
|
+
|
160
|
+
##
|
161
|
+
# Uses this dependency as a pattern to compare to +other+. This
|
162
|
+
# dependency will match if the name matches the other's name, and
|
163
|
+
# other has only an equal version requirement that satisfies this
|
164
|
+
# dependency.
|
165
|
+
|
166
|
+
def =~ other
|
167
|
+
unless Gem::Dependency === other
|
168
|
+
return unless other.respond_to?(:name) && other.respond_to?(:version)
|
169
|
+
other = Gem::Dependency.new other.name, other.version
|
170
|
+
end
|
171
|
+
|
172
|
+
return false unless name === other.name
|
173
|
+
|
174
|
+
reqs = other.requirement.requirements
|
175
|
+
|
176
|
+
return false unless reqs.length == 1
|
177
|
+
return false unless reqs.first.first == '='
|
178
|
+
|
179
|
+
version = reqs.first.last
|
180
|
+
|
181
|
+
requirement.satisfied_by? version
|
182
|
+
end
|
183
|
+
|
184
|
+
def match? name, version
|
185
|
+
return false unless self.name === name
|
186
|
+
return true if requirement.none?
|
187
|
+
|
188
|
+
requirement.satisfied_by? Gem::Version.new(version)
|
189
|
+
end
|
190
|
+
|
191
|
+
def matches_spec? spec
|
192
|
+
return false unless name === spec.name
|
193
|
+
return true if requirement.none?
|
194
|
+
|
195
|
+
requirement.satisfied_by?(spec.version)
|
196
|
+
end
|
197
|
+
|
198
|
+
##
|
199
|
+
# Merges the requirements of +other+ into this dependency
|
200
|
+
|
201
|
+
def merge other
|
202
|
+
unless name == other.name then
|
203
|
+
raise ArgumentError,
|
204
|
+
"#{self} and #{other} have different names"
|
205
|
+
end
|
206
|
+
|
207
|
+
default = Gem::Requirement.default
|
208
|
+
self_req = self.requirement
|
209
|
+
other_req = other.requirement
|
210
|
+
|
211
|
+
return self.class.new name, self_req if other_req == default
|
212
|
+
return self.class.new name, other_req if self_req == default
|
213
|
+
|
214
|
+
self.class.new name, self_req.as_list.concat(other_req.as_list)
|
215
|
+
end
|
216
|
+
|
217
|
+
def matching_specs platform_only = false
|
218
|
+
matches = Gem::Specification.find_all { |spec|
|
219
|
+
self.name === spec.name and # TODO: == instead of ===
|
220
|
+
requirement.satisfied_by? spec.version
|
221
|
+
}
|
222
|
+
|
223
|
+
if platform_only
|
224
|
+
matches.reject! { |spec|
|
225
|
+
not Gem::Platform.match spec.platform
|
226
|
+
}
|
227
|
+
end
|
228
|
+
|
229
|
+
matches = matches.sort_by { |s| s.sort_obj } # HACK: shouldn't be needed
|
230
|
+
end
|
231
|
+
|
232
|
+
##
|
233
|
+
# True if the dependency will not always match the latest version.
|
234
|
+
|
235
|
+
def specific?
|
236
|
+
@requirement.specific?
|
237
|
+
end
|
238
|
+
|
239
|
+
def to_specs
|
240
|
+
matches = matching_specs true
|
241
|
+
|
242
|
+
# TODO: check Gem.activated_spec[self.name] in case matches falls outside
|
243
|
+
|
244
|
+
if matches.empty? then
|
245
|
+
specs = Gem::Specification.all_names.join ", "
|
246
|
+
error = Gem::LoadError.new "Could not find #{name} (#{requirement}) amongst [#{specs}]"
|
247
|
+
error.name = self.name
|
248
|
+
error.requirement = self.requirement
|
249
|
+
raise error
|
250
|
+
end
|
251
|
+
|
252
|
+
# TODO: any other resolver validations should go here
|
253
|
+
|
254
|
+
matches
|
255
|
+
end
|
256
|
+
|
257
|
+
def to_spec
|
258
|
+
matches = self.to_specs
|
259
|
+
|
260
|
+
matches.find { |spec| spec.activated? } or matches.last
|
261
|
+
end
|
262
|
+
end
|
263
|
+
|
264
|
+
end
|
@@ -0,0 +1,208 @@
|
|
1
|
+
module Pod::Vendor
|
2
|
+
|
3
|
+
# require "rubygems/version"
|
4
|
+
|
5
|
+
##
|
6
|
+
# A Requirement is a set of one or more version restrictions. It supports a
|
7
|
+
# few (<tt>=, !=, >, <, >=, <=, ~></tt>) different restriction operators.
|
8
|
+
|
9
|
+
# REFACTOR: The fact that a requirement is singular or plural is kind of
|
10
|
+
# awkward. Is Requirement the right name for this? Or should it be one
|
11
|
+
# [op, number] pair, and we call the list of requirements something else?
|
12
|
+
# Since a Requirement is held by a Dependency, maybe this should be made
|
13
|
+
# singular and the list aspect should be pulled up into Dependency?
|
14
|
+
|
15
|
+
# require "rubygems/version"
|
16
|
+
# require "rubygems/deprecate"
|
17
|
+
|
18
|
+
class Gem::Requirement
|
19
|
+
include Comparable
|
20
|
+
|
21
|
+
OPS = { #:nodoc:
|
22
|
+
"=" => lambda { |v, r| v == r },
|
23
|
+
"!=" => lambda { |v, r| v != r },
|
24
|
+
">" => lambda { |v, r| v > r },
|
25
|
+
"<" => lambda { |v, r| v < r },
|
26
|
+
">=" => lambda { |v, r| v >= r },
|
27
|
+
"<=" => lambda { |v, r| v <= r },
|
28
|
+
"~>" => lambda { |v, r| v >= r && v.release < r.bump }
|
29
|
+
}
|
30
|
+
|
31
|
+
quoted = OPS.keys.map { |k| Regexp.quote k }.join "|"
|
32
|
+
PATTERN = /\A\s*(#{quoted})?\s*(#{Gem::Version::VERSION_PATTERN})\s*\z/
|
33
|
+
|
34
|
+
##
|
35
|
+
# Factory method to create a Gem::Requirement object. Input may be
|
36
|
+
# a Version, a String, or nil. Intended to simplify client code.
|
37
|
+
#
|
38
|
+
# If the input is "weird", the default version requirement is
|
39
|
+
# returned.
|
40
|
+
|
41
|
+
def self.create input
|
42
|
+
case input
|
43
|
+
when Gem::Requirement then
|
44
|
+
input
|
45
|
+
when Gem::Version, Array then
|
46
|
+
new input
|
47
|
+
else
|
48
|
+
if input.respond_to? :to_str then
|
49
|
+
new [input.to_str]
|
50
|
+
else
|
51
|
+
default
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
##
|
57
|
+
# A default "version requirement" can surely _only_ be '>= 0'.
|
58
|
+
#--
|
59
|
+
# This comment once said:
|
60
|
+
#
|
61
|
+
# "A default "version requirement" can surely _only_ be '> 0'."
|
62
|
+
|
63
|
+
def self.default
|
64
|
+
new '>= 0'
|
65
|
+
end
|
66
|
+
|
67
|
+
##
|
68
|
+
# Parse +obj+, returning an <tt>[op, version]</tt> pair. +obj+ can
|
69
|
+
# be a String or a Gem::Version.
|
70
|
+
#
|
71
|
+
# If +obj+ is a String, it can be either a full requirement
|
72
|
+
# specification, like <tt>">= 1.2"</tt>, or a simple version number,
|
73
|
+
# like <tt>"1.2"</tt>.
|
74
|
+
#
|
75
|
+
# parse("> 1.0") # => [">", "1.0"]
|
76
|
+
# parse("1.0") # => ["=", "1.0"]
|
77
|
+
# parse(Gem::Version.new("1.0")) # => ["=, "1.0"]
|
78
|
+
|
79
|
+
def self.parse obj
|
80
|
+
return ["=", obj] if Gem::Version === obj
|
81
|
+
|
82
|
+
unless PATTERN =~ obj.to_s
|
83
|
+
raise ArgumentError, "Illformed requirement [#{obj.inspect}]"
|
84
|
+
end
|
85
|
+
|
86
|
+
[$1 || "=", Gem::Version.new($2)]
|
87
|
+
end
|
88
|
+
|
89
|
+
##
|
90
|
+
# An array of requirement pairs. The first element of the pair is
|
91
|
+
# the op, and the second is the Gem::Version.
|
92
|
+
|
93
|
+
attr_reader :requirements #:nodoc:
|
94
|
+
|
95
|
+
##
|
96
|
+
# Constructs a requirement from +requirements+. Requirements can be
|
97
|
+
# Strings, Gem::Versions, or Arrays of those. +nil+ and duplicate
|
98
|
+
# requirements are ignored. An empty set of +requirements+ is the
|
99
|
+
# same as <tt>">= 0"</tt>.
|
100
|
+
|
101
|
+
def initialize *requirements
|
102
|
+
requirements = requirements.flatten
|
103
|
+
requirements.compact!
|
104
|
+
requirements.uniq!
|
105
|
+
|
106
|
+
requirements << ">= 0" if requirements.empty?
|
107
|
+
@none = (requirements == ">= 0")
|
108
|
+
@requirements = requirements.map! { |r| self.class.parse r }
|
109
|
+
end
|
110
|
+
|
111
|
+
def none?
|
112
|
+
@none ||= (to_s == ">= 0")
|
113
|
+
end
|
114
|
+
|
115
|
+
def as_list # :nodoc:
|
116
|
+
requirements.map { |op, version| "#{op} #{version}" }.sort
|
117
|
+
end
|
118
|
+
|
119
|
+
def hash # :nodoc:
|
120
|
+
requirements.hash
|
121
|
+
end
|
122
|
+
|
123
|
+
def marshal_dump # :nodoc:
|
124
|
+
fix_syck_default_key_in_requirements
|
125
|
+
|
126
|
+
[@requirements]
|
127
|
+
end
|
128
|
+
|
129
|
+
def marshal_load array # :nodoc:
|
130
|
+
@requirements = array[0]
|
131
|
+
|
132
|
+
fix_syck_default_key_in_requirements
|
133
|
+
end
|
134
|
+
|
135
|
+
def yaml_initialize(tag, vals) # :nodoc:
|
136
|
+
vals.each do |ivar, val|
|
137
|
+
instance_variable_set "@#{ivar}", val
|
138
|
+
end
|
139
|
+
|
140
|
+
fix_syck_default_key_in_requirements
|
141
|
+
end
|
142
|
+
|
143
|
+
def init_with coder # :nodoc:
|
144
|
+
yaml_initialize coder.tag, coder.map
|
145
|
+
end
|
146
|
+
|
147
|
+
def prerelease?
|
148
|
+
requirements.any? { |r| r.last.prerelease? }
|
149
|
+
end
|
150
|
+
|
151
|
+
def pretty_print q # :nodoc:
|
152
|
+
q.group 1, 'Gem::Requirement.new(', ')' do
|
153
|
+
q.pp as_list
|
154
|
+
end
|
155
|
+
end
|
156
|
+
|
157
|
+
##
|
158
|
+
# True if +version+ satisfies this Requirement.
|
159
|
+
|
160
|
+
def satisfied_by? version
|
161
|
+
# #28965: syck has a bug with unquoted '=' YAML.loading as YAML::DefaultKey
|
162
|
+
requirements.all? { |op, rv| (OPS[op] || OPS["="]).call version, rv }
|
163
|
+
end
|
164
|
+
|
165
|
+
alias :=== :satisfied_by?
|
166
|
+
alias :=~ :satisfied_by?
|
167
|
+
|
168
|
+
##
|
169
|
+
# True if the requirement will not always match the latest version.
|
170
|
+
|
171
|
+
def specific?
|
172
|
+
return true if @requirements.length > 1 # GIGO, > 1, > 2 is silly
|
173
|
+
|
174
|
+
not %w[> >=].include? @requirements.first.first # grab the operator
|
175
|
+
end
|
176
|
+
|
177
|
+
def to_s # :nodoc:
|
178
|
+
as_list.join ", "
|
179
|
+
end
|
180
|
+
|
181
|
+
def <=> other # :nodoc:
|
182
|
+
to_s <=> other.to_s
|
183
|
+
end
|
184
|
+
|
185
|
+
private
|
186
|
+
|
187
|
+
def fix_syck_default_key_in_requirements
|
188
|
+
Gem.load_yaml
|
189
|
+
|
190
|
+
# Fixup the Syck DefaultKey bug
|
191
|
+
@requirements.each do |r|
|
192
|
+
if r[0].kind_of? Gem::SyckDefaultKey
|
193
|
+
r[0] = "="
|
194
|
+
end
|
195
|
+
end
|
196
|
+
end
|
197
|
+
end
|
198
|
+
|
199
|
+
# :stopdoc:
|
200
|
+
# Gem::Version::Requirement is used in a lot of old YAML specs. It's aliased
|
201
|
+
# here for backwards compatibility. I'd like to remove this, maybe in RubyGems
|
202
|
+
# 2.0.
|
203
|
+
|
204
|
+
# ::Gem::Version::Requirement = ::Gem::Requirement
|
205
|
+
Gem::Version::Requirement = Gem::Requirement
|
206
|
+
# :startdoc:
|
207
|
+
|
208
|
+
end
|