Revision 44924

View differences:

trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/date/TimestampFunction.java
13 13
    public TimestampFunction() {
14 14
        super("Date", FUNCTION_TIMESTAMP,Range.is(1),
15 15
            "Returns a time stamp from the arguments",
16
            FUNCTION_TIMESTAMP+"({{timestamp}})",
16
            FUNCTION_TIMESTAMP+" {{timestamp}} ",
17 17
            new String[]{
18 18
                "timestamp - a string with a date/time"
19 19
            },
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/date/ExtractFunction.java
153 153
            + "    EXTRACT(YEAR FROM TIMESTAMP '2001-02-16 20:38:40');\n"
154 154
            + "    Result: 2001\n"
155 155
            + "",
156
            FUNCTION_EXTRACT + "({{field}}, date)",
156
            "EXTRACT( {{time_field}} FROM time_expression)",
157 157
            new String[]{
158 158
              "field - ",
159 159
              "date - a string with a date"
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/date/DateFunction.java
13 13
    public DateFunction() {
14 14
        super("Date", FUNCTION_DATE,Range.is(1),
15 15
            "Returns a date from the arguments",
16
            FUNCTION_DATE+"({{date}})",
16
            FUNCTION_DATE+" {{date}} ",
17 17
            new String[]{
18 18
                "date - a string with a date"
19 19
            },
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/image/ImageRotateFunction.java
15 15
                    "image",
16 16
                    "angle"
17 17
                },
18
                "Image",
18
                "SimpleImage",
19 19
                false
20 20
        );
21 21
    }
......
34 34
        }
35 35
        int angle = this.getInt(args, 1);
36 36
        image = image.rotate(angle);
37
        return image.getBufferedImage();
37
        return image;
38 38

  
39 39
    }
40 40

  
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/image/ImageResizeFunction.java
18 18
                    "width",
19 19
                    "height"
20 20
                },
21
                "Image",
21
                "SimpleImage",
22 22
                false
23 23
        );
24 24
    }
......
52 52
                        "The IMAGERESIZE function has 2 arguments, the image and a scale factor, or 3, the image, width and height"
53 53
                );
54 54
        }
55
        return image.getBufferedImage();
55
        return image;
56 56
    }
57 57

  
58 58
}
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/image/SimpleImage.java
8 8
import java.io.ByteArrayInputStream;
9 9
import java.io.File;
10 10
import java.io.IOException;
11
import java.io.OutputStream;
11 12
import java.net.URL;
13
import java.util.logging.Level;
14
import java.util.logging.Logger;
12 15
import javax.imageio.ImageIO;
13 16
import org.apache.commons.codec.DecoderException;
14 17
import org.apache.commons.codec.binary.Base64;
......
80 83
        return theImage;
81 84
    }
82 85

  
86
    public void save(File output, String formatName) throws IOException {
87
        ImageIO.write(this.getBufferedImage(), formatName, output);
88
    }
89
    
90
    public void save(OutputStream output, String formatName) throws IOException {
91
        ImageIO.write(this.getBufferedImage(), formatName, output);
92
    }
93
    
83 94
    public int getWidth() {
84 95
        return this.image.getWidth();
85 96
    }
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/image/ImageHorizontalflipFunction.java
14 14
                new String[]{
15 15
                    "image"
16 16
                },
17
                "Image",
17
                "SimpleImage",
18 18
                false
19 19
        );
20 20
    }
......
32 32
            return null;
33 33
        }
34 34
        image = image.horizontalflip();
35
        return image.getBufferedImage();
35
        return image;
36 36
    }
37 37

  
38 38
}
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/image/ImageVerticalflipFunction.java
14 14
                new String[]{
15 15
                    "image"
16 16
                },
17
                "Image",
17
                "SimpleImage",
18 18
                false
19 19
        );
20 20
    }
......
32 32
            return null;
33 33
        }
34 34
        image = image.verticalflip();
35
        return image.getBufferedImage();
35
        return image;
36 36
    }
