Sha256: fd7332707cdc7b27a9a845c580dd72ea510b0307b764dc7b3c68f9a85d011bbc

Contents?: true

Size: 1.99 KB

Versions: 1

Compression:

Stored size: 1.99 KB

Contents

# coding: utf-8
class GlitchedString
  UPPER_CHARS = %W[
    \u030d
    \u030e
    \u0304
    \u0305
    \u033f 
    \u0311 
    \u0306 
    \u0310 
    \u0352 
    \u0357
    \u0351
    \u0307
    \u0308
    \u030a 
    \u0342
    \u0343
    \u0344 
    \u034a
    \u034b
    \u034c
    \u0303   
    \u0302  
    \u030c 
    \u0350
    \u0300
    \u0301
    \u030b
    \u030f
    \u0312
    \u0313
    \u0314
    \u033d
    \u0309
    \u0363
    \u0364 
    \u0365
    \u0366
    \u0367
    \u0368
    \u0369
    \u036a
    \u036b
    \u036c
    \u036d
    \u036e
    \u036f
    \u033e
    \u035b
    \u0346
    \u031a
  ]
  MIDDLE_CHARS = %W[
    \u0315
    \u031b
    \u0340
    \u0341
    \u0358
    \u0321
    \u0322
    \u0327
    \u0328
    \u0334
    \u0335
    \u0336
    \u034f
    \u035c
    \u035d
    \u035e
    \u035f
    \u0360
    \u0362
    \u0338
    \u0337
    \u0361
    \u0489
  ]
  LOWER_CHARS = %W[
    \u0316
    \u0317
    \u0318
    \u0319
    \u031c
    \u031d
    \u031e
    \u031f
    \u0320
    \u0324
    \u0325
    \u0326
    \u0329
    \u032a
    \u032b
    \u032c
    \u032d
    \u032e
    \u032f
    \u0330
    \u0331
    \u0332
    \u0333
    \u0339
    \u033a
    \u033b
    \u033c
    \u0345
    \u0347
    \u0348
    \u0349
    \u034d
    \u034e
    \u0353
    \u0354
    \u0355
    \u0356
    \u0359
    \u035a
    \u0323
  ].freeze 

  def self.glitch(str, options = {})
    options[:upper]  ||= 8
    options[:middle] ||= 8
    options[:lower]  ||= 8
    output = ""
    "".tap do |output|
      str.each_char.each do |s|
        output << s
        output << GlitchedString::UPPER_CHARS.sample(options[:upper].to_i).join
        output << GlitchedString::MIDDLE_CHARS.sample(options[:middle].to_i).join
        output << GlitchedString::LOWER_CHARS.sample(options[:lower].to_i).join
      end
    end
  end
end

class String
  def glitch(options = {})
    GlitchedString.glitch(self, options)
  end
  def glitch!(options = {})
    self.replace(GlitchedString.glitch(self, options))
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
glitched_string-0.2.0 lib/glitched_string.rb