crystal-gauntlet/src/format.cr

51 lines
965 B
Crystal

module CrystalGauntlet::Format
extend self
def fmt_value(v) : String
case v
when Bool
v ? "1" : "0"
when String
v
else
v.to_s
end
end
def fmt_hash(hash) : String
hash.map_with_index{ |(i, v)| "#{i}:#{fmt_value(v)}" }.join(":")
end
end
module CrystalGauntlet::GDBase64
extend self
def encode(v)
Base64.encode(v).sub('/', '_').sub('+', '-')
end
def decode(v)
Base64.decode_string(v.sub('_', '/').sub('-', '+'))
end
end
module CrystalGauntlet::XorCrypt
extend self
def encrypt(x : Bytes, key : Bytes) : Bytes
result = Bytes.new(x.size)
x.each.with_index() do |chr, index|
result[index] = (chr ^ key[index % key.size])
end
result
end
def encrypt_string(x : String, key : String) : Bytes
result = Bytes.new(x.bytesize)
x.bytes.each.with_index() do |chr, index|
result[index] = (chr ^ key.byte_at(index % key.bytesize))
end
result
end
end