37 37

  
38 38
}
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/image/ImageWriteFunction.java
1
package org.gvsig.expressionevaluator.impl.function.image;
2

  
3
import java.io.File;
4
import java.io.IOException;
5
import java.io.OutputStream;
6
import java.util.Objects;
7
import java.util.logging.Level;
8
import java.util.logging.Logger;
9
import org.apache.commons.lang3.Range;
10
import org.gvsig.expressionevaluator.ExpressionRuntimeException;
11
import org.gvsig.expressionevaluator.Interpreter;
12
import org.gvsig.expressionevaluator.impl.function.programming.FileFunction;
13
import org.gvsig.expressionevaluator.spi.AbstractFunction;
14

  
15
public class ImageWriteFunction extends AbstractFunction {
16

  
17
    public ImageWriteFunction() {
18
        super(
19
                "Image", "IMAGEWRITE", Range.is(2),
20
                "Read an image from a data source and return it as a 'Java BufferedImage' object.",
21
                "IMAGEWRITE({{simpleimage}}, target, format)",
22
                new String[]{
23
                    "Image to write",
24
                    "Value to save the image in",
25
                    "Format name, PNG, JPEG,...",
26
                },
27
                "SimpleImage",
28
                false
29
        );
30
    }
31

  
32
    @Override
33
    public boolean allowConstantFolding() {
34
        return true;
35
    }
36

  
37
    @Override
38
    public Object call(Interpreter interpreter, Object[] args) {
39
        String formatName = this.getStr(args, 2);
40
        Object arg0 = this.getObject(args, 0);
41
        SimpleImage image = ImageReadFunction.createSimpleImage(arg0);
42
        Object target = this.getObject(args, 1);
43
        try {
44
            if( target instanceof OutputStream ) {
45
                image.save((OutputStream) target, formatName);
46
            } else {
47
              File f = FileFunction.toFile(target);
48
              image.save(f, formatName);
49
            }
50
        } catch (IOException ex) {
51
          throw new ExpressionRuntimeException("Can't write image to '"+Objects.toString(target)+" as format '"+formatName+".", ex);
52
        }
53
        return image;
54
    }
55
}
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/image/ImageReadFunction.java
1 1
package org.gvsig.expressionevaluator.impl.function.image;
2 2

  
3
import java.awt.Graphics2D;
4
import java.awt.Image;
5
import java.awt.RenderingHints;
6
import java.awt.geom.AffineTransform;
7
import java.awt.image.BufferedImage;
8
import java.io.ByteArrayInputStream;
9
import java.io.File;
10
import java.io.IOException;
11
import java.net.URL;
12
import javax.imageio.ImageIO;
13
import org.apache.commons.codec.DecoderException;
14
import org.apache.commons.codec.binary.Base64;
15
import org.apache.commons.codec.binary.Hex;
16 3
import org.apache.commons.lang3.Range;
17 4
import org.gvsig.expressionevaluator.Interpreter;
18 5
import org.gvsig.expressionevaluator.spi.AbstractFunction;
......
22 9
    public ImageReadFunction() {
23 10
        super(
24 11
                "Image", "IMAGEREAD", Range.is(1),
25
                "Read an image from a data source and return it as a 'Java BufferedImage' object.\n"
12
                "Read an image from a data source and return it as a SimpleImage object.\n"
26 13
                + "The data source of the image can be:\n<ul>"
27 14
                + "<li>A byte array</li>"
28 15
                + "<li>A URL</li>"
......
34 21
                new String[]{
35 22
                    "Value from which to load the image"
36 23
                },
37
                "BufferedImage",
24
                "SimpleImage",
38 25
                false
39 26
        );
40 27
    }
......
51 38
        if( image.isEmpty() ) {
52 39
            return null;
53 40
        }
54
        return image.getBufferedImage();
41
        return image;
55 42
    }
56 43

  
57 44
    public static SimpleImage createSimpleImage(Object source) {
45
        if( source instanceof SimpleImage ) {
46
          return (SimpleImage) source;
47
        }
58 48
        SimpleImage image = new SimpleImage(source);
59 49
        return image;
60 50
    }
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/image/ImageTransformFunction.java
19 19
                    "width - Optional.",
20 20
                    "height - Optional."
21 21
                },
22
                "Image",
22
                "SimpleImage",
23 23
                false
24 24
        );
25 25
    }
