Module: Zalgor

Defined in:
lib/zalgor/handler.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.0'
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

Class Method Summary collapse

Class Method Details

.purify(string) ⇒ Object

Purify a zalgo String to normale string.



37
38
39
40
41
42
43
44
# File 'lib/zalgor/handler.rb', line 37

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.



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

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