Core components for SobaScript. Extensible Modular Scripting Programming Language.
-- #SobaScript
https://github.com/3F/SobaScript
Licensed under the MIT License
Copyright (c) 2014-2019  Denis Kuzmin < x-3F@outlook.com > GitHub/3F
[ ☕ Donate ]
SobaScript.Z.Core contributors: https://github.com/3F/SobaScript.Z.Core/graphs/contributors
Supports composite conditions with limited short-circuit evaluation (separately for all brackets)
Additional Operators:
 ===, !==, ~=, ==, !=, >=, <=, !, >, <, ^=, =^
#[( #[var count] > 10 || ($(isAllow) && !false) ) {
    ...
}
else{
    ...
}]#[($(Configuration) ~= Deb && $(count) > 10 || $(Configuration) == "Release" ) {
    ...
}]#[( (1 < 2 && 2 == 2 && ( true || ((false || 2 >= 2) && (1 > 7 && true)))) )
{
    #[( #[var count] > 10 || ($(isAllow) && !false) ) {
        ...
    }
    else{
        ...
    }]
}]#[( !(1 > 2) ) {
    is greater
}]Through E-MSBuild
#[$(...)]#[$(
    [System.Math]::Exp('$(
        [MSBuild]::Multiply(
            $([System.Math]::Log(10)), 
            4
        ))'
    )
)]#[var revBuild  = #[$(
                    [System.TimeSpan]::FromTicks('$(
                        [MSBuild]::Subtract(
                        $(tNow), 
                        $(tBase))
                    )')
                    .TotalMinutes
                    .ToString('0'))]]Through Varhead.
#[var name = mixed value]
#[var name]#[var branchSha1 = #[IO sout("git", "rev-parse --short HEAD")]]Unset variable:
#[var -name]Default value for variable:
#[var +name]Protects from errors in try{...} block and handles it in catch{...}
#[try
{ 
    ...
}
catch(err, msg)
{
    $(err) - Type of Exception
    $(msg) - Error Message
    ...
}]#[try
{ 
     #[IO copy.file("notreal.file", "artefact.t1", false)]
}
catch(err, msg)
{
    #[($(err) == System.IO.FileNotFoundException) {
        #[OWP item("-Build-").writeLine(true): Found error #[$(msg)]]
    }]        
}]#[try {
    #[Box data.pack("header", false): 
    
        ...
    ]
}catch{ }]#["
    Example
          " Description 1 "
          " Description 2 "
"]#[" Example "]Container of data for operations such for templating, repeating, etc.
#[Box iterate(i = 0; $(i) < 10; i += 1): 
    ...
    #[Box operators.sleep(250)]
]#[Box repeat($(i) < 10; true): 
    #[File append("test.txt"): 
        #[$(i)] 
    ]
    $(i = $([MSBuild]::Add($(i), 1)))
]#[Box repeat($(flag)): ...]
#[Box iterate(; $(flag); ): ...]#[try {
    #[Box data.pack("header", false): 
    
        #[$(data = "Hello $(user) !")]
        #[File appendLine("$(fname)"): ------ #[$(data)] ------ ]
    ]
}catch{ }]
#[$(fname = 'f1.txt')]
#[$(user  = 'UserA')]
#[Box data.get("header", true)]
#[$(user = 'UserB')]
#[Box data.get("header", true)] ------ Hello UserA ! ------ 
 ------ Hello UserB ! ------