Class: RailsDevtools::GemSearchForm

Inherits:
Object
  • Object
show all
Includes:
ActiveModel::Model
Defined in:
app/forms/rails_devtools/gem_search_form.rb

Constant Summary collapse

GemInfo =
Data.define(
  :name,
  :required_version,
  :actual_version,
  :homepage,
  :summary,
  :source_code,
  :documentation,
  :groups,
  :date,
  :latest_version,
  :changelog
) do
  def outdated?
    return false if latest_version.nil?

    actual_version < latest_version.version
  end
end

Instance Method Summary collapse

Constructor Details

#initialize(search: "") ⇒ GemSearchForm

Returns a new instance of GemSearchForm.



27
28
29
# File 'app/forms/rails_devtools/gem_search_form.rb', line 27

def initialize(search: "")
  @search = search.downcase
end

Instance Method Details

#resultsObject



31
32
33
34
35
36
37
38
39
40
# File 'app/forms/rails_devtools/gem_search_form.rb', line 31

def results
  specs = ask_bundler_for_specs
  gems_list = specs.map { |gem_spec| GemInfo.new(**gem_spec) }

  return order(gems_list) if @search.empty?

  order(
    gems_list.select { |gem| gem.name.include?(@search) }
  )
end