ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
* 'figures.getinfo()' not to exit ConTeXt
@ 2018-12-06 10:20 Procházka Lukáš Ing.
  2018-12-06 10:23 ` luigi scarso
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Procházka Lukáš Ing. @ 2018-12-06 10:20 UTC (permalink / raw)
  To: ConTeXt

Hello,

I'm using the following code, mentioned here some time ago, to get some info about PDF:

----
\startluacode
figures.getinfo = function(name, page)
     if type(name) == "string" then
         name = { name = name, page = page }
     end
     if name.name then
         local data = figures.push(name)

         --figures.identify()
local ok, res = pcall(figures.identify)
print(">>1", ok, res)

         --figures.check()
local ok, res = pcall(figures.check)
print(">>2", ok, res)

         figures.pop()
         return data
     end
end

local data = figures.getinfo("NonExisting.pdf")

\stopluacode
----

The problem is that once the PDF file doesn't exist, the function causes ConTeXt to exit, even when I enclose 'figure.check()' into the 'pcall' (to be handled like try/catch mechanism).

Is there a way so that the function 'figures.getinfo()' does't exit ConTeXt, it just returns 'nil', or even gives info which directories (or even which file types) were searched?

TIA.

Best regards,

Lukas


-- 
Ing. Lukáš Procházka | mailto:LPr@pontex.cz
Pontex s. r. o.      | mailto:pontex@pontex.cz | http://www.pontex.cz | IDDS: nrpt3sn | IČO: 40763439
Bezová 1658
147 14 Praha 4

Mob.: +420 702 033 396

___________________________________________________________________________________
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://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

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

* Re: 'figures.getinfo()' not to exit ConTeXt
  2018-12-06 10:20 'figures.getinfo()' not to exit ConTeXt Procházka Lukáš Ing.
@ 2018-12-06 10:23 ` luigi scarso
  2018-12-06 10:57   ` Procházka Lukáš Ing.
  2018-12-06 11:05 ` Hans van der Meer
  2018-12-06 11:25 ` Wolfgang Schuster
  2 siblings, 1 reply; 6+ messages in thread
From: luigi scarso @ 2018-12-06 10:23 UTC (permalink / raw)
  To: mailing list for ConTeXt users


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

On Thu, Dec 6, 2018 at 11:17 AM Procházka Lukáš Ing. <LPr@pontex.cz> wrote:

> Hello,
>
> I'm using the following code, mentioned here some time ago, to get some
> info about PDF:
>
> ----
> \startluacode
> figures.getinfo = function(name, page)
>      if type(name) == "string" then
>          name = { name = name, page = page }
>      end
>      if name.name then
>          local data = figures.push(name)
>
>          --figures.identify()
> local ok, res = pcall(figures.identify)
> print(">>1", ok, res)
>
>          --figures.check()
> local ok, res = pcall(figures.check)
> print(">>2", ok, res)
>
>          figures.pop()
>          return data
>      end
> end
>
> local data = figures.getinfo("NonExisting.pdf")
>
> \stopluacode
> ----
>
> The problem is that once the PDF file doesn't exist, the function causes
> ConTeXt to exit, even when I enclose 'figure.check()' into the 'pcall' (to
> be handled like try/catch mechanism).
>
> Is there a way so that the function 'figures.getinfo()' does't exit
> ConTeXt, it just returns 'nil', or even gives info which directories (or
> even which file types) were searched?
>
> TIA.
>
> something like that (untested), eventaully to be wrapped  in a your
function
local fileone = "NonExisting.pdf"
local data
if not lfs.isfile(fileone) then
    report("unknown file %a",fileone)
else
 data = figures.getinfo("NonExisting.pdf")
end

-- 
luigi

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

[-- Attachment #2: Type: text/plain, Size: 492 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://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

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

* Re: 'figures.getinfo()' not to exit ConTeXt
  2018-12-06 10:23 ` luigi scarso
@ 2018-12-06 10:57   ` Procházka Lukáš Ing.
  2018-12-06 10:57     ` luigi scarso
  0 siblings, 1 reply; 6+ messages in thread
From: Procházka Lukáš Ing. @ 2018-12-06 10:57 UTC (permalink / raw)
  To: mailing list for ConTeXt users

Hello Luigi,

On Thu, 06 Dec 2018 11:23:25 +0100, luigi scarso <luigi.scarso@gmail.com> wrote:

