class Richcss::RichSpecificationProvider
Attributes
part_name[RW]
specs[RW]
version[RW]
Public Class Methods
new(name, version)
click to toggle source
# 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
Public Instance Methods
dependencies_for(dependency)
click to toggle source
# File lib/richcss/richcss_specification_provider.rb, line 52 def dependencies_for(dependency) dependency.dependencies end
name_for(dependency)
click to toggle source
# File lib/richcss/richcss_specification_provider.rb, line 40 def name_for(dependency) dependency.name end
name_for_explicit_dependency_source()
click to toggle source
# File lib/richcss/richcss_specification_provider.rb, line 44 def name_for_explicit_dependency_source 'Partfile' end
name_for_locking_dependency_source()
click to toggle source
# File lib/richcss/richcss_specification_provider.rb, line 48 def name_for_locking_dependency_source 'Partfile.lock' end
requirement_satisfied_by?(requirement, _activated, spec)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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
Private Instance Methods
dependency_pre_release?(dependency)
click to toggle source
# File lib/richcss/richcss_specification_provider.rb, line 69 def dependency_pre_release?(dependency) dependency.requirement_list.requirements.any? do |r| VersionKit::Version.new(r.reference_version).pre_release? end end