Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
api:buffer [2016/06/19 05:58]
payonel [Instance Methods]
api:buffer [2016/06/19 07:56] (current)
payonel [Instance Methods]
Line 47: Line 47:
 - `b:​lines([line_formats...]) string array` - `b:​lines([line_formats...]) string array`
  
-  Returns a function iterator which reads from the stream until it reaches nil. On each read, the `line_formats` list of args ais passed to `stream:​read(...)`. The overwhelmingly typical use is to not define `line_formats`,​ i.e. passing no args to `lines()`. The default behavior (i..e without `line_formats`) is to read a "​line"​ at a time from the stream.+  Returns a function iterator which reads from the stream until it reaches nil. On each read, the `line_formats` list of args as passed to `stream:​read(...)`. The overwhelmingly typical use is to not define `line_formats`,​ i.e. passing no args to `lines()`. The default behavior (i..e without `line_formats`) is to read a "​line"​ at a time from the stream.
  
 ```lua ```lua
Line 65: Line 65:
     * a number value, e.g. `10`     * a number value, e.g. `10`
  
-    Read **n** chars from the streamresult is a string.+    Read **n** bytes (in binary mode) or chars (in text mode) from the streamresult is returned as a string. See [[api:​non-standard-lua-libs#​input_and_output_facilities|io.open]] for more details about how to open files in different modes.
  
     `local chars = b:read(10)`     `local chars = b:read(10)`
Line 71: Line 71:
     * "​\*n"​ or "​\*number"​     * "​\*n"​ or "​\*number"​
  
-    Read the next series of bytes from the stream ​and that can be interpreted as a number+    Read the next series of bytes from the stream that can be interpreted as a number. Note that reading numbers is also affected by the open mode, binary or text. See [[api:​non-standard-lua-libs#​input_and_output_facilities|io.open]] for more details about how to open files in different modes..
  
     `local number = b:​read("​*n"​)`     `local number = b:​read("​*n"​)`
Line 134: Line 134:
 - `read(n: number) ok, reason` - `read(n: number) ok, reason`
  
-  Return `n` unicode chars. The caller assumes there is more data to read until `nil` is returned. A empty string or a string shorter than `n` chars long is a valid return, but the caller may assume there is more data to request until `nil` is returned.+  Return ​`n` bytes, and **not** ​`n` unicode-aware ​chars. Assume your data is binary data and let the buffer library manage the mode and the unicode string packaging (if applicable). Note that this is exactly how the [[api:​filesystem|filesystem]] library operates.The caller assumes there is more data to read until `nil` is returned. A empty string or a string shorter than `n` chars long is a valid return, but the caller may assume there is more data to request until `nil` is returned.
  
 - `seek([whence:​ string], [offset: number]) [offset from start] or falsey, reason` - `seek([whence:​ string], [offset: number]) [offset from start] or falsey, reason`