/**
  * Reads a token from the file
  *
  * @param object $c pdf_context
  *
  * @return mixed
  */
 function pdf_read_token(&$c)
 {
     // If there is a token available
     // on the stack, pop it out and
     // return it.
     if (count($c->stack)) {
         return array_pop($c->stack);
     }
     // Strip away any whitespace
     do {
         if (!$c->ensure_content()) {
             return false;
         }
         $c->offset += _strspn($c->buffer, " \n\r\t", $c->offset);
     } while ($c->offset >= $c->length - 1);
     // Get the first character in the stream
     $char = $c->buffer[$c->offset++];
     switch ($char) {
         case '[':
         case ']':
         case '(':
         case ')':
             // This is either an array or literal string
             // delimiter, Return it
             return $char;
         case '<':
         case '>':
             // This could either be a hex string or
             // dictionary delimiter. Determine the
             // appropriate case and return the token
             if ($c->buffer[$c->offset] == $char) {
                 if (!$c->ensure_content()) {
                     return false;
                 }
                 $c->offset++;
                 return $char . $char;
             } else {
                 return $char;
             }
         default:
             // This is "another" type of token (probably
             // a dictionary entry or a numeric value)
             // Find the end and return it.
             if (!$c->ensure_content()) {
                 return false;
             }
             while (1) {
                 // Determine the length of the token
                 $pos = _strcspn($c->buffer, " []<>()\r\n\t/", $c->offset);
                 if ($c->offset + $pos <= $c->length - 1) {
                     break;
                 } else {
                     // If the script reaches this point,
                     // the token may span beyond the end
                     // of the current buffer. Therefore,
                     // we increase the size of the buffer
                     // and try again--just to be safe.
                     $c->increase_length();
                 }
             }
             $result = substr($c->buffer, $c->offset - 1, $pos + 1);
             $c->offset += $pos;
             return $result;
     }
 }
Beispiel #2
0
 /**
  * Finds the length of the initial segment not matching mask.
  * @see http://php.net/strcspn
  *
  * @author  Harry Fuecks <hfuecks@gmail.com>
  *
  * @param   string   input string
  * @param   string   mask for search
  * @param   integer  start position of the string to examine
  * @param   integer  length of the string to examine
  * @return  integer  length of the initial segment that contains characters not in the mask
  */
 public static function strcspn($str, $mask, $offset = NULL, $length = NULL)
 {
     if (!isset(self::$called[__FUNCTION__])) {
         require SYSPATH . 'core/utf8/' . __FUNCTION__ . EXT;
         // Function has been called
         self::$called[__FUNCTION__] = TRUE;
     }
     return _strcspn($str, $mask, $offset, $length);
 }
 public static function strcspn($str, $mask, $offset = NULL, $length = NULL)
 {
     if (!isset(UTF8::$called[__FUNCTION__])) {
         require JsonApiApplication::find_file("utf8", __FUNCTION__);
         // Function has been called
         UTF8::$called[__FUNCTION__] = TRUE;
     }
     return _strcspn($str, $mask, $offset, $length);
 }
Beispiel #4
0
 /**
  * Finds the length of the initial segment not matching mask.
  * @see http://php.net/strcspn
  *
  * @author  Harry Fuecks <hfuecks@gmail.com>
  *
  * @param   string   input string
  * @param   string   mask for search
  * @param   integer  start position of the string to examine
  * @param   integer  length of the string to examine
  * @return  integer  length of the initial segment that contains characters not in the mask
  */
 public static function strcspn($str, $mask, $offset = NULL, $length = NULL)
 {
     require_once dirname(__FILE__) . '/' . __FUNCTION__ . '.php';
     return _strcspn($str, $mask, $offset, $length);
 }
Beispiel #5
0
 /**
  * Finds the length of the initial segment not matching mask
  *
  * This is a UTF8-aware version of [strcspn](http://php.net/strcspn).
  *
  * Example:
  * ~~~
  * $found = UTF8::strcspn($str, $mask);
  * ~~~
  *
  * @author  Harry Fuecks <hfuecks@gmail.com>
  *
  * @param   string   $str     Input string
  * @param   string   $mask    Mask for search
  * @param   integer  $offset  Start position of the string to examine [Optional]
  * @param   integer  $length  Length of the string to examine [Optional]
  *
  * @return  integer
  *
  * @uses    Kohana::find_file
  */
 public static function strcspn($str, $mask, $offset = NULL, $length = NULL)
 {
     UTF8::_load(__FUNCTION__);
     return _strcspn($str, $mask, $offset, $length);
 }
Beispiel #6
0
 /**
  * Finds the length of the initial segment not matching mask. This is a
  * UTF8-aware version of [strcspn](http://php.net/strcspn).
  *
  *     $found = UTF8::strcspn($str, $mask);
  *
  * @author  Harry Fuecks <hfuecks@gmail.com>
  * @param   string  $str    input string
  * @param   string  $mask   mask for search
  * @param   integer $offset start position of the string to examine
  * @param   integer $length length of the string to examine
  * @return  integer length of the initial segment that contains characters not in the mask
  */
 public static function strcspn($str, $mask, $offset = null, $length = null)
 {
     if (!isset(UTF8::$called[__FUNCTION__])) {
         require Phalcana::$di->get('fs')->findFile('utf8', __FUNCTION__);
         // Function has been called
         UTF8::$called[__FUNCTION__] = true;
     }
     return _strcspn($str, $mask, $offset, $length);
 }
Beispiel #7
0
 /**
  * Finds the length of the initial segment not matching mask. This is a
  * UTF8-aware version of [strcspn](http://php.net/strcspn).
  *
  *     $found = UTF8::strcspn($str, $mask);
  *
  * @author  Harry Fuecks <hfuecks@gmail.com>
  * @param   string  $str    input string
  * @param   string  $mask   mask for search
  * @param   integer $offset start position of the string to examine
  * @param   integer $length length of the string to examine
  * @return  integer length of the initial segment that contains characters not in the mask
  */
 public static function strcspn($str, $mask, $offset = NULL, $length = NULL)
 {
     if (!isset(self::$called[__FUNCTION__])) {
         require Kohana::find_file('utf8', __FUNCTION__);
         // Function has been called
         self::$called[__FUNCTION__] = TRUE;
     }
     return _strcspn($str, $mask, $offset, $length);
 }