Skip to content

Releases: Juniper/libslax

libslax-3.1.6

26 Aug 04:16

Choose a tag to compare

  • Fixed Integer divide by zero exception while taking profiling (Pull #76)
  • add "--check-namespaces" option for enforcing namespace-as-URI rules
  • doc: add local.css for admonition colors
  • doc: add more xslt equivalents
  • doc: add some more examples
  • fix bug with uninitialzed gn_cur
  • add slaxIsValidNamespaceUri() to give errors for broken namespace URIs and then add slaxSetCheckNamespaces() to turn it on/off since we have lots of broken namespaces
  • fix function ref
  • doc: fix issue with not emitting namespace statements (ns) when there are no child nodes. This is complicated by our behavior of putting a blank line between the namespaces and the content, so we have to pass a leading_newline boolean to slaxWriteChildren
  • for slax:join(), don't follow the "next" link for non-RTF objects
  • update test cases

libslax-3.1.5

13 Aug 18:52

Choose a tag to compare

  • Document the impact of mvar += on vars
  • add grouping to json (for jsonlint)
  • add support functions for yaml/json grouping
  • fix bug w/ += not making RTFs
  • fix yaml grouping (for yamllint)
  • update test cases

libslax-3.1.4

28 Jul 20:40

Choose a tag to compare

  • Handle json conversion in case of invalid xml
  • fix error message
  • incorporate pull#73, fixing structure names and keeping the order of children unchanged

libslax-3.1.3

22 May 15:00

Choose a tag to compare

When the --profile-mode option is used without the --profile option, profile output is written to the file profile.output. Update the documentation.

3.1.2

31 Mar 15:13

Choose a tag to compare

  • detect "one && /two", where the slash is led by an operator and the space should not be trimmed
  • fix bad git tagging in 3.1.1

libslax-3.1.0

26 Mar 14:23

Choose a tag to compare

  • Add support for ternary expressions in attributes, like:
<data name=$even ? 10 : 12 name=$name ?: "default">;
  • Fixes #69
  • add missing slaxTernaryExpand() call to fix #69
  • remove error message from #69

libslax-3.0.0

26 Mar 03:40

Choose a tag to compare

  • add line-wrapping code for attributes
  • generate an error if ternary operators are using for attributes (#69)
  • make slaxWriteAttributes() to move the logic out of slaxWriteElementFull()
  • new major release: libslax-3.0.0, in honor of "version 1.3". I didn't move to "1.0.0" because I always thought it would be confusing that "1.0.0" supported slax-1.1, but I realized that I can make the "3" in "slax-the-language 1.3" echo in the version of "libslax-the-software 3.0.0".

libslax-0.24.0

16 Mar 19:09

Choose a tag to compare

  • Fixes and enchancements around wrapping and formatting
  • fix how nsDef entries are made
  • fix comment handling, both parsing and formatting
  • translate "not(x)" into "!x", handling more complex expressions
  • nits:
  • Drop the "upload-docs" target from the ancient "oxtradoc" manual
  • Fix a bug in slaxLexerLookAhead where end-of-buffer isn't handled correctly
  • a bug in slaxWriteEmitExpression was over-indenting seemingly randomly
  • detect namespaces and handle them correctly
  • drop the 'variable' test, do avoid slax-ext:node() references
  • fix handling of comments to make it more consistent content
  • improve wrapping in slaxWriteEmitExpression for overly long lines, fixing a bug and changing the "when to give up" logic a bit
  • move more statements (for, for-each, while, apply-templates) to use slaxWriteExpression so --width is respected
  • pass a trailer to slaxWriteExpression so it can reserve space for trailing text
  • sort commands; add "git diff commit "
  • teach slaxAttribAddValue to make namespaces (nsDef)
  • update test cases

libslax-0.23.1

27 Feb 17:38

Choose a tag to compare

Small fix to detect <inttypes.h>

libslax-0.23.0

27 Feb 17:24

Choose a tag to compare

Introducing "version 1.3":

  • Improved slaxproc Argument Parsing
    slaxproc -Fpitest-empty-39.slax --width=70

  • Parentheses are now optional

    for-each $authors/author[life-span/born] {
        if life-span/died {
            <dead>;
        } else if life-span/born < 1900 {
            <very-old>
        }

        for $i in life-span/born ... life-span/died {
            <lived-in> $i;
        }
    }
  • "output-method json"
  • New slaxproc Parameter Syntax with "--param name=value"
  • Profiler Option to invoke the profiler from the command line
  • Format Width with --width 80
  • xutil:slax-to-xml() and xutil:xml-to-slax()
  • xutil:common() and xutil:distinct()
  • New Bit Shift Functions
  • New slaxproc Options (--xml-to-yaml, --encoding, --indent-width)
  • Version Information with "--version" and "--version-only"
  • slax:ends-with()
  • slax:get-host()
  • slax:join()
  • New slax:printf() Functionality
  • Hex Numbers (var $x = 0x45 + 0xBEEF;)

And several other interesting features.

Complete details in:

https://libslax.readthedocs.io/en/latest/notes.html#new-features-in-slax-1-3

From the commit logs:

  • --dump-tree will dump the hierarchy of the script
  • Add "in" keyword for 'for $i in xpath'
  • Add %h and %H; fix $jt; fix end-with()
  • Add +xutil:slax-to-xml and +xutil:xml-to-slax
  • Add a --want-parens opton to force pre-1.3 parens on conditional statements even if -w1.3
  • Add new -aname=value format; add encoding option
  • Add slax:ends-with() function (#57)
  • Implement slax:xml-to-slax() (#20)
  • sdb: add "info nodes" which list script nodes/hierarchy
  • sdb: add "wall" profile-mode
  • sdb: add "wall" to profiler
  • add --indent-width option
  • add --json
  • add --profile and --profile-mode options
  • add --version-only
  • add --version-only; clean up option processing a bit
  • add SLAX_VERSION to "slaxproc --version" output (#58)
  • sdb: add dump command
  • add percentage to profiler output
  • add profiler-only support
  • add shift functions to the bit library
  • add slax:get-host() function
  • add slax:join()
  • add support for --json and 'output-method json' to make json output
  • add xutil:common() and xutil:difference()
  • add yaml writer
  • convert hex numbers to decimal before making string tokens
  • detect "var $x = call name(...)" and write it correctly (v1.3) (#34)
  • detect .ext extension for prefixes that don't require libraries (aren't "extension"s)
  • make -v additive and turn off parsing status for single -v, while allowing it with -vv
  • move to getopt_long style option processing; add encoding option
  • new 1.3 version, supporting unquoted order statements (#63)
  • teach bit:from-int() to accept strings (#54)

Repair the effects of time:

Add some functionality to "gt":

  • "gt br ls" lists branches; "gt merge"
  • add "clone" verb
  • add "unpatch"
  • add 'gt self-help' since I keep forgetting the syntax
  • add a coat of "fancy" to unpatch

Build environment:

  • Add HAVE_HUMANIZE_NUMBER:-no logic, since humanize_number(3) is not standard
  • Add SH_OPTS for debugging
  • Adjust to new version of autoreconf; no need for m4/sqlite3, but it needs a test for SQLITE3_REQUIRED_VERSION; nuke "print" from xml2-config, etc.; add --with-sqlite3[=DIR]
  • Remove the line numbers that libxslt emits, which breaks our tests
  • Set language to En
  • Some XPATH_* enums became #defines, so we need to protect against compiler warnings with -Wswitch
  • add "scribble" to randomize memory
  • add +slaxIoUseReadline (--no-readline) to avoid readline/libedit, when used without a tty (e.g. under lldb)
  • add -lutil, since that's where humanize_number might live
  • add LIBADD settings for dependent libraries
  • add __printflike def for linux
  • add check for memrchr (which it turns out we don't need)
  • add missing slaxhumanize.h to noinst list

Install issues:

Intern code fixes:

  • replace "pure-parser" with modern "api.pure"
  • slaxDebugInitFlags(), which accepts flags including the profiler ones
  • Add inttypes.h to get PRId64
  • GCC pragma-fu to avoid warning with libxslt XSLT_RVT_LOCAL
  • Keep the line number accurate inside comments (PR1486566)
  • Stop indenting at double colon (L_DCOLON)
  • Turn off -Wunused-but-set-variable (for bison 3.8.2)
  • Update humanize with latest BSD source
  • Use slaxSetupFakeContext() to make a fake context now that xmlSetupParserForBuffer is deprecated (libxml2-2.15.2)
  • add L_UNDERSCORE (concat) to acceptable marking points for wrapping lines in the formatter
  • add T_UNTERMINATED_STRING for a proper error
  • add UNUSED to yynerrs
  • add comment explaining that the back-reference example fails under macos
  • add slaxAddChild to wrap xmlAddChild in acceptable logic
  • alloca proper length buffer (#49)
  • alloca() proper length buffer (#49)
  • allow unquoted strings for order/etc statements (#63)
  • autoupdate changes
  • avoid NULL argument
  • avoid https://bugzilla.gnome.org/show_bug.cgi?id=629325
  • avoid memcpy call when sep is NULL, even if slen is zero
  • bison 3.7.6 drops YYTERROR (now YYSYMBOL_YYerror)
  • bit:to-int needs a check for negative numbers
  • case-order is not implemented in libxslt
  • commonize and simplify some variants of slaxAttribAdd*()
  • fix (#61) allow true, false, and null in JSON
  • get more input of look ahead isn't looking far enough (#13)
  • handle the "json" output-method; start comments with slaxWriteBlankline not slaxWriteNewline
  • make the psvi of the initial state (slaxMvarInit) as global or local so about errors when freed ("xsltFreeStackElem: Unexpected RVT flag")
  • move from xmlAddChild to slaxAddChild, to protect against an issue where xmlAddChild coalesces the incoming node with existing nodes and frees the argument without letting the caller know
  • stop substituting "/dev/std{in,out}" for "-"; use file handles directly

plus lots of documentation additions and update test cases