ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
* Frozen callback.
@ 2012-10-01 19:11 Andre Caldas
  2012-10-01 20:02 ` Philipp Gesang
  2012-10-01 20:49 ` Hans Hagen
  0 siblings, 2 replies; 13+ messages in thread
From: Andre Caldas @ 2012-10-01 19:11 UTC (permalink / raw)
  To: ConTeXt users

Hello!

I am trying to redefine the ’open_read_file’ callback.

I am getting this error:
callback ’open_read_file’ is frozen

Why is it "frozen"? Can I "unfreeze it"?


André Caldas.
___________________________________________________________________________________
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] 13+ messages in thread

* Re: Frozen callback.
  2012-10-01 19:11 Frozen callback Andre Caldas
@ 2012-10-01 20:02 ` Philipp Gesang
  2012-10-02  0:30   ` Andre Caldas
  2012-10-01 20:49 ` Hans Hagen
  1 sibling, 1 reply; 13+ messages in thread
From: Philipp Gesang @ 2012-10-01 20:02 UTC (permalink / raw)
  To: mailing list for ConTeXt users


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

···<date: 2012-10-01, Monday>···<from: Andre Caldas>···

> I am trying to redefine the ’open_read_file’ callback.

Hi André,

direct callback access is disabled. There are usually some layers
of abstraction on top of them, different ones for different
callbacks. Mapping them all is a huge effort, so best refer to
the source.

In your case the function resolvers.openers.helpers.textopener()
takes the place of the open_read_file callback. It can be found
in data-tex.lua.

Regards
Philipp

> 
> I am getting this error:
> callback ’open_read_file’ is frozen
> 
> Why is it "frozen"? Can I "unfreeze it"?
> 
> 
> André Caldas.
> ___________________________________________________________________________________
> 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
> ___________________________________________________________________________________

-- 
()  ascii ribbon campaign - against html e-mail
/\  www.asciiribbon.org   - against proprietary attachments

[-- Attachment #1.2: Type: application/pgp-signature, Size: 198 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
___________________________________________________________________________________

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

* Re: Frozen callback.
  2012-10-01 19:11 Frozen callback Andre Caldas
  2012-10-01 20:02 ` Philipp Gesang
@ 2012-10-01 20:49 ` Hans Hagen
  1 sibling, 0 replies; 13+ messages in thread
From: Hans Hagen @ 2012-10-01 20:49 UTC (permalink / raw)
  To: mailing list for ConTeXt users

On 1-10-2012 21:11, Andre Caldas wrote:
> Hello!
>
> I am trying to redefine the ’open_read_file’ callback.
>
> I am getting this error:
> callback ’open_read_file’ is frozen
>
> Why is it "frozen"? Can I "unfreeze it"?

because it's the only way we can guarantee some features working well 
(but one can plug in additional code before/after the built-in filters)

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] 13+ messages in thread

* Re: Frozen callback.
  2012-10-01 20:02 ` Philipp Gesang
@ 2012-10-02  0:30   ` Andre Caldas
  2012-10-02  8:05     ` Hans Hagen
  0 siblings, 1 reply; 13+ messages in thread
From: Andre Caldas @ 2012-10-02  0:30 UTC (permalink / raw)
  To: mailing list for ConTeXt users

>> I am trying to redefine the ’open_read_file’ callback.
>
> [...]
> direct callback access is disabled. There are usually some layers
> of abstraction on top of them, different ones for different
> callbacks. Mapping them all is a huge effort, so best refer to
> the source.
>
> In your case the function resolvers.openers.helpers.textopener()
> takes the place of the open_read_file callback. It can be found
> in data-tex.lua.

Shall I simply do something like this?

local function textopener(tag, filename, filehandle, coding)
  result = old_textopener(tag, filename, filehandle, coding)
  -- Do lots of things
  return result
end

resolvers.openers.helpers.textopener = textopener


Thank you,
André Caldas.
___________________________________________________________________________________
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] 13+ messages in thread

