Newer
Older
highlighter / highlighter.inc.php
<?php
// $Id: highlighter.inc.php,v 0.1 2019/10/02
// Copyright (C)
//   2019 Kwansei Gakuin University comp-staff
// License; GPL v2
// highlighter plugin

function plugin_highlighter_inline() {
	$args	= func_get_args();
    $style  = "background: repeating-linear-gradient(-45deg, #ffcce7, #ffcce7 3px,#ffe9f4 3px, #ffe9f4 7px);";//default

    $len = func_num_args();

    if (func_num_args() == 2) {
        $style = $args[0];
        $pat    = $args[1];
    } else {
        $pat    = $args[0];
    }

    if (func_num_args() <= 2) {
        $ret = "<span style='$style'>$pat</span>";
        return $ret;
    }

	return FALSE;
}

function plugin_highlighter_convert() {
    $argc  = func_num_args();
	$args  = func_get_args();
    $style = "background: repeating-linear-gradient(-45deg, #ffcce7, #ffcce7 3px,#ffe9f4 3px, #ffe9f4 7px);";//default
    $wholeline = false;
    if (($args[$argc-1] == "true")) {
        $wholeline = true;
    } else {
        $wholelien = false;
    }

    if ($wholeline) {
        $argc -= 1;
    }

    if ($argc == 2) {
        $style = $args[1];
    }

    if (! $wholeline) {
        $pat    = $args[0];
        $ret = <<<EOT
<script type="text/javascript">
    (function() {
        let lst = document.getElementsByTagName("li");
        let pat = "$pat";
        for (let i = 0; i< lst.length; i++) {
            if (lst[i].parentNode.classList.contains("list1")){
                var text = lst[i].innerHTML;
                var elm = lst[i].children;
                if (elm.length > 0 && elm[0].classList.contains("highlighter")) {
                } else {
                    var reg = new RegExp(pat, "g");
                    lst[i].innerHTML = text.replace(reg, '<span class="highlighter" style="$style">$&</span>');
                }
            }
        }
    })()
 </script>
EOT;
        return $ret;

	} else {
        $pat = $args[0];
        $sytle = $args[1];

        $ret = <<<EOT
<script type="text/javascript">
    let lst = document.getElementsByTagName("li");
    let pat = "$pat";
    let style = "background: green;"
    for (let i = 0; i< lst.length; i++) {
        if (lst[i].parentNode.classList.contains("list1")){
            var reg = RegExp(pat);
            var text = lst[i].innerHTML;

            if (text.match(reg)) {
                lst[i].style = "$args[1]";
            }
        }

    }
 </script>
EOT;
        return $ret;

    }

	return FALSE;
}

function plugin_highlighter_init() {
}
?>