Module: Zalgor

Extended by:
Zalgor
Included in:
Zalgor
Defined in:
lib/zalgor/zalgo.rb,
lib/zalgor/version.rb,
lib/zalgor/combining_chars.rb

Constant Summary collapse

DEFAULT_OPTIONS =

The default options to transform the text.

{
  down: 2,
  mid: 2,
  up: 2,
  random: false
}.freeze
VERSION =
'1.0.2'
COMBINING_CHARS =

The all combining unicode chars see : en.wikipedia.org/wiki/Zalgo_text inspired by : eeemo.net/

{
  down: [
    "\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,

  mid: [
    "\u0315", # ̕

    "\u031b", # ̛

    "\u0340", # ̀

    "\u0341", # ́

    "\u0358", # ͘

    "\u0321", # ̡

    "\u0322", # ̢

    "\u0327", # ̧

    "\u0328", # ̨

    "\u0334", # ̴

    "\u0335", # ̵

    "\u0336", # ̶

    "\u034f", # ͏

    "\u035c", # ͜

    "\u035d", # ͝

    "\u035e", # ͞

    "\u035f", # ͟

    "\u0360", # ͠

    "\u0362", # ͢

    "\u0338", # ̸

    "\u0337", # ̷

    "\u0361", # ͡

    "\u0489"  # ҉_

  ].freeze,

  up: [
    "\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"  # ̚

  ].freeze
}.freeze

Instance Method Summary collapse

Instance Method Details

#purify(string) ⇒ Object

Purify a zalgo String to normale string.



35
36
37
38
39
40
41
42
# File 'lib/zalgor/zalgo.rb', line 35

def purify(string)
  combining_chars = (COMBINING_CHARS[:down] + COMBINING_CHARS[:mid] + COMBINING_CHARS[:up])
  string.chars.map do |char|
    next if combining_chars.include? char

    char
  end.join
end

#transform(string, **options) ⇒ Object

Transform a string to zalgo string.



19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/zalgor/zalgo.rb', line 19

def transform(string, **options)
  down   = options[:down]   || DEFAULT_OPTIONS[:down]
  mid    = options[:mid]    || DEFAULT_OPTIONS[:mid]
  up     = options[:up]     || DEFAULT_OPTIONS[:up]
  random = options[:random] || DEFAULT_OPTIONS[:random]

  string.chars.map do |char|
    set_combining_chars('',       down, COMBINING_CHARS[:down], random) +
      set_combining_chars(char,   mid,  COMBINING_CHARS[:mid],  random) +
      set_combining_chars('',     up,   COMBINING_CHARS[:up],   random)
  end.join
end