From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.io/gmane.comp.tex.context/88704 Path: news.gmane.org!not-for-mail From: Hans Hagen Newsgroups: gmane.comp.tex.context Subject: Re: lpdf.checkedkey has problem with false values Date: Mon, 15 Sep 2014 21:17:52 +0200 Message-ID: <54173B60.4050606@wxs.nl> References: <5416FEEC.7080704@gmx.net> <54171DE2.3070008@wxs.nl> Reply-To: mailing list for ConTeXt users NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; Format="flowed" Content-Transfer-Encoding: 7bit X-Trace: ger.gmane.org 1410808707 19846 80.91.229.3 (15 Sep 2014 19:18:27 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Mon, 15 Sep 2014 19:18:27 +0000 (UTC) To: mailing list for ConTeXt users Original-X-From: ntg-context-bounces@ntg.nl Mon Sep 15 21:18:22 2014 Return-path: Envelope-to: gctc-ntg-context-518@m.gmane.org Original-Received: from balder.ntg.nl ([5.39.185.229]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1XTbn0-00055L-Cc for gctc-ntg-context-518@m.gmane.org; Mon, 15 Sep 2014 21:18:18 +0200 Original-Received: from localhost (localhost [127.0.0.1]) by balder.ntg.nl (Postfix) with ESMTP id E3BDF10221 for ; Mon, 15 Sep 2014 21:18:17 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at balder.ntg.nl Original-Received: from balder.ntg.nl ([127.0.0.1]) by localhost (balder.ntg.nl [127.0.0.1]) (amavisd-new, port 10024) with LMTP id 65qFcbPUJ2f7 for ; Mon, 15 Sep 2014 21:18:17 +0200 (CEST) Original-Received: from balder.ntg.nl (localhost [IPv6:::1]) by balder.ntg.nl (Postfix) with ESMTP id 3C84C10222 for ; Mon, 15 Sep 2014 21:18:10 +0200 (CEST) Original-Received: from localhost (localhost [127.0.0.1]) by balder.ntg.nl (Postfix) with ESMTP id 5F606101E6 for ; Mon, 15 Sep 2014 21:18:06 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at balder.ntg.nl Original-Received: from balder.ntg.nl ([127.0.0.1]) by localhost (balder.ntg.nl [127.0.0.1]) (amavisd-new, port 10024) with LMTP id pNWl1eoKPKI6 for ; Mon, 15 Sep 2014 21:18:01 +0200 (CEST) Original-Received: from filter4-til.mf.surf.net (filter4-til.mf.surf.net [194.171.167.220]) by balder.ntg.nl (Postfix) with ESMTP id 655DB101E1 for ; Mon, 15 Sep 2014 21:17:56 +0200 (CEST) Original-Received: from smtp.ziggozakelijk.nl (D57D1DA2.static.ziggozakelijk.nl [213.125.29.162]) by filter4-til.mf.surf.net (8.14.3/8.14.3/Debian-9.4) with ESMTP id s8FJHtYK031584 for ; Mon, 15 Sep 2014 21:17:55 +0200 X-Default-Received-SPF: pass (skip=loggedin (res=PASS)) x-ip-name=10.100.1.103; Original-Received: from [10.100.1.103] (unverified [10.100.1.103]) by pragma-net.nl (SurgeMail 6.5a2) with ESMTP id 7912-1713362 for ; Mon, 15 Sep 2014 21:17:54 +0200 User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:24.0) Gecko/20100101 Thunderbird/24.6.0 In-Reply-To: X-Authenticated-User: hagen@controller-9 X-Bayes-Prob: 0.0001 (Score 0, tokens from: ntg-context@ntg.nl, base:default, @@RPTN) X-CanIt-Geo: ip=213.125.29.162; country=NL; region=Provincie Overijssel; city=Zwolle; latitude=52.5125; longitude=6.0944; http://maps.google.com/maps?q=52.5125,6.0944&z=6 X-CanItPRO-Stream: uu:ntg-context@ntg.nl (inherits from uu:default, base:default) X-Canit-Stats-ID: 0VMPvhTV1 - f1445ca2f38f - 20140915 (trained as not-spam) X-Scanned-By: CanIt (www . roaringpenguin . com) on 194.171.167.220 X-BeenThere: ntg-context@ntg.nl X-Mailman-Version: 2.1.14 Precedence: list List-Id: mailing list for ConTeXt users List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: ntg-context-bounces@ntg.nl Original-Sender: ntg-context-bounces@ntg.nl Xref: news.gmane.org gmane.comp.tex.context:88704 Archived-At: On 9/15/2014 8:25 PM, Michail Vidiassov wrote: > Dear Hans, > >> well, they're just not treated special > > IMHO, they have to be treated special. > >> you can try this (untested) > > I have tested it. It adds nice enhancement, but does not fix the bug > In the following case > local a = {} > a["e"] = "blabla" > a["t"] = "true" > a["f"] = "false" > a["x"] = true > a["y"] = false > a["z"] = nil > > your new lpdf.checkedkey correctly fetches "t" and "f", where the old > one failed. > And your new lpdf.checkedkey fails for "e" - if I attempt to fetch it > as boolean I get false instead of nil. > (That is caused by toboolean returning false for unconvertible data - > unlike tonumber). > > But I did not complain about reading strings! > > My problem was with "y". > Both your new and old lpdf.checkedkey fetch it as nil instead of false. > My (somewhat ugly) idea of the fix is the following > > local function lpdf.checkedkey(t,key,variant) > local pn = t and t[key] > if pn then > local tn = type(pn) > if tn == variant then > if variant == "string" then > return pn ~= "" and pn or nil > elseif variant == "table" then > return next(pn) and pn or nil > else > return pn > end > elseif tn == "string" then > if variant == "number" then > return tonumber(pn) > elseif variant == "boolean" then > if pn == "true" then > return true > elseif pn == "false" then > return false > end > end > end > elseif t and t[key] ~= nil and variant == "boolean" and > type(t[key]) == "boolean" then > return t[key] > end > end more like function lpdf.checkedkey(t,key,variant) local pn = t and t[key] if pn ~= nil then local tn = type(pn) if tn == variant then if variant == "string" then return pn ~= "" and pn or nil elseif variant == "table" then return next(pn) and pn or nil else return pn end elseif tn == "string" then if variant == "number" then return tonumber(pn) -- or nil elseif variant == "boolean" then return string.is_boolean(pn,nil,true) end end end end ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | voip: 087 875 68 74 | www.pragma-ade.com | www.pragma-pod.nl ----------------------------------------------------------------- ___________________________________________________________________________________ If your question is of interest to others as well, please add an entry to the Wiki! maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context webpage : http://www.pragma-ade.nl / http://tex.aanhet.net archive : http://foundry.supelec.fr/projects/contextrev/ wiki : http://contextgarden.net ___________________________________________________________________________________