Sha256: 635e957f09e9f86c0f69dc4d2ba5eb450ebbb0ae32b29573809511a3ea4b6b9a
Contents?: true
Size: 1.47 KB
Versions: 7
Compression:
Stored size: 1.47 KB
Contents
# frozen_string_literal: true module Vedeu module Cursors # Provides the mechanism to move a named cursor in a given # direction. # # @api private # class Move extend Forwardable def_delegators :cursor, :visible? # @param (see #initialize) # @return (see #move) def self.move(name, direction) new(name, direction).move end # @param name [String|Symbol] # @param direction [Symbol] # @return [Vedeu::Cursors::Move] def initialize(name, direction) @name = name @direction = direction end # @return [NilClass|Vedeu::Cursors::Cursor] def move return nil unless visible? && valid_direction? cursor.public_send(direction) cursor.store { Vedeu.trigger(:_refresh_cursor_, name) } cursor end protected # @!attribute [r] name # @return [String|Symbol] The name of the cursor. attr_reader :name # @!attribute [r] direction # @return [Symbol] The direction to move the cursor. attr_reader :direction private # @return [Vedeu::Cursors::Cursor] def cursor @_cursor ||= Vedeu.cursors.by_name(name) end # @return [Boolean] def valid_direction? [ :move_down, :move_left, :move_right, :move_up, ].include?(direction) end end # Move end # Cursors end # Vedeu
Version data entries
7 entries across 7 versions & 1 rubygems