Class: Richcss::RichSpecificationProvider
- Inherits:
-
Object
- Object
- Richcss::RichSpecificationProvider
- Includes:
- Molinillo::SpecificationProvider
- Defined in:
- lib/richcss/richcss_specification_provider.rb
Instance Attribute Summary collapse
-
#part_name ⇒ Object
Returns the value of attribute part_name.
-
#specs ⇒ Object
Returns the value of attribute specs.
-
#version ⇒ Object
Returns the value of attribute version.
Instance Method Summary collapse
- #dependencies_for(dependency) ⇒ Object
-
#initialize(name, version) ⇒ RichSpecificationProvider
constructor
A new instance of RichSpecificationProvider.
- #name_for(dependency) ⇒ Object
- #name_for_explicit_dependency_source ⇒ Object
- #name_for_locking_dependency_source ⇒ Object
- #requirement_satisfied_by?(requirement, _activated, spec) ⇒ Boolean
- #search_for(dependency) ⇒ Object
- #sort_dependencies(dependencies, activated, conflicts) ⇒ Object
Constructor Details
#initialize(name, version) ⇒ RichSpecificationProvider
Returns a new instance of RichSpecificationProvider.
12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/richcss/richcss_specification_provider.rb', line 12 def initialize(name, version) self.part_name = name self.version = version response = RestClient.get "http://www.cssparts.com/api/part/#{name}/dependency", {:params => {'version' => version}} if response.code == 200 self.specs = JSON.load(response.body).reduce(Hash.new([])) do |specs_by_name, (dep_name, dep_versions)| specs_by_name.tap do |specs| specs[dep_name] = dep_versions.map { |s| Richcss::TestSpecification.new s }.sort_by(&:version) end end end end |
Instance Attribute Details
#part_name ⇒ Object
Returns the value of attribute part_name.
7 8 9 |
# File 'lib/richcss/richcss_specification_provider.rb', line 7 def part_name @part_name end |
#specs ⇒ Object
Returns the value of attribute specs.
6 7 8 |
# File 'lib/richcss/richcss_specification_provider.rb', line 6 def specs @specs end |
#version ⇒ Object
Returns the value of attribute version.
8 9 10 |
# File 'lib/richcss/richcss_specification_provider.rb', line 8 def version @version end |
Instance Method Details
#dependencies_for(dependency) ⇒ Object
52 53 54 |
# File 'lib/richcss/richcss_specification_provider.rb', line 52 def dependencies_for(dependency) dependency.dependencies end |
#name_for(dependency) ⇒ Object
40 41 42 |
# File 'lib/richcss/richcss_specification_provider.rb', line 40 def name_for(dependency) dependency.name end |
#name_for_explicit_dependency_source ⇒ Object
44 45 46 |
# File 'lib/richcss/richcss_specification_provider.rb', line 44 def name_for_explicit_dependency_source 'Partfile' end |
#name_for_locking_dependency_source ⇒ Object
48 49 50 |
# File 'lib/richcss/richcss_specification_provider.rb', line 48 def name_for_locking_dependency_source 'Partfile.lock' end |
#requirement_satisfied_by?(requirement, _activated, spec) ⇒ Boolean
25 26 27 |
# File 'lib/richcss/richcss_specification_provider.rb', line 25 def requirement_satisfied_by?(requirement, _activated, spec) requirement.satisfied_by?(spec.version) end |
#search_for(dependency) ⇒ Object
29 30 31 32 33 34 35 36 37 38 |
# File 'lib/richcss/richcss_specification_provider.rb', line 29 def search_for(dependency) @search_for ||= {} @search_for[dependency] ||= begin pre_release = dependency_pre_release?(dependency) specs[dependency.name].select do |spec| (pre_release ? true : !spec.version.pre_release?) && dependency.satisfied_by?(spec.version) end end end |
#sort_dependencies(dependencies, activated, conflicts) ⇒ Object
56 57 58 59 60 61 62 63 64 65 |
# File 'lib/richcss/richcss_specification_provider.rb', line 56 def sort_dependencies(dependencies, activated, conflicts) dependencies.sort_by do |d| [ activated.vertex_named(d.name).payload ? 0 : 1, dependency_pre_release?(d) ? 0 : 1, conflicts[d.name] ? 0 : 1, activated.vertex_named(d.name).payload ? 0 : search_for(d).count, ] end end |