diff --git a/dev-lua/luajson/files/luajson-1.3.4-lpeg-1.1.patch b/dev-lua/luajson/files/luajson-1.3.4-lpeg-1.1.patch new file mode 100644 index 000000000000..78b48f37468c --- /dev/null +++ b/dev-lua/luajson/files/luajson-1.3.4-lpeg-1.1.patch @@ -0,0 +1,75 @@ +https://github.com/harningt/luajson/issues/47 +https://github.com/harningt/luajson/pull/48 +https://github.com/harningt/luajson/pull/49 + +From 473d61d262a1c86a69ad9b4882352d122e42f3fa Mon Sep 17 00:00:00 2001 +From: Josh +Date: Thu, 20 Jul 2023 15:49:33 -0400 +Subject: [PATCH] feat: support lpeg 1.1 + +This changeset adds support for lpeg 1.1 which updated the lpeg.version from a function to a string. + +Therefore we have to check the type of the value. + +Refs: #47 +--- + lua/json/decode/util.lua | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/lua/json/decode/util.lua b/lua/json/decode/util.lua +index 2493bf3..8b23751 100644 +--- a/lua/json/decode/util.lua ++++ b/lua/json/decode/util.lua +@@ -17,6 +17,8 @@ local table_concat = require("table").concat + + local merge = require("json.util").merge + ++local type = type ++ + local _ENV = nil + + local function get_invalid_character_info(input, index) +@@ -94,7 +96,8 @@ local unicode_ignored = (unicode_space + comment)^0 + + -- Parse the lpeg version skipping patch-values + -- LPEG <= 0.7 have no version value... so 0.7 is value +-local DecimalLpegVersion = lpeg.version and tonumber(lpeg.version():match("^(%d+%.%d+)")) or 0.7 ++-- LPEG >= 1.1 uses a string for the version instead of function ++local DecimalLpegVersion = lpeg.version and tonumber((type(lpeg.version) == "string" and lpeg.version or lpeg.version()):match("^(%d+%.%d+)")) or 0.7 + + local function setObjectKeyForceNumber(t, key, value) + key = tonumber(key) or key + +From f23e38fc35cea8db78df124f1bd6d3d56e6c9ab1 Mon Sep 17 00:00:00 2001 +From: Josh +Date: Wed, 4 Oct 2023 17:24:30 -0400 +Subject: [PATCH] fix: fix lpeg version detection + +This changeset fixes the lpeg version detection to properly handle +version > 1.1. + +The original fix did not properly parse the string because it search for +the number to start the string instead of being part of the string. + +Refs: #47 +--- + lua/json/decode/util.lua | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/lua/json/decode/util.lua b/lua/json/decode/util.lua +index 8b23751..4815650 100644 +--- a/lua/json/decode/util.lua ++++ b/lua/json/decode/util.lua +@@ -97,7 +97,11 @@ local unicode_ignored = (unicode_space + comment)^0 + -- Parse the lpeg version skipping patch-values + -- LPEG <= 0.7 have no version value... so 0.7 is value + -- LPEG >= 1.1 uses a string for the version instead of function +-local DecimalLpegVersion = lpeg.version and tonumber((type(lpeg.version) == "string" and lpeg.version or lpeg.version()):match("^(%d+%.%d+)")) or 0.7 ++local DecimalLpegVersion = lpeg.version ++ and tonumber( ++ (type(lpeg.version) == "string" and lpeg.version or lpeg.version()):match("(%d+%.%d+)") ++ ) ++ or 0.7 + + local function setObjectKeyForceNumber(t, key, value) + key = tonumber(key) or key diff --git a/dev-lua/luajson/luajson-1.3.4-r1.ebuild b/dev-lua/luajson/luajson-1.3.4-r1.ebuild new file mode 100644 index 000000000000..9e4a2854d31e --- /dev/null +++ b/dev-lua/luajson/luajson-1.3.4-r1.ebuild @@ -0,0 +1,41 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +LUA_COMPAT=( lua5-{1..4} luajit ) + +inherit lua + +DESCRIPTION="JSON Parser/Constructor for Lua" +HOMEPAGE="https://www.eharning.us/wiki/luajson/" +SRC_URI="https://github.com/harningt/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz" + +LICENSE="MIT" +SLOT="0" +KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86" + +REQUIRED_USE="${LUA_REQUIRED_USE}" + +RDEPEND="dev-lua/lpeg[${LUA_USEDEP}]" + +# Require lunitx, which is not in the tree yet +RESTRICT="test" + +DOCS=( README.md docs/ReleaseNotes-${PV}.txt docs/LuaJSON.txt ) + +PATCHES=( + "${FILESDIR}"/${PN}-1.3.4-lpeg-1.1.patch +) + +# nothing to compile +src_compile() { :; } + +lua_src_install() { + emake DESTDIR="${ED}" INSTALL_LMOD="$(lua_get_lmod_dir)" install +} + +src_install() { + lua_foreach_impl lua_src_install + einstalldocs +}