Browse Source

new functions "rename" and "tmpname".
new option 'q' for function "format".
new example, about vararg.

Roberto Ierusalimschy 29 years ago
parent
commit
f86c1367db
1 changed files with 46 additions and 8 deletions
  1. 46 8
      manual.tex

+ 46 - 8
manual.tex

@@ -1,4 +1,4 @@
-% $Id: manual.tex,v 1.10 1996/02/12 18:32:09 roberto Exp roberto $
+% $Id: manual.tex,v 1.11 1996/02/16 13:12:12 roberto Exp roberto $
 
 \documentstyle[A4,11pt,bnf]{article}
 
@@ -34,7 +34,7 @@ Waldemar Celes Filho
 \tecgraf\ --- Departamento de Inform\'atica --- PUC-Rio
 }
 
-\date{\small \verb$Date: 1996/02/12 18:32:09 $}
+\date{\small \verb$Date: 1996/02/16 13:12:12 $}
 
 \maketitle
 
@@ -1269,12 +1269,19 @@ following the description given in its first argument (which must be a string).
 The format string follows the same rules as the \verb'printf' family of
 standard C functions.
 The only differencies are that the options/modifiers
- \verb'*', \verb'l', \verb'L', \verb'n', \verb'p',
- and \verb'h' are not supported.
-The options \verb'c',  \verb'd',  \verb'i', \verb'o', \verb'u', 
-\verb'x',  \verb'X', \verb'e',  \verb'E', \verb'f', and \verb'g' all
+\verb'*', \verb'l', \verb'L', \verb'n', \verb'p',
+and \verb'h' are not supported,
+and there is an extra option, \verb'q'.
+This option formats a string in a form suitable to be safely read
+back by the Lua interpreter.
+The string is written between double quotes,
+and all double quotes, returns and backslashes in the string
+are correctly escaped when written.
+
+The options \verb'c', \verb'd', \verb'E', \verb'e', \verb'f',
+\verb'g' \verb'i', \verb'o', \verb'u', \verb'X', and \verb'x' all
 expect a number argument,
-while \verb's' expects a string.
+while \verb'q' and \verb's' expects a string.
 
 
 \subsection{Mathematical Functions} \label{mathlib}
@@ -1360,6 +1367,15 @@ This function returns 2 if the file already exists,
 
 This function deletes the file with the given name.
 
+\subsubsection*{{\tt rename (name1, name2)}}\Deffunc{rename}
+
+This function renames file \verb'name1' to \verb'name2'.
+
+\subsubsection*{{\tt tmpname ()}}\Deffunc{tmpname}
+
+This function returns a string with a file name that can safely
+be used for a temporary file.
+
 \subsubsection*{{\tt read ([format])}}\Deffunc{read}
 
 This function returns a value read from the current input.
@@ -1698,6 +1714,28 @@ end
 \end{verbatim}
 
 
+\subsection{\Index{Variable number of arguments}}
+Lua does not provide any explicit mechanism to deal with
+variable number of arguments.
+However, one can use table constructors to simulate this mechanism.
+As an example, suppose a function to concatenate all its arguments.
+It could be written like 
+\begin{verbatim}
+function concat (o)
+  local i = 1
+  local s = ''
+  while o[i] do
+    s = s .. o[i]
+    i = i+1
+  end
+  return s
+end
+\end{verbatim}
+To call it, one uses a table constructor to join all arguments:
+\begin{verbatim}
+  x = concat{"hello ", "john", " and ", "mary"}
+\end{verbatim}
+
 \subsection{\Index{Persistence}}
 Because of its reflexive facilities,
 persistence in Lua can be achieved within the language.
@@ -1829,7 +1867,7 @@ void Index (void)
 \end{figure}
 This code must be registered with:
 \begin{verbatim}
-  lua_pushliteral("parent");
+  lua_pushstring("parent");
   lockedParentName = lua_lock();
   lua_pushobject(lua_setfallback("index", Index));
   lockedOldIndex = lua_lock();