Lua
made by https://0x3d.site
GitHub - Phrogz/SLAXML: SAX-like streaming XML parser for LuaSAX-like streaming XML parser for Lua. Contribute to Phrogz/SLAXML development by creating an account on GitHub.
Visit Site
GitHub - Phrogz/SLAXML: SAX-like streaming XML parser for Lua
SLAXML
SLAXML is a pure-Lua SAX-like streaming XML parser. It is more robust than
many (simpler) pattern-based parsers that exist (such as mine), properly
supporting code like <expr test="5 > 7" />
, CDATA nodes, comments, namespaces,
and processing instructions.
It is currently not a truly valid XML parser, however, as it allows certain XML that is syntactically-invalid (not well-formed) to be parsed without reporting an error.
Features
- Pure Lua in a single file (two files if you use the DOM parser).
- Streaming parser does a single pass through the input and reports what it sees along the way.
- Supports processing instructions (
<?foo bar?>
). - Supports comments (
<!-- hello world -->
). - Supports CDATA sections (
<![CDATA[ whoa <xml> & other content as text ]]>
). - Supports namespaces, resolving prefixes to the proper namespace URI (
<foo xmlns="bar">
and<wrap xmlns:bar="bar"><bar:kittens/></wrap>
). - Supports unescaped greater-than symbols in attribute content (a common failing for simpler pattern-based parsers).
- Unescapes named XML entities (
< > & " '
) and numeric entities (e.g.
) in attributes and text nodes (but—properly—not in comments or CDATA). Properly handles edge cases like&amp;
. - Optionally ignore whitespace-only text nodes (as appear when indenting XML markup).
- Includes an optional DOM parser that is both a convenient way to pull in XML to use as well as a nice example of using the streaming parser.
- DOM module also provides DOM-to-XML serialization, including options for pretty-printing and sorting (making plain-text diffs sane). Parse XML, modify Lua tables, and then round-trip the results back to XML.
- Does not add any keys to the global namespace.
Usage
local SLAXML = require 'slaxml'
local myxml = io.open('my.xml'):read('*all')
-- Specify as many/few of these as you like
parser = SLAXML:parser{
startElement = function(name,nsURI,nsPrefix) end, -- When "<foo" or <x:foo is seen
attribute = function(name,value,nsURI,nsPrefix) end, -- attribute found on current element
closeElement = function(name,nsURI) end, -- When "</foo>" or </x:foo> or "/>" is seen
text = function(text,cdata) end, -- text and CDATA nodes (cdata is true for cdata nodes)
comment = function(content) end, -- comments
pi = function(target,content) end, -- processing instructions e.g. "<?yes mon?>"
}
-- Ignore whitespace-only text nodes and strip leading/trailing whitespace from text
-- (does not strip leading/trailing whitespace from CDATA)
parser:parse(myxml,{stripWhitespace=true})
If you just want to see if it will parse your document correctly, you can simply do:
local SLAXML = require 'slaxml'
SLAXML:parse(myxml)
…which will cause SLAXML to use its built-in callbacks that print the results as they are seen.
DOM Builder
If you simply want to build tables from your XML, you can alternatively:
local SLAXML = require 'slaxdom' -- also requires slaxml.lua; be sure to copy both files
local doc = SLAXML:dom(myxml)
The returned table is a 'document' composed of tables for elements, attributes, text nodes, comments, and processing instructions. See the following documentation for what each supports.
DOM Table Features
- Document - the root table returned from the
SLAXML:dom()
method.doc.type
: the string"document"
doc.name
: the string"#doc"
doc.kids
: an array table of child processing instructions, the root element, and comment nodes.doc.root
: the root element for the document
- Element
someEl.type
: the string"element"
someEl.name
: the string name of the element (without any namespace prefix)someEl.nsURI
: the namespace URI for this element;nil
if no namespace is appliedsomeAttr.nsPrefix
: the namespace prefix string;nil
if no prefix is appliedsomeEl.attr
: a table of attributes, indexed by name and indexlocal value = someEl.attr['attribute-name']
: any namespace prefix of the attribute is not part of the namelocal someAttr = someEl.attr[1]
: a single attribute table (see below); useful for iterating all attributes of an element, or for disambiguating attributes with the same name in different namespaces
someEl.kids
: an array table of child elements, text nodes, comment nodes, and processing instructionssomeEl.el
: an array table of child elements onlysomeEl.parent
: reference to the parent element or document table
- Attribute
someAttr.type
: the string"attribute"
someAttr.name
: the name of the attribute (without any namespace prefix)someAttr.value
: the string value of the attribute (with XML and numeric entities unescaped)someAttr.nsURI
: the namespace URI for the attribute;nil
if no namespace is appliedsomeAttr.nsPrefix
: the namespace prefix string;nil
if no prefix is appliedsomeAttr.parent
: reference to the owning element table
- Text - for both CDATA and normal text nodes
someText.type
: the string"text"
someText.name
: the string"#text"
someText.cdata
:true
if the text was from a CDATA blocksomeText.value
: the string content of the text node (with XML and numeric entities unescaped for non-CDATA elements)someText.parent
: reference to the parent element table
- Comment
someComment.type
: the string"comment"
someComment.name
: the string"#comment"
someComment.value
: the string content of the attributesomeComment.parent
: reference to the parent element or document table
- Processing Instruction
somePI.type
: the string"pi"
somePI.name
: the string name of the PI, e.g.<?foo …?>
has a name of"foo"
somePI.value
: the string content of the PI, i.e. everything but the namesomePI.parent
: reference to the parent element or document table
Finding Text for a DOM Element
The following function can be used to calculate the "inner text" for an element:
function elementText(el)
local pieces = {}
for _,n in ipairs(el.kids) do
if n.type=='element' then pieces[#pieces+1] = elementText(n)
elseif n.type=='text' then pieces[#pieces+1] = n.value
end
end
return table.concat(pieces)
end
local xml = [[<p>Hello <em>you crazy <b>World</b></em>!</p>]]
local para = SLAXML:dom(xml).root
print(elementText(para)) --> "Hello you crazy World!"
A Simpler DOM
If you want the DOM tables to be easier to inspect you can supply the simple
option via:
local dom = SLAXML:dom(myXML,{ simple=true })
In this case the document will have no root
property, no table will have a parent
property, elements will not have the el
collection, and the attr
collection will be a simple array (without values accessible directly via attribute name). In short, the output will be a strict hierarchy with no internal references to other tables, and all data represented in exactly one spot.
Serializing the DOM
You can serialize any DOM table to an XML string by passing it to the SLAXML:xml()
method:
local SLAXML = require 'slaxdom'
local doc = SLAXML:dom(myxml)
-- ...modify the document...
local xml = SLAXML:xml(doc)
The xml()
method takes an optional table of options as its second argument:
local xml = SLAXML:xml(doc,{
indent = 2, -- each pi/comment/element/text node on its own line, indented by this many spaces
indent = '\t', -- ...or, supply a custom string to use for indentation
sort = true, -- sort attributes by name, with no-namespace attributes coming first
omit = {...} -- an array of namespace URIs; removes elements and attributes in these namespaces
})
When using the indent
option, you likely want to ensure that you parsed your DOM using the stripWhitespace
option. This will prevent you from having whitespace text nodes between elements that are then placed on their own indented line.
Some examples showing the serialization options:
local xml = [[
<!-- a simple document showing sorting and namespace culling -->
<r c="1" z="3" b="2" xmlns="uri1" xmlns:x="uri2" xmlns:a="uri3">
<e a:foo="f" x:alpha="a" a:bar="b" alpha="y" beta="beta" />
<a:wrap><f/></a:wrap>
</r>
]]
local dom = SLAXML:dom(xml, {stripWhitespace=true})
print(SLAXML:xml(dom))
--> <!-- a simple document showing sorting and namespace culling --><r c="1" z="3" b="2" xmlns="uri1" xmlns:x="uri2" xmlns:a="uri3"><e a:foo="f" x:alpha="a" a:bar="b" alpha="y" beta="beta"/><a:wrap><f/></a:wrap></r>
print(SLAXML:xml(dom, {indent=2}))
--> <!-- a simple document showing sorting and namespace culling -->
--> <r c="1" z="3" b="2" xmlns="uri1" xmlns:x="uri2" xmlns:a="uri3">
--> <e a:foo="f" x:alpha="a" a:bar="b" alpha="y" beta="beta"/>
--> <a:wrap>
--> <f/>
--> </a:wrap>
--> </r>
print(SLAXML:xml(dom.root.kids[2]))
--> <a:wrap><f/></a:wrap>
-- NOTE: you can serialize any DOM table node, not just documents
print(SLAXML:xml(dom.root.kids[1], {indent=2, sort=true}))
--> <e alpha="y" beta="beta" a:bar="b" a:foo="f" x:alpha="a"/>
-- NOTE: attributes with no namespace come first
print(SLAXML:xml(dom, {indent=2, omit={'uri3'}}))
--> <!-- a simple document showing sorting and namespace culling -->
--> <r c="1" z="3" b="2" xmlns="uri1" xmlns:x="uri2">
--> <e x:alpha="a" alpha="y" beta="beta"/>
--> </r>
-- NOTE: Omitting a namespace omits:
-- * namespace declaration(s) for that space
-- * attributes prefixed for that namespace
-- * elements in that namespace, INCLUDING DESCENDANTS
print(SLAXML:xml(dom, {indent=2, omit={'uri3', 'uri2'}}))
--> <!-- a simple document showing sorting and namespace culling -->
--> <r c="1" z="3" b="2" xmlns="uri1">
--> <e alpha="y" beta="beta"/>
--> </r>
print(SLAXML:xml(dom, {indent=2, omit={'uri1'}}))
--> <!-- a simple document showing sorting and namespace culling -->
-- NOTE: Omitting namespace for the root element removes everything
Serialization of elements and attributes ignores the nsURI
property in favor of the nsPrefix
attribute. As such, you can construct DOM's that serialize to invalid XML:
local el = {
type="element",
nsPrefix="oops", name="root",
attr={
{type="attribute", name="xmlns:nope", value="myuri"},
{type="attribute", nsPrefix="x", name="wow", value="myuri"}
}
}
print( SLAXML:xml(el) )
--> <oops:root xmlns:nope="myuri" x:wow="myuri"/>
So, if you want to use a foo
prefix on an element or attribute, be sure to add an appropriate xmlns:foo
attribute defining that namespace on an ancestor element.
Known Limitations / TODO
- Does not require or enforce well-formed XML. Certain syntax errors are
silently ignored and consumed. For example:
foo="yes & no"
is seen as a valid attribute<foo></bar>
invokesstartElement("foo")
followed bycloseElement("bar")
<foo> 5 < 6 </foo>
is seen as valid text contents
- No support for custom entity expansion other than the standard XML
entities (
< > " ' &
) and numeric entities (e.g.
or<
) - XML Declarations (
<?xml version="1.x"?>
) are incorrectly reported as Processing Instructions - No support for DTDs
- No support for extended (Unicode) characters in element/attribute names
- No support for charset
- No support for XInclude
- Does not ensure that the reserved
xml
prefix is never redefined to an illegal namespace - Does not ensure that the reserved
xmlns
prefix is never used as an element prefix
History
v0.8.1 2022-Dec-31
- Updating rockspec to prepare for LuaRocks
v0.8 2018-Oct-23
- Adds
SLAXML:xml()
to serialize the DOM back to XML. - Adds
nsPrefix
properties to the DOM tables for elements and attributes (needed for round-trip serialization) - Fixes test suite to work on Lua 5.2, 5.3.
- Fixes Issue #10, allowing DOM parser to handle comments/PIs after the root element.
- Fixes Issue #11, causing DOM parser to preserve whitespace text nodes on the document.
- Backwards-incompatible change: Removes
doc.root
key from DOM whensimple=true
is specified.
v0.7 2014-Sep-26
- Decodes entities above 127 as UTF8 (decimal and hexadecimal).
- The encoding specified by the document is (still) ignored. If you parse an XML file encoded in some other format, that intermixes 'raw' high-byte characters with high-byte entities, the result will be a broken encoding.
v0.6.1 2014-Sep-25
- Fixes Issue #6, adding support for ASCII hexadecimal entities (e.g.
<
). (Thanks Leorex/Ben Bishop)
v0.6 2014-Apr-18
- Fixes Issue #5 (and more): Namespace prefixes defined on element are now properly applied to the element itself and any attributes using them when the definitions appear later in source than the prefix usage. (Thanks Oliver Kroth.)
- The streaming parser now supplies the namespace prefix for elements and attributes.
v0.5.3 2014-Feb-12
- Fixes Issue #3: The reserved
xml
prefix may be used without pre-declaring it. (Thanks David Durkee.)
v0.5.2 2013-Nov-7
- Lua 5.2 compatible
- Parser now errors if it finishes without finding a root element, or if there are unclosed elements at the end. (Proper element pairing is not enforced by the parser, but is—as in previous releases—enforced by the DOM builder.)
v0.5.1 2013-Feb-18
<foo xmlns="bar">
now directly generatesstartElement("foo","bar")
with no post callback fornamespace
required.
v0.5 2013-Feb-18
- Use the
local SLAXML=require 'slaxml'
pattern to prevent any pollution of the global namespace.
v0.4.3 2013-Feb-17
- Bugfix to allow empty attributes, i.e.
foo=""
closeElement
no longer includes namespace prefix in the name, includes the nsURI
v0.4 2013-Feb-16
- DOM adds
.parent
references SLAXML.ignoreWhitespace
is now:parse(xml,{stripWhitespace=true})
- "simple" mode for DOM parsing
v0.3 2013-Feb-15
- Support namespaces for elements and attributes
<foo xmlns="barURI">
will callstartElement("foo",nil)
followed bynamespace("barURI")
(and thenattribute("xmlns","barURI",nil)
); you must apply the namespace to your element after creation.- Child elements without a namespace prefix that inherit a namespace will
receive
startElement("child","barURI")
<xy:foo>
will callstartElement("foo","uri-for-xy")
<foo xy:bar="yay">
will callattribute("bar","yay","uri-for-xy")
- Runtime errors are generated for any namespace prefix that cannot be resolved
- Add (optional) DOM parser that validates hierarchy and supports namespaces
v0.2 2013-Feb-15
- Supports expanding numeric entities e.g.
"
->"
- Utility functions are local to parsing (not spamming the global namespace)
v0.1 2013-Feb-7
- Option to ignore whitespace-only text nodes
- Supports unescaped > in attributes
- Supports CDATA
- Supports Comments
- Supports Processing Instructions
License
Copyright © 2013 Gavin Kistner
Licensed under the MIT License. See LICENSE.txt for more details.
More Resourcesto explore the angular.
mail [email protected] to add your project or resources here 🔥.
- 1Torch | Scientific computing for LuaJIT.
http://torch.ch/
Torch is a scientific computing framework for LuaJIT.
- 2OpenResty
https://github.com/openresty
A Fast and Scalable Web Platform by Extending NGINX with LuaJIT. Commercial support is provided at https://openresty.com/ - OpenResty
- 3Build software better, together
https://github.com/fperrad/lua-MessagePack
GitHub is where people build software. More than 100 million people use GitHub to discover, fork, and contribute to over 420 million projects.
- 4Concurrency oriented programming in Lua
https://github.com/lefcha/concurrentlua
Concurrency oriented programming in Lua. Contribute to lefcha/concurrentlua development by creating an account on GitHub.
- 5LPeg version 1.0 Parser in pure LuaJIT
https://github.com/sacek/LPegLJ
LPeg version 1.0 Parser in pure LuaJIT. Contribute to sacek/LPegLJ development by creating an account on GitHub.
- 6New maintainer at: https://github.com/lunarmodules/lualogging
https://github.com/Neopallium/lualogging
New maintainer at: https://github.com/lunarmodules/lualogging - Neopallium/lualogging
- 7Archives of the Kepler Project
https://github.com/keplerproject
Public Archives of various modules created by the Kepler Project from 2003 to 2009. For up-to-date Lua modules, check out LuaRocks and the Lunar Modules project - Archives of the Kepler Project
- 8JSON parser/encoder for Lua Parses JSON using LPEG for speed and flexibility. Depending on parser/encoder options, various values are preserved as best as possible.
https://github.com/harningt/luajson
JSON parser/encoder for Lua Parses JSON using LPEG for speed and flexibility. Depending on parser/encoder options, various values are preserved as best as possible. - harningt/luajson
- 9A lightweight, dependency-free library for binding Lua to C++
https://github.com/vinniefalco/LuaBridge
A lightweight, dependency-free library for binding Lua to C++ - vinniefalco/LuaBridge
- 10Free Cross-Platform 2D Game Engine
https://coronalabs.com/
Corona is a 2D engine lets you build games & apps for all major platforms including iOS, Android, Kindle, Apple TV, Android TV, macOS, and Windows. Get the free toolset!
- 11A copy of the Lua development repository, as seen by the Lua team. Mirrored irregularly. Please DO NOT send pull requests or any other stuff. All communication should be through the Lua mailing list https://www.lua.org/lua-l.html
https://github.com/lua/lua
A copy of the Lua development repository, as seen by the Lua team. Mirrored irregularly. Please DO NOT send pull requests or any other stuff. All communication should be through the Lua mailing lis...
- 12A lightweight JSON library for Lua
https://github.com/rxi/json.lua
A lightweight JSON library for Lua. Contribute to rxi/json.lua development by creating an account on GitHub.
- 13A Lua-based Build Tool
https://github.com/stevedonovan/Lake
A Lua-based Build Tool. Contribute to stevedonovan/Lake development by creating an account on GitHub.
- 14Feature-rich command line parser for Lua
https://github.com/mpeterv/argparse
Feature-rich command line parser for Lua. Contribute to mpeterv/argparse development by creating an account on GitHub.
- 15Lua code analysis, with plugins for HTML and SciTE
https://github.com/davidm/lua-inspect
Lua code analysis, with plugins for HTML and SciTE - davidm/lua-inspect
- 16Auto-swaps changed Lua files in a running LÖVE project
https://github.com/rxi/lurker
Auto-swaps changed Lua files in a running LÖVE project - rxi/lurker
- 17Remote debugger for Lua.
https://github.com/pkulchenko/MobDebug
Remote debugger for Lua. Contribute to pkulchenko/MobDebug development by creating an account on GitHub.
- 18Asynchronous logging library for Lua
https://github.com/moteus/lua-log
Asynchronous logging library for Lua. Contribute to moteus/lua-log development by creating an account on GitHub.
- 19luaproc is a concurrent programming library for Lua
https://github.com/askyrme/luaproc
luaproc is a concurrent programming library for Lua - askyrme/luaproc
- 20A redis client for lua
https://github.com/daurnimator/lredis
A redis client for lua. Contribute to daurnimator/lredis development by creating an account on GitHub.
- 21Lua Users Foundation
https://github.com/lua-users-foundation
Lua Users Foundation has 2 repositories available. Follow their code on GitHub.
- 22Date & Time module for Lua 5.x
https://github.com/Tieske/date
Date & Time module for Lua 5.x. Contribute to Tieske/date development by creating an account on GitHub.
- 23:rocket: Pegasus.lua is an http server to work with web applications written in Lua language.
https://github.com/EvandroLG/pegasus.lua
:rocket: Pegasus.lua is an http server to work with web applications written in Lua language. - EvandroLG/pegasus.lua
- 24A self contained Lua MessagePack C implementation.
https://github.com/antirez/lua-cmsgpack
A self contained Lua MessagePack C implementation. - antirez/lua-cmsgpack
- 25Automatically exported from code.google.com/p/llvm-lua
https://github.com/neopallium/llvm-lua
Automatically exported from code.google.com/p/llvm-lua - Neopallium/llvm-lua
- 26Fork of LuaCrypto, which enables encryption and decryption through OpenSSL
https://github.com/mkottman/luacrypto
Fork of LuaCrypto, which enables encryption and decryption through OpenSSL - mkottman/luacrypto
- 27A pure c# implementation of Lua 5.2 focus on compatibility with Unity
https://github.com/xebecnan/UniLua
A pure c# implementation of Lua 5.2 focus on compatibility with Unity - xebecnan/UniLua
- 28Digital Estate Planning: The Game
https://github.com/hawkthorne/hawkthorne-journey
Digital Estate Planning: The Game. Contribute to hawkthorne/hawkthorne-journey development by creating an account on GitHub.
- 29Lua CJSON is a fast JSON encoding/parsing module for Lua
https://github.com/mpx/lua-cjson/
Lua CJSON is a fast JSON encoding/parsing module for Lua - mpx/lua-cjson
- 30Go bindings for Lua C API - in progress
https://github.com/aarzilli/golua
Go bindings for Lua C API - in progress. Contribute to aarzilli/golua development by creating an account on GitHub.
- 31Lua binding to libzip.
https://github.com/brimworks/lua-zip
Lua binding to libzip. Contribute to brimworks/lua-zip development by creating an account on GitHub.
- 32SAX-like streaming XML parser for Lua
https://github.com/Phrogz/SLAXML
SAX-like streaming XML parser for Lua. Contribute to Phrogz/SLAXML development by creating an account on GitHub.
- 33Lanes is a lightweight, native, lazy evaluating multithreading library for Lua 5.1 to 5.4.
https://github.com/LuaLanes/lanes
Lanes is a lightweight, native, lazy evaluating multithreading library for Lua 5.1 to 5.4. - LuaLanes/lanes
- 34Utility library for functional programming in Lua
https://github.com/Yonaba/Moses
Utility library for functional programming in Lua - Yonaba/Moses
- 35Lua Fun is a high-performance functional programming library for Lua designed with LuaJIT's trace compiler in mind.
https://github.com/luafun/luafun
Lua Fun is a high-performance functional programming library for Lua designed with LuaJIT's trace compiler in mind. - luafun/luafun
- 36Standalone FFI library for calling C functions from lua. Compatible with the luajit FFI interface.
https://github.com/jmckaskill/luaffi
Standalone FFI library for calling C functions from lua. Compatible with the luajit FFI interface. - jmckaskill/luaffi
- 37StackTracePlus provides enhanced stack traces for Lua.
https://github.com/ignacio/StackTracePlus
StackTracePlus provides enhanced stack traces for Lua. - ignacio/StackTracePlus
- 38A lua-based Pac-Man clone.
https://github.com/tylerneylon/pacpac
A lua-based Pac-Man clone. Contribute to tylerneylon/pacpac development by creating an account on GitHub.
- 39ANSI terminal color manipulation for Lua.
https://github.com/kikito/ansicolors.lua
ANSI terminal color manipulation for Lua. Contribute to kikito/ansicolors.lua development by creating an account on GitHub.
- 40Embedded Lua templates
https://github.com/leafo/etlua
Embedded Lua templates. Contribute to leafo/etlua development by creating an account on GitHub.
- 41Reactive Extensions for Lua
https://github.com/bjornbytes/RxLua
Reactive Extensions for Lua. Contribute to bjornbytes/RxLua development by creating an account on GitHub.
- 42File system path manipulation library
https://github.com/moteus/lua-path
File system path manipulation library. Contribute to moteus/lua-path development by creating an account on GitHub.
- 43Lua binding to ZeroMQ
https://github.com/zeromq/lzmq
Lua binding to ZeroMQ. Contribute to zeromq/lzmq development by creating an account on GitHub.
- 44Lua bindings for POSIX APIs
https://github.com/luaposix/luaposix
Lua bindings for POSIX APIs. Contribute to luaposix/luaposix development by creating an account on GitHub.
- 45Lightweight Lua test framework
https://github.com/bjornbytes/lust
Lightweight Lua test framework. Contribute to bjornbytes/lust development by creating an account on GitHub.
- 46A tool for linting and static analysis of Lua code.
https://github.com/mpeterv/luacheck
A tool for linting and static analysis of Lua code. - GitHub - mpeterv/luacheck: A tool for linting and static analysis of Lua code.
- 47A fast, lightweight tweening library for Lua
https://github.com/rxi/flux
A fast, lightweight tweening library for Lua. Contribute to rxi/flux development by creating an account on GitHub.
- 48Fast, lightweight and easy-to-use pathfinding library for grid-based games
https://github.com/Yonaba/Jumper
Fast, lightweight and easy-to-use pathfinding library for grid-based games - Yonaba/Jumper
- 49Opinionated Lua RabbitMQ client library for the ngx_lua apps based on the cosocket API
https://github.com/wingify/lua-resty-rabbitmqstomp
Opinionated Lua RabbitMQ client library for the ngx_lua apps based on the cosocket API - wingify/lua-resty-rabbitmqstomp
- 50Build a standalone executable from a Lua program.
https://github.com/ers35/luastatic
Build a standalone executable from a Lua program. Contribute to ers35/luastatic development by creating an account on GitHub.
- 51Human-readable representation of Lua tables
https://github.com/kikito/inspect.lua
Human-readable representation of Lua tables. Contribute to kikito/inspect.lua development by creating an account on GitHub.
- 52Lexing & Syntax Highlighting in Lua (using LPeg)
https://github.com/xolox/lua-lxsh
Lexing & Syntax Highlighting in Lua (using LPeg). Contribute to xolox/lua-lxsh development by creating an account on GitHub.
- 53Pure Lua Cassandra client using CQL binary protocol
https://github.com/jbochi/lua-resty-cassandra
Pure Lua Cassandra client using CQL binary protocol - jbochi/lua-resty-cassandra
- 5430 lines library for object orientation in Lua
https://github.com/Yonaba/30log
30 lines library for object orientation in Lua. Contribute to Yonaba/30log development by creating an account on GitHub.
- 55LibYAML binding for Lua.
https://github.com/gvvaughan/lyaml
LibYAML binding for Lua. Contribute to gvvaughan/lyaml development by creating an account on GitHub.
- 56A very complete i18n lib for Lua
https://github.com/kikito/i18n.lua
A very complete i18n lib for Lua. Contribute to kikito/i18n.lua development by creating an account on GitHub.
- 57A Lua 5.3 parser written with LPegLabel
https://github.com/andremm/lua-parser
A Lua 5.3 parser written with LPegLabel. Contribute to andremm/lua-parser development by creating an account on GitHub.
- 58A Lua MVC Web Framework.
https://github.com/sailorproject/sailor
A Lua MVC Web Framework. Contribute to sailorproject/sailor development by creating an account on GitHub.
- 59Intellisense and Linting for Lua in VSCode
https://github.com/trixnz/vscode-lua
Intellisense and Linting for Lua in VSCode. Contribute to trixnz/vscode-lua development by creating an account on GitHub.
- 60Lua binding to libcurl
https://github.com/Lua-cURL/Lua-cURLv3
Lua binding to libcurl. Contribute to Lua-cURL/Lua-cURLv3 development by creating an account on GitHub.
- 61Time, Date and Timezone library for lua
https://github.com/daurnimator/luatz
Time, Date and Timezone library for lua. Contribute to daurnimator/luatz development by creating an account on GitHub.
- 62Lua library for conversion between markup formats
https://github.com/jgm/lunamark
Lua library for conversion between markup formats. Contribute to jgm/lunamark development by creating an account on GitHub.
- 63Nginx image processing server with OpenResty and Lua
http://leafo.net/posts/creating_an_image_server.html
Today I'll be showing you how to create a fast on the fly image processing server. The whole system can be created in less than 100 lines of code. We'll be using OpenResty , an enhanced distribution of Nginx. We'll also need to write a...
- 64ProFi, a simple lua profiler that works with LuaJIT and prints a pretty report file in columns.
https://gist.github.com/perky/2838755
ProFi, a simple lua profiler that works with LuaJIT and prints a pretty report file in columns. - ProFi.lua
- 65Batteries included Lua
https://github.com/tongson/omnia
Batteries included Lua. Contribute to tongson/omnia development by creating an account on GitHub.
- 66An ebook reader application supporting PDF, DjVu, EPUB, FB2 and many more formats, running on Cervantes, Kindle, Kobo, PocketBook and Android devices
https://github.com/koreader/koreader
An ebook reader application supporting PDF, DjVu, EPUB, FB2 and many more formats, running on Cervantes, Kindle, Kobo, PocketBook and Android devices - koreader/koreader
- 67Tweening/Easing/Interpolating functions for lua. Inspired on jQuery's animate method.
https://github.com/kikito/tween.lua
Tweening/Easing/Interpolating functions for lua. Inspired on jQuery's animate method. - kikito/tween.lua
- 68Lua redis client driver for the ngx_lua based on the cosocket API
https://github.com/openresty/lua-resty-redis
Lua redis client driver for the ngx_lua based on the cosocket API - openresty/lua-resty-redis
- 69Technews.fr - High Tech, Tests, et Tutos
http://www.luteus.biz/Download/LoriotPro_Doc/LUA/LUA_For_Windows/lanes/comparison.html
Technews.fr est un blog High Tech avec des tests, des avis ou encore des tutos branché innovation et objets connectés. La technologie est le fil conducteur de tous les articles et l’œil critique est de rigueur.
- 70Lua string hashing library, useful for internationalization
https://github.com/Olivine-Labs/say
Lua string hashing library, useful for internationalization - lunarmodules/say
- 71An interpreter for the Lua language, written entirely in C# for the .NET, Mono, Xamarin and Unity3D platforms, including handy remote debugger facilities.
https://github.com/xanathar/moonsharp
An interpreter for the Lua language, written entirely in C# for the .NET, Mono, Xamarin and Unity3D platforms, including handy remote debugger facilities. - moonsharp-devs/moonsharp
- 72Network support for the Lua language
https://github.com/diegonehab/luasocket
Network support for the Lua language. Contribute to lunarmodules/luasocket development by creating an account on GitHub.
- 73A command-line argument parsing module for Lua.
https://github.com/amireh/lua_cliargs
A command-line argument parsing module for Lua. Contribute to lunarmodules/lua_cliargs development by creating an account on GitHub.
- 74A 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.
https://github.com/stevedonovan/Penlight
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....
- 75Lua HTTP client cosocket driver for OpenResty / ngx_lua.
https://github.com/pintsized/lua-resty-http
Lua HTTP client cosocket driver for OpenResty / ngx_lua. - ledgetech/lua-resty-http
- 76Assertion library for Lua
https://github.com/Olivine-Labs/luassert
Assertion library for Lua. Contribute to lunarmodules/luassert development by creating an account on GitHub.
- 77An RFC compliant and ESI capable HTTP cache for Nginx / OpenResty, backed by Redis
https://github.com/pintsized/ledge
An RFC compliant and ESI capable HTTP cache for Nginx / OpenResty, backed by Redis - ledgetech/ledge
Related Articlesto learn about angular.
- 1Getting Started with Lua: Beginner's Guide to Scripting
- 2Understanding Lua Tables: Heart of Lua Programming
- 3Game Development with Lua: Building Your First 2D Game
- 4Using Lua for Scripting in Game Engines: Roblox and Corona SDK
- 5Embedding Lua in C/C++ Applications: A Step-by-Step Guide
- 6Building Extensible Software with Lua: Adding Scripting Capabilities to Existing Apps
- 7Optimizing Lua Scripts: Techniques for Speed and Efficiency
- 8Memory Management in Lua: Avoiding Common Pitfalls
- 9Top Lua Libraries for Game Development, Web, and Scripting
- 10Building Web Applications with Lua: OpenResty
FAQ'sto learn more about Angular JS.
mail [email protected] to add more queries here 🔍.
- 1
how popular is lua programming language
- 2
what kind of programming language is lua
- 3
what type of programming language is lua
- 4
are lua and python similar
- 5
what is lua coding used for
- 6
how to make a programming language in lua
- 7
how to code lua
- 8
are lua and javascript similar
- 9
when was lua created
- 10
is lua a programming language
- 11
who created lua programming language
- 12
- 13
what can you do with lua programming
- 14
what is lua programming
- 15
how long does it take to learn lua scripting
- 16
is lua a coding language
- 17
what is lua programming language
- 18
should i learn lua or python
- 19
should i learn lua
- 20
where to learn lua coding
- 21
can lua files be dangerous
- 22
when was lua made
- 23
is roblox lua object oriented programming
- 24
when was lua invented
- 25
does lua compile
- 26
what programming language is similar to lua
- 27
who invented lua
- 28
why use lua programming language
- 29
how hard is lua programming
- 30
can lua be compiled
- 32
what is the lua programming language
- 33
where to learn lua for free
- 34
where can i learn lua
- 35
where is lua programming language used
- 36
is lua programming language
- 38
can lua be used for hacking
- 39
how to learn lua programming
- 40
what does lua stand for programming
- 41
how to learn lua programming language
- 42
what is the lua programming language used for
- 43
is lua the best programming language
- 44
who made lua language
- 45
why is lua used
- 47
what is lua programming language used for
- 48
who created lua
- 49
how long does it take to learn lua coding
- 50
is lua a good programming language
- 51
where is lua used
- 52
why is lua used in games
- 53
what can lua be used for
- 54
how to pronounce lua programming language
- 55
what is lua programming used for
- 56
is lua the easiest programming language
- 57
can lua be used for web development
- 58
was lua created by roblox
- 59
what programming language is lua based on
More Sitesto check out once you're finished browsing here.
https://www.0x3d.site/
0x3d is designed for aggregating information.
https://nodejs.0x3d.site/
NodeJS Online Directory
https://cross-platform.0x3d.site/
Cross Platform Online Directory
https://open-source.0x3d.site/
Open Source Online Directory
https://analytics.0x3d.site/
Analytics Online Directory
https://javascript.0x3d.site/
JavaScript Online Directory
https://golang.0x3d.site/
GoLang Online Directory
https://python.0x3d.site/
Python Online Directory
https://swift.0x3d.site/
Swift Online Directory
https://rust.0x3d.site/
Rust Online Directory
https://scala.0x3d.site/
Scala Online Directory
https://ruby.0x3d.site/
Ruby Online Directory
https://clojure.0x3d.site/
Clojure Online Directory
https://elixir.0x3d.site/
Elixir Online Directory
https://elm.0x3d.site/
Elm Online Directory
https://lua.0x3d.site/
Lua Online Directory
https://c-programming.0x3d.site/
C Programming Online Directory
https://cpp-programming.0x3d.site/
C++ Programming Online Directory
https://r-programming.0x3d.site/
R Programming Online Directory
https://perl.0x3d.site/
Perl Online Directory
https://java.0x3d.site/
Java Online Directory
https://kotlin.0x3d.site/
Kotlin Online Directory
https://php.0x3d.site/
PHP Online Directory
https://react.0x3d.site/
React JS Online Directory
https://angular.0x3d.site/
Angular JS Online Directory