# typed: true require('cli/ui') module CLI module UI module Widgets class Base extend T::Sig extend T::Helpers abstract! sig { params(argstring: String).returns(String) } def self.call(argstring) new(argstring).render end sig { params(argstring: String).void } def initialize(argstring) pat = self.class.argparse_pattern unless (@match_data = pat.match(argstring)) raise(Widgets::InvalidWidgetArguments.new(argstring, pat)) end @match_data.names.each do |name| instance_variable_set(:"@#{name}", @match_data[name]) end end sig { abstract.returns(Regexp) } def self.argparse_pattern; end sig { abstract.returns(String) } def render; end end end end end