ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
From: Rik Kabel <context@rik.users.panix.com>
To: ntg-context@ntg.nl
Subject: Re: Trimming strings and Lua string.trim question
Date: Thu, 06 Mar 2014 10:04:51 -0500	[thread overview]
Message-ID: <53188E93.9060408@rik.users.panix.com> (raw)
In-Reply-To: <53185011.5070801@wxs.nl>


[-- Attachment #1.1: Type: text/plain, Size: 4207 bytes --]

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:
>>>>>
>>>>>     ! 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 “strings.striplong”.
>>>
>>> This should be “utilities.strings.striplong” 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 = 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 
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%
       {\ctxlua{context(utilities.strings.striplong([==[#1]==]))}}

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

    \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}
    ¦\StringStrip{\getbuffer[testbuffer]}¦

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

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

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

    \stoptext

-- 
Rik

[-- Attachment #1.2: Type: text/html, Size: 7699 bytes --]

[-- Attachment #2: Type: text/plain, Size: 485 bytes --]

___________________________________________________________________________________
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
___________________________________________________________________________________

  reply	other threads:[~2014-03-06 15:04 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-03-05  4:45 Rik Kabel
2014-03-05  8:24 ` Hans Hagen
2014-03-05 15:07   ` Rik Kabel
2014-03-05 15:18     ` Wolfgang Schuster
2014-03-05 15:54       ` Wolfgang Schuster
2014-03-05 23:00         ` Rik Kabel
2014-03-06 10:38           ` Hans Hagen
2014-03-06 15:04             ` Rik Kabel [this message]
2014-03-06 15:27               ` Wolfgang Schuster
2014-03-05 16:28       ` Rik Kabel

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=53188E93.9060408@rik.users.panix.com \
    --to=context@rik.users.panix.com \
    --cc=ntg-context@ntg.nl \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).