Sha256: d99b5643889301fd60ea280bd250771e2b0d8186b26da779baa287a240051825

Contents?: true

Size: 871 Bytes

Versions: 3

Compression:

Stored size: 871 Bytes

Contents

require_relative 'signature'
require_relative 'tags'

module Signore
  class SigFromStream
    Params = Struct.new(*%i(text author subject source))

    def self.sig_from(input, tags: Tags.new)
      new(input, tags: tags).to_sig
    end

    def initialize(input, tags: Tags.new)
      @input = input
      @tags  = tags
    end

    def to_sig
      Signature.new(author: params.author, source: params.source,
                    subject: params.subject, tags: tags.required,
                    text: params.text)
    end

    attr_reader :input, :tags
    private     :input, :tags

    private

    def get_param(param)
      puts "#{param}?"
      ''.tap do |value|
        value << input.gets until value.lines.to_a.last == "\n"
      end.strip
    end

    def params
      @params ||= Params.new(*Params.members.map { |name| get_param(name) })
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
signore-0.3.2 lib/signore/sig_from_stream.rb
signore-0.3.1 lib/signore/sig_from_stream.rb
signore-0.3.0 lib/signore/sig_from_stream.rb