-
Notifications
You must be signed in to change notification settings - Fork 64
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* added new json functions * added bew url functions * updated the json function description to support array * updated test case for url encode to include path escaping as well * added new url function: escapedPath, fixed names of existing functions * updated: json function descriptions and output data types * updated: json function descriptions * added: new math functions
- Loading branch information
1 parent
11a8a44
commit 79c2ef9
Showing
18 changed files
with
706 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,119 @@ | ||
<!-- | ||
title: MATH | ||
weight: 4601 | ||
--> | ||
|
||
# Math Functions | ||
This function package exposes common math functions. | ||
|
||
## ceil() | ||
Ceil returns the least integer value greater than or equal to input | ||
|
||
### Input Args | ||
|
||
| Arg | Type | Description | | ||
|:------------|:-------|:-----------------| | ||
| inputNumber | number | The input number | | ||
|
||
### Output | ||
|
||
| Arg | Type | Description | | ||
|:----------|:-------|:-----------------------------------| | ||
| returnVal | number | The ceil value of the input number | | ||
|
||
|
||
## floor() | ||
Floor returns the greatest integer value less than or equal to input | ||
|
||
### Input Args | ||
|
||
| Arg | Type | Description | | ||
|:------------|:-------|:-----------------| | ||
| inputNumber | number | The input number | | ||
|
||
### Output | ||
|
||
| Arg | Type | Description | | ||
|:----------|:-------|:------------------------------------| | ||
| returnVal | number | The floor value of the input number | | ||
|
||
|
||
## isNaN() | ||
IsNaN reports whether input is an IEEE 754 "not-a-number" value | ||
|
||
### Input Args | ||
|
||
| Arg | Type | Description | | ||
|:------|:-------|:------------------| | ||
| input | any | The input to test | | ||
|
||
### Output | ||
|
||
| Arg | Type | Description | | ||
|:----------|:--------|:--------------------------------------------| | ||
| returnVal | boolean | Is true if input is IEEE 754 "not-a-number" | | ||
|
||
|
||
## mod() | ||
Mod returns the floating-point remainder of x/y. The magnitude of the result is less than y and its sign agrees with that of x | ||
|
||
### Input Args | ||
|
||
| Arg | Type | Description | | ||
|:----|:-------|:----------------------------| | ||
| x | number | The dividend or first input | | ||
| y | number | The divisor or second input | | ||
|
||
### Output | ||
|
||
| Arg | Type | Description | | ||
|:----------|:-------|:--------------------------------------------------| | ||
| returnVal | number | The remainder of the Euclidean division of x by y | | ||
|
||
|
||
## round() | ||
Round returns the nearest integer, rounding half away from zero | ||
|
||
### Input Args | ||
|
||
| Arg | Type | Description | | ||
|:------------|:-------|:-----------------| | ||
| inputNumber | number | The input number | | ||
|
||
### Output | ||
|
||
| Arg | Type | Description | | ||
|:----------|:-------|:--------------------------------------------------| | ||
| returnVal | number | The nearest integer, rounding half away from zero | | ||
|
||
|
||
## roundToEven() | ||
RoundToEven returns the nearest integer, rounding ties to even | ||
|
||
### Input Args | ||
|
||
| Arg | Type | Description | | ||
|:------------|:-------|:-----------------| | ||
| inputNumber | number | The input number | | ||
|
||
### Output | ||
|
||
| Arg | Type | Description | | ||
|:----------|:-------|:-------------------------------------------| | ||
| returnVal | number | The nearest integer, rounding ties to even | | ||
|
||
|
||
## trunc() | ||
Trunc returns the integer value of input | ||
|
||
### Input Args | ||
|
||
| Arg | Type | Description | | ||
|:----|:-------|:----------------------------| | ||
| inputNumber | number | The input number | | ||
|
||
### Output | ||
|
||
| Arg | Type | Description | | ||
|:----------|:-------|:-----------------------------------------| | ||
| returnVal | number | The truncated integer value of the input | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
package math | ||
|
||
import ( | ||
"fmt" | ||
"math" | ||
|
||
"github.com/project-flogo/core/data" | ||
"github.com/project-flogo/core/data/coerce" | ||
"github.com/project-flogo/core/data/expression/function" | ||
) | ||
|
||
func init() { | ||
_ = function.Register(&fnCeil{}) | ||
} | ||
|
||
type fnCeil struct { | ||
} | ||
|
||
// Name returns the name of the function | ||
func (fnCeil) Name() string { | ||
return "ceil" | ||
} | ||
|
||
// Sig returns the function signature | ||
func (fnCeil) Sig() (paramTypes []data.Type, isVariadic bool) { | ||
return []data.Type{data.TypeFloat64}, false | ||
} | ||
|
||
// Eval executes the function | ||
func (fnCeil) Eval(params ...interface{}) (interface{}, error) { | ||
obj, err := coerce.ToFloat64(params[0]) | ||
if err != nil { | ||
return nil, fmt.Errorf("Unable to coerce [%+v] to float64: %s", params[0], err.Error()) | ||
} | ||
return math.Ceil(obj), nil | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
package math | ||
|
||
import ( | ||
"testing" | ||
|
||
"github.com/stretchr/testify/assert" | ||
) | ||
|
||
func TestFnCeil(t *testing.T) { | ||
input := 1.49 | ||
f := &fnCeil{} | ||
v, err := f.Eval(input) | ||
assert.Nil(t, err) | ||
assert.Equal(t, 2.0, v) | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,112 @@ | ||
{ | ||
"name": "math", | ||
"type": "flogo:function", | ||
"version": "0.1.0", | ||
"title": "Math Functions", | ||
"description": "Common Math Functions", | ||
"homepage": "https://github.com/prject-flogo/contrib/tree/master/function/math", | ||
"functions": [ | ||
{ | ||
"name": "ceil", | ||
"description": "Ceil returns the least integer value greater than or equal to input", | ||
"example": "math.ceil(1.49) => 2.0", | ||
"args": [ | ||
{ | ||
"name": "inputNumber", | ||
"type": "number" | ||
} | ||
], | ||
"return": { | ||
"type": "number" | ||
} | ||
}, | ||
{ | ||
"name": "floor", | ||
"description": "Floor returns the greatest integer value less than or equal to input", | ||
"example": "math.ceil(1.51) => 1.0", | ||
"args": [ | ||
{ | ||
"name": "inputNumber", | ||
"type": "number" | ||
} | ||
], | ||
"return": { | ||
"type": "number" | ||
} | ||
}, | ||
{ | ||
"name": "isNaN", | ||
"description": "IsNaN reports whether input is an IEEE 754 \"not-a-number\" value", | ||
"example": "math.isNaN(1.0) => false", | ||
"args": [ | ||
{ | ||
"name": "input", | ||
"type": "any" | ||
} | ||
], | ||
"return": { | ||
"type": "boolean" | ||
} | ||
}, | ||
{ | ||
"name": "mod", | ||
"description": "Mod returns the floating-point remainder of x/y. The magnitude of the result is less than y and its sign agrees with that of x", | ||
"example": "math.mod(7, 4) => 3.0", | ||
"args": [ | ||
{ | ||
"name": "x", | ||
"type": "number" | ||
}, | ||
{ | ||
"name": "y", | ||
"type": "number" | ||
} | ||
], | ||
"return": { | ||
"type": "number" | ||
} | ||
}, | ||
{ | ||
"name": "round", | ||
"description": "Round returns the nearest integer, rounding half away from zero", | ||
"example": "math.round(1.50) => 2.0", | ||
"args": [ | ||
{ | ||
"name": "inputNumber", | ||
"type": "number" | ||
} | ||
], | ||
"return": { | ||
"type": "number" | ||
} | ||
}, | ||
{ | ||
"name": "roundToEven", | ||
"description": "RoundToEven returns the nearest integer, rounding ties to even", | ||
"example": "math.round(12.5) => 12.0", | ||
"args": [ | ||
{ | ||
"name": "inputNumber", | ||
"type": "number" | ||
} | ||
], | ||
"return": { | ||
"type": "number" | ||
} | ||
}, | ||
{ | ||
"name": "trunc", | ||
"description": "Trunc returns the integer value of input", | ||
"example": "math.round(3.142) => 3.0", | ||
"args": [ | ||
{ | ||
"name": "inputNumber", | ||
"type": "number" | ||
} | ||
], | ||
"return": { | ||
"type": "number" | ||
} | ||
} | ||
] | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
package math | ||
|
||
import ( | ||
"fmt" | ||
"math" | ||
|
||
"github.com/project-flogo/core/data" | ||
"github.com/project-flogo/core/data/coerce" | ||
"github.com/project-flogo/core/data/expression/function" | ||
) | ||
|
||
func init() { | ||
_ = function.Register(&fnFloor{}) | ||
} | ||
|
||
type fnFloor struct { | ||
} | ||
|
||
// Name returns the name of the function | ||
func (fnFloor) Name() string { | ||
return "floor" | ||
} | ||
|
||
// Sig returns the function signature | ||
func (fnFloor) Sig() (paramTypes []data.Type, isVariadic bool) { | ||
return []data.Type{data.TypeFloat64}, false | ||
} | ||
|
||
// Eval executes the function | ||
func (fnFloor) Eval(params ...interface{}) (interface{}, error) { | ||
obj, err := coerce.ToFloat64(params[0]) | ||
if err != nil { | ||
return nil, fmt.Errorf("Unable to coerce [%+v] to float64: %s", params[0], err.Error()) | ||
} | ||
return math.Floor(obj), nil | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
package math | ||
|
||
import ( | ||
"testing" | ||
|
||
"github.com/stretchr/testify/assert" | ||
) | ||
|
||
func TestFnFloor(t *testing.T) { | ||
input := 1.51 | ||
f := &fnFloor{} | ||
v, err := f.Eval(input) | ||
assert.Nil(t, err) | ||
assert.Equal(t, 1.0, v) | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
module github.com/project-flogo/contrib/function/math | ||
|
||
go 1.16 | ||
|
||
require ( | ||
github.com/project-flogo/core v1.5.0 | ||
github.com/stretchr/testify v1.7.0 | ||
) |
Oops, something went wrong.