diff --git a/Lua/lib/LICENSE.txt b/Lua/lib/LICENSE.txt new file mode 100644 index 0000000..3c6d06f --- /dev/null +++ b/Lua/lib/LICENSE.txt @@ -0,0 +1,21 @@ +Copyright (C) 1994-2008 Lua.org, PUC-Rio. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR +ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE +OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/Lua/lib/pugilua.dll b/Lua/lib/pugilua.dll index f5eb95c..9825aea 100644 Binary files a/Lua/lib/pugilua.dll and b/Lua/lib/pugilua.dll differ diff --git a/Lua/lib/pugilua.lib b/Lua/lib/pugilua.lib index 74bdc28..f75705c 100644 Binary files a/Lua/lib/pugilua.lib and b/Lua/lib/pugilua.lib differ diff --git a/Lua/lib/test.lua b/Lua/lib/test.lua index 6b44c84..699b064 100644 --- a/Lua/lib/test.lua +++ b/Lua/lib/test.lua @@ -4,6 +4,7 @@ local doc=pugi.xml_document() os.execute("cd") local res=doc:load_file [[..\..\scripts\pugilua\pugilua.vcxproj]] print(res.description) +assert(res.valid) local node=doc:child('Project') assert(node.valid) diff --git a/README.md b/README.md new file mode 100644 index 0000000..f1277c0 --- /dev/null +++ b/README.md @@ -0,0 +1,65 @@ +pugilua +======= + +An almost one-to-one lua binding for [pugixm](http://pugixml.org/) + +Usage +----- + +Use the visual studio project to compile in Visual Studio. The release build will be copied into the Lua/lib folder, where you can start +lua directly and use the library by calling `require 'pugilua'`. Follow the test for API differences from the original C++ API. Pugilua objects reside in the +pugi 'namespace' in Lua. + +A usage sketch: +```` +require 'pugilua' + +local doc=pugi.xml_document() +local res=doc:load_file [[..\..\scripts\pugilua\pugilua.vcxproj]] +assert(res.valid) +print(res.description) + +local node=doc:child('Project') +assert(node.valid) +```` + +### API differences + + * There's no explicit cast to boolean of the pugilua objects, hence the classes `xml_parse_result, xml_node and xml_document` have a boolean `property` valid + * lua classes have no inheritance + * Getter methods are mapped to lua properties and not methods + +Dependencies +------------ + + * [pugixml](https://github.com/zeux/pugixml) the original library + * [lua](http://www.lua.org/) the language, Lua 5.1.4 from [luaforwindows](http://code.google.com/p/luaforwindows/), but it should work for every proper lua which is supported by LuaBridge + * [LuaBridge](https://github.com/vinniefalco/LuaBridge) for the declarative bindings to Lua + +License +------- + +This library is distributed under the MIT License: + +Copyright (c) 2012 Dmitry Ledentsov + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. diff --git a/contrib/pugilua/pugilua_lib.cpp b/contrib/pugilua/pugilua_lib.cpp index 7e098e7..77f7454 100644 --- a/contrib/pugilua/pugilua_lib.cpp +++ b/contrib/pugilua/pugilua_lib.cpp @@ -12,12 +12,16 @@ namespace pugi { public: lxml_parse_result(pugi::xml_parse_result& r):res(r) { } lxml_parse_result() { } - + public: std::string description() const { return res.description(); } + bool valid() const { + return (bool)res; + } + private: pugi::xml_parse_result res; }; @@ -26,7 +30,7 @@ namespace pugi { public: lxml_node(pugi::xml_node& n):node(n){} lxml_node() { } - + public: bool valid() const { return (bool)node; @@ -55,6 +59,10 @@ namespace pugi { return RefCountedPtr(new lxml_node(doc.child(name))); } + bool valid() const { + return (bool)doc; + } + private: pugi::xml_document doc; }; @@ -67,23 +75,25 @@ void register_pugilua (lua_State* L) { luabridge::getGlobalNamespace(L) .beginNamespace("pugi") - .beginClass("xml_parse_result") - .addConstructor() - .addProperty("description",&lxml_parse_result::description) - .endClass() + .beginClass("xml_parse_result") + .addConstructor() + .addProperty("description",&lxml_parse_result::description) + .addProperty("valid",&lxml_parse_result::valid) + .endClass() - .beginClass("xml_node") - .addConstructor() - .addProperty("valid",&lxml_node::valid) - .addProperty("name",&lxml_node::name) - .addFunction("child",&lxml_node::child) - .endClass() + .beginClass("xml_node") + .addConstructor() + .addProperty("valid",&lxml_node::valid) + .addProperty("name",&lxml_node::name) + .addFunction("child",&lxml_node::child) + .endClass() - .beginClass("xml_document") - .addConstructor() - .addFunction("load_file",&lxml_document::load_file) - .addFunction("child",&lxml_document::child) - .endClass() + .beginClass("xml_document") + .addConstructor() + .addProperty("valid",&lxml_document::valid) + .addFunction("load_file",&lxml_document::load_file) + .addFunction("child",&lxml_document::child) + .endClass() .endNamespace() ; diff --git a/readme.txt b/pugixml_readme.txt similarity index 100% rename from readme.txt rename to pugixml_readme.txt