> On Thu, Dec 6, 2018 at 11:17 AM Procházka Lukáš Ing. <LPr@pontex.cz> wrote:
>
>> Hello,
>>
>> I'm using the following code, mentioned here some time ago, to get some
>> info about PDF:
>>
>> ----
>> \startluacode
>> figures.getinfo = function(name, page)
>>      if type(name) == "string" then
>>          name = { name = name, page = page }
>>      end
>>      if name.name then
>>          local data = figures.push(name)
>>
>>          --figures.identify()
>> local ok, res = pcall(figures.identify)
>> print(">>1", ok, res)
>>
>>          --figures.check()
>> local ok, res = pcall(figures.check)
>> print(">>2", ok, res)
>>
>>          figures.pop()
>>          return data
>>      end
>> end
>>
>> local data = figures.getinfo("NonExisting.pdf")
>>
>> \stopluacode
>> ----
>>
>> The problem is that once the PDF file doesn't exist, the function causes
>> ConTeXt to exit, even when I enclose 'figure.check()' into the 'pcall' (to
>> be handled like try/catch mechanism).
>>
>> Is there a way so that the function 'figures.getinfo()' does't exit
>> ConTeXt, it just returns 'nil', or even gives info which directories (or
>> even which file types) were searched?
>>
>> TIA.
>>
>> something like that (untested), eventaully to be wrapped  in a your
> function
> local fileone = "NonExisting.pdf"
> local data
> if not lfs.isfile(fileone) then
>     report("unknown file %a",fileone)

well, yes, this should work; but \externalfigure uses a mechanism to lookup for a file which combines paths specified by "location=", "directory=", "order=" and maybe some more.

And whilst \externalfigure should find a file (whose location may not be known exactly, it just may use e.g. "directory=" spec), simple "lfs.isfile(fileone)" could not find the file since the exact path has not been specified.

IOW, I need to combine searching-for-file mechanism which is used inside \externalfigure with 'figures.getinfo()' so the 'getinfo()' should return 'nil' when no file (being specified like in \externalfigure, i.e. with no exact path, even without extension) is found.

BTW:  Ctx tells me "attempt to call a nil value (global 'report')" on "report("unknown file %a",fileone)" - do I have to enable/load something?

Lukas


> else
>  data = figures.getinfo("NonExisting.pdf")
> end
>


-- 
Ing. Lukáš Procházka | mailto:LPr@pontex.cz
Pontex s. r. o.      | mailto:pontex@pontex.cz | http://www.pontex.cz | IDDS: nrpt3sn | IČO: 40763439
Bezová 1658
147 14 Praha 4

Mob.: +420 702 033 396

___________________________________________________________________________________
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://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

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

* Re: 'figures.getinfo()' not to exit ConTeXt
  2018-12-06 10:57   ` Procházka Lukáš Ing.
@ 2018-12-06 10:57     ` luigi scarso
  0 siblings, 0 replies; 6+ messages in thread
From: luigi scarso @ 2018-12-06 10:57 UTC (permalink / raw)
  To: mailing list for ConTeXt users


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

On Thu, Dec 6, 2018 at 11:54 AM Procházka Lukáš Ing. <LPr@pontex.cz> wrote:

> Hello Luigi,
>
> BTW:  Ctx tells me "attempt to call a nil value (global 'report')" on
> "report("unknown file %a",fileone)" - do I have to enable/load something?
>
> should be something like
 local report = logs.reporter("my application")

-- 
luigi

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

