Code Coverage  | 
     ||||||||||
Classes and Traits  | 
      Functions and Methods  | 
      Lines  | 
     ||||||||
| Total |         | 
      0.00%  | 
      0 / 1  | 
              | 
      0.00%  | 
      0 / 12  | 
      CRAP |         | 
      0.00%  | 
      0 / 39  | 
     
| PoStreamWriter |         | 
      0.00%  | 
      0 / 1  | 
              | 
      0.00%  | 
      0 / 12  | 
      342 |         | 
      0.00%  | 
      0 / 39  | 
     
| getHeader |         | 
      0.00%  | 
      0 / 1  | 
      2 |         | 
      0.00%  | 
      0 / 2  | 
     |||
| setHeader |         | 
      0.00%  | 
      0 / 1  | 
      2 |         | 
      0.00%  | 
      0 / 2  | 
     |||
| getLangcode |         | 
      0.00%  | 
      0 / 1  | 
      2 |         | 
      0.00%  | 
      0 / 2  | 
     |||
| setLangcode |         | 
      0.00%  | 
      0 / 1  | 
      2 |         | 
      0.00%  | 
      0 / 2  | 
     |||
| open |         | 
      0.00%  | 
      0 / 1  | 
      2 |         | 
      0.00%  | 
      0 / 3  | 
     |||
| close |         | 
      0.00%  | 
      0 / 1  | 
      6 |         | 
      0.00%  | 
      0 / 7  | 
     |||
| write |         | 
      0.00%  | 
      0 / 1  | 
      6 |         | 
      0.00%  | 
      0 / 5  | 
     |||
| writeHeader |         | 
      0.00%  | 
      0 / 1  | 
      2 |         | 
      0.00%  | 
      0 / 2  | 
     |||
| writeItem |         | 
      0.00%  | 
      0 / 1  | 
      2 |         | 
      0.00%  | 
      0 / 2  | 
     |||
| writeItems |         | 
      0.00%  | 
      0 / 1  | 
      20 |         | 
      0.00%  | 
      0 / 5  | 
     |||
| getURI |         | 
      0.00%  | 
      0 / 1  | 
      6 |         | 
      0.00%  | 
      0 / 5  | 
     |||
| setURI |         | 
      0.00%  | 
      0 / 1  | 
      2 |         | 
      0.00%  | 
      0 / 2  | 
     |||
| <?php | |
| /** | |
| * @file | |
| * Contains \Drupal\Component\Gettext\PoStreamWriter. | |
| */ | |
| namespace Drupal\Component\Gettext; | |
| /** | |
| * Defines a Gettext PO stream writer. | |
| */ | |
| class PoStreamWriter implements PoWriterInterface, PoStreamInterface { | |
| /** | |
| * URI of the PO stream that is being written. | |
| * | |
| * @var string | |
| */ | |
| private $_uri; | |
| /** | |
| * The Gettext PO header. | |
| * | |
| * @var \Drupal\Component\Gettext\PoHeader | |
| */ | |
| private $_header; | |
| /** | |
| * File handle of the current PO stream. | |
| * | |
| * @var resource | |
| */ | |
| private $_fd; | |
| /** | |
| * Gets the PO header of the current stream. | |
| * | |
| * @return \Drupal\Component\Gettext\PoHeader | |
| * The Gettext PO header. | |
| */ | |
| public function getHeader() { | |
| return $this->_header; | |
| } | |
| /** | |
| * Set the PO header for the current stream. | |
| * | |
| * @param \Drupal\Component\Gettext\PoHeader $header | |
| * The Gettext PO header to set. | |
| */ | |
| public function setHeader(PoHeader $header) { | |
| $this->_header = $header; | |
| } | |
| /** | |
| * Gets the current language code used. | |
| * | |
| * @return string | |
| * The language code. | |
| */ | |
| public function getLangcode() { | |
| return $this->_langcode; | |
| } | |
| /** | |
| * Set the language code. | |
| * | |
| * @param string $langcode | |
| * The language code. | |
| */ | |
| public function setLangcode($langcode) { | |
| $this->_langcode = $langcode; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function open() { | |
| // Open in write mode. Will overwrite the stream if it already exists. | |
| $this->_fd = fopen($this->getURI(), 'w'); | |
| // Write the header at the start. | |
| $this->writeHeader(); | |
| } | |
| /** | |
| * Implements Drupal\Component\Gettext\PoStreamInterface::close(). | |
| * | |
| * @throws Exception | |
| * If the stream is not open. | |
| */ | |
| public function close() { | |
| if ($this->_fd) { | |
| fclose($this->_fd); | |
| } | |
| else { | |
| throw new Exception('Cannot close stream that is not open.'); | |
| } | |
| } | |
| /** | |
| * Write data to the stream. | |
| * | |
| * @param string $data | |
| * Piece of string to write to the stream. If the value is not directly a | |
| * string, casting will happen in writing. | |
| * | |
| * @throws Exception | |
| * If writing the data is not possible. | |
| */ | |
| private function write($data) { | |
| $result = fputs($this->_fd, $data); | |
| if ($result === FALSE) { | |
| throw new Exception('Unable to write data: ' . substr($data, 0, 20)); | |
| } | |
| } | |
| /** | |
| * Write the PO header to the stream. | |
| */ | |
| private function writeHeader() { | |
| $this->write($this->_header); | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function writeItem(PoItem $item) { | |
| $this->write($item); | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function writeItems(PoReaderInterface $reader, $count = -1) { | |
| $forever = $count == -1; | |
| while (($count-- > 0 || $forever) && ($item = $reader->readItem())) { | |
| $this->writeItem($item); | |
| } | |
| } | |
| /** | |
| * Implements Drupal\Component\Gettext\PoStreamInterface::getURI(). | |
| * | |
| * @throws Exception | |
| * If the URI is not set. | |
| */ | |
| public function getURI() { | |
| if (empty($this->_uri)) { | |
| throw new Exception('No URI set.'); | |
| } | |
| return $this->_uri; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function setURI($uri) { | |
| $this->_uri = $uri; | |
| } | |
| } |