class Spoom::Sorbet::Config
“‘
puts config.ignore # “c”
puts config.paths # “a”, “b”
CONFIG
–ignore=c
–file=b
a
config = Spoom::Sorbet::Config.parse_string(<<~CONFIG)
“`ruby
Parses a Sorbet config string:
“`
puts config.paths # “.”
config = Spoom::Sorbet::Config.parse_file(“sorbet/config”)
“`ruby
Parses a Sorbet config file:
Parse Sorbet config files
def copy
def copy new_config = Sorbet::Config.new new_config.paths.concat(@paths) new_config.ignore.concat(@ignore) new_config.allowed_extensions.concat(@allowed_extensions) new_config end
def initialize
def initialize @paths = T.let([], T::Array[String]) @ignore = T.let([], T::Array[String]) @allowed_extensions = T.let([], T::Array[String]) end
def options_string
def options_string opts = [] opts.concat(paths) opts.concat(ignore.map { |p| "--ignore #{p}" }) opts.concat(allowed_extensions.map { |ext| "--allowed-extension #{ext}" }) opts.join(" ") end
def parse_file(sorbet_config_path)
def parse_file(sorbet_config_path) parse_string(File.read(sorbet_config_path)) end
def parse_option(line)
def parse_option(line) T.must(line.split("=").last).strip end
def parse_string(sorbet_config)
def parse_string(sorbet_config) config = Config.new state = T.let(nil, T.nilable(Symbol)) sorbet_config.each_line do |line| line = line.strip case line when /^--allowed-extension$/ state = :extension next when /^--allowed-extension=/ config.allowed_extensions << parse_option(line) next when /^--ignore=/ config.ignore << parse_option(line) next when /^--ignore$/ state = :ignore next when /^--ignore=/ config.ignore << parse_option(line) next when /^--file$/ next when /^--file=/ config.paths << parse_option(line) next when /^--dir$/ next when /^--dir=/ config.paths << parse_option(line) next when /^--.*=/ next when /^--/ state = :skip when /^-.*=?/ next else case state when :ignore config.ignore << line when :extension config.allowed_extensions << line when :skip # nothing else config.paths << line end state = nil end end config end