Module: LibyearRb::Sorter
- Defined in:
- lib/libyear_rb/sorter.rb
Constant Summary collapse
- DEFAULT_SPEC =
"libyear,name"- COLUMNS =
{ "name" => SortColumn.new(field: :name, direction: :asc), "latest-date" => SortColumn.new(field: :latest_version_release_date, direction: :desc), "versions" => SortColumn.new(field: :version_distance, direction: :desc), "libyear" => SortColumn.new(field: :libyear_in_days, direction: :desc) }.freeze
- InvalidSpec =
Class.new(ArgumentError)
Class Method Summary collapse
Class Method Details
.parse(spec) ⇒ Object
28 29 30 31 32 33 34 35 36 |
# File 'lib/libyear_rb/sorter.rb', line 28 def parse(spec) spec.to_s.split(",").map do |part| column = part.strip unless COLUMNS.key?(column) raise InvalidSpec, "Unknown sort column: #{column.inspect}. Available columns: #{COLUMNS.keys.join(", ")}." end COLUMNS.fetch(column) end end |
.sort(results, sorters) ⇒ Object
38 39 40 41 42 43 44 45 46 47 |
# File 'lib/libyear_rb/sorter.rb', line 38 def sort(results, sorters) results.sort do |a, b| cmp = 0 sorters.each do |sorter| cmp = sorter.compare(a, b) break unless cmp.zero? end cmp end end |