Sha256: 0014b5c2f6d2f23204b937f6b35a9139bb16043590f353880ea4ec359c87c621

Contents?: true

Size: 1.16 KB

Versions: 4

Compression:

Stored size: 1.16 KB

Contents

module Scenic
  module CommandRecorder
    # @api private
    class StatementArguments
      def initialize(args)
        @args = args.freeze
      end

      def view
        @args[0]
      end

      def version
        options[:version]
      end

      def revert_to_version
        options[:revert_to_version]
      end

      def invert_version
        StatementArguments.new([view, options_for_revert])
      end

      def remove_version
        StatementArguments.new([view, options_without_version])
      end

      def to_a
        @args.to_a.dup.delete_if(&:empty?)
      end

      private

      def options
        @options ||= @args[1] || {}
      end

      def keyword_hash(hash)
        if Hash.respond_to? :ruby2_keywords_hash
          Hash.ruby2_keywords_hash(hash)
        else
          hash
        end
      end

      def options_for_revert
        opts = options.clone.tap do |revert_options|
          revert_options[:version] = revert_to_version
          revert_options.delete(:revert_to_version)
        end

        keyword_hash(opts)
      end

      def options_without_version
        keyword_hash(options.except(:version))
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
scenic-1.8.0 lib/scenic/command_recorder/statement_arguments.rb
scenic-1.7.0 lib/scenic/command_recorder/statement_arguments.rb
scenic-1.6.0 lib/scenic/command_recorder/statement_arguments.rb
scenic-1.5.5 lib/scenic/command_recorder/statement_arguments.rb