......
53 53
                        "The IMAGETRANSFORM function has 2 arguments, image and transform, or 4 arguments, image, transform, width and height."
54 54
                );
55 55
        }
56
        return image.getBufferedImage();
56
        return image;
57 57
    }
58 58

  
59 59
}
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/programming/TupleFunction.java
13 13
                FUNCTION_TUPLE, 
14 14
                Range.between(0, Integer.MAX_VALUE),
15 15
                null,
16
                "ARRAY[ {{value1}}, value2, ...]",
16 17
                null,
17
                null,
18 18
                "TUPLE",
19 19
                true
20 20
        );
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/programming/PrintFunction.java
16 16
                NAME, 
17 17
                Range.between(0, Integer.MAX_VALUE),
18 18
                null,
19
                "PRINT({{value1}}, ...)",
19 20
                null,
20
                null,
21 21
                "Object",
22 22
                false
23 23
        );
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/programming/GetitemFunction.java
21 21
            NAME, 
22 22
            Range.is(2),
23 23
            null,
24
            "GEIITEM({{object}}, index_or_key)",
24 25
            null,
25
            null,
26 26
            "Object",
27 27
            false
28 28
        );
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/programming/URLFunction.java
19 19
            NAME, 
20 20
            Range.is(1),
21 21
            null,
22
            NAME+"({{expression}})",
22 23
            null,
23
            null,
24 24
            "Object",
25 25
            false
26 26
        );
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/programming/PassFunction.java
1
package org.gvsig.expressionevaluator.impl.function.programming;
2

  
3
import java.util.ArrayList;
4
import java.util.Arrays;
5
import java.util.List;
6
import org.apache.commons.lang3.Range;
7
import org.gvsig.expressionevaluator.Function;
8
import org.gvsig.expressionevaluator.Interpreter;
9
import org.gvsig.expressionevaluator.spi.AbstractFunction;
10

  
11
public class PassFunction extends AbstractFunction {
12
    
13
    public PassFunction() {
14
        super(Function.GROUP_PROGRAMMING, 
15
                "PASS", 
16
                Range.between(0, Integer.MAX_VALUE),
17
                "Do nothing",
18
                "PASS",
19
                null,
20
                "NULL",
21
                false
22
        );
23
    }
24

  
25
    @Override
26
    public boolean allowConstantFolding() {
27
        return false;
28
    }
29
    
30
    @Override
31
    public Object call(Interpreter interpreter, Object[] args) throws Exception {
32
        return null;
33
    }
34
}
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/programming/IIFFunction.java
15 15
                NAME, 
16 16
                Range.between(2,3),
17 17
                "The IFF() function tests a specified numeric expression and returns one of two values, based on whether the expression tested was true or false.",
18
                NAME+"( {{condition}}, true, false )",
18
                "IF {{condition}} THEN\n  PASS\nELSE\n  PASS;\nEND IF\n",
19 19
                null,
20 20
                "Object",
21 21
                true
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/programming/ForEachFunction.java
17 17
                NAME, 
18 18
                Range.is(3),
19 19
                "The foreach() function evaluate body for every element of the iterable.",
20
                NAME+"( varname, iterable, body )",
20
                "FOR n IN {{expression}}\n  BEGIN\n  PASS;\nEND FOR\n",
21 21
                null,
22 22
                "Object",
23 23
                false
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/programming/WhileFunction.java
16 16
                NAME, 
17 17
                Range.is(2),
18 18
                "The while() function evaluate expression while the condition is true.",
19
                NAME+"( condition, expression )",
19
                "WHILE {{condition}} BEGIN\n  PASS;\nEND WHILE\n",
20 20
                null,
21 21
                "Object",
22 22
                false
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/programming/GetattrFunction.java
18 18
                FUNCTION_GETATTR, 
19 19
                Range.is(2),
20 20
                null,
21
                "GETATTR({{object}}, attribute_name_as_string)",
21 22
                null,
22 23
                null,
23
                null,
24 24
                true
25 25
        );
26 26
    }
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/programming/CaseFunction.java
18 18
                NAME, 
19 19
                Range.between(2, Integer.MAX_VALUE),
20 20
                "",
21
                "CASE\n  WHEN {{condition}} THEN PASS\n  ELSE PASS\nEND CASE\n",
