yml2/standardlib.ysl2
author Claudio Luck <claudio.luck@pep.foundation>
Tue, 04 Sep 2018 16:48:59 +0200
changeset 52 b4a9a3122abb
permissions -rw-r--r--
move python code into new package dir
52
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
     1
// YML2 standardlib version 2.5.8
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
     2
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
     3
function "yml:hex2dec" {
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
     4
    param "hex";
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
     5
    param "_result", 0;
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
     6
    
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
     7
    const "hd", "substring($hex, 1, 1)";
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
     8
    const "a", """translate($hd, 'ABCDEFabcdef123456789',
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
     9
        '123456123456000000000')""";
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
    10
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
    11
    const "d" choose {
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
    12
        when "$a>0" value "$a + 9";
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
    13
        otherwise value "$hd";
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
    14
    }
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
    15
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
    16
    choose {
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
    17
        when "string-length($hex) = 1"
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
    18
            value "$_result * 16 + $d";
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
    19
        otherwise call "yml:hex2dec"
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
    20
            with "hex", "substring($hex, 2, 8)", 
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
    21
            with "_result", "$_result * 16 + $d";
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
    22
    }
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
    23
}
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
    24
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
    25
function "yml:dec2hex" {
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
    26
    param "dec";
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
    27
    param "bits", !16**7!;
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
    28
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
    29
    const "v", "floor($dec div $bits)";
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
    30
    value "substring('0123456789abcdef', $v + 1, 1)";
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
    31
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
    32
    if "$bits > 1" call "yml:dec2hex"
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
    33
        with "dec", "$dec - $bits * $v",
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
    34
        with "bits", "$bits div 16";
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
    35
}
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
    36
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
    37
def "yml:dec2hex" {
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
    38
    param "dec";
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
    39
    param "digits", 8;
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
    40
        
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
    41
    result call "yml:dec2hex" with "dec", "$dec", with "bits", "math:power(16, $digits - 1)";
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
    42
}
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
    43
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
    44
def "yml:hex2dec" {
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
    45
    param "hex";
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
    46
    result call "yml:hex2dec" with "hex", "$hex";
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
    47
}
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
    48
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
    49
def "yml:lcase" {
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
    50
    param "text", "''";
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
    51
    result "translate($text, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz')";
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
    52
}
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
    53
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
    54
def "yml:ucase" {
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
    55
    param "text", "''";
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
    56
    result "translate($text, 'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')";
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
    57
}
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
    58
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
    59
def "yml:mixedCase" {
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
    60
    param "text", "''";
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
    61
    result "concat(yml:lcase(substring($text,1,1)),substring($text,2))";
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
    62
}
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
    63
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
    64
def "yml:capit" {
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
    65
    param "text", "''";
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
    66
    result "concat(yml:ucase(substring($text,1,1)),substring($text,2))";
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
    67
}
b4a9a3122abb move python code into new package dir
Claudio Luck <claudio.luck@pep.foundation>
parents:
diff changeset
    68