* Re: Frozen callback.
  2012-10-02  0:30   ` Andre Caldas
@ 2012-10-02  8:05     ` Hans Hagen
  2012-10-02 11:31       ` Andre Caldas
  2012-10-02 11:41       ` Andre Caldas
  0 siblings, 2 replies; 13+ messages in thread
From: Hans Hagen @ 2012-10-02  8:05 UTC (permalink / raw)
  To: mailing list for ConTeXt users

On 2-10-2012 02:30, Andre Caldas wrote:
>>> I am trying to redefine the ’open_read_file’ callback.
>>
>> [...]
>> direct callback access is disabled. There are usually some layers
>> of abstraction on top of them, different ones for different
>> callbacks. Mapping them all is a huge effort, so best refer to
>> the source.
>>
>> In your case the function resolvers.openers.helpers.textopener()
>> takes the place of the open_read_file callback. It can be found
>> in data-tex.lua.
>
> Shall I simply do something like this?
>
> local function textopener(tag, filename, filehandle, coding)
>    result = old_textopener(tag, filename, filehandle, coding)
>    -- Do lots of things
>    return result
> end
>
> resolvers.openers.helpers.textopener = textopener

this is not the recommended way .. better do somethign like this:

\starttext

\startluacode

     function document.MyCharacterMess(str,filename)
         if file.nameonly(filename) == "ward" then
             str = table.concat(string.totable(str,"."), " + ")
         end
         return str
     end

     local textfileactions = resolvers.openers.helpers.textfileactions

 
utilities.sequencers.appendaction(textfileactions,"system","document.MyCharacterMess")

\stopluacode

\input ward

\input knuth

\stoptext


-----------------------------------------------------------------
                                           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] 13+ messages in thread

* Re: Frozen callback.
  2012-10-02  8:05     ` Hans Hagen
@ 2012-10-02 11:31       ` Andre Caldas
  2012-10-02 12:02         ` Sietse Brouwer
  2012-10-02 12:13         ` Philipp Gesang
  2012-10-02 11:41       ` Andre Caldas
  1 sibling, 2 replies; 13+ messages in thread
From: Andre Caldas @ 2012-10-02 11:31 UTC (permalink / raw)
  To: Hans Hagen; +Cc: mailing list for ConTeXt users

Hello, Hans!

>> Shall I simply do something like this?
>>
>> [...]
>
> this is not the recommended way .. better do somethign like this:
> [...]
>     function document.MyCharacterMess(str,filename)

Loved your function naming! :-)
What is this "str"?


>         if file.nameonly(filename) == "ward" then
>             str = table.concat(string.totable(str,"."), " + ")

What is this doing?


> [...]
> utilities.sequencers.appendaction(textfileactions,
> "system","document.MyCharacterMess")

Why is "document.MyCharacterMess" a string? Isn't it less error-prone
to use the function itself, instead of its name?

Sorry for my naive basic questions... :-)


Cheers,
André Caldas.
___________________________________________________________________________________
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] 13+ messages in thread

* Re: Frozen callback.
  2012-10-02  8:05     ` Hans Hagen
  2012-10-02 11:31       ` Andre Caldas
@ 2012-10-02 11:41       ` Andre Caldas
  2012-10-02 11:54         ` Wolfgang Schuster
  2012-10-02 12:27         ` Hans Hagen
  1 sibling, 2 replies; 13+ messages in thread
From: Andre Caldas @ 2012-10-02 11:41 UTC (permalink / raw)
  To: Hans Hagen; +Cc: mailing list for ConTeXt users

>>>> I am trying to redefine the ’open_read_file’ callback.

> [...]
> utilities.sequencers.appendaction(textfileactions,
> "system","document.MyCharacterMess")

All I want is to get the full path (or path relative to
lfs.currentdir()). Is "textfileactions" the action I should trap?

Also, shall I use "after" or "before" instead of "system"? Since it is
a module, probably I should use "system", right? Just want to be
sure...


Thank you all!
André Caldas.
___________________________________________________________________________________
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] 13+ messages in thread