21 22
                null,
22
                null,
23 23
                "Object",
24 24
                false
25 25
        );
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/programming/MapFunction.java
15 15
                FUNCTION_MAP, 
16 16
                Range.between(0, Integer.MAX_VALUE),
17 17
                null,
18
                "MAP( {{identifier1}} = value1, {{identifier2}} = value2, ...)",
18 19
                null,
19
                null,
20 20
                "MAP",
21 21
                false
22 22
        );
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/programming/LenFunction.java
19 19
            NAME, 
20 20
            Range.is(1),
21 21
            null,
22
            "LEN({{expression}})",
22 23
            null,
23
            null,
24 24
            "Object",
25 25
            false
26 26
        );
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/programming/ReturnFunction.java
14 14
                NAME, 
15 15
                Range.between(0, Integer.MAX_VALUE),
16 16
                null,
17
                "RETURN {{value}};",
17 18
                null,
18
                null,
19 19
                "Object",
20 20
                false
21 21
        );
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/programming/FileFunction.java
2 2

  
3 3
import java.io.File;
4 4
import java.net.URI;
5
import java.net.URL;
5 6
import org.apache.commons.lang3.Range;
6 7
import org.gvsig.expressionevaluator.ExpressionRuntimeException;
7 8
import org.gvsig.expressionevaluator.Function;
......
17 18
            NAME, 
18 19
            Range.is(1),
19 20
            null,
21
            NAME+"({{expression}})",
20 22
            null,
21
            null,
22 23
            "Object",
23 24
            false
24 25
        );
......
31 32
    
32 33
    @Override
33 34
    public Object call(Interpreter interpreter, Object[] args) throws Exception {
34
        Object value;
35 35
        Object obj = getObject(args, 0);
36
        File value = toFile(obj);
37
        return value;
38
    }
39
    
40
    public static File toFile(Object obj) {
36 41
        if( obj == null ) {
37
            return 0;
42
            return null;
38 43
        }        
39 44
        if( obj instanceof File ) {
40
            return obj;
45
            return (File) obj;
41 46
        } else if( obj instanceof CharSequence ) {
42
            value = new File(((CharSequence)obj).toString());
47
            return new File(((CharSequence)obj).toString());
43 48
        } else if( obj instanceof URI ) {
44
            value = new File(((URI)obj));
49
            return new File(((URI)obj));
50
        } else if( obj instanceof URL ) {
51
            return new File(((URL)obj).getPath());
45 52
        } else {
46 53
            throw new ExpressionRuntimeException("The "+NAME+" function require a File or a String and a received a '"+obj.getClass().getSimpleName()+"'.");
47 54
        }
48
        return value;
49 55
    }
50 56
    
51 57
}
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/programming/LetFunction.java
16 16
            NAME, 
17 17
            Range.is(2),
18 18
            "Assigns the value indicated in the second argument to the variable indicated in the first argument.",
19
            NAME+"({{identifier_name}},value)",
19
            "SET {{identifier}} = expression",
