class Spoom::Sorbet::Config
Parse Sorbet
config files
Parses a Sorbet
config file:
“`ruby config = Spoom::Sorbet::Config.parse_file
(“sorbet/config”) puts config.paths # “.” “`
Parses a Sorbet
config string:
“`ruby config = Spoom::Sorbet::Config.parse_string
(<<~CONFIG)
a --file=b --ignore=c
CONFIG puts config.paths # “a”, “b” puts config.ignore # “c” “`
Attributes
allowed_extensions[R]
ignore[R]
no_stdlib[RW]
paths[R]
Public Class Methods
new()
click to toggle source
# File lib/spoom/sorbet/config.rb, line 36 def initialize @paths = T.let([], T::Array[String]) @ignore = T.let([], T::Array[String]) @allowed_extensions = T.let([], T::Array[String]) @no_stdlib = T.let(false, T::Boolean) end
parse_file(sorbet_config_path)
click to toggle source
# File lib/spoom/sorbet/config.rb, line 79 def parse_file(sorbet_config_path) parse_string(File.read(sorbet_config_path)) end
parse_string(sorbet_config)
click to toggle source
# File lib/spoom/sorbet/config.rb, line 84 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 /^--no-stdlib$/ config.no_stdlib = true next when /^--.*=/ next when /^--/ state = :skip when /^-.*=?/ next when /^#/ next 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
Private Class Methods
parse_option(line)
click to toggle source
# File lib/spoom/sorbet/config.rb, line 148 def parse_option(line) T.must(line.split("=").last).strip end
Public Instance Methods
copy()
click to toggle source
# File lib/spoom/sorbet/config.rb, line 44 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.no_stdlib = @no_stdlib new_config end
options_string()
click to toggle source
# File lib/spoom/sorbet/config.rb, line 66 def options_string opts = [] opts.concat(paths) opts.concat(ignore.map { |p| "--ignore #{p}" }) opts.concat(allowed_extensions.map { |ext| "--allowed-extension #{ext}" }) opts << "--no-stdlib" if @no_stdlib opts.join(" ") end