<?php
/**
 * @file catsplit.format.php
 * @date 2019-05-28
 * @author Go Namhyeon <gnh1201@gmail.com>
 * @brief Catsplit format encoder
 * @documentation https://github.com/gnh1201/catsplit-format
 */

if(!check_function_exists("catsplit_unescape")) {
    function catsplit_unescape($data) {
        return trim($data);
    }
}

if(!check_function_exists("casplit_escape")) {
    function casplit_escape($data) {
        return htmlspecialchars($data);
    }
}

if(!check_function_exists("catsplit_encode")) {
    function catsplit_encode($data) {
        $_ks = array();
        $_vs = array();
        foreach($data as $k=>$v) {
            $_ks[] = $k;
            $_vs[] = make_safe_argument($v);
        }
        $_ks = array_map("casplit_escape", $_ks);
        $_vs = array_map("casplit_escape", $_vs);
        
        return sprintf("('%s')<=(%s)", implode("','", $_vs), implode(",", $_ks));
    }
}

if(!check_function_exists("catsplit_decode")) {
    function catsplit_decode($data) {
        $s_final = array();

        // step 1
        $s1 = explode(")<=(", substr($data, 1, -1));

        // step 2
        $s2a = array_map("catsplit_unescape", explode(",", $s1[0]));
        $s2b = array_map("catsplit_unescape", explode(",", $s1[1]));

        // step 3
        $s3 = array_combine($s2b, $s2a);

        // step 4
        foreach($s3 as $k=>$v) {
            $s_final[$k] = substr(stripslashes($v), 1, -1);
        }

        return $s_final;
    }
}