20 20
            new String[]{
21 21
                "identifier_name - Name of the variable",
22 22
                "value - Value to assign to the variable"
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/programming/CodeBlockFunction.java
17 17
                NAME, 
18 18
                Range.between(1,Integer.MAX_VALUE),
19 19
                "Evaluate each of the arguments sequentially.",
20
                NAME+"( {{arguments...}} )",
20
                "BEGIN\n  {{sentence}};\nEXCEPT\n  PASS\nEND\n",
21 21
                null,
22 22
                "Object",
23 23
                false
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/programming/CreateFnFunction.java
73 73
                  "\n" +
74 74
                  "What defines a \"getCRS\" function that is implemented in the python module\n" +
75 75
                  "located in \"Users / crs\" with the name 'getCRS'.",
76
                "CREATE FUNCTION {{name}}(param1, param2) AS\nBEGIN\n  PASS\nEND FUNCTION\n",
76 77
                null,
77
                null,
78 78
                "Object",
79 79
                false
80 80
        );
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/typeconversion/CastFunction.java
15 15
public class CastFunction extends AbstractFunction {
16 16
    
17 17
    public CastFunction() {
18
        super(GROUP_CONVERSION, FUNCTION_CAST, Range.is(2));
18
        super(
19
                GROUP_CONVERSION, 
20
                FUNCTION_CAST, 
21
                Range.is(2),
22
                "",
23
                "CAST( {{value}} AS type_identifier)"
24
                
25
        );
19 26
    }
20 27

  
21 28
    @Override
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/grammars/BasicGrammarFactory.java
83 83
            theGrammar.addReservedWord("CASE");
84 84
            theGrammar.addReservedWord("WHEN");
85 85
            theGrammar.addReservedWord("FOR");
86
            theGrammar.addReservedWord("FOREACH");
86 87
            theGrammar.addReservedWord("CREATE");
87 88
            theGrammar.addReservedWord("FUNCTION");
88 89
            theGrammar.addReservedWord("PROCEDURE");
......
93 94
            theGrammar.addReservedWord("TO");
94 95
            theGrammar.addReservedWord("FROM");
95 96
            theGrammar.addReservedWord("$$"); // ???? Asi van las funciones
97
            theGrammar.addReservedWord("PASS");
96 98
            
97 99
            stmt = theGrammar.createStatement("BLOCK");
98 100
            stmt.addRule(stmt.require_any_token("BEGIN"));
......
152 154
//            theGrammar.addStatement(stmt);
153 155

  
154 156
            stmt = theGrammar.createStatement("FOREACH");
155
            stmt.addRule(stmt.require_any_token("FOR"));
157
            stmt.addRule(stmt.require_any_token("FOR","FOREACH"));
156 158
            stmt.addRule(stmt.require_identifier().capture_as("VAR"));
157 159
            stmt.addRule(stmt.require_any_token("IN"));
158 160
            stmt.addRule(stmt.require_expression().capture_as("ITERABLE"));
......
171 173
            stmt.addRule(
172 174
                stmt.repeat_until_any_tokens("END","ELSE")
173 175
                    .addRule(stmt.require_any_token("WHEN"))
174
                    .addRule(stmt.require_expressions(";").capture_as("CONDITION#"))
176
                    .addRule(stmt.require_expression().capture_as("CONDITION#"))
175 177
                    .addRule(stmt.require_any_token("THEN",":"))
176 178
                    .addRule(stmt.require_expressions(";").capture_as("ONTRUE#"))
177 179
            );
......
364 366

  
365 367
            this.grammar = theGrammar;
366 368

  
369
            stmt = theGrammar.createStatement("PASS");
370
            stmt.addRule(stmt.require_any_token("PASS"));
371
            stmt.addRule(stmt.optional_any_token("(")
372
                .addRuleOnTrue(stmt.require_expressions(",").capture_as("ARGS#"))
373
                .addRuleOnTrue(stmt.require_any_token(")"))                    
374
            );
375
            stmt.code(
376
                    "PASS",
377
                    stmt.args_names("ARGS#")
378
            );
379
            theGrammar.addStatement(stmt);
367 380

  
368 381
        }
