org.extex.unit.tex.file
Class Write

java.lang.Object
  extended by org.extex.interpreter.type.AbstractCode
      extended by org.extex.unit.tex.file.Write
All Implemented Interfaces:
java.io.Serializable, LogEnabled, Code, TokensWriter

public class Write
extends AbstractCode
implements TokensWriter, LogEnabled

This class provides an implementation for the primitive \write.

The Primitive \write

The primitive \write can be used to write some text to an output stream. There are two modes of operation: Either the writing is delayed until the page is shipped or the writing is performed immediately. The default mode of operation is the delayed writing. The prefix \immediate can be used to switch to the immediate writing.

The first argument to \write is the stream. It is usually opened with \openin. If the stream has not been opened this way or has been closed in the mean time then the result is written to the console and the log file.

The second argument is a block of text. It is stored away and expanded just before the writing occurs. This means that the values of control sequences or registers are in fact used with their meaning when the page is shipped in the case of delayed writing.

Syntax

The formal description of this primitive is the following:
    ⟨write⟩
      → ⟨modifier⟩ \write ⟨outfile name⟩ ⟨replacement text⟩

    ⟨modifier⟩
      →
       |  \immediate ⟨modifier⟩  

Examples

 \immediate\openout3= abc.def
 \write3{Hi there!}
 \closeout3 

Version:
$Revision: 4441 $
Author:
Gerd Neugebauer
See Also:
Serialized Form

Field Summary
protected static long serialVersionUID
          The constant serialVersionUID contains the id for serialization.
 
Constructor Summary
Write(CodeToken token)
          Creates a new object.
 
Method Summary
 void enableLogging(java.util.logging.Logger log)
          Setter for the logger.
 void execute(Flags prefix, Context context, TokenSource source, Typesetter typesetter)
          This method takes the first token and executes it. The result is placed on the stack. This operation might have side effects. To execute a token it might be necessary to consume further tokens.
 OutFile write(java.lang.String key, Tokens toks, Context context)
          Immediately write some tokens to a write register.
 
Methods inherited from class org.extex.interpreter.type.AbstractCode
getLocalizer, getName, getToken, isIf, isOuter, readResolve, toString, toText, toText
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

serialVersionUID

protected static final long serialVersionUID
The constant serialVersionUID contains the id for serialization.

See Also:
Constant Field Values
Constructor Detail

Write

public Write(CodeToken token)
Creates a new object.

Parameters:
token - the initial token for the primitive
Method Detail

enableLogging

public void enableLogging(java.util.logging.Logger log)
Setter for the logger.

Specified by:
enableLogging in interface LogEnabled
Parameters:
log - the logger to use
See Also:
LogEnabled.enableLogging( java.util.logging.Logger)

execute

public void execute(Flags prefix,
                    Context context,
                    TokenSource source,
                    Typesetter typesetter)
             throws HelpingException,
                    TypesetterException
This method takes the first token and executes it. The result is placed on the stack. This operation might have side effects. To execute a token it might be necessary to consume further tokens.

Specified by:
execute in interface Code
Overrides:
execute in class AbstractCode
Parameters:
prefix - the prefix controlling the execution
context - the interpreter context
source - the token source
typesetter - the typesetter
Throws:
HelpingException - in case of an error
TypesetterException - in case of an error in the typesetter
See Also:
AbstractCode.execute( org.extex.interpreter.Flags, org.extex.interpreter.context.Context, org.extex.interpreter.TokenSource, org.extex.typesetter.Typesetter)

write

public OutFile write(java.lang.String key,
                     Tokens toks,
                     Context context)
              throws HelpingException
Immediately write some tokens to a write register.

Specified by:
write in interface TokensWriter
Parameters:
key - the name (number) of the write register
toks - the tokens to write
context - the processing context
Returns:
the output file on which the writing has been performed; or null
Throws:
HelpingException - in case of another error
See Also:
TokensWriter.write(java.lang.String, org.extex.scanner.type.tokens.Tokens, org.extex.interpreter.context.Context)