module BlackStack::Strings::Spinning
Public Class Methods
random_spinning_variation(text)
click to toggle source
Esta funcion retorna una variacion al azar del texto que se pasa. Esta funcion se ocupa de dividir el texto en partes, para eviar el error “too big to product” que arroja la libraría.
# File lib/functions.rb, line 343 def self.random_spinning_variation(text) ret = text text.scan(MATCH_CONTENT_SPINNING).each { |s| a = ContentSpinning.new(s).spin rep = a[rand(a.size)] ret = ret.gsub(s, rep) a = nil } return ret end
spintax?(s)
click to toggle source
returns true if the text is spinned. otherwise, returns false.
# File lib/functions.rb, line 386 def self.spintax?(s) s.scan(MATCH_CONTENT_SPINNING).size > 0 end
valid_spinning_syntax?(s)
click to toggle source
retorna true si la sintaxis del texto spineado es correcta caso contrario retorna false no soporta spinnings anidados. ejemplo: {my|our|{a car of mine}}
# File lib/functions.rb, line 359 def self.valid_spinning_syntax?(s) # valido que exste n = 0 s.split('').each { |c| n+=1 if c=='{' n-=1 if c=='}' if n!=0 && n!=1 #raise "Closing spining char '}' with not previous opening spining char '{'." if n<0 #raise "Opening spining char '{' inside another spining block." if n>1 return false if n<0 # Closing spining char '}' with not previous opening spining char '{'. return false if n>1 # Opening spining char '{' inside another spining block. end } return false if n!=0 # obtengo cada uno de los spinnings s.scan(MATCH_CONTENT_SPINNING).each { |x| a = x.split('|') raise "No variations delimited by '|' inside spinning block." if a.size <= 1 } true end