369 382
        return grammar;
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/symboltable/ProgrammingSymbolTable.java
18 18
import org.gvsig.expressionevaluator.impl.function.programming.LetFunction;
19 19
import org.gvsig.expressionevaluator.impl.function.programming.ListFunction;
20 20
import org.gvsig.expressionevaluator.impl.function.programming.MapFunction;
21
import org.gvsig.expressionevaluator.impl.function.programming.PassFunction;
21 22
import org.gvsig.expressionevaluator.impl.function.programming.PrintFunction;
22 23
import org.gvsig.expressionevaluator.impl.function.programming.RangeFunction;
23 24
import org.gvsig.expressionevaluator.impl.function.programming.ReturnFunction;
......
39 40
    public ProgrammingSymbolTable() {
40 41
        super(NAME);
41 42

  
43
        this.addFunction(new PassFunction());
42 44
        this.addFunction(new CaseFunction());
43 45
        this.addFunction(new CodeBlockFunction());
44 46
        this.addFunction(new CodeBlockWithExceptFunction());
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/symboltable/BasicImageSymbolTable.java
10 10
import org.gvsig.expressionevaluator.impl.function.image.ImageTransformFunction;
11 11
import org.gvsig.expressionevaluator.impl.function.image.ImageVerticalflipFunction;
12 12
import org.gvsig.expressionevaluator.impl.function.image.ImageWidthFunction;
13
import org.gvsig.expressionevaluator.impl.function.image.ImageWriteFunction;
13 14
import org.gvsig.expressionevaluator.spi.AbstractSymbolTable;
14 15

  
15 16
/**
......
28 29
        this.addFunction(new ImageHeightFunction());
29 30
        this.addFunction(new ImageHorizontalflipFunction());
30 31
        this.addFunction(new ImageReadFunction());
32
        this.addFunction(new ImageWriteFunction());
31 33
        this.addFunction(new ImageResizeFunction());
32 34
        this.addFunction(new ImageRotateFunction());
33 35
        this.addFunction(new ImageTransformFunction());
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.api/src/main/java/org/gvsig/expressionevaluator/spi/AbstractFunction.java
23 23
import org.gvsig.expressionevaluator.Function;
24 24
import org.gvsig.expressionevaluator.I18N;
25 25
import org.gvsig.expressionevaluator.Interpreter;
26
import org.gvsig.tools.ToolsLocator;
27
import org.gvsig.tools.i18n.I18nManager;
26 28
//import org.gvsig.fmap.geom.Geometry;
27 29
//import org.gvsig.fmap.geom.primitive.Point;
28 30
import org.json.JSONArray;
......
101 103
        return descriptionArgs;
102 104
    }
103 105

  
106
    public String getFullDescription() {
107
        I18nManager i18n = ToolsLocator.getI18nManager();
108

  
109
        StringBuilder html = new StringBuilder();
110
        html.append("<html>\n");
111

  
112
        // Lo primero llamamos a description() para forzar la recarga de los
113
        // recursos si fuese necesaria.
114
        String functionDescription = this.description();
115

  
116
        html.append("<b>").append(i18n.getTranslation("_Function")).append("</b> ").append(this.name()).append("<br>\n<br>\n");
117
        List<String> aliases = this.aliases();
118
        if( aliases!=null && !aliases.isEmpty() ) {
119
            html.append("<b>").append(i18n.getTranslation("_Aliases")).append(":</b> ").append("<ul>\n");
120
            for (String theAlias : aliases) {
121
                html.append("<li>").append(theAlias).append("</li>\n");
122
            }
123
            html.append("</ul>\n");
124
        }
125
        html.append("<b>").append(i18n.getTranslation("_Return")).append("</b> ");
126
        html.append(StringUtils.isEmpty(this.returnType()) ? "Objec" : this.returnType());
127
        html.append("<br>\n");
128
        html.append("<b>").append(i18n.getTranslation("_Template")).append("</b> ");
129
        html.append(StringUtils.isEmpty(this.template()) ? this.name() + "()" : this.template());
130
        html.append("<br>\n");
131

  
132
        String[] args = this.descriptionArgs();
133
        if (args != null) {
134
            html.append("<b>").append(i18n.getTranslation("_Arguments")).append(":</b> ").append("<ul>\n");
135
            for (String arg : args) {
136
                html.append("<li>").append(arg).append("</li>\n");
137
            }
138
            html.append("</ul>\n");
139
            html.append("<br>\n");
140
        }
141
        if( !StringUtils.isBlank(functionDescription) ) {
142
            html.append("<b>").append(i18n.getTranslation("_Description")).append("</b><br>\n");
143
            html.append(functionDescription.replace("\n", "<br>")).append("<br>\n");
144
        }            
145

  
146
        html.append("</html>\n");
147
        return html.toString();
148
    }
149

  
104 150
    @Override
105 151
    public void addAlias(String name) {
106 152
        if( StringUtils.isBlank(name) ) {
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.api/src/main/java/org/gvsig/expressionevaluator/Function.java
25 25

  
26 26
    public String description();
27 27

  
28
    /**
29
     * Return a full description of the funcion internationalized in HTML.
30
     * This full description contains, t name, description, args, template and
31
     * return type.
32
     * 
33
     * @return full description in HTML as a String
34
     */
35
    public String getFullDescription();
36
    
28 37
    public String template();
29 38
    
30 39
    public String[] descriptionArgs();

Also available in: Unified diff