From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.io/gmane.comp.tex.context/86585 Path: news.gmane.org!not-for-mail From: Rik Kabel Newsgroups: gmane.comp.tex.context Subject: Re: Trimming strings and Lua string.trim question Date: Thu, 06 Mar 2014 10:04:51 -0500 Message-ID: <53188E93.9060408@rik.users.panix.com> References: <5316ABF3.5050302@rik.users.panix.com> <5316DF28.3070300@wxs.nl> <53173D9E.1050907@rik.users.panix.com> <5678BF45-446A-4769-851C-1F587D37701C@gmail.com> <5317ACAB.4050904@rik.users.panix.com> <53185011.5070801@wxs.nl> Reply-To: mailing list for ConTeXt users NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="===============1949059874==" X-Trace: ger.gmane.org 1394118303 29247 80.91.229.3 (6 Mar 2014 15:05:03 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Thu, 6 Mar 2014 15:05:03 +0000 (UTC) To: ntg-context@ntg.nl Original-X-From: ntg-context-bounces@ntg.nl Thu Mar 06 16:05:13 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 1WLZrF-0002ok-HC for gctc-ntg-context-518@m.gmane.org; Thu, 06 Mar 2014 16:05:13 +0100 Original-Received: from localhost (localhost [127.0.0.1]) by balder.ntg.nl (Postfix) with ESMTP id A4712101F5; Thu, 6 Mar 2014 16:05:12 +0100 (CET) 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 pceiM+X39YG8; Thu, 6 Mar 2014 16:05:10 +0100 (CET) Original-Received: from balder.ntg.nl (localhost [IPv6:::1]) by balder.ntg.nl (Postfix) with ESMTP id 5B79F101EF; Thu, 6 Mar 2014 16:05:10 +0100 (CET) Original-Received: from localhost (localhost [127.0.0.1]) by balder.ntg.nl (Postfix) with ESMTP id CF11E101EF for ; Thu, 6 Mar 2014 16:05:09 +0100 (CET) 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 YrI4ekKiyrK2 for ; Thu, 6 Mar 2014 16:05:08 +0100 (CET) Original-Received: from filter3-ams.mf.surf.net (filter3-ams.mf.surf.net [192.87.102.71]) by balder.ntg.nl (Postfix) with ESMTP id 4D586101E1 for ; Thu, 6 Mar 2014 16:04:58 +0100 (CET) Original-Received: from mailbackend.panix.com (mailbackend.panix.com [166.84.1.89]) by filter3-ams.mf.surf.net (8.14.3/8.14.3/Debian-9.4) with ESMTP id s26F4tHh020123 for ; Thu, 6 Mar 2014 16:04:56 +0100 Original-Received: from [192.168.1.153] (adsl-98-77-175-214.mia.bellsouth.net [98.77.175.214]) by mailbackend.panix.com (Postfix) with ESMTP id 79C012EAD8 for ; Thu, 6 Mar 2014 10:04:54 -0500 (EST) User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 In-Reply-To: <53185011.5070801@wxs.nl> X-Bayes-Prob: 0.0001 (Score 0, tokens from: ntg-context@ntg.nl, base:default, @@RPTN) X-CanIt-Geo: ip=166.84.1.89; country=US; region=NY; city=Richmond Hill; postalcode=11418; latitude=40.7005; longitude=-73.8345; metrocode=501; areacode=718; http://maps.google.com/maps?q=40.7005,-73.8345&z=6 X-CanItPRO-Stream: uu:ntg-context@ntg.nl (inherits from uu:default, base:default) X-Canit-Stats-ID: 03Lyf4TCI - 04aa34f1fc41 - 20140306 (trained as not-spam) X-Scanned-By: CanIt (www . roaringpenguin . com) on 192.87.102.71 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:86585 Archived-At: This is a multi-part message in MIME format. --===============1949059874== Content-Type: multipart/alternative; boundary="------------030100060603050500040304" This is a multi-part message in MIME format. --------------030100060603050500040304 Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: quoted-printable On 2014-03-06 05:38, Hans Hagen wrote: > On 3/6/2014 12:00 AM, Rik Kabel wrote: >> On 2014-03-05 10:54, Wolfgang Schuster wrote: >>> >>> Am 05.03.2014 um 16:18 schrieb Wolfgang Schuster >>> >: >>> >>>> >>>> Am 05.03.2014 um 16:07 schrieb Rik Kabel >>> >: >>>> >>>>>> striplong >>>>>> >>>>> >>>>> It would be nice if striplong worked, but the example fails when >>>>> string.striplong is used in place of string.strip. The log says: >>>>> >>>>> ! LuaTeX error [string "\directlua "]:1: attempt to call field >>>>> 'striplong' (a nil value) >>>>> stack traceback: >>>>> [string "\directlua "]:1: in main chunk. >>>>> >>>>> Is the format of the call different than shown in the wiki, or is a >>>>> different mechanism required to quote a potentially long string? >>>> >>>> The name of the function is =93strings.striplong=94. >>> >>> This should be =93utilities.strings.striplong=94 but it has no effect >>> because when take a look >>> at the saved string in Lua you can see that blank lines are removed >>> from the text. >>> >>> Wolfgang >> >> Indeed. This does build without error, but the >> utilities.strings.striplong result is worse than the string.strip >> result, with some additional whitespace at the end of the test string >> from the earlier example. > > the definition of 'worse' depends on expectations and given the fact=20 > that in tex a newline or two newlines in a row have a different=20 > meaning it is just a guess what you want to achieve > > anyway, the next beta will have > > local str =3D table.concat( { > " ", > " aap", > " noot mies", > " ", > " ", > " zus wim jet", > "zus wim jet", > " zus wim jet", > " ", > }, "\n") > > utilities.strings.striplines(str,'prune'): > > [[aap > noot mies > > > zus wim jet > zus wim jet > zus wim jet]] > > utilities.strings.striplines(str,'prune and collapse'): > > [[aap > noot mies > > zus wim jet > zus wim jet > zus wim jet]] > > utilities.strings.striplines(str,'prune and no empty'): > > [[aap > noot mies > zus wim jet > zus wim jet > zus wim jet]] > > utilities.strings.striplines(str,'retain'): > > [[ > aap > noot mies > > > zus wim jet > zus wim jet > zus wim jet > ]] > > utilities.strings.striplines(str,'retain and collapse'): > > [[ > aap > noot mies > > zus wim jet > zus wim jet > zus wim jet > ]] > > utilities.strings.striplines(str,'retain and no empty'): > > [[ > aap > noot mies > zus wim jet > zus wim jet > zus wim jet > ]] > > so you can choose what you like > > Hans indeed, beauty is in the eye of the beholder. Thank you for the flexible solution that allows each of us to find beauty= . Could you please ensure that this handles text in buffers the same way=20 that it handles other strings? I noticed that this is handled a bit=20 differently, as the following shows,but perhaps it is my clumsy coding.=20 The buffer result is closer to what I expect in terms of internal=20 whitespace, but still does not show expected trimming of leading and=20 trailing whitespace. That trimming, of course, is the point of the exerci= se. \def\StringsStripLong#1% {\ctxlua{context(utilities.strings.striplong([=3D=3D[#1]=3D=3D]))}= } \def\StringStrip#1% {\ctxlua{context(string.strip([=3D=3D[#1]=3D=3D]))}} \startbuffer[testbuffer] B This is a test. And it has an unexpected result. \stopbuffer \long\def\testmacro{ M This is a test. And it has an unexpected result. } \starttext \subject{Lua string.strip passed TeX buffer} =A6\StringStrip{\getbuffer[testbuffer]}=A6 \subject{Lua string.strip passed TeX macro} =A6\StringStrip{\testmacro}=A6 \subject{Lua utilities.strings.striplong passed TeX buffer} =A6\StringsStripLong{\getbuffer[testbuffer]}=A6 \subject{Lua utilities.strings.striplong passed TeX macro} =A6\StringsStripLong{\testmacro}=A6 \stoptext --=20 Rik --------------030100060603050500040304 Content-Type: text/html; charset=windows-1252 Content-Transfer-Encoding: quoted-printable
On 2014-03-06 05:38, Hans Hagen wrote:=
On 3/6/2014 12:00 AM, Rik Kabel wrote:
On 2014-03-05 10:54, Wolfgang Schuster wrote:

Am 05.03.2014 um 16:18 schrieb Wolfgang Schuster
<schuster.wolfgang@gmail.com <mailto:schuster.wolfgang@gmail.com>>:


Am 05.03.2014 um 16:07 schrieb Rik Kabel <context@rik.users.panix.com
<mailto:context@rik.users.panix.com>>:

striplong


It would be nice if striplong worked, but the example fails when
string.striplong is used in place of string.strip. The log says:

=A0=A0=A0 ! LuaTeX error [string "\directlua "]:1: attempt = to call field
=A0=A0=A0 'striplong' (a nil value)
=A0=A0=A0 stack traceback:
=A0=A0=A0=A0=A0=A0=A0 [string "\directlua "]:1: in main chu= nk.

Is the format of the call different than shown in the wiki, or is a
different mechanism required to quote a potentially long string?

The name of the function is =93strings.striplong=94.

This should be =93utilities.strings.striplong=94 but it has no effect
because when take a look
at the saved string in Lua you can see that blank lines are removed
from the text.

Wolfgang

Indeed. This does build without error, but the
utilities.strings.striplong result is worse than the string.strip
result, with some additional whitespace at the end of the test string
from the earlier example.

the definition of 'worse' depends on expectations and given the fact that in tex a newline or two newlines in a row have a different meaning it is just a guess what you want to achieve

anyway, the next beta will have

local str =3D table.concat( {
"=A0 ",
"=A0=A0=A0 aap",
"=A0 noot mies",
"=A0 ",
"=A0=A0=A0 ",
" zus=A0=A0=A0 wim jet",
"zus=A0=A0=A0 wim jet",
"=A0=A0=A0=A0=A0=A0 zus=A0=A0=A0 wim jet",
"=A0=A0=A0 ",
}, "\n")

utilities.strings.striplines(str,'prune'):

[[aap
noot mies


zus=A0=A0=A0 wim jet
zus=A0=A0=A0 wim jet
zus=A0=A0=A0 wim jet]]

utilities.strings.striplines(str,'prune and collapse'):

[[aap
noot mies

zus=A0=A0=A0 wim jet
zus=A0=A0=A0 wim jet
zus=A0=A0=A0 wim jet]]

utilities.strings.striplines(str,'prune and no empty'):

[[aap
noot mies
zus=A0=A0=A0 wim jet
zus=A0=A0=A0 wim jet
zus=A0=A0=A0 wim jet]]

utilities.strings.striplines(str,'retain'):

[[
aap
noot mies


zus=A0=A0=A0 wim jet
zus=A0=A0=A0 wim jet
zus=A0=A0=A0 wim jet
]]

utilities.strings.striplines(str,'retain and collapse'):

[[
aap
noot mies

zus=A0=A0=A0 wim jet
zus=A0=A0=A0 wim jet
zus=A0=A0=A0 wim jet
]]

utilities.strings.striplines(str,'retain and no empty'):

[[
aap
noot mies
zus=A0=A0=A0 wim jet
zus=A0=A0=A0 wim jet
zus=A0=A0=A0 wim jet
]]

so you can choose what you like

Hans

indeed, beauty is in the eye of the beholder.

Thank you for the flexible solution that allows each of us to find beauty.

Could you please ensure that this handles text in buffers the same way that it handles other strings? I noticed that this is handled a bit differently, as the following shows,but perhaps it is my clumsy coding. The buffer result is closer to what I expect in terms of internal whitespace, but still does not show expected trimming of leading and trailing whitespace. That trimming, of course, is the point of the exercise.


\def\StringsStripLong#1%
=A0 {\ctxlua{context(utilities.strings.striplong([=3D=3D[#1]=3D=3D= ]))}}

\def\StringStrip#1%
=A0 {\ctxlua{context(string.strip([=3D=3D[#1]=3D=3D]))}}

\startbuffer[testbuffer]

B This is a test.

And it has an unexpected result.


\stopbuffer

\long\def\testmacro{

M This is a test.

And it has an unexpected result.


}

\starttext

\subject{Lua string.strip passed TeX buffer}
=A6\StringStrip{\getbuffer[testbuffer]}=A6

\subject{Lua string.strip passed TeX macro}
=A6\StringStrip{\testmacro}=A6

\subject{Lua utilities.strings.striplong passed TeX buffer}
=A6\StringsStripLong{\getbuffer[testbuffer]}=A6

\subject{Lua utilities.strings.striplong passed TeX macro}
=A6\StringsStripLong{\testmacro}=A6

\stoptext

--
Rik
--------------030100060603050500040304-- --===============1949059874== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline ___________________________________________________________________________________ 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 ___________________________________________________________________________________ --===============1949059874==--