hackerbase/doc/d-utils.md

8 KiB

Utility modules

These are various utility modules for other HackerBase libraries.

util-time [module]

(import util-time)

Compatibility module for the differences between chicken scheme version 5.2 and earlier and 5.3 and on.

current-util-milliseconds [procedure]

(current-util-milliseconds)

Returns the number of milliseconds since process startup.

Under chicken scheme <5.3 it uses current-milliseconds and for chicken scheme >=5.3 it uses current-process-milliseconds.

Without this module compilation with current-milliseconds results in warnings on chicken scheme >=5.3 and compilation under chicken scheme <5.3 results in error with current-process-milliseconds.

seconds->iso-date-string [procedure]

(seconds->iso-date-string . args)

Converts given seconds to ISO date string YYYY-MM-DD. Defaults to (current-seconds).

today/iso [procedure]

(today/iso)

Returns today as ISO date string YYYY-MM-DD.

util-csv [module]

(import util-csv)

This module provides a very simple, incomplete and incorrect but fast CSV loader.

(make-csv-line-parser separator string-delimiter) [procedure]

((make-csv-line-parser line)
                       separator
                       string-delimiter)

Curried version of fast CSV line parser with given separator and string delimiter.

  • separator - separator character
  • string-delimiger - string quotation character
  • line - line to parse

csv-parse-lines [procedure]

(csv-parse-lines lines
                 #:separator (separator #\;)
                 #:string-delimiter (string-delimiter #\"))

Parses given lines and returns list of lists of strings.

csv-parse [procedure]

(csv-parse fn
           . args)

Uses csv-parse-lines on lines read from given file fn.

csv-split-header [procedure]

(csv-split-header csv)

Splits given loaded CSV into two tables at the first empty row.

util-git [module]

(import util-git)

This module provides basic git repository querying functionality.

git [procedure]

(git repo
     (defmodesym (quote output)))
  • repo - a path to repository
  • mode - return values mode for operations

Returns a procedure that allows invocation of git in given repo repository returning one or two values based on mode given:

  • 'exit - returns exit code
  • 'output - returns the output lines (default)
  • 'exit+output - returns both exit code and output lines

git-status [procedure]

(git-status repo)
  • repo - git repository

Returns a dictionary with the following keys:

  • 'modified - list of modified files
  • 'untracked - list of untracked files
  • 'unknown - list of files with unknown status

git-blame [procedure]

(git-blame repo
           fname)
  • repo - git repository
  • fname - file name (path) relative to the git repository

Returns annotated source with information about originating commits for each line.

util-io [module]

(import util-io)

Module implementing advanced I/O.

read-lines/no-bom [procedure]

(read-lines/no-bom ip)
  • port - an input port

Reads lines using read-lines and if the first line contains UTF-8 BOM, removes it.

get-process-output-lines [procedure]

(get-process-output-lines cmd
                          . args)
  • cmd - a string with the command
  • args - list of arguments to pass to process

Returns a list of strings representing all the lines produced by running the command given.

get-process-exit+output-lines [procedure]

(get-process-exit+output-lines cmd
                               . args)
  • cmd - a string with the command
  • args - list of arguments to pass to process

Returns two values - an exit code and a list of strings representing all the lines produced by running the command given.

process-send/recv [procedure]

(process-send/recv cmd
                   args
                   . lines)
  • cmd - a string with command
  • args - list of arguments
  • lines - lines to feed to stdin of the process

Executes given command cmd with given argument list args writing all lines to its standard input and then reads all the process output.

util-stdout [module]

(import util-stdout)

Very simple module wrapping standard output.

stdout-quiet [parameter]

(define *stdout-quiet* (make-parameter #f))
(*stdout-quiet*)
(*stdout-quiet* quiet)

A boolean parameter which disables all output from procedures in this module if its value is #t.

stdout-print [procedure]

(stdout-print . args)

If not quiet, passes args to print.

stdout-printf [procedure]

(stdout-printf fmt
               . args)

If not quiet, prints formatted string fmt by applying args to format procedure.

stdout-newline [procedure]

(stdout-newline)

If not quiet, calls (newline).

util-parser [module]

(import util-parser)

This module contains common functions for both configuration and member file parsers. All functions are UTF-8 aware.

parser-preprocess-line [procedure]

(parser-preprocess-line line)
  • line - a string with contents of one source line

If the input line contains the # character, the rest of the line (including this character) is removed.

Any leading and trailing space is removed.

Returns a string representing the preprocessed line.

parser-parse-line [procedure]

(parser-parse-line line)
  • line - preprocessed line (string)

If the line is empty, returns #f.

If the line contains only one token consisting of non-whitespace characters before the first whitespace character (there is no whitespace), returns a symbol created by interning the whole line.

When the line contains whitespace character(s), it returns a pair consisting of symbol created by interning the string of non-whitespace characters before the first whitespace character and the string with the rest of the line.

util-list [module]

(import util-list)

This module implements basic list functionality which is common in most scheme implementations.

filter [procedure]

(filter pred?
        lst)
  • pred? - procedure accepting any value and returning #t or #f
  • lst - list to be filtered

Returns a list containing only elements matching given pred? predicate.

util-proc [module]

(import util-proc)

This module provides a few simple procedures for querying properties of other procedures.

improper-list-info [procedure]

(improper-list-info lst)

Returns two values: the proper part of the list length and #t if there is an improper list end

(procedure-arity=? n) [procedure]

((procedure-arity=? proc)
                    n)
  • n - integer representing the number of arguments
  • proc - procedure to query

Returns true if the procedure proc accepts exactly n arguments.

(procedure-arity>=? n) [procedure]

((procedure-arity>=? proc)
                     n)
  • n - integer representing the number of arguments
  • proc - procedure to query

Returns true if the procedure proc accepts at least n arguments.

(procedure-arity>? n) [procedure]

((procedure-arity>? proc)
                    n)
  • n - integer representing the number of arguments
  • proc - procedure to query

Returns true if the procedure proc accepts more than n arguments.

procedure-num-args [procedure]

(procedure-num-args proc)
  • proc - procedure to check

Returns the number of mandatory arguments.

procedure-arg-names [procedure]

(procedure-arg-names proc)
  • proc - procedure to check

Returns the (possibly improper) list of arguments the procedure proc accepts. If it accepts arbitrary number of arguments, it is signalled by simple symbol instead of pair at the last position. If it accepts an exact number of arguments, it returns a proper list.