• Jump To … +
    api.js attributes.js node-exports.js parser.js rule-attributes.js rule-dependencies.js sabnf-grammar.js scanner-callbacks.js scanner-grammar.js scanner.js semantic-callbacks.js show-rules.js syntax-callbacks.js web-exports.js converter.js node-exports.js transformers.js web-exports.js apg-conv.js help.js apg-exp.js exec.js flags.js parse-replacement.js replace-grammar.js replace.js result.js sabnf-generator.js split.js web-exports.js ast.js circular-buffer.js emitcss.js identifiers.js node-exports.js parser.js stats.js style.js trace.js utilities.js web-exports.js apg.js command-line.js LICENSE.md README.md index.md
  • help.js

  • §
    /*  *************************************************************************************
     *   copyright: Copyright (c) 2021 Lowell D. Thomas, all rights reserved
     *     license: BSD-2-Clause (https://opensource.org/licenses/BSD-2-Clause)
     *   ********************************************************************************* */
  • §

    This module simply houses the help and version text and functions used by apg-conv.

    module.help() - returns the help text. Called if the -h or --help argument is present or if there are any input argument errors.

    module.version() - returns the version text. Called if the -v or --version argument is present.

    module.exports = {
      help: function help() {
        let str = 'Usage:\n';
        str += 'apg-conv [options]\n';
        str += '(--help     | -h) display this help screen\n';
        str += '(--version  | -v) display version number\n';
        str += '(--src      | -s) <path>, the file to convert, default stdin\n';
        str += '(--src-type | -st) type, the source file type, default UTF8\n';
        str += '(--dst      | -d) <path>, the converted file, default stdout\n';
        str += '(--dst-type | -dt) type, the converted file type, default UTF8\n';
        str += '(--err      | -e) <path>, the error reporting file, default stderr\n';
        str += '\n';
        str += 'type - the byte stream encoding: may be one of:\n';
        str += 'UTF8\n';
        str += 'UTF16\n';
        str += 'UTF16BE\n';
        str += 'UTF16LE\n';
        str += 'UTF32\n';
        str += 'UTF32BE\n';
        str += 'UTF32LE\n';
        str += 'UINT7    (7-bit bytes)\n';
        str += 'ASCII    (alias for UINT7)\n';
        str += 'UINT8    (8-bit bytes or ISO 8859-1)\n';
        str += 'BINARY   (alias for UINT8)\n';
        str += 'UINT16   (alias for UINT16BE)\n';
        str += 'UINT16BE\n';
        str += 'UINT16LE\n';
        str += 'UINT32   (alias for UINT32BE)\n';
        str += 'UINT32BE\n';
        str += 'UINT32LE\n';
        str += 'STRING\n';
        str += 'ESCAPED\n';
        str += '\n';
        str += 'Type notes:\n';
        str += '- The type names are case insensitive.\n';
        str += '- Source types may be prefixed with BASE64:.\n';
        str += '  The input will be treated as base64 encoded.\n';
        str += '  It will be stripped of white space and control characters (\\t, \\r, \\n),\n';
        str += '  then base 64 decoded as an initial step.\n';
        str += '- Destination types may have a :BASE64 suffix.\n';
        str += '  The output will be base 64 encoded as a final step.\n';
        str += '- Destination types my be prefixed with CRLF:.\n';
        str += '  This will cause a line ending transformation prior to decoding.\n';
        str += '  CRLF(\\r\\n), CR(\\r) or LF(\\n) will be interpreted as line ends and transformed to CRLF.\n';
        str += '  CRLF will be added to the end if the last line end is missing.\n';
        str += '- Destination types my be prefixed with LF:.\n';
        str += '  This will cause a line ending transformation prior to decoding.\n';
        str += '  CRLF(\\r\\n), CR(\\r) or LF(\\n) will be interpreted as line ends and transformed to LF.\n';
        str += '  LF will be added to the end if the last line end is missing.\n';
        str += '- UTF type input data may have an optional Byte Order Mark (BOM)\n';
        str += '  - [Unicode Standard](http://www.unicode.org/versions/Unicode9.0.0/ch03.pdf#G7404).\n';
        str += '- UTF output data will not have a BOM.\n';
        str += '- UTF16 defaults to UTF16BE if there is no BOM.\n';
        str += '- UTF32 defaults to UTF32BE if there is no BOM.\n';
        str += "- An exception is thrown if a BOM is present and doesn't match the specified data type.\n";
        str += '- ASCII is an alias for UINT7, 7-bit unsigned integers.\n';
        str += '- BINARY is an alias for UINT8, 8-bit unsigned integers.\n';
        str += '- UINT16 is an alias for UINT16BE, big-endian, 16-bit unsigned integers.\n';
        str += '- UINT32 is an alias for UINT32BE, big-endian, 32-bit unsigned integers.\n';
        str += '- STRING is a JavaScript string\n';
        str += '- The ESCAPED format is identical to JavaScript string escaping except that\n';
        str += '  the grave accent (`) is used instead of the backslash (\\).\n';
        str += '  e.g \\xHH -> `xHH, \\uHHHH -> `uHHHH, \\u{HHHHHH} -> `u{HHHHHH}.\n';
        str += '  Its design is for special use in HTML <textarea> elements.\n';
        str += '\n';
        str += 'Examples:\n';
        str += '\n';
        str += 'apg-conv -s <inpath> -d <outpath> -st BINARY -dt UTF8\n';
        str += '  Convert a binary (Latin 1 or UINT8) file to UTF8.\n';
        str += '  That is, any characters > 0x7f will get two-byte, UTF8 encoding.\n';
        str += '\n';
        str += 'apg-conv -s <inpath> -d <outpath> -st ASCII -dt CRLF:ASCII\n';
        str += '  Convert all line ends(CRLF, LF or CR) of the ASCII file to CRLF(\\r\\n),\n';
        str += '  including the last even if missing in the input file.\n';
        str += '\n';
        str += 'apg-conv -s <inpath> -d <outpath> -st BASE64:UTF8 -dt UTF32\n';
        str += '  Perform an initial base 64 decoding of the input file,\n';
        str += '  then convert it from UTF8 to UTF32(BE) encoding.\n';
        str += '\n';
        str += 'apg-conv -s <inpath> -d <outpath> -st UTF8 -dt UTF32LE:BASE64\n';
        str += '  The input file is converted from UTF8 to UTF32LE and base 64 encoded as a final step.\n';
        str += '\n';
        str += 'apg-conv -s <inpath> -d <outpath> -st BASE64:UTF8 -dt LF:UTF16:BASE64\n';
        str += '  The input file is base 64 decoded. All line ends(CRLF, LF or CR) are converted to LF(\\n),\n';
        str += '  then converted to wide characters (UTF16) and finally base64 encoded.\n';
        str += '\n';
        return str;
      },
      version: function version() {
        return 'Version 4.0.0\nCopyright (c) 2021 Lowell D. Thomas, all rights reserved';
      },
    };