darklua-demo 3.2.1

Transform Lua scripts
Documentation
use darklua_core::rules::Rule;

test_rule!(
    remove_continue_without_hash,
    json5::from_str::<Box<dyn Rule>>(
        r#"{
            rule: 'remove_continue',
            runtime_identifier_format: '_{name}'
        }"#
    ).unwrap(),
    continue_inside_numeric_for("for i = 1,10 do continue end") => "for i = 1,10 do repeat break until true end",
    continue_inside_generic_for("for i,v in {a,b,c} do continue end") => "for i,v in {a,b,c} do repeat break until true end",
    continue_inside_repeat("repeat continue until true") => "repeat repeat break until true until true",
    continue_inside_while("while true do continue end") => "while true do repeat break until true end",
    continue_break_inside_numeric_for("for i = 1,10 do if true then break end continue end")
        => "for i = 1,10 do local _break = false repeat if true then _break = true break end break until true if _break then break end end",
    continue_break_inside_generic_for("for i,v in {a,b,c} do if true then break end continue end")
        => "for i,v in {a,b,c} do local _break = false repeat if true then _break = true break end break until true if _break then break end end",
    continue_break_inside_repeat("repeat if true then break end continue until true")
        => "repeat local _break = false repeat if true then _break = true break end break until true if _break then break end until true",
    continue_break_inside_while("while true do if true then break end continue end")
        => "while true do local _break = false repeat if true then _break = true break end break until true if _break then break end end",
    break_continue_inside_numeric_for("for i = 1,10 do if true then break elseif false then break end continue end")
        => "for i = 1,10 do local _continue = false repeat if true then break elseif false then break end _continue = true break until true if not _continue then break end end",
    break_continue_inside_generic_for("for i,v in {a,b,c} do if true then break elseif false then break end continue end")
        => "for i,v in {a,b,c} do local _continue = false repeat if true then break elseif false then break end _continue = true break until true if not _continue then break end end",
    break_continue_inside_repeat("repeat if true then break elseif false then break end continue until true")
        => "repeat local _continue = false repeat if true then break elseif false then break end _continue = true break until true if not _continue then break end until true",
    break_continue_inside_while("while true do if true then break elseif false then break end continue end")
        => "while true do local _continue = false repeat if true then break elseif false then break end _continue = true break until true if not _continue then break end end"
);

#[test]
fn deserialize_from_object_notation() {
    json5::from_str::<Box<dyn Rule>>(
        r#"{
        rule: 'remove_continue',
		runtime_identifier_format: '_{name}'
    }"#,
    )
    .unwrap();
}