Sha256: ef7c669411a835cca202cc321ad2c5da6fdcb9d36828c8280d1483139fb033a9

Contents?: true

Size: 897 Bytes

Versions: 9

Compression:

Stored size: 897 Bytes

Contents

# typed: strict
# frozen_string_literal: true

module Tapioca
  class RepoIndex
    extend T::Sig
    extend T::Generic

    sig { params(json: String).returns(RepoIndex) }
    def self.from_json(json)
      RepoIndex.from_hash(JSON.parse(json))
    end

    sig { params(hash: T::Hash[String, T::Hash[T.untyped, T.untyped]]).returns(RepoIndex) }
    def self.from_hash(hash)
      hash.each_with_object(RepoIndex.new) do |(name, _), index|
        index << name
      end
    end

    sig { void }
    def initialize
      @entries = T.let(Set.new, T::Set[String])
    end

    sig { params(gem_name: String).void }
    def <<(gem_name)
      @entries.add(gem_name)
    end

    sig { returns(T::Enumerable[String]) }
    def gems
      @entries.sort
    end

    sig { params(gem_name: String).returns(T::Boolean) }
    def has_gem?(gem_name)
      @entries.include?(gem_name)
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
tapioca-0.9.4 lib/tapioca/repo_index.rb
tapioca-0.9.3 lib/tapioca/repo_index.rb
tapioca-0.9.2 lib/tapioca/repo_index.rb
tapioca-0.9.1 lib/tapioca/repo_index.rb
tapioca-0.9.0 lib/tapioca/repo_index.rb
tapioca-0.8.3 lib/tapioca/repo_index.rb
tapioca-0.8.2 lib/tapioca/repo_index.rb
tapioca-0.8.1 lib/tapioca/repo_index.rb
tapioca-0.8.0 lib/tapioca/repo_index.rb