You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by pa...@apache.org on 2015/06/10 18:24:29 UTC

[4/4] incubator-groovy git commit: Remove latex files under src/latex: They are supposed to contain the language spec, but contain only minimal content and have not been updated since 2007.

Remove latex files under src/latex: They are supposed to contain the language spec, but contain only minimal content and have not been updated since 2007.

as discussed on the mailing list: https://mail-archives.apache.org/mod_mbox/incubator-groovy-dev/201506.mbox/%3C55767587.7090609%40gmx.net%3E


Project: http://git-wip-us.apache.org/repos/asf/incubator-groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-groovy/commit/73b5de34
Tree: http://git-wip-us.apache.org/repos/asf/incubator-groovy/tree/73b5de34
Diff: http://git-wip-us.apache.org/repos/asf/incubator-groovy/diff/73b5de34

Branch: refs/heads/master
Commit: 73b5de34ffb49aa33ea2c8a72d86fd16ead16e5a
Parents: de59652
Author: pascalschumacher <pa...@gmx.net>
Authored: Wed Jun 10 18:24:02 2015 +0200
Committer: pascalschumacher <pa...@gmx.net>
Committed: Wed Jun 10 18:24:02 2015 +0200

----------------------------------------------------------------------
 src/latex/ref/README.txt                |   16 -
 src/latex/ref/groovy-reference-card.tex |  541 ----
 src/latex/ref/one-groovy-logo.eps       | 4075 --------------------------
 src/latex/ref/one-groovy-logo.mps       | 1681 -----------
 src/latex/spec/colophon.tex             |   26 -
 src/latex/spec/expressions.tex          |   17 -
 src/latex/spec/groovy-lang-spec.tex     |  176 --
 src/latex/spec/keywords.tex             |   18 -
 src/latex/spec/operators.tex            |   22 -
 src/latex/spec/preface.tex              |   18 -
 src/latex/spec/statements.tex           |   17 -
 11 files changed, 6607 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-groovy/blob/73b5de34/src/latex/ref/README.txt
----------------------------------------------------------------------
diff --git a/src/latex/ref/README.txt b/src/latex/ref/README.txt
deleted file mode 100644
index a4158b1..0000000
--- a/src/latex/ref/README.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-# purpose:
-#  to create a PDF file from latex source
-
-latex groovy-reference-card.tex
-dvips -Ppdf -t landscape groovy-reference-card.dvi
-ps2pdf groovy-reference-card.ps
-
-# or
-
-pdflatex groovy-reference-card.tex
-
-
-# p.s. best for debugging use...
-#   latex $1.tex; xdvi $1.dvi
-# or
-#  http://www.uoregon.edu/~koch/texshop/texshop.html

