Module: BlackStack::Strings::Spinning
- Defined in:
- lib/functions.rb
Overview
Spinning
Class Method Summary collapse
-
.random_spinning_variation(text) ⇒ Object
Esta funcion retorna una variacion al azar del texto que se pasa.
-
.spintax?(s) ⇒ Boolean
returns true if the text is spinned.
-
.valid_spinning_syntax?(s) ⇒ Boolean
retorna true si la sintaxis del texto spineado es correcta caso contrario retorna false no soporta spinnings anidados.
Class Method Details
.random_spinning_variation(text) ⇒ Object
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.
380 381 382 383 384 385 386 387 388 389 390 391 |
# File 'lib/functions.rb', line 380 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) ⇒ Boolean
returns true if the text is spinned. otherwise, returns false.
423 424 425 |
# File 'lib/functions.rb', line 423 def self.spintax?(s) s.scan(MATCH_CONTENT_SPINNING).size > 0 end |
.valid_spinning_syntax?(s) ⇒ Boolean
retorna true si la sintaxis del texto spineado es correcta caso contrario retorna false no soporta spinnings anidados. ejemplo: car of mine}
396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 |
# File 'lib/functions.rb', line 396 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 |