[-- Attachment #2: Type: text/plain, Size: 492 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://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

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

* Re: 'figures.getinfo()' not to exit ConTeXt
  2018-12-06 10:20 'figures.getinfo()' not to exit ConTeXt Procházka Lukáš Ing.
  2018-12-06 10:23 ` luigi scarso
@ 2018-12-06 11:05 ` Hans van der Meer
  2018-12-06 11:25 ` Wolfgang Schuster
  2 siblings, 0 replies; 6+ messages in thread
From: Hans van der Meer @ 2018-12-06 11:05 UTC (permalink / raw)
  To: NTG ConTeXt


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

Are you sure that data is not nil here?
 If so, this function returns nil.
dr. Hans van der Meer


> On 6 Dec 2018, at 11:20, Procházka Lukáš Ing. <LPr@pontex.cz> wrote:
> 
> Hello,
> 
> I'm using the following code, mentioned here some time ago, to get some info about PDF:
> 
> ----
> \startluacode
> figures.getinfo = function(name, page)
>    if type(name) == "string" then
>        name = { name = name, page = page }
>    end
>    if name.name then
>        local data = figures.push(name)
> 
>        --figures.identify()
> local ok, res = pcall(figures.identify)
> print(">>1", ok, res)
> 
>        --figures.check()
> local ok, res = pcall(figures.check)
> print(">>2", ok, res)
> 
>        figures.pop()
>        return data
>    end
> end
> 
> local data = figures.getinfo("NonExisting.pdf")
> 
> \stopluacode
> ----
> 
> The problem is that once the PDF file doesn't exist, the function causes ConTeXt to exit, even when I enclose 'figure.check()' into the 'pcall' (to be handled like try/catch mechanism).
> 
> Is there a way so that the function 'figures.getinfo()' does't exit ConTeXt, it just returns 'nil', or even gives info which directories (or even which file types) were searched?
> 
> TIA.
> 
> Best regards,
> 
> Lukas
> 
> 
> -- 
> Ing. Lukáš Procházka | mailto:LPr@pontex.cz
> Pontex s. r. o.      | mailto:pontex@pontex.cz | http://www.pontex.cz | IDDS: nrpt3sn | IČO: 40763439
> Bezová 1658
> 147 14 Praha 4
> 
> Mob.: +420 702 033 396
> 
> ___________________________________________________________________________________
> 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://context.aanhet.net
> archive  : https://bitbucket.org/phg/context-mirror/commits/
> wiki     : http://contextgarden.net
> ___________________________________________________________________________________


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

[-- Attachment #2: Type: text/plain, Size: 492 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://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

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

* Re: 'figures.getinfo()' not to exit ConTeXt
  2018-12-06 10:20 'figures.getinfo()' not to exit ConTeXt Procházka Lukáš Ing.
  2018-12-06 10:23 ` luigi scarso
  2018-12-06 11:05 ` Hans van der Meer
@ 2018-12-06 11:25 ` Wolfgang Schuster
  2 siblings, 0 replies; 6+ messages in thread
From: Wolfgang Schuster @ 2018-12-06 11:25 UTC (permalink / raw)
  To: mailing list for ConTeXt users, Procházka Lukáš Ing.

Procházka Lukáš Ing. schrieb am 06.12.18 um 11:20:
> Hello,
> 
> I'm using the following code, mentioned here some time ago, to get some 
> info about PDF:
> 
> ----
> \startluacode
> figures.getinfo = function(name, page)
>      if type(name) == "string" then
>          name = { name = name, page = page }
>      end
>      if name.name then
>          local data = figures.push(name)
> 
>          --figures.identify()
> local ok, res = pcall(figures.identify)
> print(">>1", ok, res)
> 
>          --figures.check()
> local ok, res = pcall(figures.check)
> print(">>2", ok, res)
> 
>          figures.pop()
>          return data
>      end
> end
> 
> local data = figures.getinfo("NonExisting.pdf")
> 
> \stopluacode
> ----
> 
> The problem is that once the PDF file doesn't exist, the function causes 
> ConTeXt to exit, even when I enclose 'figure.check()' into the 'pcall' 
> (to be handled like try/catch mechanism).
> 
> Is there a way so that the function 'figures.getinfo()' does't exit 
> ConTeXt, it just returns 'nil', or even gives info which directories (or 
> even which file types) were searched?

You can use the \doifelsefigure command for a simple check


\setupexternalfigure[location={local,global,default}]

\starttext

\doifelsefigure{cow}{YES}{NO}

\doifelsefigure{mill}{YES}{NO}

\doifelsefigure{bridge}{YES}{NO}

\stoptext


or the following stripped down version of the underlying Lua
code of the \doifelsefigure command


\setupexternalfigure[location={local,global,default}]

\starttext

\startluacode

local cow = figures.getinfo("cow")

if figures.get("status","status",0) == 0 then
   context("NO")  context.par()
else
   context("YES") context.par()
end

local mill = figures.getinfo("mill")

if figures.get("status","status",0) == 0 then
   context("NO")  context.par()
else
   context("YES") context.par()
end

local bridge = figures.getinfo("bridge")

if figures.get("status","status",0) == 0 then
   context("NO")  context.par()
else
   context("YES") context.par()
end

\stopluacode

\stoptext


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://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

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

end of thread, other threads:[~2018-12-06 11:25 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-12-06 10:20 'figures.getinfo()' not to exit ConTeXt Procházka Lukáš Ing.
2018-12-06 10:23 ` luigi scarso
2018-12-06 10:57   ` Procházka Lukáš Ing.
2018-12-06 10:57     ` luigi scarso
2018-12-06 11:05 ` Hans van der Meer
2018-12-06 11:25 ` Wolfgang Schuster

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