On 8/14/2013 4:43 PM, Henning Hraban Ramm wrote:

Am 2013-08-14 um 20:15 schrieb Wolfgang Schuster <schuster.wolfg...@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
___________________________________________________________________________________

Reply via email to