aboutsummaryrefslogtreecommitdiffstats
path: root/util
Commit message (Collapse)AuthorAgeFilesLines
...
* | util.promise: Switch order of parameters to join()Matthew Wild2021-03-251-4/+2
| | | | | | | | | | This saves awkward fiddlery with varargs and also echoes the signature of pcall/xpcall.
* | util.promise: all()/all_settled() pass through non-promise valuesMatthew Wild2021-03-251-22/+30
| |
* | util.promise: Add join() convenience methodMatthew Wild2021-03-251-0/+11
| | | | | | | | | | | | Usage: promise.join(p1, p2, function (result1, result2) [...] end)
* | util.promise: Add support for arbitrary keys in all()/all_settled()Matthew Wild2021-03-251-15/+27
| |
* | util.datamapper: Don't include empty unwrapped arraysKim Alvefur2021-03-241-1/+4
| | | | | | | | | | | | Since there is no way to distinguish an empty such array from a zero-length array. Dropping it seems like the least annoying thing to do.
* | util.datamapper: Fix error on attempt to coerce nil to somethingKim Alvefur2021-03-231-0/+3
| | | | | | | | | | | | Turns falsy values into nil instead of nothing, which ensures this function always has 1 return value, or table.insert({}) complains. Would still happen on some unexpected input, but that's actually a good thing.
* | util.datamapper: Deal with locally built stanzas missing xmlnsKim Alvefur2021-03-231-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | So the problem is that xmlns is not inherited when building a stanza, and then :get_child(n, ns) with an explicit namespace does not find that such child tags. E.g. local t = st.stanza("foo", { xmlns = "urn:example:bar" }) :text_tag("hello", "world"); assert(t:get_child("hello", "urn:example:bar"), "This fails"); Meanwhile, during parsing (util.xmppstream or util.xml) child tags do get the parents xmlns when not overriding them. Thus, in the above example, if the stanza is passed trough `t = util.xml.parse(tostring(t))` then the assert succeeds. This change makes it so that it leaves out the namespace argument to :get_child when it is the same as the current/parent namespace, which behaves the same for both built and parsed stanzas.
* | util.datamapper: Factor out conversion from any value to XML stringKim Alvefur2021-03-221-29/+17
| | | | | | | | Since this was the last severely duplicated code left.
* | util.datamapper: Handle nested arrays or objects in arraysKim Alvefur2021-03-221-4/+22
| |
* | util.datamapper: Fix to skip parsing wrapped arrays that aren't thereKim Alvefur2021-03-221-2/+0
| | | | | | | | Turns out the unreachable error is reachable :D
* | util.datamapper: Complete array building supportKim Alvefur2021-03-201-12/+3
| |
* | util.datamapper: Factor out handling of object properties for array reuseKim Alvefur2021-03-201-79/+82
| |
* | util.datamapper: Finally implement support for parsing arraysKim Alvefur2021-03-201-13/+9
| |
* | util.datamapper: Factor out extraction of the XML part to useKim Alvefur2021-03-201-40/+42
| | | | | | | | | | | | | | | | So extract_value() takes an XML tag and details about which part we're interested in and returns that. Factoring this out will help with array implementation since this will be common behavior.
* | util.datamapper: Only get element name if there's an elementKim Alvefur2021-03-191-1/+3
| | | | | | | | Fixes error due to attempting to index a nil value
* | util.datamapper: Fix arrays nesting one level too deepKim Alvefur2021-03-191-9/+9
| |
* | util.datamapper: Deal with type name changes in util.jsonschemaKim Alvefur2021-03-191-1/+1
| |
* | util.jsonschema: Rename types for improved readabilityKim Alvefur2021-03-181-3/+12
| |
* | util.datamapper: Limited support for unparsing simple arrays of stringsKim Alvefur2021-03-181-11/+41
| |
* | util.datamapper: Add initial support for parsing arraysKim Alvefur2021-03-181-9/+47
| |
* | util.datamapper: Factor out common schema unpackingKim Alvefur2021-03-141-80/+53
| | | | | | | | | | This code extracts the bits from the schema that determines how the data is to be mapped to/from XML.
* | util.datamapper: Separate extraction of xml from coercion to target typeKim Alvefur2021-03-141-34/+28
| | | | | | | | | | | | Now it gets the text, attribute or name first, then turns it into whatever the schema wants. This should be easier to further factor out into preparation for array support.
* | util.datamapper: Use enum instead of mutually exclusive booleansKim Alvefur2021-03-141-20/+20
| | | | | | | | Cleaner and rules out invalid combinations.
* | util.datamapper: Enumerated elementsKim Alvefur2021-03-121-1/+20
| | | | | | | | E.g. error conditions or chat states.
* | util.datamapper: Add references with notesKim Alvefur2021-03-101-0/+3
| |
* | util.jsonschema: Restructure "type" keyword handlingKim Alvefur2021-03-091-9/+10
| | | | | | | | More in line with the other tests
* | util.jsonschema: Syntax tweak to not upset syntax highlightingKim Alvefur2021-03-091-2/+2
| | | | | | | | | | That whole condition stanza was shown as angry red, I think it's something with 'enum' being a key word in Teal.
* | util.jsonschema: Implement "propertyNames"Kim Alvefur2021-03-091-0/+6
| | | | | | | | This is a bit special in Lua as tables are not limited to string keys
* | util.jsonschema: Restructure handling of "properties" and "additionalProperties"Kim Alvefur2021-03-091-22/+8
| | | | | | | | This is a bit cleaner, I think
* | util.jsonschema: Fix "uniqueItems" prematurely declaring a matchKim Alvefur2021-03-091-1/+0
| |
* | util.jsonschema: Implement the "prefixItems" keywordKim Alvefur2021-03-091-1/+12
| | | | | | | | This may have been what got me confused about "items" being an array.
* | util.jsonschema: Implement the "contains" keywordKim Alvefur2021-03-091-0/+13
| | | | | | | | And apparently I had mistaken this for an array
* | util.jsonschema: Allow a boolean as schemaKim Alvefur2021-03-091-0/+3
| | | | | | | | | | | | Apparently a schema must be either an object or a boolean. Not sure where I got this string shortcut from, but I think I will keep it as it is very convenient.
* | util.jsonschema: Correct "items" keywordKim Alvefur2021-03-091-12/+4
| | | | | | | | | | | | Upon re-reading the JSON Schema spec, I found that 'items' wasn't a union of an array of schemas or a single schema, not sure where I got that from.
* | util.datamapper: Add support for mapping of elements where only one ↵Kim Alvefur2021-03-071-0/+34
| | | | | | | | | | | | | | attribute matters E.g. <feature var='foo'/> in XEP-0030 and some other simple specifications.
* | util.datamapper: Add logic for "boolean" tags here the presence means trueKim Alvefur2021-03-071-3/+9
| |
* | util.datamapper: Invent extension for using tag name as valueKim Alvefur2021-03-061-2/+15
| | | | | | | | | | Useful for certain enum-like uses where the element name is the relevant information, e.g. chat states.
* | util.datamapper: Add 'unparse' for turning tables into XMLKim Alvefur2021-03-071-1/+102
| |
* | util.datamapper: Library for extracting data from stanzasKim Alvefur2021-03-071-0/+96
| | | | | | | | Based on the XML support in the OpenAPI specification.
* | util.jsonschema: Library for JSON Schema validationKim Alvefur2021-03-061-0/+245
| |
* | util.gc: Fix check for Lua 5.4Kim Alvefur2021-03-161-1/+1
| |
* | util.rsm: Correctly coerce integer value for <index> (fix #1642)Kim Alvefur2021-03-061-0/+3
| |
* | util.rsm: Improve readability using compacter stanza building APIKim Alvefur2021-03-061-5/+5
| | | | | | | | At least I think :text_tag improves readability.
* | util.prosodyctl.shell: Allow passing a single command as argumentKim Alvefur2021-03-051-0/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Test procedure: $ prosodyctl shell 'server:version()' Expect: > OK: hg:926d53af9a7a $ prosodyctl shell 'server:version()' 'hello' Expect: > Only one command is supported as argument $ prosodyctl shell 'lorem ipsum'; echo $? Expect: > Sorry, I couldn't understand that... console:1: syntax error near 'show' > 1 (error code) Thanks Menel for mentioning the feature
* | util.prosodyctl.shell: Fix check for --quietKim Alvefur2021-03-051-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | Looked in the wrong table Test procedure: $ prosodyctl shell --quiet Expect: Prosody> (No banner)
* | util.datamanager: Support iterating over any file extensionKim Alvefur2021-02-071-4/+3
| | | | | | | | | | | | | | | | The 'typ' argument to all other functions is the actual file extension, but not here for some reason. May need this for iterating over the .bin files created by mod_http_file_share in the future.
* | util.xmppstream: Ensure stream 'id' is always present (fix #1626)Kim Alvefur2021-02-031-1/+1
| | | | | | | | Backout c2d144d3f8dd
* | util.adhoc: Propagate error with producing initial initial dataKim Alvefur2021-01-311-1/+7
| | | | | | | | Bonus: Allow use of util.error tables
* | Merge 0.11->trunkKim Alvefur2021-01-251-2/+2
|\|
| * util.interpolation: Fix combination of filters and fallback values #1623Kim Alvefur2021-01-251-2/+2
| |