Sha256: 40f470c0543dea233cf45e2ff5665bdfc551cc5c7ec58f3567b8025e0f126619

Contents?: true

Size: 1.57 KB

Versions: 1

Compression:

Stored size: 1.57 KB

Contents


##
# Auteur:: Brabant Mano
# Version:: 0.1
# Date:: 09/04/2020
#
#Cette classe représente une structure de donnée permettant de faire des undo et des redo
class UndoRedo

  #@indice => La position dans la undoRedo

  private_class_method :new

  ##
  #Ce constructeur permet de créer une nouvelle undoRedo
  def UndoRedo.creer()
    new()
  end

  #:nodoc:
  def initialize()

    @actions = Array.new()
    clear()

  end
  #:doc:

  ##
  #Cette méthode permet de d'empiler un élément
  #param::
  # * element L'élément à empiler
  def empiler(element)

    @actions.insert(@indice, element)
    @indice += 1
    @nbElement = @indice
    return self

  end

  ##
  #Cette méthode permet de recupérer l'élément d'avant (de descendre dans la undoRedo)
  #return::
  # * L'élément d'avant
  def undo()

    if(@indice <= 0)
      raise("La undoRedo est vide")
    else
      @indice -= 1
      return @actions.at(@indice)
    end

  end

  ##
  #Cette méthode permet de recupérer l'élément du dernier undo (de remonter dans la undoRedo)
  #return::
  # * L'élément du dernier undo
  def redo()

    if(@indice >= @nbElement)
      raise("Vous etes au bout de la undoRedo")
    else
      @indice += 1
      return @actions.at(@indice - 1)
    end

  end

  ##
  #Cette méthode permet de savoir si la undoRedo est vide
  #return::
  # * true Si la undoRedo est vide
  # * false Sinon
  def empty?()
    return @actions.empty?()
  end

  ##
  #Cette méthode permet de vider la undoRedo
  def clear()

    @actions.clear()
    @indice = 0
    @nbElement = 0
    return self

  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
Hashiparmentier-0.4.0 lib/Hashiparmentier/Core/UndoRedo.rb