2014-09-15 20:24:06 +00:00
|
|
|
<?php
|
2015-06-14 00:03:20 +00:00
|
|
|
namespace Masterminds\HTML5\Parser;
|
2014-09-15 20:24:06 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* The FileInputStream loads a file to be parsed.
|
|
|
|
*
|
2015-06-14 00:03:20 +00:00
|
|
|
* So right now we read files into strings and then process the
|
|
|
|
* string. We chose to do this largely for the sake of expediency of
|
|
|
|
* development, and also because we could optimize toward processing
|
|
|
|
* arbitrarily large chunks of the input. But in the future, we'd
|
|
|
|
* really like to rewrite this class to efficiently handle lower level
|
|
|
|
* stream reads (and thus efficiently handle large documents).
|
|
|
|
*
|
2014-09-15 20:24:06 +00:00
|
|
|
* @todo A buffered input stream would be useful.
|
|
|
|
*/
|
2015-06-14 00:03:20 +00:00
|
|
|
class FileInputStream extends StringInputStream implements InputStream
|
|
|
|
{
|
2014-09-15 20:24:06 +00:00
|
|
|
|
2015-06-14 00:03:20 +00:00
|
|
|
/**
|
|
|
|
* Load a file input stream.
|
|
|
|
*
|
|
|
|
* @param string $data
|
|
|
|
* The file or url path to load.
|
|
|
|
*/
|
|
|
|
public function __construct($data, $encoding = 'UTF-8', $debug = '')
|
|
|
|
{
|
|
|
|
// Get the contents of the file.
|
|
|
|
$content = file_get_contents($data);
|
2014-09-15 20:24:06 +00:00
|
|
|
|
2015-06-14 00:03:20 +00:00
|
|
|
parent::__construct($content, $encoding, $debug);
|
|
|
|
}
|
2014-09-15 20:24:06 +00:00
|
|
|
}
|