ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
* problem with lua io.lines
@ 2013-08-14 14:05 Henning Hraban Ramm
  2013-08-14 14:15 ` Hans Hagen
  2013-08-14 14:15 ` Wolfgang Schuster
  0 siblings, 2 replies; 8+ messages in thread
From: Henning Hraban Ramm @ 2013-08-14 14:05 UTC (permalink / raw)
  To: mailing ConTeXt users list for

Hi, after a long time I'm playing with ConTeXt again…

Current beta MkIV seems to have a bug in the Lua function io.lines:

for myline in io.lines(myfile) do
  logs.report(myline)
end

"myfile" just contains one line with a number, without return/newline.
If the number has more than one digit, I get single digits as "myline".


Greetlings, Hraban
---
http://www.fiee.net/texnique/
http://wiki.contextgarden.net
https://www.cacert.org (I'm an assurer)

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


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: problem with lua io.lines
  2013-08-14 14:05 problem with lua io.lines Henning Hraban Ramm
@ 2013-08-14 14:15 ` Hans Hagen
  2013-08-14 14:32   ` Henning Hraban Ramm
  2013-08-14 14:15 ` Wolfgang Schuster
  1 sibling, 1 reply; 8+ messages in thread
From: Hans Hagen @ 2013-08-14 14:15 UTC (permalink / raw)
  To: ntg-context

On 8/14/2013 4:05 PM, Henning Hraban Ramm wrote:
> Hi, after a long time I'm playing with ConTeXt again…
>
> Current beta MkIV seems to have a bug in the Lua function io.lines:
>
> for myline in io.lines(myfile) do
>    logs.report(myline)
> end
>
> "myfile" just contains one line with a number, without return/newline.
> If the number has more than one digit, I get single digits as "myline".

looks ok here, btw it's

    logs.report("some tag",myline)


>
> Greetlings, Hraban
> ---
> http://www.fiee.net/texnique/
> http://wiki.contextgarden.net
> https://www.cacert.org (I'm an assurer)
>
> ___________________________________________________________________________________
> 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
> ___________________________________________________________________________________
>


-- 

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


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: problem with lua io.lines
  2013-08-14 14:05 problem with lua io.lines Henning Hraban Ramm
  2013-08-14 14:15 ` Hans Hagen
@ 2013-08-14 14:15 ` Wolfgang Schuster
  2013-08-14 14:43   ` Henning Hraban Ramm
  1 sibling, 1 reply; 8+ messages in thread
From: Wolfgang Schuster @ 2013-08-14 14:15 UTC (permalink / raw)
  To: mailing list for ConTeXt users


Am 14.08.2013 um 16:05 schrieb Henning Hraban Ramm <texml@fiee.net>:

> Hi, after a long time I'm playing with ConTeXt again…
> 
> Current beta MkIV seems to have a bug in the Lua function io.lines:
> 
> for myline in io.lines(myfile) do
>  logs.report(myline)
> end
> 
> "myfile" just contains one line with a number, without return/newline.
> If the number has more than one digit, I get single digits as "myeline".

Do you have a minimal working example?

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


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: problem with lua io.lines
  2013-08-14 14:15 ` Hans Hagen
@ 2013-08-14 14:32   ` Henning Hraban Ramm
  0 siblings, 0 replies; 8+ messages in thread
From: Henning Hraban Ramm @ 2013-08-14 14:32 UTC (permalink / raw)
  To: mailing list for ConTeXt users


Am 2013-08-14 um 20:15 schrieb Hans Hagen <pragma@wxs.nl>:

> looks ok here, btw it's
> 
>   logs.report("some tag",myline)


Thanks, didn't realize since logs.reportt("everything") always worked ;-)


