darklua-demo 3.2.1

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

test_rule!(
    remove_redeclared_keys,
    json5::from_str::<Box<dyn Rule>>(
        r#"{
            rule: 'remove_redeclared_keys',
            runtime_identifier_format: '{name}'
        }"#
    ).unwrap(),
    redeclared_value_and_index("local a = {1,[1]='A'}") => "local a = {'A'}",
    redeclared_field_and_index("local a = {x=1,['x']=2}") => "local a = {['x']=2}",
    redeclared_string_indexes("local a = {['x']=1,['x']=2}") => "local a = {['x']=2}",
    redeclared_string_fields("local a = {x=1,x=2}") => "local a = {x=2}",
    redeclared_numeric_indexes("local a = {[1]='A',[1]='B'}") => "local a = {'B'}",
    redeclared_values_and_indexes_special("local a = {1,2,3,[3]='A',[4]='B',[6]='C',[7]='D'}")
        => "local a = {1,2,'A','B',[6]='C',[7]='D'}",
    redeclared_side_effects("local a = {1,[f()]='A'}") => "local a = (function() local tbl = {1} tbl[f()] = 'A' return tbl end)()",
);

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