* Re: Frozen callback.
  2012-10-02 11:41       ` Andre Caldas
@ 2012-10-02 11:54         ` Wolfgang Schuster
  2012-10-02 12:27         ` Hans Hagen
  1 sibling, 0 replies; 13+ messages in thread
From: Wolfgang Schuster @ 2012-10-02 11:54 UTC (permalink / raw)
  To: mailing list for ConTeXt users


Am 02.10.2012 um 13:41 schrieb Andre Caldas <andre.em.caldas@gmail.com>:

>>>>> I am trying to redefine the ’open_read_file’ callback.
> 
>> [...]
>> utilities.sequencers.appendaction(textfileactions,
>> "system","document.MyCharacterMess")
> 
> All I want is to get the full path (or path relative to
> lfs.currentdir()). Is "textfileactions" the action I should trap?


\starttext

\startluacode

function document.MyCharacterMess(str,filename)
	local path = "Path: " .. file.dirname(filename)
	local text = "Text: " .. str
	return table.concat({path,text},"\n\n")
end

local textfileactions = resolvers.openers.helpers.textfileactions

utilities.sequencers.appendaction(textfileactions,"system","document.MyCharacterMess")

\stopluacode

\input ward

\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://tex.aanhet.net
archive  : http://foundry.supelec.fr/projects/contextrev/
wiki     : http://contextgarden.net
___________________________________________________________________________________


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

* Re: Frozen callback.
  2012-10-02 11:31       ` Andre Caldas
@ 2012-10-02 12:02         ` Sietse Brouwer
  2012-10-02 12:13         ` Philipp Gesang
  1 sibling, 0 replies; 13+ messages in thread
From: Sietse Brouwer @ 2012-10-02 12:02 UTC (permalink / raw)
  To: mailing list for ConTeXt users

Hello, Andre!

Andre Caldas wrote:
>>     function document.MyCharacterMess(str,filename)
>
> What is this "str"?

This is a function that takes two variables; the first one it calls
'str', the second one 'filename'. Example:
function f(a, b)
   return a/b
end
function(8,2) --> 4, not 0.25

I do not know what sort of str and filename are being passed to
document.MyCharacterMess. (To all the action functions in
utilities.sequencers.appendaction, in fact).

>>         if file.nameonly(filename) == "ward" then
>>             str = table.concat(string.totable(str,"."), " + ")
> What is this doing?

file.nameonly strips path and extenstion, e.g.
file.nameonly('a/b/cod.doc') returns 'cod'.

You can see the file.* functions in l-file.lua.

string.totable splits a string, and returns the pieces as an array. In
this case, the string is split at the periods.
table.concat combines a table into a string, optionally putting a
string (" + ", in this case) where the pieces join.
so the `str = ...` line turns
"Hello. I am Sam. You are also Sam."
into
"Hello +  I am Sam +  You are also Sam"
or "hello.txt" into "hello + txt"

> Why is "document.MyCharacterMess" a string? Isn't it less error-prone
> to use the function itself, instead of its name?

No idea.

Cheers, and good luck,
Sietse
___________________________________________________________________________________
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] 13+ messages in thread

* Re: Frozen callback.
  2012-10-02 11:31       ` Andre Caldas
  2012-10-02 12:02         ` Sietse Brouwer
@ 2012-10-02 12:13         ` Philipp Gesang
  2012-10-02 12:37           ` Hans Hagen
  1 sibling, 1 reply; 13+ messages in thread
From: Philipp Gesang @ 2012-10-02 12:13 UTC (permalink / raw)
  To: mailing list for ConTeXt users


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

···<date: 2012-10-02, Tuesday>···<from: Andre Caldas>···

> >     function document.MyCharacterMess(str,filename)
> 
> What is this "str"?

The raw file content as a Lua string. You can examine the
arguments you get like so:

·······································································
\startluacode
  document.arg_test = function (s, ...)
    table.print({...}, "file_content")
    return s
  end

  local textfileactions = resolvers.openers.helpers.textfileactions
  utilities.sequencers.appendaction(textfileactions,"system","document.arg_test")
\stopluacode

\starttext
  \input ward
  \input knuth
\stoptext
·······································································


> >         if file.nameonly(filename) == "ward" then
> >             str = table.concat(string.totable(str,"."), " + ")
> 
> What is this doing?

