quorum/stream-functions

useful php-stream resource handling functions for common lexing and parsing tasks

v0.1.0 2023-10-31 21:16 UTC

This package is auto-updated.

Last update: 2024-12-01 06:51:28 UTC


README

Latest Stable Version License ci.yml

Useful functions for manipulating PHP streams (resources).

The general structure of these are inspired by a talk given by Rob Pike.

Requirements

  • php: ^7.2|^8.0

Installing

Install the latest version with:

composer require 'quorum/stream-functions'

Stream Functions

Function: \Quorum\Streams\faccept

function faccept($stream, string ...$accept) : ?string
Parameters:
  • resource $stream - The stream to peek, must be a seekable resource
  • string $accept - One or more strings to accept
Returns:
  • string | null - The accepted string or null if none were found

faccept peeks the given stream for the given string returning it if it is
found * or null if it is not.

If the string is found, the cursor remains advanced to the end of the string.
If the string is not found, the cursor is reset to its original position.

Function: \Quorum\Streams\fpeek

function fpeek($stream [, int $length = 1]) : string
Parameters:
  • resource $stream - The stream to peek, must be a seekable resource
  • int $length - Up to length number of bytes read.
Returns:
  • string - The peeked string of up to length bytes

fpeek peeks the given stream for the given length returning as found.

The cursor is reset to its original position.

Function: \Quorum\Streams\funtil

function funtil($stream, string $until [, int $length = 0 [, ?string $buf = null]]) : bool
Parameters:
  • resource $stream - The stream to read, must be a seekable resource
  • string $until - The string to read until
  • int $length - The maximum number of bytes to read, defaults to 0 (no limit)
  • string | null $buf - The buffered contents by reference
Returns:
  • bool

funtil reads the given stream until the given string is found or eof is reached