Class: GemStore
Constant Summary collapse
- PER_PAGE =
100
Instance Method Summary collapse
- #[](name) ⇒ Object
- #[]=(name, versions) ⇒ Object
- #delete(name) ⇒ Object
- #each(&block) ⇒ Object
- #each_of_letter(letter, page, &block) ⇒ Object
- #empty? ⇒ Boolean
- #find_by(search, page) ⇒ Object
- #has_key?(name) ⇒ Boolean
- #pages_of_find_by(search) ⇒ Object
- #pages_of_letter(letter) ⇒ Object
- #size ⇒ Object
Instance Method Details
#[](name) ⇒ Object
23 |
# File 'lib/gem_store.rb', line 23 def [](name) to_versions(RemoteGem.first(name_eq(name))) end |
#[]=(name, versions) ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/gem_store.rb', line 24 def []=(name, versions) versions = versions.split(' ') if versions.is_a?(String) versions = versions.map {|v| v.is_a?(YARD::Server::LibraryVersion) ? v.version : v } versions = VersionSorter.sort(versions) if RemoteGem.where(name_eq(name)).count > 0 RemoteGem.first(name_eq(name)).update(versions: versions.join(" ")) else RemoteGem.create(name: name, versions: versions.join(" ")) end rescue Sequel::DatabaseError => e puts "Database error when writing versions (locked?): #{e.}" end |
#delete(name) ⇒ Object
37 38 39 |
# File 'lib/gem_store.rb', line 37 def delete(name) RemoteGem.where(name_eq(name)).delete end |
#each(&block) ⇒ Object
42 |
# File 'lib/gem_store.rb', line 42 def each(&block) RemoteGem.each {|row| yield row.name, to_versions(row) } end |
#each_of_letter(letter, page, &block) ⇒ Object
50 51 52 53 54 55 56 57 |
# File 'lib/gem_store.rb', line 50 def each_of_letter(letter, page, &block) return enum_for(:each_of_letter, letter, page) unless block_given? RemoteGem.where(Sequel.like(:name, "#{letter}%")). limit(PER_PAGE, (page - 1) * PER_PAGE).each do |row| yield row.name, to_versions(row) end end |
#empty? ⇒ Boolean
44 |
# File 'lib/gem_store.rb', line 44 def empty?; size == 0 end |
#find_by(search, page) ⇒ Object
63 64 65 66 67 68 69 70 71 |
# File 'lib/gem_store.rb', line 63 def find_by(search, page) return enum_for(:find_by, search, page) unless block_given? RemoteGem.where(Sequel.like(:name, "%#{search}%")). order { length(:name).asc }. limit(PER_PAGE, (page - 1) * PER_PAGE).each do |row| yield row.name, to_versions(row) end end |
#has_key?(name) ⇒ Boolean
41 |
# File 'lib/gem_store.rb', line 41 def has_key?(name) !!RemoteGem.first(name_eq(name)) end |
#pages_of_find_by(search) ⇒ Object
59 60 61 |
# File 'lib/gem_store.rb', line 59 def pages_of_find_by(search) (RemoteGem.where(Sequel.like(:name, "%#{search}%")).count / PER_PAGE).to_i end |
#pages_of_letter(letter) ⇒ Object
46 47 48 |
# File 'lib/gem_store.rb', line 46 def pages_of_letter(letter) (RemoteGem.where(Sequel.like(:name, "#{letter}%")).count / PER_PAGE).to_i end |
#size ⇒ Object
43 |
# File 'lib/gem_store.rb', line 43 def size; RemoteGem.count end |