Module: BlackStack::Strings::Spinning

Defined in:
lib/functions.rb

Overview


Spinning

Class Method Summary collapse

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.



462
463
464
465
466
467
468
469
470
471
472
473
# File 'lib/functions.rb', line 462

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.

Returns:

  • (Boolean)


505
506
507
# File 'lib/functions.rb', line 505

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}

Returns:

  • (Boolean)


478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
# File 'lib/functions.rb', line 478

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
=begin
  # 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
  }
=end        
  true
end