@haxall/haxall
    Preparing search index...

    Class IOFuncs

    I/O library functions

    Hierarchy (View Summary)

    Index

    Constructors

    Properties

    type$: Type

    Methods

    • Return a negative integer, zero, or a positive integer if this object is less than, equal to, or greater than the specified object:

      this < that   =>  <0
      this == that => 0
      this > that => >0

      This method may also be accessed via the < <= <=> >= and > shortcut operators. If not overridden the default implementation compares the toStr representations. Also see docLang.

      Examples:

      3.compare(8)  =>  -1
      8.compare(3) => 1
      8.compare(8) => 0
      3 <=> 8 => -1 // shortcut for 3.compare(8)

      Parameters

      Returns number

    • Compare this object to the specified for equality. This method may be accessed via the == and != shortcut operators. If not overridden the default implementation compares for reference equality using the === operator. If this method is overridden, then hash() must also be overridden such that any two objects which return true for equals() must return the same value for hash(). This method must accept null and return false.

      Parameters

      Returns boolean

    • Return a unique hashcode for this object. If a class overrides hash() then it must ensure if equals() returns true for any two objects then they have same hash code.

      Returns number

    • Return if this Obj is immutable and safe to share between threads:

      • an instance of a const class
      • the result of toImmutable on List, Map, or Buf
      • a Func object may or may not be immutable - see sys::Func.
      • other instances are assumed mutable and return false

      Returns boolean

    • Get an immutable representation of this instance or throw NotImmutableErr if this object cannot be represented as an immutable:

      • if type is const, return this
      • if already an immutable List, Map, Buf, or Func return this
      • if a List, then attempt to perform a deep clone by calling toImmutable on all items
      • if a Map, then attempt to perform a deep clone by calling toImmutable on all values (keys are already immutable)
      • some Funcs can be made immutable - see sys::Func
      • if a Buf create immutable copy, see sys::Buf
      • any other object throws NotImmutableErr

      Returns Readonly<this>

    • Return a string representation of this object.

      Returns string

    • Trap a dynamic call for handling. Dynamic calls are invoked with the -> shortcut operator:

      a->x        a.trap("x", null)
      a->x() a.trap("x", null)
      a->x = b a.trap("x", [b])
      a->x(b) a.trap("x", [b])
      a->x(b, c) a.trap("x", [b, c])

      The default implementation provided by Obj attempts to use reflection. If name maps to a method, it is invoked with the specified arguments. If name maps to a field and args.size is zero, get the field. If name maps to a field and args.size is one, set the field and return args[0]. Otherwise throw UnknownSlotErr.

      Parameters

      Returns JsObj

    • Get the Type instance which represents this object's class. Also seeType.of or Pod.of.

      Returns Type

    • This method called whenever an it-block is applied to an object. The default implementation calls the function with this, and then returns this.

      Parameters

      • f: (arg0: this) => void

      Returns this

    • Write x.toStr to standard output followed by newline. If x is null then print "null". If no argument is provided then print an empty line.

      Parameters

      Returns void

    • Convert a handle to append mode. Writes will append to the end of the file instead of rewriting the file. Raises UnsupportedErr if the handle doesn't support append mode.

      Example:

      ioWriteStr("append a line\n", ioAppend(`io/foo.txt`))
      

      Parameters

      Returns JsObj

    • Configure an I/O handle to use the specified charset. The handle is any supported I/O handle and the charset is a string name supported by the JVM installation. Standard charset names:

      • "UTF-8" 8-bit Unicode Transformation Format
      • "UTF-16BE": 16 bit Big Endian Unicode Transformation Format
      • "UTF-16LE" 16 bit Little Endian Unicode Transformation Format
      • "ISO-8859-1": Latin-1 code block
      • "US-ASCII": 7-bit ASCII

      Examples:

      // write text file in UTF-16BE
      ioWriteStr(str, ioCharset(`io/foo.txt`, "UTF-16BE"))

      // read CSV file in ISO-8859-1
      ioCharset(`io/foo.csv`, "ISO-8859-1").ioReadCsv

      Parameters

      • handle: JsObj
      • charset: string

      Returns JsObj

    • Copy a file or directory to the new specified location. If this file represents a directory, then it recursively copies the entire directory tree. Both handles must reference a local file or directory on the file system.

      If during the copy, an existing file of the same name is found, then the "overwrite" option should be to marker or true to overwrite or false to skip. Or if overwrite is not defined then an IOErr is raised.

      Examples:

      ioCopy(`io/dir/`, `io/dir-copy/`)
      ioCopy(`io/file.txt`, `io/file-copy.txt`)
      ioCopy(`io/file.txt`, `io/file-copy.txt`, {overwrite})
      ioCopy(`io/file.txt`, `io/file-copy.txt`, {overwrite:false})

      Parameters

      Returns JsObj

    • Generate a cycle reduancy check code as a Number. See sys::Buf.crc for available algorithms.

      Example:

      ioCrc("foo", "CRC-32").toHex
      

      Parameters

      • handle: JsObj
      • algorithm: string

      Returns Number

    • Create a directory or empty file with the given I/O handle. If creating a file that already exists, it is overwritten as empty.

      Examples:

      ioCreate(`io/new-dir/`)        // create new empty directory
      ioCreate(`io/new-file.txt`) // create new empty file

      Parameters

      Returns JsObj

    • Delete a file or a directory as mapped by the given I/O handle. If a directory is specified, then it is recursively deleted. If the I/O handle does map to a file system then raise exception. If the file does not exist then no action is taken.

      Parameters

      Returns JsObj

    • Generate a one-way hash of the given I/O handle. See sys::Buf.toDigest for available algorithms.

      Example:

      ioDigest("foo", "SHA-1").ioToBase64
      

      Parameters

      • handle: JsObj
      • algorithm: string

      Returns JsObj

    • Read a directory listing, return a grid with cols:

      • uri: Uri for handle to read/write the file
      • name: filename string
      • mimeType: file mime type or null if unknown
      • dir: marker if file is a sub-directory or null
      • size: size of file in bytes or null
      • mod: modified timestamp or null if unknown

      If the I/O handle does not map to a file in the virtual file system then throw an exception.

      ioDir(`io/`)             // read files in project's io/ directory
      ioDir(`fan://haystack`) // read files in pod

      Parameters

      Returns Grid

    • Iterate the rows of a CSV file (comma separated values) and callback the given function with two parameters: Str[] cells of current row and zero based Number line number.

      The following options are supported:

      • delimiter: separator char as string, default is ","

      Also ioReadCsv, ioWriteCsv, and docHaystack::Csv.

      Parameters

      Returns JsObj

    • For each line of the given source stream call the given function with two parameters: Str line and zero based Number line number. Lines are processed according to sys::InStream.eachLine.

      Parameters

      Returns JsObj

    • Export a view to the given file handle - see docFresco::Export.

      Note: this feature is available in SkySpark only

      Parameters

      Returns JsObj

    • Return an I/O handle to decode from a base64 string. Also see ioToBase64() and sys::Buf.fromBase64

      Example:

      // decode base64 to a string
      ioFromBase64("c2t5c3Bhcms").ioReadStr

      Parameters

      • s: string

      Returns JsObj

    • Wrap an I/O handle to GZIP compress/uncompress.

      Example:

      // generate GZIP CSV file
      readAll(site).ioWriteCsv(ioGzip(`io/sites.gz`))

      // read GZIP CSV file
      ioGzip(`io/sites.gz`).ioReadCsv

      Parameters

      Returns JsObj

    • Generate an HMAC message authentication as specified by RFC 2104. See sys::Buf.hmac.

      Example:

      ioHmac("foo", "SHA-1", "secret").ioToBase64
      

      Parameters

      Returns JsObj

    • Get information about a file handle and return a Dict with the same tags as ioDir().

      If the I/O handle does not map to a file in the virtual file system then throw an exception.

      ioInfo(`io/`)            // read file info for the project's io/ directory
      ioInfo(`io/sites.trio`) // read file info for the io/sites.trio file

      Parameters

      Returns Dict

    • Move or rename a file or directory. Both handles must reference a local file or directory on the file system. If the target file already exists then raise an IOErr.

      Parameters

      Returns JsObj

    • Generate a password based cryptographic key. See sys::Buf.pbk.

      Example:

      ioPbk("PBKDF2WithHmacSHA1", "secret", ioRandom(64), 1000, 20).ioToBase64
      

      Parameters

      Returns JsObj

    • Generate randomized series of bytes which can be used as an input I/O handle.

      Parameters

      Returns JsObj

    • Read a CSV (comma separated values) file into memory as a Grid. CSV format is implemented as specified by RFC 4180:

      • rows are delimited by a newline
      • cells are separated by delimiter char
      • cells containing the delimiter, " double quote, or newline are quoted; quotes are escaped as ""
      • empty cells are normalized into null

      The following options are supported:

      • delimiter: separator char as string, default is ","
      • noHeader: if present then don't treat first row as col names, instead use "v0", "v1", etc

      Also see ioStreamCsv, ioEachCsv, ioWriteCsv, and docHaystack::Csv.

      Parameters

      Returns Grid

    • Read a JSON file into memory. This function can used to read any arbitrary JSON nested object/array structure which can be accessed as Axon dicts/lists. The default decoding assumes Haystack 4 JSON format (Hayson). Also see ioReadJsonGrid if reading a Haystack formatted grid.

      Object keys which are not valid tag names will decode correctly and can be used in-process. But they will not serialize correctly over the HTTP API. You can use the safeNames option to force object keys to be safe tag names (but you will lose the original key names).

      The following options are supported:

      • v3: decode the JSON as Haystack 3
      • v4: explicitly request Haystack 4 decoding (default)
      • safeNames: convert object keys to safe tag names

      Parameters

      Returns JsObj

    • Read a JSON file formatted as a standardized Haystack grid into memory. See ioReadJson to read arbitrary JSON structured data.

      Parameters

      Returns Grid

    • Read an I/O handle into memory as a list of string lines. Lines are processed according to sys::InStream.readLine semanatics.

      By default the maximum line size read is 4kb of Unicode characters (not bytes). This limit may be overridden using the option key "limit".

      Examples:

      ioReadLines(`io/file.txt`)
      ioReadLines(`io/file.txt`, {limit: 10_000})

      Parameters

      Returns List<string>

    • Read an I/O handle into memory as a string. Newlines are always normalized into "\n" characters.

      Parameters

      Returns string

    • Read a Trio file into memory as a list of Dicts.

      Parameters

      Returns List<Dict>

    • Read a Zinc file into memory as a Haystack data type.

      Parameters

      Returns Grid

    • Apply a skipping operation to an input I/O handle. The following options are available (in order of processing):

      • bom: skip byte order mark
      • bytes: number of bytes to skip (must be binary input stream)
      • chars: number of chars to skip (must be text input stream)
      • lines: number of lines to skip

      Skipping a BOM will automatically set the appropiate charset. If no BOM is detected, then this call is safely ignored by pushing those bytes back into the input stream. The following byte order marks are supported:

      • UTF-16 Big Endian: 0xFE_FF
      • UTF-16 Little Endian: 0xFF_FE
      • UTF-8: 0xEF_BB_BF

      Examples:

      // skip leading 4 lines in a CSV file
      ioSkip(`io/foo.csv`, {lines:4}).ioReadCsv

      // skip byte order mark
      ioSkip(`io/foo.csv`, {bom}).ioReadCsv

      Parameters

      Returns JsObj

    • Read a stream of dicts from a comma separated value file. This function uses the same options and semantics as ioReadCsv except it streams the rows as dicts instead of reading to an in-memory grid. See docHaxall::Streams#ioStreamCsv.

      Parameters

      Returns JsObj

    • Encode an I/O handle into a base64 string. The default behavior is to encode using RFC 2045 (see sys::Buf.toBase64). Use the {uri} option to encode a URI-safe URI via RFC 4648 (see sys::Buf.toBase64Uri). Also see ioFromBase64.

      Example:

      // encode string to base64
      ioToBase64("myusername:mysecret")

      // encode string to base64 without padding using URI safe chars
      ioToBase64("myusername:mysecret", {uri})

      Parameters

      Returns string

    • Encode an I/O handle into hexidecimal string.

      Parameters

      Returns string

    • Write a grid to a CSV (comma separated values) file.

      CSV format is implemented as specified by RFC 4180:

      • rows are delimited by a newline
      • cells are separated by delimiter char
      • cells containing the delimiter, " double quote, or newline are quoted; quotes are escaped as ""

      The following options are supported:

      • delimiter: separator char as string, default is ","
      • newline: newline string, default is "\n" (use "\r\n" for CRLF)
      • noHeader: Set this option to prevent the column names from being written as a header row.
      • stripUnits: write all numbers without a unit

      Also ioReadCsv, ioEachCsv, and docHaystack::Csv.

      Parameters

      Returns JsObj

    • Write an Excel XLS file, where val may be:

      • Grid - writted a a single worksheet
      • Grid[] - each grid is exported as a separate worksheet

      By default each worksheet is named "Sheet1", "Sheet2", etc. Use a title tag in Grid.meta to give the worksheets a specific name.

      Example:

      readAll(site).ioWriteExcel(`io/sites.xls`)
      

      Parameters

      Returns JsObj

    • Write an Axon data structure to HTML. The val must be an Axon type that can be converted to a Grid.

      Parameters

      Returns JsObj

    • Write an Axon data structure to JSON. By default, Haystack 4 (Hayson) encoding is used. The val may be:

      • One of the SkySpark types that can be mapped to JSON. See docHaystack::Json for type mapping.

      The following options are supported:

      • noEscapeUnicode: do not escape characters over 0x7F
      • v3: Encode JSON using Haystack 3 encoding
      • v4: Explicitly encode with Haystack 4 encoding (default)

      Parameters

      Returns JsObj

    • Write an Axon data structure to RDF JSON-LD format. The val must be an Axon type that can be converted to a Grid.

      Parameters

      Returns JsObj

    • Write a list of string lines separated with "\n" character.

      Parameters

      Returns JsObj

    • Render data to a PDF file. The grid meta "view" tag determines the visualization:

      • table: render grid as table (default)
      • chart: render grid as chart
      • fandoc: render string as fandoc
      • text: render as plaintext

      Options:

      • pageSize: determines the PDF page size

      Examples:

      // render as chart with default page size
      read(power).hisRead(yesterday).ioWritePdf(`io/portrait.pdf`)

      // render as chart with landscape page size of 11" x 8.5"
      read(power).hisRead(yesterday).ioWritePdf(`io/landscape.pdf`, {pageSize:"11in,8.5in"})

      // render table as single auto-fit page
      readAll(site).ioWritePdf(`io/sites.pdf`, {pageSize:"auto"})

      Note: this feature is available in SkySpark only

      Parameters

      Returns JsObj

    • Write a string to an I/O handle.

      Parameters

      Returns JsObj

    • Render data to an SVG file. Pass size option to specify the SVG viewBox, width, and height attribtues (defaults to "1000,800"). The visualization is determined by the grid meta "view" tag - see ioWritePdf() for specifics.

      Examples:

      read(power).hisRead(yesterday).ioWriteSvg(`io/example.svg`)

      read(power).hisRead(yesterday).ioWriteSvg(`io/example.svg`, {size:"600,400"})

      Note: this feature is available in SkySpark only

      Parameters

      Returns JsObj

    • Write dicts to a Trio file. The val may be can be any format accepted by toRecList.

      Following options are supported

      • noSort: marker to prevent tags from being sorted by name

      Parameters

      Returns JsObj

    • Write an Axon data structure to RDF Turtle format. The val must be an Axon type that can be converted to a Grid.

      Parameters

      Returns JsObj

    • Write a grid to an XML file.

      Parameters

      Returns JsObj

    • Write a Grid to the Zinc format.

      Parameters

      Returns JsObj

    • Read a zip file's entry listing, return a grid with cols:

      • path: path of entry inside zip as Uri
      • size: size of file in bytes or null
      • mod: modified timestamp or null if unknown

      The handle must reference a zip file in the file system. Use ioZipEntry to perform a read operation on one of the entries in the zip file.

      Example:

      ioZipDir(`io/batch.zip`)
      

      Parameters

      Returns Grid

    • Return a I/O handle which may be used to read from a zip entry within a zip file. The handle parameter must be an I/O handle which references a zip file in the file system. The path parameter must be a Uri which identifies the path of the entry within the zip file. See ioZipDir to read the listing of paths within a zip.

      Example:

      // read CSV file from within a zip
      ioZipEntry(`io/batch.zip`, `/zone-temp.csv`).ioReadCsv

      Parameters

      Returns JsObj

    • Parameters

      • ...args: unknown[]

      Returns IOFuncs