Sha256: ebfba69143f70a40ce86be42946b605fb43295b274824452ef85a62161b17796

Contents?: true

Size: 870 Bytes

Versions: 3

Compression:

Stored size: 870 Bytes

Contents

# 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

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
gorails-0.1.5 vendor/deps/cli-ui/lib/cli/ui/widgets/base.rb
gorails-0.1.4 vendor/deps/cli-ui/lib/cli/ui/widgets/base.rb
gorails-0.1.3 vendor/deps/cli-ui/lib/cli/ui/widgets/base.rb