class RBS::Parser

def self.buffer(source)

def self.buffer(source)
  case source
  when String
    Buffer.new(content: source, name: "a.rbs")
  when Buffer
    source
  end
end

def self.parse_method_type(source, range: 0..., variables: [])

def self.parse_method_type(source, range: 0..., variables: [])
  buf = buffer(source)
  _parse_method_type(buf, range.begin || 0, range.end || buf.last_position, variables)
end

def self.parse_signature(source)

def self.parse_signature(source)
  buf = buffer(source)
  dirs, decls = _parse_signature(buf, buf.last_position)
  [buf, dirs, decls]
end

def self.parse_type(source, range: 0..., variables: [])

def self.parse_type(source, range: 0..., variables: [])
  buf = buffer(source)
  _parse_type(buf, range.begin || 0, range.end || buf.last_position, variables)
end