<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<definitions xmlns="https://www.omg.org/spec/DMN/20230324/MODEL/"
namespace="https://decision-toolkit.org/spec/DMN/built-in-functions"
name="range-function"
id="_0091f826-b871-4747-9c87-5dfa0091b316">
<description>
FEEL built-in function `range(string)`.
Supported range types:
- number
- string
- date
- time
- date and time
- years and months duration
- days and time duration
</description>
<inputData name="input_001" id="_input_001">
<variable name="input_001" typeRef="string"/>
</inputData>
<decision name="decision_0001">
<description>
Basic sanity check to ensure that the `range` function returns a **number** range.
</description>
<variable name="decision_0001"/>
<literalExpression>
<text>
[
range("[1..3]"),
range("[1..3)"),
range("(1..3]"),
range("(1..3)"),
range("[1..3["),
range("]1..3]"),
range("]1..3["),
range("[1..)"),
range("(..3]")
]
</text>
</literalExpression>
</decision>
<decision name="decision_0002">
<description>
Basic sanity check to ensure that the `range` function returns a **string** range.
</description>
<variable name="decision_0001"/>
<literalExpression>
<text>
[
range("[\"a\"..\"c\"]")
]
</text>
</literalExpression>
</decision>
<decision name="decision_0100">
<description>
Basic sanity check to ensure that the `range` function operates like a **number** range.
</description>
<variable name="decision_0100"/>
<literalExpression>
<text>
[
every x in [
1 in range("[1..3]"),
2 in range("[1..3]"),
3 in range("[1..3]"),
2 in range("(1..3]"),
2 in range("[1..3)"),
2 in range("]1..3]"),
2 in range("[1..3[")
] satisfies x = true,
every x in [
1 in range("(1..3]"),
3 in range("[1..3)"),
1 in range("]1..3]"),
3 in range("[1..3[")
] satisfies x = false
]
</text>
</literalExpression>
</decision>
<decision name="decision001" id="_decision001">
<variable name="decision001"/>
<literalExpression>
<text>2 in range("[1..3]")</text>
</literalExpression>
</decision>
<decision name="decision001_a" id="_decision001_a">
<variable name="decision001_a"/>
<literalExpression>
<text>range("[1..3]") instance of range<number></text>
</literalExpression>
</decision>
<decision name="decision001_b" id="_decision001_b">
<variable name="decision001_b"/>
<literalExpression>
<text>range(string("[1..3]")) instance of range<number></text>
</literalExpression>
</decision>
<decision name="decision001_c" id="_decision001_c">
<variable name="decision001_c"/>
<literalExpression>
<text>range("[\"a\"..\"c\"]") instance of range<string></text>
</literalExpression>
</decision>
<decision name="decision001_d" id="_decision001_d">
<variable name="decision001_d"/>
<literalExpression>
<text>range("[@\"1970-01-01\"..@\"1970-01-02\"]") instance of range<date></text>
</literalExpression>
</decision>
<decision name="decision001_e" id="_decision001_e">
<variable name="decision001_e"/>
<literalExpression>
<text>range("[@\"1970-01-01T00:00:00\"..@\"1970-01-02T00:00:00\"]") instance of range<date and time>
</text>
</literalExpression>
</decision>
<decision name="decision001_g" id="_decision001_g">
<variable name="decision001_g"/>
<literalExpression>
<text>range("[@\"00:00:00\"..@\"00:00:00\"]") instance of range<time></text>
</literalExpression>
</decision>
<decision name="decision001_h" id="_decision001_h">
<variable name="decision001_h"/>
<literalExpression>
<text>range("[@\"P1D\"..@\"P2D\"]") instance of range<days and time duration></text>
</literalExpression>
</decision>
<decision name="decision001_i" id="_decision001_i">
<variable name="decision001_i"/>
<literalExpression>
<text>range("[@\"P1Y\"..@\"P2Y\"]") instance of range<years and months duration></text>
</literalExpression>
</decision>
<decision name="decision002" id="_decision002">
<variable name="decision002"/>
<literalExpression>
<text>2 in range(string("[1..3]"))</text>
</literalExpression>
</decision>
<decision name="decision003_a" id="_decision003_a">
<variable name="decision003_a"/>
<literalExpression>
<text>range("[18..21]") = [18..21]</text>
</literalExpression>
</decision>
<decision name="decision003_b" id="_decision003_b">
<variable name="decision003_b"/>
<literalExpression>
<text>range("(18..21]") = (18..21]</text>
</literalExpression>
</decision>
<decision name="decision003_c" id="_decision003_c">
<variable name="decision003_c"/>
<literalExpression>
<text>range("]18..21]") = ]18..21]</text>
</literalExpression>
</decision>
<decision name="decision003_d" id="_decision003_d">
<variable name="decision003_d"/>
<literalExpression>
<text>range("[18..21)") = [18..21)</text>
</literalExpression>
</decision>
<decision name="decision003_e" id="_decision003_e">
<variable name="decision003_e"/>
<literalExpression>
<text>range("[18..21[") = [18..21[</text>
</literalExpression>
</decision>
<decision name="decision004_e" id="_decision004_e">
<variable name="decision004_e"/>
<literalExpression>
<text>range("[..2]")</text>
</literalExpression>
</decision>
<decision name="decision004_f" id="_decision004_f">
<variable name="decision004_f"/>
<literalExpression>
<text>range("[1..]")</text>
</literalExpression>
</decision>
<decision name="decision005_a" id="_decision005_a">
<variable name="decision005_a"/>
<literalExpression>
<text>range("[\"a\"..\"c\"]") = ["a".."c"]</text>
</literalExpression>
</decision>
<decision name="decision005_b" id="_decision005_b">
<variable name="decision005_b"/>
<literalExpression>
<text>range("[@\"1970-01-01\"..@\"1970-01-02\"]") = [@"1970-01-01"..@"1970-01-02"]</text>
</literalExpression>
</decision>
<decision name="decision005_c" id="_decision005_c">
<variable name="decision005_c"/>
<literalExpression>
<text>range("[@\"1970-01-01T00:00:00\"..@\"1970-01-02T00:00:00\"]") =
[@"1970-01-01T00:00:00"..@"1970-01-02T00:00:00"]
</text>
</literalExpression>
</decision>
<decision name="decision005_d" id="_decision005_d">
<variable name="decision005_d"/>
<literalExpression>
<text>range("[@\"00:00:00\"..@\"00:00:00\"]") = [@"00:00:00"..@"00:00:00"]</text>
</literalExpression>
</decision>
<decision name="decision005_e" id="_decision005_e">
<variable name="decision005_e"/>
<literalExpression>
<text>range("[@\"P1D\"..@\"P2D\"]") = [@"P1D"..@"P2D"]</text>
</literalExpression>
</decision>
<decision name="decision005_f" id="_decision005_f">
<variable name="decision005_f"/>
<literalExpression>
<text>range("[@\"P1Y\"..@\"P2Y\"]") = [@"P1Y"..@"P2Y"]</text>
</literalExpression>
</decision>
<decision name="decision006" id="_decision006">
<variable name="decision006"/>
<literalExpression>
<text>range(" [ 1 .. 3 ] ") = [1..3]</text>
</literalExpression>
</decision>
<decision name="decision007_a" id="_decision007_a">
<variable name="decision007_a"/>
<literalExpression>
<text>range("[date(\"1970-01-01\")..date(\"1970-01-02\")]") = [date("1970-01-01")..date("1970-01-02")]
</text>
</literalExpression>
</decision>
<decision name="decision007_b" id="_decision007_b">
<variable name="decision007_b"/>
<literalExpression>
<text>range("[date(string(\"1970-01-01\"))..date(\"1970-01-02\")]")</text>
</literalExpression>
</decision>
<decision name="decision007_c" id="_decision007_c">
<variable name="decision007_c"/>
<informationRequirement>
<requiredInput href="#_input_001"/>
</informationRequirement>
<literalExpression>
<text>range("[date(input_001)..date(\"1970-01-02\")]")</text>
</literalExpression>
</decision>
<decision name="decision008_a" id="_decision008_a">
<variable name="decision008_a"/>
<literalExpression>
<text>range("[date and time(\"1970-01-01T00:00:00\")..@\"1970-01-02T00:00:00\"]") =
[@"1970-01-01T00:00:00"..@"1970-01-02T00:00:00"]
</text>
</literalExpression>
</decision>
<decision name="decision008_b" id="_decision008_b">
<variable name="decision008_b"/>
<literalExpression>
<text>range("[date and time(string(\"1970-01-01T00:00:00\"))..@\"1970-01-02T00:00:00\"]")</text>
</literalExpression>
</decision>
<decision name="decision008_c" id="_decision008_c">
<variable name="decision008_c"/>
<informationRequirement>
<requiredInput href="#_input_001"/>
</informationRequirement>
<literalExpression>
<text>range("[date and time(input_001)..@\"1970-01-02T00:00:00\"]")</text>
</literalExpression>
</decision>
<decision name="decision009_a" id="_decision009_a">
<variable name="decision009_a"/>
<literalExpression>
<text>range("[time(\"00:00:00\")..@\"00:00:00\"]") = [@"00:00:00"..@"00:00:00"]</text>
</literalExpression>
</decision>
<decision name="decision009_b" id="_decision009_b">
<variable name="decision009_b"/>
<literalExpression>
<text>range("[time(string(\"00:00:00\"))..@\"00:00:00\"]")</text>
</literalExpression>
</decision>
<decision name="decision009_c" id="_decision009_c">
<variable name="decision009_c"/>
<informationRequirement>
<requiredInput href="#_input_001"/>
</informationRequirement>
<literalExpression>
<text>range("[time(input_001)..@\"00:00:00\"]")</text>
</literalExpression>
</decision>
<decision name="decision010_a" id="_decision010_a">
<variable name="decision010_a"/>
<literalExpression>
<text>range("[duration(\"P1D\")..@\"P2D\"]") = [@"P1D"..@"P2D"]</text>
</literalExpression>
</decision>
<decision name="decision010_b" id="_decision010_b">
<variable name="decision010_b"/>
<literalExpression>
<text>range("[duration(string(\"P1D\"))..@\"P2D\"]")</text>
</literalExpression>
</decision>
<decision name="decision010_c" id="_decision010_c">
<variable name="decision010_c"/>
<informationRequirement>
<requiredInput href="#_input_001"/>
</informationRequirement>
<literalExpression>
<text>range("[duration(input_001)..@\"P2D\"]")</text>
</literalExpression>
</decision>
<decision name="decision011" id="_decision011">
<variable name="decision011"/>
<literalExpression>
<text>range(from: "[1..3]") = [1..3]</text>
</literalExpression>
</decision>
<decision name="decision012" id="_decision012">
<variable name="decision012"/>
<literalExpression>
<text>range(fron: "[1..3]")</text>
</literalExpression>
</decision>
<decision name="decision013_a" id="_decision013_a">
<variable name="decision013_a"/>
<literalExpression>
<text>range("[1..3]", "foo")</text>
</literalExpression>
</decision>
<decision name="decision013_b" id="_decision013_b">
<variable name="decision013_b"/>
<literalExpression>
<text>range()</text>
</literalExpression>
</decision>
<decision name="decision014" id="_decision014">
<variable name="decision014"/>
<literalExpression>
<text>range([1..3])</text>
</literalExpression>
</decision>
<decision name="decision015_a" id="_decision015_a">
<variable name="decision015_a"/>
<literalExpression>
<text>range("")</text>
</literalExpression>
</decision>
<decision name="decision015_b" id="_decision015_b">
<variable name="decision015_b"/>
<literalExpression>
<text>range(" ")</text>
</literalExpression>
</decision>
<decision name="decision016" id="_decision016">
<variable name="decision016"/>
<literalExpression>
<text>range(string(""))</text>
</literalExpression>
</decision>
<decision name="decision017" id="_decision017">
<variable name="decision017"/>
<literalExpression>
<text>range(">=10")</text>
</literalExpression>
</decision>
<decision name="decision018" id="_decision018">
<variable name="decision018"/>
<literalExpression>
<text>range("[1..\"b\"]")</text>
</literalExpression>
</decision>
<decision name="decision019_a" id="_decision019_sa">
<variable name="decision019_a"/>
<literalExpression>
<text>range("[@\"1970-01-01\"..@\"1970-01-02T00:00:00\"]")</text>
</literalExpression>
</decision>
<decision name="decision019_b" id="_decision019_b">
<variable name="decision019_b"/>
<literalExpression>
<text>range("[@\"1970-01-01T00:00:00\"..@\"1970-01-02\"]")</text>
</literalExpression>
</decision>
<decision name="decision020" id="_decision020">
<variable name="decision020"/>
<literalExpression>
<text>range("[3..1]")</text>
</literalExpression>
</decision>
<decision name="decision021" id="_decision021">
<variable name="decision021"/>
<literalExpression>
<text>range("[@\"1970-01-02\"..@\"1970-01-01\"]")</text>
</literalExpression>
</decision>
<decision name="decision022" id="_decision022">
<variable name="decision022"/>
<literalExpression>
<text>range("[@\"1970-01-02T00:00:00\"..@\"1970-01-01T00:00:00\"]")</text>
</literalExpression>
</decision>
<decision name="decision023" id="_decision023">
<variable name="decision023"/>
<literalExpression>
<text>range("[\"z\"..\"a\"]")</text>
</literalExpression>
</decision>
<decision name="decision024" id="_decision024">
<variable name="decision024"/>
<literalExpression>
<text>range("[@\"P2D\"..@\"P1D\"]")</text>
</literalExpression>
</decision>
<decision name="decision025" id="_decision025">
<variable name="decision025"/>
<literalExpression>
<text>range("[@\"P2Y\"..@\"P1Y\"]")</text>
</literalExpression>
</decision>
<decision name="decision026" id="_decision026">
<variable name="decision026"/>
<literalExpression>
<text>range("[@\"02:00:00\"..@\"01:00:00\"]")</text>
</literalExpression>
</decision>
<decision name="decision027" id="_decision027">
<variable name="decision027"/>
<literalExpression>
<text>range("[null..null]")</text>
</literalExpression>
</decision>
</definitions>