Mundo Maker
¡Bienvenid@ a Mundo Maker!

¿Quieres aprender todo sobre el RPG Maker?



Regístrate y forma parte de Mundo Maker.

[XP/VX/ACE] [Herramienta de scripter] String + (sencillo)

Ver el tema anterior Ver el tema siguiente Ir abajo

[XP/VX/ACE] [Herramienta de scripter] String + (sencillo)

Mensaje por Wecoc el 2014-01-03, 09:09

Bueno, éste añadido es un poco tonto estando métodos como grep y otros por el estilo, pero se muchos no sabemos muy bien como usar eso y tampoco nos gusta xD La verdad, grep es bastante liado.
Así que hice ésta mejora al String default.

No requiere créditos, podéis modificarlo, subir vuestra versión y éstas cosas xD

Código:
# ================================================================
#  String + (simple)
# ================================================================

class String
  def is_letter?
    return false if self.size != 1
    if self[0].between?(65, 90) or self[0].between?(97, 122)
      return true
    else
      return false
    end
  end
  
  def is_cap?
    return false if self.size != 1
    if self[0].between?(65, 90)
      return true
    else
      return false
    end
  end
  
  def is_number?
    return false if self.size != 1
    if self[0].between?(48, 57)
      return true
    else
      return false
    end
  end
  
  def is_symbol?
    return false if self.size != 1
    if self.is_letter? == false and self.is_number? == false
      return true
    else
      return false
    end
  end
  
  def all_letters?
    for i in 0...self.size
      next if self[i] == 32
      unless self[i].chr.is_letter?
        return false
      end
    end
    return true
  end
  
  def all_caps?
    for i in 0...self.size
      next if self[i] == 32
      unless self[i].chr.is_cap?
        return false
      end
    end
    return true
  end
  
  def all_numbers?
    for i in 0...self.size
      next if self[i] == 32
      unless self[i].chr.is_number?
        return false
      end
    end
    return true
  end
  
  def all_symbols?
    for i in 0...self.size
      next if self[i] == 32
      unless self[i].chr.is_symbol?
        return false
      end
    end
    return true
  end
  
  def each_all?(&block)
    for i in 0...self.size
      unless self[i].chr.all?(&block)
        return false
      end
    end
    return true
  end
  
  def each_any?(&block)
    for i in 0...self.size
      if self[i].chr.any?(&block)
        return true
      end
    end
    return false
  end
  
  def each_find(&block)
    array = []
    for i in 0...self.size
      if self[i].chr.find(&block) != nil
        array.push(self[i].chr.find(&block))
      end
    end
    return array
  end
  
  def each_find_pos(&block)
    array = []
    for i in 0...self.size
      if self[i].chr.find(&block) != nil
        array.push(i)
      end
    end
    return array
  end
  
  alias default_downcase downcase
  def downcase(&block)
    return default_downcase if block == nil
    return self if each_find(&block).size == 0
    array = []
    for i in 0...self.size
      if self[i].chr.find(&block) != nil
        array.push(self[i].chr.downcase)
      else
        array.push(self[i].chr)
      end
    end
    return array.to_s
  end
    
  alias default_upcase upcase
  def upcase(&block)
    return default_upcase if block == nil
    return self if each_find(&block).size == 0
    array = []
    for i in 0...self.size
      if self[i].chr.find(&block) != nil
        array.push(self[i].chr.upcase)
      else
        array.push(self[i].chr)
      end
    end
    return array.to_s
  end
  
  alias default_swapcase swapcase
  def swapcase(&block)
    return default_swapcase if block == nil
    return self if each_find(&block).size == 0
    array = []
    for i in 0...self.size
      if self[i].chr.find(&block) != nil
        array.push(self[i].chr.swapcase)
      else
        array.push(self[i].chr)
      end
    end
    return array.to_s
  end
  
  def word_size
    return 0 if self.delete(" ").size == 0
    return 1 unless self.include?(" ")
    string = self.squeeze(" ").strip
    return string.count(" ") + 1
  end
end

En realidad quería hacer una cosa muy diferente y quizá más innovadora pero era demasiado... jeje mejor dejémoslo xDD

El script tiene las siguientes nuevas funciones:

Los siguientes dan una clasificación de carácteres según su tipo

is_letter? --> mira si la string es una letra, de A a z
is_cap? --> mira si la string es una mayúscula, de A a Z
is_number? --> mira si la string es un número, de 0 a 9
is_symbol? --> mira si la string es un símbolo, que es como decir que no es ninguno de los anteriores xD

all_letters? --> mira si en TODOS los carácteres de la string se cumple is_letter?
all_caps? --> mira si en TODOS los carácteres de la string se cumple is_cap?
all_numbers? --> mira si en TODOS los carácteres de la string se cumple is_number?
all_symbols? --> mira si en TODOS los carácteres de la string se cumple is_symbol?

any_letters? --> mira si en ALGÚN carácter de la string se cumple is_letter?
any_caps? --> mira si en ALGÚN carácter de la string se cumple is_cap?
any_numbers? --> mira si en ALGÚN carácter de la string se cumple is_number?
any_symbols? --> mira si en ALGÚN carácter de la string se cumple is_symbol?

Los siguientes existen sin el each delante pero consideran la string como un todo, mientras con éste lo miran letra por letra (que sería lo más normal xD)

each_all?(condición) --> mira si en todos los carácteres de la string se cumple una condición puesta en un bloque, devuelve true o false.
each_any?(condición) --> mira si en algún carácter de la string se cumple una condición puesta en un bloque, devuelve true o false.

each_find(condición) --> busca los carácteres que cumplan una condición y los devuelve en una array.
each_find_pos(condición) --> busca los carácteres que cumplan una condición y devuelve sus posiciones.

Los siguientes existen por defecto y funcionan igual, pero con la opción de poner un block que los restringirá a cierta condición

downcase --> pasa las letras a minúsculas
upcase --> pasa las letras a mayúsculas
swapcase --> pasa las mayúsculas a minúsculas y las minúsculas a mayúsculas

Y el último es el siguiente

word_size --> cuenta el número de palabras de la string
avatar
Wecoc
Administrador
Administrador



Créditos 12314

Gracias : 655

Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


Permisos de este foro:
No puedes responder a temas en este foro.