http://git-wip-us.apache.org/repos/asf/incubator-groovy/blob/73b5de34/src/latex/ref/groovy-reference-card.tex
----------------------------------------------------------------------
diff --git a/src/latex/ref/groovy-reference-card.tex b/src/latex/ref/groovy-reference-card.tex
deleted file mode 100644
index bee0447..0000000
--- a/src/latex/ref/groovy-reference-card.tex
+++ /dev/null
@@ -1,541 +0,0 @@
-% Licensed to the Apache Software Foundation (ASF) under one or more
-% contributor license agreements.  See the NOTICE file distributed with
-% this work for additional information regarding copyright ownership.
-% The ASF licenses this file to You under the Apache License, Version 2.0
-% (the "License"); you may not use this file except in compliance with
-% the License.  You may obtain a copy of the License at
-%
-%     http://www.apache.org/licenses/LICENSE-2.0
-%
-% Unless required by applicable law or agreed to in writing, software
-% distributed under the License is distributed on an "AS IS" BASIS,
-% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-% See the License for the specific language governing permissions and
-% limitations under the License.
-
-\documentclass[10pt, landscape]{article}
-\usepackage{multicol}
-\usepackage{graphics}
-
-% turn off header and footer
-\pagestyle{empty}
-
-\setlength{\textheight}{7.5 in}
-\setlength{\textwidth}{11.2 in}
-%\setlength{\hoffset}{-2 in}
-%\setlength{\voffset}{-1 in}
-%\setlength{\footskip}{12 pt}
-\setlength{\oddsidemargin}{-0.74 in}
-\setlength{\evensidemargin}{0.5 in}
-\setlength{\topmargin}{-0.75 in}
-\setlength{\headheight}{0 in}
-\setlength{\headsep}{0 in}
-
-
-\makeatletter
-\renewcommand{\section}{\@startsection{section}{1}{0mm}%
-                                {-1ex plus -.5ex minus -.2ex}%
-                                {0.5ex plus .2ex}%x
-                                {\normalfont\large\bfseries}}
-\renewcommand{\subsection}{\@startsection{subsection}{2}{0mm}%
-                                {-1explus -.5ex minus -.2ex}%
-                                {0.5ex plus .2ex}%
-                                {\normalfont\normalsize\bfseries}}
-\renewcommand\subsubsection{\@startsection{subsubsection}{3}{0mm}%
-                                {-1ex plus -.5ex minus -.2ex}%
-                                {1ex plus .2ex}%
-                                {\normalfont\small\bfseries}}
-\makeatother
-
-% Don't print section numbers
-\setcounter{secnumdepth}{0}
-
-
-\setlength{\columnsep}{0.5 in}
-%\setlength{\columnseprule}{0.4 pt}
-\setlength{\parindent}{0pt}
-\setlength{\parskip}{0pt plus 0.5ex}
-
-
-% -------------------------
-
-\begin{document}
-\raggedright
-\footnotesize
-
-
-
-% -- tabular, good for html output
-\newcommand{\keywordSummaryHeader}[1]{\begin{tabular}{ll} #1 \end{tabular}}
-\newcommand{\keywordSummary}[2]{{\bf #1} & #2 \\}
-
-\newcommand{\operatorSummaryHeader}[1]{\begin{tabular}{ll} #1 \end{tabular}}
-\newcommand{\operatorSummary}[2]{ #1 & {\bf #2} \\}
-%\newcommand{\methodDetailHeader}[1]{\begin{tabular}{rll} #1 \end{tabular}}
-%\newcommand{\methodDetail}[3]{#1 & #2 & #3 \\}
-
-% -- tabbing, good for pdf output
-%\newcommand{\keywordSummaryHeader}[1]{\begin{tabbing} jez \= jez-repeated-for-tab-settings-only \kill #1 \end{tabbing}}
-%\newcommand{\keywordSummary}[2]{#1 \\ \> #2 \\}
-
-\newcommand{\methodDetailHeader}[1]{\begin{tabbing} jezje \= jez-repeated-for-tab-settings-only \kill #1 \end{tabbing}}
-\newcommand{\methodDetail}[4]{#1\>{\bf #2}#3\\{\scriptsize #4}\\}
-
-\newcommand{\methodSummaryHeader}[1]{\begin{tabbing} jezj \= jez-repeated-for-tab-settings-only \kill #1 \end{tabbing}}
-\newcommand{\methodSummary}[4]{#1\>{\bf #2}#3\\}
-
-\newcommand{\toolDetailHeader}[1]{\begin{tabbing} je \= jez-repeated-for-tab-settings-only \kill #1 \end{tabbing}}
-\newcommand{\toolDetail}[4]{#1\>{\bf #2}#3\\{\scriptsize #4}\\}
-
-
-
-
-\newcommand{\head}[1]{{\large\textbf{#1}}\\}
-
-\begin{multicols}{3}
-\setlength{\premulticols}{1pt}
-\setlength{\postmulticols}{1pt}
-\setlength{\multicolsep}{1pt}
-\setlength{\columnsep}{2pt}
-
-
-\begin{tabular}{ll}
-\scalebox{0.35}{\includegraphics{one-groovy-logo.mps}}  &   {\large\textbf{Groovy}}      \\
-                                                        &   {\large\textbf{Reference}}   \\
-                                                        &   {\large\textbf{Summary}}
-\end{tabular}
-
-GROOVY-1.0
-
-{\em Fourth Edition\/} (May 2007)
-
-\vskip 0.05 in
-Italics are used, where possible, to show differences to Java
-\vskip 0.15 in
-
-\section{Keywords}
-\subsection{Grammar}
-\keywordSummaryHeader{
-\keywordSummary{{\em as}        }{   import {\em type\/} as {\em id\/}}
-\keywordSummary{                }{   {\em expr\/} as {\em type\/}}
-\keywordSummary{assert          }{   assert {\em expr expr?\/}}
-\keywordSummary{break           }{   break}
-\keywordSummary{case            }{   switch {\em expr\/} case {\em expr stmt*\/}}
-\keywordSummary{catch           }{   try {\em stmt*\/} catch {\em type id stmt*\/}}
-\keywordSummary{class           }{   {\em mod*\/} class {\em id\/}}
-\keywordSummary{continue        }{   continue}
-\keywordSummary{{\em def}       }{   def {\em methodDeclaration\/}}
-\keywordSummary{                }{   def {\em variableDeclaration\/}}
-\keywordSummary{default         }{   switch {\em expr\/} case default{\em stmt*\/} }
-\keywordSummary{else            }{   if {\em expr stmt*\/} else if {\em expr stmt*\/}}
-% todo - enum
-\keywordSummary{extends         }{   {\em mod*\/} class {\em id\/} extends {\em type\/}}
-% todo - syntax supports "generic" extends, but has no effect in groovy 1.0
-\keywordSummary{finally         }{   try {\em stmt*} finally {\em stmt*}}
-%\keywordSummary{for             }{   for {\em expr*};{\em expr};{\em expr} {\em stmt*\/}}
-\keywordSummary{{\em for}       }{   for {\em id\/} in {\em id stmt*\/}}
-\keywordSummary{if              }{   if {\em expr stmt*\/} else if {\em expr stmt*\/}}
-\keywordSummary{{\em in}        }{   for {\em id\/} in {\em id stmt*\/}}
-\keywordSummary{                }{   if {\em id\/} in {\em collection stmt*\/}}
-\keywordSummary{implements      }{   {\em mod*\/} class {\em id\/} implements {\em type*}}
-\keywordSummary{import          }{   import {\em type\/}}
-\keywordSummary{instanceof      }{   {\em expr\/} instanceof {\em type}}
-\keywordSummary{interface       }{   {\em mod*\/} interface {\em id\/}}
-%\keywordSummary{{\em mixin}     }{   {\em mod*\/} mixin {\em id\/}}
-\keywordSummary{new             }{   new {\em type\/} }
-\keywordSummary{package         }{   package {\em id\/}}
-\keywordSummary{return          }{   return {\em expr?/} }
-% not sure if 'super' and 'this' are worth including here?
-\keywordSummary{switch          }{   switch {\em expr\/} case {\em expr stmt*\/} }
-\keywordSummary{throw           }{   throw {\em expr\/} }
-\keywordSummary{throws          }{   {\em methodDeclaration} throws {\em type\/} }
-\keywordSummary{try             }{   try {\em stmt*\/} catch {\em type id stmt*\/}}
-\keywordSummary{while           }{   while {\em expr\/} {\em stmt*\/}}
-% quiet on statics, static imports etc (if they want to use statics, make em look! bwha ha ha)
-}
-
-
-\subsection{Modifiers}
-\keywordSummaryHeader{
-\keywordSummary{abstract        }{   abstract class {\em id\/}}
-\keywordSummary{Annotations     }{   @Annotation}
-\keywordSummary{Annotations     }{   @Annotation(x = 3, y = 5)}
-\keywordSummary{final           }{   final int {\em id\/} = 42}
-%todo - native
-\keywordSummary{private         }{   private String mySecret}
-\keywordSummary{protected       }{   protected List foo}
-\keywordSummary{public          }{   public Date newYear}
-\keywordSummary{static          }{   static int {\em id\/}}
-\keywordSummary{strictfp        }{   strictfp float {\em id\/}}
-\keywordSummary{synchronized    }{   synchronized myMethod()}
-\keywordSummary{transient       }{   transient long distance}
-\keywordSummary{volatile        }{   volatile int diamond}
-}
-
-\subsection{Lists and Maps}
-\keywordSummaryHeader{
-\keywordSummary{                }{   {\em type\/}[] {\em id\/} = new {\em type\/}[{\em size\/}]}
-\keywordSummary{                }{   List people = [fred, barney] }
-\keywordSummary{                }{   Map wilma = [friend:betty, age:unknown] }
-}
-\subsection{Operators}
-\operatorSummaryHeader{
-\operatorSummary{ {\em id\/}                =                                       {\em expr\/} }{ assign}
-\operatorSummary{ {\em expr\/}              \&                                      {\em expr\/} }{ bitwise-and}
-\operatorSummary{ {\em id\/}                \&=                                     {\em expr\/} }{ bitwise-and assign}
-\operatorSummary{ {\em id\/} =              ~                                       {\em expr\/} }{ bitwise-not} %todo - doesn't render
-\operatorSummary{ {\em expr\/}              \textbar\/                              {\em expr\/} }{ bitwise-or}
-\operatorSummary{ {\em id\/}                \textbar\/=                             {\em expr\/} }{ bitwise-or assign}
-\operatorSummary{ {\em expr\/}              \textgreater\textgreater\textgreater\/  {\em expr\/} }{ bitwise-shift-right}
-\operatorSummary{ {\em id\/}                \textgreater\textgreater\textgreater=\/ {\em expr\/} }{ bitwise-shift-right assign}
-%\operatorSummary{ {\em expr\/}              \wedge                                  {\em expr\/} }{ bitwise-exclusive-or}
-%\operatorSummary{ {\em expr\/}              \wedge\/=                                  {\em expr\/} }{ bitwise-exclusive-or assign}
-\operatorSummary{ {\em expr\/}              \textless=\textgreater\/                {\em expr\/} }{ {\em compare to\/}}
-\operatorSummary{                           $--$                                    {\em id\/}   }{ pre-decrement}
-\operatorSummary{ {\em expr\/}              $/$                                     {\em expr\/} }{ division}
-\operatorSummary{ {\em id\/}                $/=$                                    {\em expr\/} }{ division assign}
-\operatorSummary{ {\em expr\/}              ==                                      {\em expr\/} }{ equal}
-\operatorSummary{ {\em expr\/}              $>=$                                    {\em expr\/} }{ greater or equal}
-\operatorSummary{ {\em expr\/}              $>$                                     {\em expr\/} }{ greater than}
-\operatorSummary{                           $++$                                    {\em id\/}   }{ pre-increment}
-\operatorSummary{ {\em expr\/}              \&\&                                    {\em expr\/} }{ logical-and}
-\operatorSummary{ {\em expr\/}              $<=$                                    {\em expr\/} }{ less or equal}
-\operatorSummary{                           !                                       {\em expr\/} }{ logical-not}
-\operatorSummary{ {\em expr\/}              \textbar\textbar\/                      {\em expr\/} }{ logical-or}
-\operatorSummary{ {\em expr\/}              \textless\/                             {\em expr\/} }{ less}
-\operatorSummary{ {\em expr\/}              .\&                                     {\em expr\/} }{ {\em member-pointer\/}}
-\operatorSummary{ {\em expr\/}              -                                       {\em expr\/} }{ minus}
-\operatorSummary{ {\em id\/}                -=                                      {\em expr\/} }{ minus assign}
-\operatorSummary{ {\em expr\/}              \%                                      {\em expr\/} }{ modulus}
-\operatorSummary{ {\em id\/}                \%=                                     {\em expr\/} }{ modulus assign}
-\operatorSummary{ {\em expr\/}              !=                                      {\em expr\/} }{ not equal}
-\operatorSummary{ {\em expr\/}              ?.                                      {\em expr\/} }{ {\em optional dot\/}}
-\operatorSummary{ {\em expr\/}              +                                       {\em expr\/} }{ plus}
-\operatorSummary{ {\em id\/}                +=                                      {\em expr\/} }{ plus assign}
-\operatorSummary{ {\em id\/}                $++$                                                 }{ post-decrement}
-\operatorSummary{ {\em id\/}                $++$                                                 }{ post-increment}
-}
-\subsection{Operators2}
-\operatorSummaryHeader{
-\operatorSummary{ {\em expr\/}              ?                        {\em expr\/} : {\em expr\/} }{ ternary if/else}
-\operatorSummary{ {\em expr\/}              ..\textless                             {\em expr\/} }{ {\em range exclusive\/}}
-\operatorSummary{ {\em expr\/}              ..                                      {\em expr\/} }{ {\em range inclusive\/}}
-\operatorSummary{                           /{\em regex\/}/                                      }{ {\em regex literal\/}}
-\operatorSummary{ {\em id\/}                =~                                    /{\em regex\/}/}{ {\em regex find\/}} %todo - tilde doesn't render
-\operatorSummary{ {\em id\/}                ==~                                   /{\em regex\/}/}{ {\em regex match\/}} %todo - tilde doesn't render
-\operatorSummary{ {\em expr\/}              .@                                     {\em expr\/} }{ {\em select slot\/}}
-\operatorSummary{ {\em expr\/}              \textless\textless\/                   {\em expr\/} }{ shift-left}
-\operatorSummary{ {\em expr\/}              \textless\textless=\/                  {\em expr\/} }{ shift-left-assign}
-\operatorSummary{                           *                                      {\em cltn\/} }{ {\em spread arg\/}}
-\operatorSummary{ {\em cltn\/}              *.                                     {\em expr\/} }{ {\em spread dot\/}}
-\operatorSummary{                           *:                                     {\em map \/} }{ {\em spread-map arg\/}}
-\operatorSummary{ {\em expr\/}              \textgreater\textgreater\/             {\em expr\/} }{ shift-right}
-\operatorSummary{ {\em expr\/}              \textgreater\textgreater=\/            {\em expr\/} }{ shift-right-assign}
-\operatorSummary{ {\em expr\/}              *                                      {\em expr\/} }{ multiply}
-\operatorSummary{ {\em id\/}                *=                                     {\em expr\/} }{ multiply assign}
-\operatorSummary{ {\em expr\/}              **                                     {\em expr\/} }{ to-the-power-of}
-\operatorSummary{ {\em id\/}                **=                                    {\em expr\/} }{ to-the-power-of assign}
-\operatorSummary{                           `{\em string\/}'                                    }{ {\em string literal\/}}
-\operatorSummary{                           ``{\em string\/}"                                   }{ string literal}
-\operatorSummary{                           ` ` `{\em string\/}' ' '                            }{ {\em multi-line-string literal\/}}
-\operatorSummary{                           ``````{\em string\/}"""                             }{ {\em multi-line-string literal\/}} 
-\operatorSummary{                           $-$                                    {\em id\/}   }{ unary-minus}
-\operatorSummary{                           $+$                                    {\em id\/}   }{ unary-plus}
-\operatorSummary{ {\em type\/}              ...                                    {\em id\/}   }{ variable parameters}
-
-%todo - perhaps put index operators here, i.e. foo[1]
-
-}
-% not supported in groovy yet
-% "public @interface Foo{}"
-% "public @interface Foo{int bar() default 123}"
-
-
-% \subsection{Types}
-% \keywordSummaryHeader{
-% \keywordSummary{boolean         }{   true {\em or\/} false}
-% \keywordSummary{byte            }{   -128 to 127}
-% \keywordSummary{char            }{   u0000 to uFFFF }
-% \keywordSummary{double          }{   $\pm 4.9E^{-324}$ to $\pm 1.8E^{+308}$}
-% \keywordSummary{float           }{   $\pm 1.4E^{-45}$ to $\pm 3.4E^{+38}$}
-% \keywordSummary{int             }{   -2,147,483,648 to 2,147,483,647}
-% \keywordSummary{long            }{   -9,223,372,036,854,775,808 }
-% \keywordSummary{                }{   to 9,223,372,036,854,775,807}
-% \keywordSummary{short           }{   -32,768 to 32,767}
-% \keywordSummary{void            }{   }
-% todo - exponents e.g. 1.2e-10
-% todo - hex digits e.g. 0xCaFe
-% todo - big decimal/int literals e.g. 9.8g and 9g
-% todo - float and double literals e.g. 34.4f and 53.5d
-% todo - long literals e.g. 12l
-% }
-
-\vskip 0.5 in
-
-\section{Groovy JDK}
-% based upon DefaultGroovyMethods r1.114
-\subsection{Collections and properties}
-{\scriptsize {\em Note: cltn in this sense {\em can\/} include lists, sets, matchers, strings, charSeqs and arrays\/}}
-
-\methodDetailHeader{
-% a.getAt(b) and a.putAt(b,c) are equiv to a[b] and a[b] = c respectiv. 
-%\methodDetail{ cltn. }{ getAt}{(index\textbar indices\textbar range) }{ obtains objects at specified {\em indicies\/} or in {\em range\/}}
-%\methodDetail{ cltn. }{ getAt}{(property)                         }{ obtains {\em property\/} from each object in collection}
-%\methodDetail{  obj. }{ putAt}{(idx, value)                       }{ put {\em value\/} at position {\em idx\/} } 
-%\methodDetail{  obj. }{ putAt}{(propertyName, value)              }{ put {\em value\/} in the {\em propertyName\/} }
-\methodDetail{  cltn }{[}{index\textbar indices\textbar range\textbar property {\bf ]}}{ obtains objects at specified location}
-\methodDetail{   obj }{[}{index\textbar property{\bf ] =} value    }{ put {\em value\/} at location } 
-\methodDetail{  cltn }{ \textless\textless}{ obj                  }{ append obj to collection}
-\methodSummary{  cltn }{ $+$}{ obj                                   }{ append obj to collection}
-%\methodDetail{  cltn }{ $+$}{ cltn                                  }{ append collection to collection}
-\methodSummary{  list }{ $-$}{ cltn                                  }{ remove items from list}
-\methodDetail{  cltn }{ $*$}{ num                                   }{ repeat items in collection a number of times}
-\methodDetail{       }{  }{                                       }{ }
-% no count() or getAt(range) for matchers!
-\methodDetail{  obj. }{ getProperties}{()                         }{ obtain Map of properties on {\em obj\/}}
-\methodDetail{  obj. }{ getMetaPropertyValues}{()                 }{ obtain List of meta properties on {\em obj\/}}
-\methodDetail{ cltn. }{ count}{(obj) *                            }{ counts number of occurances of {\em obj\/} in collection}
-\methodSummary{  map. }{ get}{(key, defaultValue) *                }{ try to get {\em key \/} from map, otherwise put {\em defaultValue\/} in map and return }
-\methodSummary{ cltn. }{ size}{() *                                }{ returns size of an array or string }
-\methodDetail{       }{   }{                                      }{ }
-\methodDetail{ cltn. }{ collect}{() \{closure\} *                 }{ new collection of {\em closure \/} transformed items }
-\methodDetail{  obj. }{ each}{() \{closure\} *                    }{ iterate through object applying {\em closure\/} }
-\methodDetail{  obj. }{ eachWithIndex}{() \{closure\}             }{ iterate through object with a counter applying {\em closure\/} }
-\methodDetail{  obj. }{ find}{() \{closure\} *                    }{ find first item picked by {\em closure \/} condition }
-\methodDetail{  obj. }{ findAll}{() \{closure\} *                 }{ returns all items picked by {\em closure\/} condition }
-\methodDetail{  obj. }{ findIndexOf}{() \{closure\}               }{ return first index that matches condition {\em closure\/} }
-\methodSummary{  obj. }{ grep}{(regex\textbar range\textbar etc..) *               }{ returns all matching items }
-\methodDetail{ cltn. }{ inject}{(value) \{closure\}               }{ returns closure( closure( closure(value,item0) ,item1) ,item2) ... }
-\methodDetail{ cltn. }{ max}{([comparator]) \{closure\} *         }{ returns the maximum value found in the collection }
-\methodDetail{ cltn. }{ min}{([comparator]) \{closure\} *         }{ returns the minimum value found in the collection }
-\methodDetail{ list. }{ reverseEach}{() \{closure\}               }{ iterate backwards through list applying {\em closure\/}}
-\methodDetail{ cltn. }{ sort}{([comparator]) *                    }{ sorts collection into a list, optionally using a {\em comparator\/}}
-\methodDetail{ cltn. }{ sort}{() \{closure\} *                    }{ sorts collection into a list using closure as comparator}
-\methodDetail{       }{     }{                                    }{ }
-\methodSummary{ cltn. }{ asImmutable}{()                           }{ create an immutable collection }
-\methodSummary{ cltn. }{ asSynchronized}{()                        }{ create a synchronized collection }
-\methodSummary{ list. }{ flatten}{()                               }{ flattens list }
-\methodDetail{ list. }{ intersect}{(cltn)                         }{ returns intersection of list and collection }
-\methodDetail{ cltn. }{ join}{(separator) *                       }{ concatenate all the elements of {\em cltn\/} into a string }
-\methodDetail{ list. }{ pop}{() *                                   }{ remove and return last item from list }
-%todo: what happened to push() :-)
-\methodSummary{ cltn. }{ reverse}{()                               }{ reverses order of collection or string }
-\methodDetail{  map. }{ subMap}{(keys)                            }{ returns a map of the given keys }
-\methodSummary{ cltn. }{ toList}{()                                }{ turns any collection into a list }
-}
-
-\vskip 0.75 in
-
-\subsection{Strings}
-\methodDetailHeader{
-\methodDetail{  str }{ $++$}{                                      }{ increment the number at end of string}
-\methodDetail{  str }{ $--$}{                                      }{ reduce the number at end of string}
-\methodSummary{  str }{ $+$}{ obj                                  }{ concatenate {\em str\/} and {\em obj\/} together}
-\methodDetail{  str }{ $-$}{ obj                                   }{ remove the first {\em obj\/} from {\em str\/}}
-%\methodDetailHeader{  num }{ + str                                   }{ concatenate str to the end of num }
-\methodSummary{  str }{ \textless\textless}{ value                }{ }
-%\methodDetail{  strBuff }{ \textless\textless}{ value            }{ }
-%center and centre :-) !!!!
-\methodDetail{ str. }{ padRight}{(size,[padding])                }{ left justifies string padded out to {\em size\/}} 
-\methodDetail{ str. }{ center}{(size, [padding])                 }{ centers a string padded out to {\em size\/}}
-% name change for padLeft?
-\methodDetail{ str. }{ padLeft}{(size,[padding])                 }{ right justifies string padded out to {\em size\/}} 
-\methodDetail{ str. }{ contains}{(str2) *                        }{ true if {\em str} contains {\em str2}}
-\methodDetail{ str. }{ eachMatch}{(regex) \{closure\} *          }{ apply {\em closure\/} to each match of the specified {\em regex\/} }
-%leftshift
-\methodSummary{ str. }{ toCharacter}{()                           }{ }
-\methodSummary{ str. }{ toList}{()                                }{ }
-\methodSummary{ str. }{ toLong}{()                                }{ }
-\methodSummary{ str. }{ toURL}{()                                 }{ }
-\methodSummary{ str. }{ tokenize}{([token]) *                     }{ }
-}
-
-
-\subsection{Input/output}
-%todo: unify method names
-{\scriptsize {\em Note: url in this sense {\em can\/} include urls, files, streams and readers\/}}
-\methodDetailHeader{
-\methodDetail{   dir. }{ eachFile}{() \{closure\}                 }{ apply {\em closure\/} to each file in {\em dir\/}}
-\methodDetail{   dir. }{ eachFileRecurse}{() \{closure\}          }{ apply {\em closure\/} to each file in {\em dir\/} recursively}
-\methodDetail{ }{ }{ }{ }
-\methodSummary{   url. }{ eachByte}{() \{closure\}                 }{ apply {\em closure\/} to each byte in {\em file\/}}
-\methodDetail{    url. }{ eachLine}{() \{closure\}                 }{ apply {\em closure\/} to each line of input}
-%\methodDetail{  file. }{ newInputStream}{()                       }{ obtain Stream to read from {\em file\/}}
-%\methodDetail{  file. }{ newReader}{([charset])                   }{ obtain Reader from {\em file}}
-\methodSummary{  file. }{ readBytes}{()                            }{ read bytes from {\em file\/}}
-\methodDetail{    in. }{ readLine}{()                             }{ read a single, whole line from {\em in\/}}
-\methodDetail{  file. }{ readLines}{()                            }{ obtain List of lines from {\em file}}
-\methodDetail{   url. }{ getText}{([charset])                     }{ fetch all available text from resource }
-\methodDetail{  file. }{ splitEachLine}{(regEx) \{closure\}       }{ read in each line of {\em file\/}, apply {\em closure\/} to data delimited by {\em regEx\/}}
-%\methodDetail{  file. }{ withInputStream}{() \{closure\}          }{ apply {\em closure\/} to a new InputStream on {\em file\/}, then close}
-\methodDetail{   url. }{ withReader}{() \{closure\}               }{ apply {\em closure\/} to {\em in\/}, then close {\em in\/}}
-%\methodDetail{    in. }{ withStream}{() \{closure\}               }{ apply {\em closure\/} to {\em in\/}, then close {\em in\/}}
-\methodDetail{ }{ }{ }{ }
-\methodDetail{    out }{ \textless\textless}{ obj                 }{ append {\em obj\/} to stream, process or socket}
-\methodSummary{  file. }{ append}{(text, [charset])                }{ append {\em text\/} at end of {\em file\/} with {\em charset\/} encoding}
-%\methodSummary{  file. }{ asWritable}{([charset]) *                }{ wrap {\em file\/} as Writable }
-\methodSummary{ bytes. }{ encodeBase64}{()                         }{ wraps {\em file\/} in Writable with contents encoded as Base64}
-\methodSummary{   str. }{ decodeBase64}{()                         }{ unwraps bytes from Base64 encoded {\em str\/}}
-\methodDetail{     in. }{ filterLine}{([out]) \{closure\}            }{ read from {\em in\/} and write each line to {\em out\/} only if {\em closure\/}}
-%\methodDetail{  file. }{ newOutputStream}{()                      }{ obtain Stream to write to {\em file\/}}
-%\methodDetail{  file. }{ newPrintWriter}{([charset])              }{ obtain PrintWriter to {\em file\/}}
-%\methodDetail{  file. }{ newWriter}{([charset],[append])          }{ obtain Writer to {\em file\/}}
-% todo: transformChar(out) could be more in line with eachByte?
-\methodSummary{   in. }{ transformChar}{(out) \{closure\}           }{ read {\em in\/} and apply {\em closure\/} to each character being written {\em out\/}}  
-\methodDetail{   in. }{ transformLine}{(out) \{closure\}          }{ read {\em in\/} and apply {\em closure\/} to each line being written {\em out\/}}  
-\methodSummary{  file. }{ withOutputStream}{() \{closure\}         }{ apply {\em closure\/} to a new OutputStream on {\em file\/}, then close}
-\methodSummary{  file. }{ withPrintWriter}{() \{closure\}          }{ apply {\em closure\/} to a new PrintWriter on {\em file\/}, then close}
-\methodSummary{   out. }{ withStream}{() \{closure\}               }{ apply {\em closure\/} to {\em out\/}, then close {\em out\/}}
-\methodSummary{   skt. }{ withStreams}{() \{closure\}              }{ apply {\em closure\/} to [in,out], then close them}
-\methodSummary{   out. }{ withWriter}{([charset]) \{closure\}      }{ apply {\em closure\/} to {\em out\/} using {\em charset\/}, then close {\em out\/}}
-\methodDetail{  file. }{ withWriterAppend}{(charset) \{closure\}  }{ apply {\em closure\/} to a new appending Writer on {\em file\/}, then close}
-\methodSummary{  file. }{ write}{(text, [charset]) *               }{ write {\em text\/} to {\em file\/} using {\em charset\/}}
-\methodSummary{   out. }{ writeLine}{(line)                        }{ write {\em line\/} and append a newline}
-}
-
-\subsection{Misc}
-\methodDetailHeader{
-\methodSummary{   date }{ $++$}{                                       }{ add one day to the date }
-\methodSummary{   date }{ $--$}{                                       }{ subtract one day from the date }
-\methodSummary{   date }{ $+$}{ days                                   }{ add {\em days\/} to the date }
-\methodSummary{   date }{ $-$}{ days                                   }{ subtract {\em days\/} from the date }
-\methodDetail{   obj. }{ dump}{() *                                }{ returns a detailed dump string of {\em obj\/}}
-\methodDetail{   obj. }{ inspect}{() *                             }{ returns the groovy expression used to create this instance of {\em obj}}
-\methodSummary{   obj. }{ invokeMethod}{(method, args) *             }{ invokes {\em method\/} on {\em obj\/} }
-\methodSummary{   obj. }{ print}{(obj) *                             }{ print an object }
-\methodSummary{   obj. }{ print}{(out) *                             }{ print this object to {\em out} }
-\methodSummary{   obj. }{ println}{(object) *                        }{ print an object and then terminate line }
-\methodSummary{   obj. }{ println}{(out) *                           }{ print this object to {\em out} and then terminate line }
-\methodDetail{   num. }{ step}{(endNum, stepNum) \{closure\}        }{ iterates {\em closure\/} starting at this number, stepping up to {\em endNum} }
-\methodDetail{   num. }{ times}{() \{closure\} *                    }{ iterates {\em closure\/} num times }
-%todo: upTo() instead of upto()
-\methodDetail{   num. }{ upto}{(endNum) \{closure\}                 }{ iterates {\em closure\/} starting at this number, up to {\em endNum} }
-\methodDetail{   obj. }{ use}{(categoryClass) \{closure\} *         }{ attach {\em closure\/} to specified class }
-\methodDetail{   obj. }{ use}{(categoryClassList) \{closure\} *     }{ attach {\em closure\/} to specified classes }
-\methodSummary{    ps. }{ waitForOrKill}{(milliSecs)                 }{ wait for process to finish, or stop after specified {\em milliSecs} }
-\methodSummary{    ps. }{ getText}{()                                }{ }
-%Static methods shown with \em
-\methodSummary{    Thd.}{ {\em start}}{() \{closure\}                      }{ }
-\methodSummary{    Thd.}{ {\em startDaemon}}{() \{closure\}                }{ }
-\methodSummary{    Mtr.}{ {\em getLastMatcher}}{()                         }{ }
-}
-
-
-\section{Groovy Developers Kit}
-\subsection{Groovy SQL}
-%START
-% sql = Sql.newInstance(
-%END
-\methodSummaryHeader{
-%\methodSummary{      }{ newInstance}{(url,[props],[driver]) }
-\methodSummary{      }{ Sql}{(datasource\textbar connection\textbar sql)}{ }
-\methodSummary{      }{ newInstance}{(url,[user],[pass],[driver]) }{ }
-\methodSummary{ sql. }{ call}{(str,[params]) }{ }
-\methodSummary{ sql. }{ eachRow}{(str,[params]) \{closure\}}{ }
-\methodSummary{ sql. }{ execute}{(str,[params]) }{ }
-\methodSummary{ sql. }{ executeUpdate}{(str,[params]) }{ }
-\methodSummary{ sql. }{ close}{() }{ }
-}
-
-\section{Snippets}
-\begin{tabbing} jezjezjezjezjez \= jez-repeated-for-tab-settings-only \kill 
-{\bf Closures}\>
-{\scriptsize implicit/explicit}\\
-\verb+ { println it }+\\
-\verb+ { x, y -> println(x * y) }+\\
-{\bf Dynamic Members}\>
-{\scriptsize }\\
-\verb+ foo.bar.mooky."$randomProperty"+\\
-{\bf Construct and call setters}\>
-{\scriptsize }\\
-\verb+ new Foo(bar:123, mooky:'red')+\\
-{\bf Builder}\>
-{\scriptsize Markup, Node, StreamingMarkup, DOM, }\\
-{\scriptsize Ant, JavaDoc, Swt, JFace, Swing}\\
-\verb+farm = new NodeBuilder().farm(){animal(type:'pig')}+\\
-{\bf GPath}  \>
-{\scriptsize walks the tree}\\
-\verb+farm.animal.collect{it['@type']}.contains('pig')+\\
-\end{tabbing}
-%\section{Sample Groovy Builder}
-%{\scriptsize Builders are provided to construct these tree structures: {\em Markup, Node, StreamingMarkup, DOM, Ant, JavaDoc, Swt, JFace, Swing}}
-%\begin{verbatim}
-%builder = new NodeBuilder()
-%
-%farm = builder.farm(type:'livestock', acres:30) {
-%                 animal(type:'pig')
-%                 animal(type:'sheep')
-%                 tractor(wheelbase:90)
-%}
-%
-%assert farm.animal.collect{it['@type']}.contains('pig')
-%
-%\end{verbatim}
-
-%\section{Sample Groovy code}
-%\begin{verbatim}
-%package com.example
-%
-%import org.example.Cow
-%
-%/**
-% * This is a sample of Groovy
-% */
-%class HighlandCow extends Cow {
-%  
-%  void mooAtPeople() {
-%    sql = Sql.newInstance("jdbc:foo:bar")
-%    sql.eachRow("select * from PERSON") {
-%      println("Och-Aye ${it.firstname}")
-%    }
-%  }
-%}        
-%\end{verbatim}
-
-\section{Tools}
-\subsection{Ant tasks}
-\begin{verbatim}
-<taskdef
-    name="groovy" 
-    classname="org.codehaus.groovy.ant.Groovy"/>
-<groovy>ant.mkdir(dir:"myDir")</groovy>
-
-<taskdef
-    name="groovyc" 
-    classname="org.codehaus.groovy.ant.Groovyc"/>
-<groovyc 
-    destdir="${build.classes.dir}" 
-    srcdir="${src.dir}"/>
-
-<taskdef
-    name="groovydoc"
-    classname="org.codehaus.groovy.ant.Groovydoc"/>
-<groovydoc
-    sourcepath="${src.dir}" 
-    destdir="${javadoc.dir}" 
-    packagenames="${javadoc.packages}"/>
-\end{verbatim}
-\subsection{Command Line Tools}                                      
-\toolDetailHeader{
-\toolDetail{ \textgreater }{ groovy        }{ [options] Telson.groovy [args] }{ interpret and execute specified groovy script }
-\toolDetail{ \textgreater }{ groovyc       }{ [options] Darv.groovy          }{ compiles specified groovy script }
-\toolDetail{ \textgreater }{ groovysh      }{                                }{ begins an interactive groovy session }
-\toolDetail{ \textgreater }{ groovyConsole }{                                }{ begins a GUI based groovy session }
-\toolDetail{ \textgreater }{ java2groovy   }{ Astra.java                     }{ rough source code translation of Java into Groovy}
-
-%\toolDetail{ \textgreater }{ grok   }{                  }{ groovy javadoc }
-}
-
-\rule{0.3\linewidth}{0.25pt}
-\scriptsize
-
-Copyright \copyright\ 2004, 2007 Jeremy Rayner 
-\textless\/groovy@ross-rayner.com\textgreater\/\/http://javanicus.com/blog2
-
-$Revision$
-$Date$
-
-
-
-\end{multicols}
-\end{document}