feature: List.length
This commit is contained in:
		
							parent
							
								
									9caee0fecd
								
							
						
					
					
						commit
						92d3c761fa
					
				|  | @ -10,6 +10,8 @@ let examples = E.A.to_list(FunctionRegistry_Core.Registry.allExamples(registry)) | |||
| 
 | ||||
| describe("FunctionRegistry Library", () => { | ||||
|   describe("Regular tests", () => { | ||||
|     testEvalToBe("List.length([3,5,8])", "Ok(3)") | ||||
|     testEvalToBe("List.length([])", "Ok(0)") | ||||
|     testEvalToBe("List.make(3, 'HI')", "Ok(['HI','HI','HI'])") | ||||
|     testEvalToBe("make(3, 'HI')", "Error(make is not defined)") | ||||
|     testEvalToBe("List.upTo(1,3)", "Ok([1,2,3])") | ||||
|  |  | |||
|  | @ -5,6 +5,10 @@ let nameSpace = "List" | |||
| let requiresNamespace = true | ||||
| 
 | ||||
| module Internals = { | ||||
|   let length = (v: array<Reducer_T.value>): Reducer_T.value => IEvNumber( | ||||
|     Belt.Int.toFloat(Array.length(v)), | ||||
|   ) | ||||
| 
 | ||||
|   let makeFromNumber = (n: float, value: Reducer_T.value): Reducer_T.value => IEvArray( | ||||
|     Belt.Array.make(E.Float.toInt(n), value), | ||||
|   ) | ||||
|  | @ -75,6 +79,26 @@ module Internals = { | |||
| } | ||||
| 
 | ||||
| let library = [ | ||||
|   Function.make( | ||||
|     ~name="length", | ||||
|     ~nameSpace, | ||||
|     ~output=EvtNumber, | ||||
|     ~requiresNamespace=false, | ||||
|     ~examples=[`List.length([1,4,5])`], | ||||
|     ~definitions=[ | ||||
|       FnDefinition.make( | ||||
|         ~name="length", | ||||
|         ~inputs=[FRTypeArray(FRTypeAny)], | ||||
|         ~run=(inputs, _, _) => | ||||
|           switch inputs { | ||||
|           | [IEvArray(array)] => Internals.length(array)->Ok | ||||
|           | _ => Error(impossibleError) | ||||
|           }, | ||||
|         (), | ||||
|       ), | ||||
|     ], | ||||
|     (), | ||||
|   ), | ||||
|   Function.make( | ||||
|     ~name="make", | ||||
|     ~nameSpace, | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	Block a user