class CesarCifrado

Public Instance Methods

cesar(dato, rotasiones, orientacion = 1) click to toggle source
# File lib/cobreak/cesar.rb, line 2
def cesar(dato, rotasiones, orientacion = 1)
  cesar = OpenStruct.new
  cesar.cad_rot = []
  alfa_mayus = ('A'..'Z').to_a
  alfa_minus = ('a'..'z').to_a
  alf = 26
  lit_mayus = 65
  lit_minus = 97
  cad_rot = ""
  for letra in dato.chars
    if !letra.match(/^[[:alpha:]]$/)
      cad_rot += letra
      next
    end
    alfabeto = alfa_mayus
    limit = lit_mayus
    if letra == letra.downcase
      alfabeto = alfa_minus
      limit = lit_minus
    end
    var_ascii = letra.ord
    rot_ver = rotasiones * orientacion
    new_pos = (var_ascii - limit + rot_ver) % alf
    cesar.cad_rot << alfabeto[new_pos]
    end
    return cesar.cad_rot.join('')
end