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.



315
316
317
318
319
320
321
322
323
324
325
326
# File 'lib/functions.rb', line 315

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)


356
357
358
# File 'lib/functions.rb', line 356

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)


331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
# File 'lib/functions.rb', line 331

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  
  }

  # 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