Split the input at every byte and re-concatenate using "+" as
delimiter. (It’s a bit confusing as string.totable() takes only
one argument ;-) )
 
> > [...]
> > utilities.sequencers.appendaction(textfileactions,
> > "system","document.MyCharacterMess")
> 
> Why is "document.MyCharacterMess" a string?

The sequencers use loadstring() internally (util-seq.lua), so you
need to supply the namespace as a string. This happens all over
the place with action/callbacks.

Regards
Philipp

[-- Attachment #1.2: Type: application/pgp-signature, Size: 198 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
___________________________________________________________________________________

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

* Re: Frozen callback.
  2012-10-02 11:41       ` Andre Caldas
  2012-10-02 11:54         ` Wolfgang Schuster
@ 2012-10-02 12:27         ` Hans Hagen
  1 sibling, 0 replies; 13+ messages in thread
From: Hans Hagen @ 2012-10-02 12:27 UTC (permalink / raw)
  To: Andre Caldas; +Cc: mailing list for ConTeXt users

On 2-10-2012 13:41, Andre Caldas wrote:
>>>>> I am trying to redefine the ’open_read_file’ callback.
>
>> [...]
>> utilities.sequencers.appendaction(textfileactions,
>> "system","document.MyCharacterMess")
>
> All I want is to get the full path (or path relative to
> lfs.currentdir()). Is "textfileactions" the action I should trap?
>
> Also, shall I use "after" or "before" instead of "system"? Since it is
> a module, probably I should use "system", right? Just want to be
> sure...

\startluacode

resolvers.installinputfilehandler("before",function(str,filename,...)
     logs.report(string.format("path: %s",file.dirname(filename)))
     return str, filename, ...
end)

\stopluacode

-----------------------------------------------------------------
                                           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] 13+ messages in thread

* Re: Frozen callback.
  2012-10-02 12:13         ` Philipp Gesang
@ 2012-10-02 12:37           ` Hans Hagen
  2012-10-10 19:40             ` Andre Caldas
  0 siblings, 1 reply; 13+ messages in thread
From: Hans Hagen @ 2012-10-02 12:37 UTC (permalink / raw)
  To: mailing list for ConTeXt users

On 2-10-2012 14:13, Philipp Gesang wrote:

>> Why is "document.MyCharacterMess" a string?
>
> The sequencers use loadstring() internally (util-seq.lua), so you
> need to supply the namespace as a string. This happens all over
> the place with action/callbacks.

more flexible this way (one can redefine, nil or whatever such functions)

-----------------------------------------------------------------
                                           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] 13+ messages in thread

* Re: Frozen callback.
  2012-10-02 12:37           ` Hans Hagen
@ 2012-10-10 19:40             ` Andre Caldas
  0 siblings, 0 replies; 13+ messages in thread
From: Andre Caldas @ 2012-10-10 19:40 UTC (permalink / raw)
  To: mailing list for ConTeXt users

>>> Why is "document.MyCharacterMess" a string?
>>
>> The sequencers use loadstring() internally (util-seq.lua), so you
>> need to supply the namespace as a string. This happens all over
>> the place with action/callbacks.
>
> more flexible this way (one can redefine, nil or whatever such functions)

It is like a "pointer to a pointer". Or a reference to a reference,
since we do not use pointers in Lua.
___________________________________________________________________________________
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] 13+ messages in thread

end of thread, other threads:[~2012-10-10 19:40 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-10-01 19:11 Frozen callback Andre Caldas
2012-10-01 20:02 ` Philipp Gesang
2012-10-02  0:30   ` Andre Caldas
2012-10-02  8:05     ` Hans Hagen
2012-10-02 11:31       ` Andre Caldas
2012-10-02 12:02         ` Sietse Brouwer
2012-10-02 12:13         ` Philipp Gesang
2012-10-02 12:37           ` Hans Hagen
2012-10-10 19:40             ` Andre Caldas
2012-10-02 11:41       ` Andre Caldas
2012-10-02 11:54         ` Wolfgang Schuster
2012-10-02 12:27         ` Hans Hagen
2012-10-01 20:49 ` Hans Hagen

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