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/976f2e24 Tree: http://git-wip-us.apache.org/repos/asf/incubator-groovy/tree/976f2e24 Diff: http://git-wip-us.apache.org/repos/asf/incubator-groovy/diff/976f2e24 Branch: refs/heads/GROOVY_2_4_X Commit: 976f2e24744237759dd05c5d69a26b3c8fe6714e Parents: 5021a80 Author: pascalschumacher <pascalschumac...@gmx.net> Authored: Wed Jun 10 18:24:02 2015 +0200 Committer: pascalschumacher <pascalschumac...@gmx.net> Committed: Wed Jun 10 18:24:53 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/976f2e24/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/976f2e24/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\/gro...@ross-rayner.com\textgreater\/\/http://javanicus.com/blog2 - -$Revision$ -$Date$ - - - -\end{multicols} -\end{document}