diff options
author | Daniel Silverstone <dsilvers@digital-scurf.org> | 2012-11-20 13:08:53 +0000 |
---|---|---|
committer | Daniel Silverstone <dsilvers@digital-scurf.org> | 2012-11-20 13:08:53 +0000 |
commit | 7a74d4e0f4f111473072b295678a450c05347459 (patch) | |
tree | 38531c5a2b67a535a6ff3930d233c92eec1ed36b /src/diff.nobj.lua | |
parent | f2127dd34777bb5770197d992ffbf4a3a2b7e7eb (diff) | |
download | luagit2-upgrade-to-development.tar.gz |
Initial work to add 'diff' supportupgrade-to-development
Diffstat (limited to 'src/diff.nobj.lua')
-rw-r--r-- | src/diff.nobj.lua | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/src/diff.nobj.lua b/src/diff.nobj.lua new file mode 100644 index 0000000..cc7005d --- /dev/null +++ b/src/diff.nobj.lua @@ -0,0 +1,61 @@ +-- Copyright (c) 2010-2012 by Robert G. Jakabosky <bobby@sharedrealm.com> +-- Copyright (c) 2012 by Daniel Silverstone <dsilvers@digital-scurf.org> +-- +-- 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. + +object "Diff" { + c_source [[ +typedef git_diff_list Diff; + +static int print_cb_fn(void *cb_data, + git_diff_delta *delta, + git_diff_range *range, + char line_origin, /**< GIT_DIFF_LINE_... value from above */ + const char *content, + size_t content_len) +{ + lua_State *L = (lua_State *)cb_data; + lua_pushlstring(L, content, content_len); + return 0; +} + + +]], + constructor "tree_to_tree" { + c_call { "GitError", "err" } "git_diff_tree_to_tree" + { "Repository *", "repo", "void *", "opts", + "Tree *", "old_tree", "Tree *", "new_tree", "Diff *", "&this" }, + }, + method "entrycount" { + c_method_call "int" "git_diff_entrycount" { "int", "delta_t" } + }, + method "print_patch" { + c_source [[ + { + int cur_top = lua_gettop(L); + git_diff_print_patch(${this}, L, print_cb_fn); + if (lua_gettop(L) != cur_top) { + lua_concat(L, lua_gettop(L) - cur_top); + return 1; + } + } + ]] + }, +} + |