diff --git a/classes.php b/classes.php index d863df9..af21eba 100644 --- a/classes.php +++ b/classes.php @@ -2,197 +2,253 @@ abstract class AbstractAction { - protected $value; + protected $value; - protected $container; + protected $container; - protected $formatter; + protected $formatter; - public function __construct( $value ) - { - $this->value = $value; - } + public function __construct( $value ) + { + $this->value = $value; + } - public function setContainer( ContainerInterface $container ) - { - $this->container = $container; - } + public function setContainer( ContainerInterface $container ) + { + $this->container = $container; + } - public function setFormatter( FormatterInterface $formatter ) - { - $this->formatter = $formatter; - } + public function setFormatter( FormatterInterface $formatter ) + { + $this->formatter = $formatter; + } - public function esc_raw() - { - return htmlentities( $this->value ); - } + public function esc_raw() + { + return htmlentities( $this->value ); + } - abstract public function decode(); + abstract public function decode(); - public function __toString() - { - $value = $this->decode(); - $formatted = $this->formatter->format( $value ); - return $this->container->wrap( $formatted ); - } + public function __toString() + { + $value = $this->decode(); + $formatted = $this->formatter->format( $value ); + return $this->container->wrap( $formatted ); + } } class ActionQuotedPrintableDecode extends AbstractAction { - public function __construct( $value ) - { - parent::__construct( $value ); - $this->setContainer( new TextareaContainer ); - $this->setFormatter( new EchoFormatter ); - } + public function __construct( $value ) + { + parent::__construct( $value ); + $this->setContainer( new TextareaContainer ); + $this->setFormatter( new EchoFormatter ); + } - public function decode() - { - return quoted_printable_decode( $this->value ); - } + public function decode() + { + return quoted_printable_decode( $this->value ); + } } class ActionQuotedPrintableEncode extends AbstractAction { - public function __construct( $value ) - { - parent::__construct( $value ); - $this->setContainer( new TextareaContainer ); - $this->setFormatter( new EchoFormatter ); - } + public function __construct( $value ) + { + parent::__construct( $value ); + $this->setContainer( new TextareaContainer ); + $this->setFormatter( new EchoFormatter ); + } - public function decode() - { - return quoted_printable_encode( $this->value ); - } + public function decode() + { + return quoted_printable_encode( $this->value ); + } } class ActionBase64Encode extends AbstractAction { - public function __construct( $value ) - { - parent::__construct( $value ); - $this->setContainer( new TextareaContainer ); - $this->setFormatter( new EchoFormatter ); - } + public function __construct( $value ) + { + parent::__construct( $value ); + $this->setContainer( new TextareaContainer ); + $this->setFormatter( new EchoFormatter ); + } - public function decode() - { - return base64_encode( $this->value ); - } + public function decode() + { + return base64_encode( $this->value ); + } } class ActionBase64Decode extends AbstractAction { - public function __construct( $value ) - { - parent::__construct( $value ); - $this->setContainer( new TextareaContainer ); - $this->setFormatter( new EchoFormatter ); - } + public function __construct( $value ) + { + parent::__construct( $value ); + $this->setContainer( new TextareaContainer ); + $this->setFormatter( new EchoFormatter ); + } - public function decode() - { - return base64_decode( $this->value ); - } + public function decode() + { + return base64_decode( $this->value ); + } } class ActionUrldecode extends AbstractAction { - public function __construct( $value ) - { - parent::__construct( $value ); - $this->setContainer( new TextareaContainer ); - $this->setFormatter( new EchoFormatter ); - } + public function __construct( $value ) + { + parent::__construct( $value ); + $this->setContainer( new TextareaContainer ); + $this->setFormatter( new EchoFormatter ); + } - public function decode() - { - return urldecode( $this->value ); - } + public function decode() + { + return urldecode( $this->value ); + } } class ActionUrlencode extends AbstractAction { - public function __construct( $value ) - { - parent::__construct( $value ); - $this->setContainer( new TextareaContainer ); - $this->setFormatter( new EchoFormatter ); - } + public function __construct( $value ) + { + parent::__construct( $value ); + $this->setContainer( new TextareaContainer ); + $this->setFormatter( new EchoFormatter ); + } - public function decode() - { - return urlencode( $this->value ); - } + public function decode() + { + return urlencode( $this->value ); + } } class ActionUnserialize extends AbstractAction { - public function __construct( $value ) - { - parent::__construct( $value ); - $this->setContainer( new DivContainer ); - $this->setFormatter( new DbugFormatter ); - } + public function __construct( $value ) + { + parent::__construct( $value ); + $this->setContainer( new DivContainer ); + $this->setFormatter( new DbugFormatter ); + } - public function decode() - { - return unserialize( $this->value ); - } + public function decode() + { + return unserialize( $this->value ); + } +} + +class ActionJsonDecode extends AbstractAction +{ + public function __construct( $value ) + { + parent::__construct( $value ); + $this->setContainer( new DivContainer ); + $this->setFormatter( new VarexportFormatter ); + } + + public function decode() + { + return json_decode( $this->value, true ); + } +} + +class ActionJsonEncode extends AbstractAction +{ + public function __construct( $value ) + { + parent::__construct( $value ); + $this->setContainer( new TextareaContainer ); + $this->setFormatter( new EchoFormatter ); + } + + public function decode() + { + return json_encode( $this->value ); + } } interface ContainerInterface { - public function wrap( $contents ); + public function wrap( $contents ); } class DivContainer implements ContainerInterface { - public function wrap( $contents ) - { - return '
' . htmlentities($output) . ''; + } + + return $output; + } + + abstract public function bufferedFormat( $value ); } -class VardumpFormatter implements FormatterInterface +class DbugFormatter extends BufferedFormatter { - public function format( $value ) - { - ob_start(); - var_dump( $value ); - return ob_get_clean(); - } + public function bufferedFormat( $value ) + { + new dBug( $value ); + } +} + +class VardumpFormatter extends BufferedFormatter +{ + const ESCAPE = true; + + public function bufferedFormat( $value ) + { + var_dump( $value ); + } } class EchoFormatter implements FormatterInterface { - public function format( $value ) - { - return $value; - } + public function format( $value ) + { + return $value; + } +} + +class VarexportFormatter extends BufferedFormatter +{ + const ESCAPE = true; + + public function bufferedFormat( $value ) + { + var_export( $value ); + } } diff --git a/index.php b/index.php index da663fe..d742098 100644 --- a/index.php +++ b/index.php @@ -37,10 +37,12 @@ if( 'POST' === $_SERVER['REQUEST_METHOD'] ) { - - - - + + + + + +