$fp = $this->_writeStream($text);
- stream_filter_register('horde_eol', 'Horde_Util_Filter_Eol');
+ stream_filter_register('horde_eol', 'Horde_Stream_Filter_Eol');
stream_filter_append($fp, 'horde_eol', STREAM_FILTER_READ, array('eol' => $eol));
return $stream ? $fp : $this->_readStream($fp, true);
--- /dev/null
+<?php
+/**
+ * Stream filter class to convert EOL characters.
+ *
+ * Usage:
+ * stream_filter_register('horde_eol', 'Horde_Stream_Filter_Eol');
+ * stream_filter_[app|pre]pend($stream, 'horde_eol', $params);
+ *
+ * $params can contain the following:
+ * <pre>
+ * 'eol' - The EOL string to use.
+ * DEFAULT: <CR><LF> ("\r\n")
+ * </pre>
+ *
+ * Copyright 2009 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file COPYING for license information (LGPL). If you
+ * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
+ *
+ * @author Michael Slusarz <slusarz@horde.org>
+ * @package Horde_Stream_Filter
+ */
+class Horde_Stream_Filter_Eol extends php_user_filter
+{
+ protected $_search;
+ protected $_replace;
+
+ public function onCreate()
+ {
+ $eol = isset($this->params['eol']) ? $this->params['eol'] : "\r\n";
+ if (!strlen($eol)) {
+ $this->_search = array("\r", "\n");
+ $this->_replace = '';
+ } elseif (in_array($eol, array("\r", "\n"))) {
+ $this->_search = array("\r\n", ($eol == "\r") ? "\n" : "\r");
+ $this->_replace = $eol;
+ } else {
+ $this->_search = array("\r\n", "\r", "\n");
+ $this->_replace = array("\n", "\n", $eol);
+ }
+
+ return true;
+ }
+
+ public function filter($in, $out, &$consumed, $closing)
+ {
+ while ($bucket = stream_bucket_make_writeable($in)) {
+ $bucket->data = str_replace($this->_search, $this->_replace, $bucket->data);
+ $consumed += $bucket->datalen;
+ stream_bucket_append($out, $bucket);
+ }
+
+ return PSFS_PASS_ON;
+ }
+
+}
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<package packagerversion="1.4.9" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0
+http://pear.php.net/dtd/tasks-1.0.xsd
+http://pear.php.net/dtd/package-2.0
+http://pear.php.net/dtd/package-2.0.xsd">
+ <name>Stream_Filter</name>
+ <channel>pear.horde.org</channel>
+ <summary>Horde Stream filters</summary>
+ <description>This package provides various stream filters.
+ </description>
+ <lead>
+ <name>Chuck Hagenbuch</name>
+ <user>chuck</user>
+ <email>chuck@horde.org</email>
+ <active>yes</active>
+ </lead>
+ <lead>
+ <name>Jan Schneider</name>
+ <user>jan</user>
+ <email>jan@horde.org</email>
+ <active>yes</active>
+ </lead>
+ <lead>
+ <name>Michael Slusarz</name>
+ <user>slusarz</user>
+ <email>slusarz@horde.org</email>
+ <active>yes</active>
+ </lead>
+ <date>2009-07-08</date>
+ <version>
+ <release>0.1.0</release>
+ <api>0.1.0</api>
+ </version>
+ <stability>
+ <release>beta</release>
+ <api>beta</api>
+ </stability>
+ <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
+ <notes>* Initial release.
+ </notes>
+ <contents>
+ <dir name="/">
+ <dir name="lib">
+ <dir name="Horde">
+ <dir name="Stream">
+ <dir name="Filter">
+ <file name="Eol.php" role="php" />
+ </dir> <!-- /lib/Horde/Stream/Filter -->
+ </dir> <!-- /lib/Horde/Stream -->
+ </dir> <!-- /lib/Horde -->
+ </dir> <!-- /lib -->
+ </dir> <!-- / -->
+ </contents>
+ <dependencies>
+ <required>
+ <php>
+ <min>5.2.0</min>
+ </php>
+ <pearinstaller>
+ <min>1.7.0</min>
+ </pearinstaller>
+ </required>
+ <optional/>
+ </dependencies>
+ <phprelease>
+ <filelist>
+ <install name="lib/Horde/Stream/Filter/Eol.php" as="Horde/Stream/Filter/Eol.php" />
+ </filelist>
+ </phprelease>
+</package>
--- /dev/null
+<?php
+/**
+ * Horde_Stream_Filter test suite
+ *
+ * @category Horde
+ * @package Horde_Stream_Filter
+ * @subpackage UnitTests
+ */
+
+if (!defined('PHPUnit_MAIN_METHOD')) {
+ define('PHPUnit_MAIN_METHOD', 'Horde_Stream_Filter_AllTests::main');
+}
+
+require_once 'PHPUnit/Framework/TestSuite.php';
+require_once 'PHPUnit/TextUI/TestRunner.php';
+
+/**
+ * @package Horde_Stream_Filter
+ * @subpackage UnitTests
+ */
+class Horde_Stream_Filter_AllTests {
+
+ public static function main()
+ {
+ PHPUnit_TextUI_TestRunner::run(self::suite());
+ }
+
+ public static function suite()
+ {
+ // Catch strict standards
+ error_reporting(E_ALL | E_STRICT);
+
+ // Set up autoload
+ set_include_path(dirname(dirname(dirname(dirname(__FILE__)))) . DIRECTORY_SEPARATOR . 'lib' . PATH_SEPARATOR . get_include_path());
+ if (!spl_autoload_functions()) {
+ spl_autoload_register(create_function('$class', '$filename = str_replace(array(\'::\', \'_\'), \'/\', $class); include "$filename.php";'));
+ }
+
+ $suite = new PHPUnit_Framework_TestSuite('Horde Framework - Horde_Stream_Filter');
+
+ $basedir = dirname(__FILE__);
+ $baseregexp = preg_quote($basedir . DIRECTORY_SEPARATOR, '/');
+
+ foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($basedir)) as $file) {
+ if ($file->isFile() && preg_match('/Test.php$/', $file->getFilename())) {
+ $pathname = $file->getPathname();
+ require $pathname;
+
+ $class = str_replace(DIRECTORY_SEPARATOR, '_',
+ preg_replace("/^$baseregexp(.*)\.php/", '\\1', $pathname));
+ $suite->addTestSuite('Horde_Stream_Filter_' . $class);
+ }
+ }
+
+ return $suite;
+ }
+
+}
+
+if (PHPUnit_MAIN_METHOD == 'Horde_Stream_Filter_AllTests::main') {
+ Horde_Stream_Filter_AllTests::main();
+}
--- /dev/null
+/**
+ * @package Horde_Stream_Filter
+ * @subpackage UnitTests
+ */
+--TEST--
+Horde_Stream_Filter_Eol:: tests
+--FILE--
+<?php
+
+require_once dirname(__FILE__) . '/../../../lib/Horde/Stream/Filter/Eol.php';
+
+stream_filter_register('horde_eol', 'Horde_Stream_Filter_Eol');
+
+$test = fopen('php://temp', 'r+');
+fwrite($test, "A\r\nB\rC\nD\r\n\r\nE\r\rF\n\nG\r\n\n\r\nH\r\n\r\r\nI");
+
+foreach (array("\r", "\n", "\r\n", "") as $val) {
+ $filter = stream_filter_prepend($test, 'horde_eol', STREAM_FILTER_READ, array('eol' => $val));
+ rewind($test);
+ fpassthru($test);
+ stream_filter_remove($filter);
+
+ echo "\n---\n";
+}
+
+fclose($test);
+?>
+--EXPECT--
+A\rB\rC\rD\r\rE\r\rF\r\rG\r\r\rH\r\r\rI
+---
+A
+B
+C
+D
+
+E
+
+F
+
+G
+
+
+H
+
+
+I
+---
+A\r
+B\r
+C\r
+D\r
+\r
+E\r
+\r
+F\r
+\r
+G\r
+\r
+\r
+H\r
+\r
+\r
+I
+---
+ABCDEFGHI
+---
+++ /dev/null
-<?php
-/**
- * Stream filter class to convert EOL characters.
- *
- * Usage:
- * stream_filter_register('horde_eol', 'Horde_Util_Filter_Eol');
- * stream_filter_[app|pre]pend($stream, 'horde_eol', $params);
- *
- * $params can contain the following:
- * <pre>
- * 'eol' - The EOL string to use.
- * DEFAULT: <CR><LF> ("\r\n")
- * </pre>
- *
- * Copyright 2009 The Horde Project (http://www.horde.org/)
- *
- * See the enclosed file COPYING for license information (LGPL). If you
- * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
- *
- * @author Michael Slusarz <slusarz@horde.org>
- * @package Horde_Util
- */
-class Horde_Util_Filter_Eol extends php_user_filter
-{
- protected $_search;
- protected $_replace;
-
- public function onCreate()
- {
- $eol = isset($this->params['eol']) ? $this->params['eol'] : "\r\n";
- if (!strlen($eol)) {
- $this->_search = array("\r", "\n");
- $this->_replace = '';
- } elseif (in_array($eol, array("\r", "\n"))) {
- $this->_search = array("\r\n", ($eol == "\r") ? "\n" : "\r");
- $this->_replace = $eol;
- } else {
- $this->_search = array("\r\n", "\r", "\n");
- $this->_replace = array("\n", "\n", $eol);
- }
-
- return true;
- }
-
- public function filter($in, $out, &$consumed, $closing)
- {
- while ($bucket = stream_bucket_make_writeable($in)) {
- $bucket->data = str_replace($this->_search, $this->_replace, $bucket->data);
- $consumed += $bucket->datalen;
- stream_bucket_append($out, $bucket);
- }
-
- return PSFS_PASS_ON;
- }
-
-}
<api>beta</api>
</stability>
<license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
- <notes>* Added Horde_Util_Filter_Eol.
+ <notes>
* Removed Horde_Array::combine() and Horde_Util::hmac().
* Initial Horde 4 package.
</notes>
<file name="Helper.php" role="php" />
</dir> <!-- /lib/Horde/Array/Sort -->
</dir> <!-- /lib/Horde/Array -->
- <dir name="Util">
- <dir name="Filter">
- <file name="Eol.php" role="php" />
- </dir> <!-- /lib/Horde/Util/Filter -->
- </dir> <!-- /lib/Horde/Util -->
<file name="Array.php" role="php" />
<file name="String.php" role="php" />
<file name="Util.php" role="php" />
<file name="addParameter.phpt" role="test" />
<file name="case.phpt" role="test" />
<file name="case_php6.phpt" role="test" />
- <file name="eol_filter.phpt" role="test" />
<file name="length.phpt" role="test" />
<file name="pad.phpt" role="test" />
<file name="removeParameter.phpt" role="test" />
<install name="lib/Horde/Array/Sort/Helper.php" as="Horde/Array/Sort/Helper.php" />
<install name="lib/Horde/String.php" as="Horde/String.php" />
<install name="lib/Horde/Util.php" as="Horde/Util.php" />
- <install name="lib/Horde/Util/Filter/Eol.php" as="Horde/Util/Filter/Eol.php" />
<install name="lib/Horde/Variables.php" as="Horde/Variables.php" />
</filelist>
</phprelease>
+++ /dev/null
---TEST--
-Horde_Util_Filter_Eol:: tests
---FILE--
-<?php
-
-require_once dirname(__FILE__) . '/../../../lib/Horde/Util/Filter/Eol.php';
-
-stream_filter_register('horde_eol', 'Horde_Util_Filter_Eol');
-
-$test = fopen('php://temp', 'r+');
-fwrite($test, "A\r\nB\rC\nD\r\n\r\nE\r\rF\n\nG\r\n\n\r\nH\r\n\r\r\nI");
-
-foreach (array("\r", "\n", "\r\n", "") as $val) {
- $filter = stream_filter_prepend($test, 'horde_eol', STREAM_FILTER_READ, array('eol' => $val));
- rewind($test);
- fpassthru($test);
- stream_filter_remove($filter);
-
- echo "\n---\n";
-}
-
-fclose($test);
-?>
---EXPECT--
-A\rB\rC\rD\r\rE\r\rF\r\rG\r\r\rH\r\r\rI
----
-A
-B
-C
-D
-
-E
-
-F
-
-G
-
-
-H
-
-
-I
----
-A\r
-B\r
-C\r
-D\r
-\r
-E\r
-\r
-F\r
-\r
-G\r
-\r
-\r
-H\r
-\r
-\r
-I
----
-ABCDEFGHI
----