class Ollama::Utils::Tags

def add(tag, source: nil)

def add(tag, source: nil)
  unless tag.is_a?(Tag)
    tag = Tag.new(tag, source:)
  end
  index = @set.bsearch_index { _1 >= tag }
  if index == nil
    @set.push(tag)
  elsif @set.at(index) != tag
    @set.insert(index, tag)
  end
  self
end

def clear

def clear
  @set.clear
end

def each(&block)

def each(&block)
  @set.each(&block)
end

def empty?

def empty?
  @set.empty?
end

def initialize(tags = [], source: nil)

def initialize(tags = [], source: nil)
  @set = []
  tags.each { |tag| add(tag, source:) }
end

def size

def size
  @set.size
end

def to_s(link: true)

def to_s(link: true)
  @set.map { |tag| tag.to_s(link:) } * ' '
end