Greetlings, Hraban

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


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: problem with lua io.lines
  2013-08-14 14:15 ` Wolfgang Schuster
@ 2013-08-14 14:43   ` Henning Hraban Ramm
  2013-08-14 15:00     ` Hans Hagen
  0 siblings, 1 reply; 8+ messages in thread
From: Henning Hraban Ramm @ 2013-08-14 14:43 UTC (permalink / raw)
  To: mailing list for ConTeXt users


Am 2013-08-14 um 20:15 schrieb Wolfgang Schuster <schuster.wolfgang@gmail.com>:

>> Current beta MkIV seems to have a bug in the Lua function io.lines:
>> 
>> for myline in io.lines(myfile) do
>> logs.report(myline)
>> end
>> 
>> "myfile" just contains one line with a number, without return/newline.
>> If the number has more than one digit, I get single digits as "myeline".
> 
> Do you have a minimal working example?

Minimal working yes, but not minimal failing ;-)

This works:

io.output(io.open("myfile.txt","w"))
io.write("123")
io.close()

for myline in io.lines("myfile.txt") do
  print(myline .. "\n")
end

But in my t-lilyfilter.tex where it reads the systems.count files of LilyPond (that contain only the number of note systems that resulted from the included LilyPond code), it fails:

 function thirddata.parselilypondfile(name)
   -- include all systems (note lines)
   -- name is like \LILYTEMP/mainfile-temp-lilypond-21.pdf
   logs.report("LILYPOND","name='" .. name .. "'")
   syco = 0
   for ts in io.lines(string.gsub(name, '%.pdf$', '-systems.count')) do
     syco = ts*1
   end
   
   for nr = 1, syco do
     logs.report("LILYPOND","including system no." .. nr)
     context("\\externalfigure[" .. string.gsub(name, '%.pdf$', '-' .. nr) .. "]")
   end
 end


While I have a single-digit number of systems, it works, but the song of my failing case has 11 lines.

I wouldn't complain if it wouldn't have worked before!


Greetlings, Hraban
___________________________________________________________________________________
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
___________________________________________________________________________________


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: problem with lua io.lines
  2013-08-14 14:43   ` Henning Hraban Ramm
@ 2013-08-14 15:00     ` Hans Hagen
  2013-08-14 15:12       ` Hans Hagen
  2013-08-14 17:02       ` Henning Hraban Ramm
  0 siblings, 2 replies; 8+ messages in thread
From: Hans Hagen @ 2013-08-14 15:00 UTC (permalink / raw)
  To: mailing list for ConTeXt users

On 8/14/2013 4:43 PM, Henning Hraban Ramm wrote:
>
> Am 2013-08-14 um 20:15 schrieb Wolfgang Schuster <schuster.wolfgang@gmail.com>:
>
>>> Current beta MkIV seems to have a bug in the Lua function io.lines:
>>>
>>> for myline in io.lines(myfile) do
>>> logs.report(myline)
>>> end
>>>
>>> "myfile" just contains one line with a number, without return/newline.
>>> If the number has more than one digit, I get single digits as "myeline".
>>
>> Do you have a minimal working example?
>
> Minimal working yes, but not minimal failing ;-)
>
> This works:
>
> io.output(io.open("myfile.txt","w"))
> io.write("123")
> io.close()
>
> for myline in io.lines("myfile.txt") do
>    print(myline .. "\n")
> end
>
> But in my t-lilyfilter.tex where it reads the systems.count files of LilyPond (that contain only the number of note systems that resulted from the included LilyPond code), it fails:
>
>   function thirddata.parselilypondfile(name)
>     -- include all systems (note lines)
>     -- name is like \LILYTEMP/mainfile-temp-lilypond-21.pdf
>     logs.report("LILYPOND","name='" .. name .. "'")
>     syco = 0
>     for ts in io.lines(string.gsub(name, '%.pdf$', '-systems.count')) do
>       syco = ts*1
>     end
>
>     for nr = 1, syco do
>       logs.report("LILYPOND","including system no." .. nr)
>       context("\\externalfigure[" .. string.gsub(name, '%.pdf$', '-' .. nr) .. "]")
>     end
>   end
>
>
> While I have a single-digit number of systems, it works, but the song of my failing case has 11 lines.
>
> I wouldn't complain if it wouldn't have worked before!

well, you probably were lucky before: string.gsub returns multiple 
values so io.lines get a second argument that limits the length of what 
gets returned

local myfile = "myfile.txt"

for myline in io.lines(myfile,2) do
     logs.report("test",myline)
end

so you need:

   io.lines((string.gsub(name, '%.pdf$', '-systems.count')))

or

   local name = string.gsub(name, '%.pdf$', '-systems.count')

   io.lines(name)


or maybe better:

   io.lines(file.replacesuffix(name,'-systems.count'))

Hans

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


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: problem with lua io.lines
  2013-08-14 15:00     ` Hans Hagen
