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.



697
698
699
700
701
702
703
704
705
706
707
708
# File 'lib/functions.rb', line 697

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)


740
741
742
# File 'lib/functions.rb', line 740

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)


713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
# File 'lib/functions.rb', line 713

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