mirror of
https://github.com/YunoHost-Apps/spip_ynh.git
synced 2024-09-03 20:25:59 +02:00
98 lines
2.6 KiB
PHP
98 lines
2.6 KiB
PHP
|
<?php
|
||
|
|
||
|
/*
|
||
|
* TextWheel 0.1
|
||
|
*
|
||
|
* let's reinvent the wheel one last time
|
||
|
*
|
||
|
* This library of code is meant to be a fast and universal replacement
|
||
|
* for any and all text-processing systems written in PHP
|
||
|
*
|
||
|
* It is dual-licensed for any use under the GNU/GPL2 and MIT licenses,
|
||
|
* as suits you best
|
||
|
*
|
||
|
* (c) 2009 Fil - fil@rezo.net
|
||
|
* Documentation & http://zzz.rezo.net/-TextWheel-
|
||
|
*
|
||
|
* Usage: $wheel = new TextWheel(); echo $wheel->text($text);
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
if (!defined('_ECRIRE_INC_VERSION')) return;
|
||
|
|
||
|
class TextWheelRule {
|
||
|
|
||
|
## rule description
|
||
|
# optional
|
||
|
var $priority = 0; # rule priority (rules are applied in ascending order)
|
||
|
# -100 = application escape, +100 = application unescape
|
||
|
var $name; # rule's name
|
||
|
var $author; # rule's author
|
||
|
var $url; # rule's homepage
|
||
|
var $package; # rule belongs to package
|
||
|
var $version; # rule version
|
||
|
var $test; # rule test function
|
||
|
var $disabled=false; # true if rule is disabled
|
||
|
|
||
|
## rule init checks
|
||
|
## the rule will be applied if the text...
|
||
|
# optional
|
||
|
var $if_chars; # ...contains one of these chars
|
||
|
var $if_str; # ...contains this string (case sensitive)
|
||
|
var $if_stri; # ...contains this string (case insensitive)
|
||
|
var $if_match; # ...matches this simple expr
|
||
|
|
||
|
|
||
|
## rule effectors, matching
|
||
|
# mandatory
|
||
|
var $type; # 'preg' (default), 'str', 'all', 'split'...
|
||
|
var $match; # matching string or expression
|
||
|
# optional
|
||
|
# var $limit; # limit number of applications (unused)
|
||
|
|
||
|
## rule effectors, replacing
|
||
|
# mandatory
|
||
|
var $replace; # replace match with this expression
|
||
|
|
||
|
# optional
|
||
|
var $is_callback=false; # $replace is a callback function
|
||
|
var $is_wheel; # flag to create a sub-wheel from rules given as replace
|
||
|
var $pick_match = 0; # item to pick for sub-wheel replace
|
||
|
var $glue = null; # glue for implode ending split rule
|
||
|
|
||
|
# optional
|
||
|
# language specific
|
||
|
var $require; # file to require_once
|
||
|
var $create_replace; # do create_function('$m', %) on $this->replace, $m is the matched array
|
||
|
|
||
|
# optimizations
|
||
|
var $func_replace;
|
||
|
|
||
|
/**
|
||
|
* Rule constructor
|
||
|
* @param <type> $args
|
||
|
* @return <type>
|
||
|
*/
|
||
|
public function TextWheelRule($args) {
|
||
|
if (!is_array($args))
|
||
|
return;
|
||
|
foreach($args as $k=>$v)
|
||
|
if (property_exists($this, $k))
|
||
|
$this->$k = $args[$k];
|
||
|
$this->checkValidity(); // check that the rule is valid
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Rule checker
|
||
|
*/
|
||
|
protected function checkValidity(){
|
||
|
if ($this->type=='split'){
|
||
|
if (is_array($this->match))
|
||
|
throw new InvalidArgumentException('match argument for split rule can\'t be an array');
|
||
|
if (isset($this->glue) AND is_array($this->glue))
|
||
|
throw new InvalidArgumentException('glue argument for split rule can\'t be an array');
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|