@ 2013-08-14 15:12       ` Hans Hagen
  2013-08-14 17:02       ` Henning Hraban Ramm
  1 sibling, 0 replies; 8+ messages in thread
From: Hans Hagen @ 2013-08-14 15:12 UTC (permalink / raw)
  To: ntg-context

On 8/14/2013 5:00 PM, Hans Hagen wrote:
> On 8/14/2013 4:43 PM, Henning Hraban Ramm wrote:
>>
>> Am 2013-08-14 um 20:15 schrieb Wolfgang Schuster
>> <schuster.wolfgang@gmail.com>:
>>
>>>> Current beta MkIV seems to have a bug in the Lua function io.lines:

btw, it's a lua issue, not related to luatex ...

local myfile = "myfile.txt"

for myline in io.lines(myfile) do
     logs.report("test 1",myline)
end

for myline in io.lines(myfile,3) do
     logs.report("test 2",myline)
end

for myline in io.lines(myfile,1) do
     logs.report("test 2",myline)
end

for myline in io.lines(myfile,0) do
     logs.report("test 2",myline)
end

for myline in io.lines(myfile,-1) do
     logs.report("test 2",myline)
end

the zero case loops and the last case gives a "memory allocation error: 
block too big" so these can be considered buglets in lua

Hans

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


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: problem with lua io.lines
  2013-08-14 15:00     ` Hans Hagen
  2013-08-14 15:12       ` Hans Hagen
@ 2013-08-14 17:02       ` Henning Hraban Ramm
  1 sibling, 0 replies; 8+ messages in thread
From: Henning Hraban Ramm @ 2013-08-14 17:02 UTC (permalink / raw)
  To: mailing list for ConTeXt users

Am 2013-08-14 um 21:00 schrieb Hans Hagen <pragma@wxs.nl>:

>>    for ts in io.lines(string.gsub(name, '%.pdf$', '-systems.count')) do
>>      syco = ts*1
>>    end
> 
> well, you probably were lucky before: string.gsub returns multiple values so io.lines get a second argument that limits the length of what gets returned

Thank you, didn't know that!

> local myfile = "myfile.txt"
> 
> for myline in io.lines(myfile,2) do
>    logs.report("test",myline)
> end
> 
> so you need:
> 
>  io.lines((string.gsub(name, '%.pdf$', '-systems.count')))
> 
> or
> 
>  local name = string.gsub(name, '%.pdf$', '-systems.count')
> 
>  io.lines(name)

Great, that works!

> or maybe better:
> 
>  io.lines(file.replacesuffix(name,'-systems.count'))


No, that doesn't work, because the dot stays, so I get foobar.-systems.count


Greetlings, Hraban
---
http://www.fiee.net/texnique/
http://wiki.contextgarden.net
https://www.cacert.org (I'm an assurer)

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


^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2013-08-14 17:02 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-08-14 14:05 problem with lua io.lines Henning Hraban Ramm
2013-08-14 14:15 ` Hans Hagen
2013-08-14 14:32   ` Henning Hraban Ramm
2013-08-14 14:15 ` Wolfgang Schuster
2013-08-14 14:43   ` Henning Hraban Ramm
2013-08-14 15:00     ` Hans Hagen
2013-08-14 15:12       ` Hans Hagen
2013-08-14 17:02       ` Henning Hraban Ramm

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).