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.



701
702
703
704
705
706
707
708
709
710
711
712
# File 'lib/functions.rb', line 701

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)


744
745
746
# File 'lib/functions.rb', line 744

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)


717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
# File 'lib/functions.rb', line 717

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