## 1.3.2
### Changes
- now works and passes tests with Lua 5.3
- utils.import will NOT override global symbols (import 'math' caused global type() to be clobbered)
- Updated pl.dir.file_op to return true on success and false on failure...
- workaround for issues with pl.lapp with amalg.lua - will look at global LAPP_SCRIPT if arg[0] is nil
### Fixes
- func was broken: do NOT use ipairs to iterate if __index is overriden!
- issue #133 pretty.read (naively) confused by unbalanced brackets
- xml attribute underscore fix for simple parser
- Fix path.normpath
- lexer: fix parsing block comments/string. fix hang on empty string.
- Fixed utils.execute returning different values for Lua 5.1 and Lua 5.2
- Issue #97; fixed attempt to put a month into a day
- problem with tablex.count_map with custom comparison
### Features
- Add Python style url module for quote and unquote.
- stringx.quote_string, which scans for embedded long-string quote matches and escapes them by creating a long-string quote.
- issue #117: tablex.range now works with decreasing numbers, consistent with numerical for loop
- utils.import will NOT override global symbols (import 'math' caused global type() to be clobbered)
- issue #125: DOCTYPE ignored in xml documents as well
- Allow XML tostring() function to customize the default prefacing with <?xml...>
- More Robust Quoted Strings
- lapp: improved detection of unsupported short flags
## 1.3.0
### Changes
- class: RIP base method - not possible to implement correctly
- lapp: short flags can now always be followed directly by their value, for instance,
`-I/usr/include/lua/5.1`
- Date: new explicit `Date.Interval` class; `toUTC/toLocal` return new object; `Date.__tostring`
always returns ISO 8601 times for exact serialization. `+/-` explicit operators. Date objects
are explicitly flagged as being UTC or not.
### Fixes
- class: super method fixed.
- Date: DST is now accounted for properly.
- Date: weekday calculation borked.
### Features
- All tests pass with no-5.1-compatible Lua 5.2; now always uses `utils.load` and
`utils.unpack` is always available.
- types: new module containing `utils.is_xxx` methods plus new `to_bool`.
- class: can be passed methods in a table (see `test=klass.lua`). This is
particularly convenient for using from Moonscript.
- general documentation improvements, e.g `class`
## 1.2.1
### Changes
- utils.set(get)fenv always defined (_not_ set as globals for 5.2 anymore!).
These are defined in new module pl.compat, but still available through utils.
- class.Frodo now puts 'Frodo' in _current environment_
### Fixes
- lapp.add_type was broken (Pete Kazmier)
- class broke with classes that redefined __newindex
- Set.isdisjoint was broken because of misspelling; default ctor Set() now works as expected
- tablex.transform was broken; result now has same keys as original (CoolistheName007)
- xml match not handling empty matches (royalbee)
- pl.strict: assigning nil to global declares it, as God intended. (Pierre Chapuis)
- tests all work with pl.strict
- 5.2 compatible load now respects mode
- tablex.difference thought that a value of `false` meant 'not present' (Andrew Starke)
### Features
- tablex.sort(t) iterates over sorted keys, tablex.sortv(t) iterates over sorted values (Pete Kazmier)
- tablex.readonly(t) creates a read-only proxy for a table (John Schember)
- utils.is_empty(o) true if o==nil, o is an empty table, or o is an empty string (John Schember)
- utils.executeex(cmd,bin) returns true if successful, return code, plus stdout and stderr output as strings. (tieske)
- class method base for calling inherited methods (theypsilon)
- class supports pre-constructor _create for making a custom self (used in pl.List)
- xml HTML mode improvements - can parse non-trivial well-formed HTML documents.
xml.parsehtml is a parse function, no longer a flag
- if a LOM document has ordered attributes, use these when stringifying
- xml.tostring has yet another extra parm to force prefacing with <?xml...>
- lapp boolean flags may have `true` default
- lapp slack mode where 'short' flags can be multi-char
- test.asserteq etc take extra arg, which is extra level where error must be reported at
- path.currentdir,chdir,rmdir,mkdir and dir as alias to lfs are exported; no dependencies on luafilesystem outside pl.path, making it easier to plug in different implementations.
Changes since 1.1.0 (from git log):
issue #70: boolean flags may have true default
Merge pull request #69 from Tieske/master
general updates, mainly added CONTRIBUTING.md
Merge pull request #1 from mark-otaris/patch-1
Caught red handed, after a shameless copy 😄. Thx for the fix
This is Penlight, not Busted
added - a shameless copy of busted - CONTRIBUTING.md file
renamed docs to doc, to fix luarocks warning
updated readme to md format
changed .txt to .md files
added rockspec, fixed typo in filename
Merge pull request #67 from Tieske/add_executeex
added utils.executeex, which also returns output of stdout and stderr
updated, using readfile now, remove obsolete os.remove commands
Merge pull request #66 from Tieske/fix_temp
windows environment variable TMP is deprecated, use TEMP
mode binary mode optional (binary would require platform specific line endings to be converted which is not very portable, and mostly just text will do)
update: read files in binary mode
added utils.executeex, which also returns output of stdout and stderr
windows environment variable TMP is deprecated, use TEMP
HTML mode skips DOCTYPE; no globals harmed outside pl.utils
Merge pull request #64 from Tieske/fix_dir
fixed makepath creation, added/updated some documentation
fixed dirpath creation, added/updated some documentation
basic parser handles comments, and HTML mode is working nicely with real-world HTML
use LOM ordered attributes when stringifying if present (Danny).
manual merge of John Schember's readonly table support
Merge pull request #61 from user-none/isempty
Thanks, John!
Merge pull request #62 from CoolisTheName007/patch-2
Transform using values as keys.
missing locals
Set.issempty mispelling; default ctor borked; more tests
Transform using values as keys.
Merge remote-tracking branch 'upstream/master' into empty
Add function to check if an object is empty.
Merge pull request #53 from pkazmier/master
Added iterators to allow traversing tables in a sorted manner
Merge pull request #60 from theypsilon/master
base class methods invocation possible not only in method constructor _init
Adding new class method 'base' which can be used for calling base class methods easily
pl.class broke with classes that redefined __newindex; OrderedMap can now use normal indexing to assign keys in order
Merge pull request #54 from CoolisTheName007/patch-1
Typo fixed, libarary->library
Typo fixed.
Added tablex.sort and tablex.sortv to iterate over sorted elements
There are times when it would be convenient to iterate over a table
either by sorted keys or values. There is an example of this in the
PIL book. I added the two functions to tablex module, added two test
cases, and updated the PL manual.
Merge pull request #51 from pkazmier/master
Thanks!
lapp.add_type was broken due to uninitialized table variable.
The variable `types` was not initialized preventing `add_type` from
appending custom types to the variable. I also added a new test to
cover this test case in the future.
Penlight is a set of pure Lua libraries focusing on input data
handling (such as reading configuration files), functional
programming (such as map, reduce, placeholder expressions,etc),
and OS path management. Much of the functionality is inspired
by the Python standard libraries.