sealcode / sealious

An extensible, declarative node framework
25 stars 2 forks source link

Wyświetlać komunikat o niespełnionych dependencies #20

Closed kuba-orlik closed 9 years ago

kuba-orlik commented 9 years ago

Jeżeli stworzę prometeuszowy moduł, który w tablicy requires ma wpisany injectable, który nie jest definiowany przez inny moduł, Prometeusz powinien mi powiedzieć, który to moduł i jaki injectable nie jest spełniony. Aktualnie wyświetla komunikat błędu, ale nie jest w nim zawarta informacja, o który moduł/injectable chodzi.

Delfinek commented 9 years ago

Chcę to!

2014-11-20 12:57 GMT+01:00 Kuba Orlik notifications@github.com:

Jeżeli stworzę prometeuszowy moduł, który w tablicy requires ma wpisany injectable, który nie jest definiowany przez inny moduł, Prometeusz powinien mi powiedzieć, który to moduł i jaki injectable nie jest spełniony. Aktualnie wyświetla komunikat błędu, ale nie jest w nim zawarta informacja, o który moduł/injectable chodzi.

— Reply to this email directly or view it on GitHub https://github.com/groovy354/Prometheus/issues/20.

kuba-orlik commented 9 years ago

Przypisana! Zrobisz to do następnego spotkania?

Delfinek commented 9 years ago

Postaram się jutro, albo na.

On 20 November 2014 14:29, Kuba Orlik notifications@github.com wrote:

Przypisana! Zrobisz to do następnego spotkania?

— Reply to this email directly or view it on GitHub https://github.com/groovy354/Prometheus/issues/20#issuecomment-63807448.

adwydman commented 9 years ago

Dodanie argumentu: throw new Error("Unresolvable modules dependencies: \n" + where_the_unresolvable_is(module_info, registered_injectables));

Funkcja:

function where_the_unresolvable_is(modules, registered_injectables){ //it takes array of modules and search for unresolvable dependencies var message = ""; var injectables = registered_injectables.toArray(); var has_unresolved = false; for(var i in modules){ for(var j in modules){ console.log('Porównuję'); console.log(intersection_of_arrays(modules[i].requires, modules[j].defines)); console.log(intersection_of_arrays(modules[j].requires, modules[i].defines)); console.log(i!=j && intersection_of_arrays(modules[i].requires, modules[j].defines) && intersection_of_arrays(modules[j].requires, modules[i].defines)); if(i!=j && intersection_of_arrays(modules[i].requires, modules[j].defines).length && intersection_of_arrays(modules[j].requires, modules[i].defines).length){ message += "There are cyclic dependencies between modules: " + i + " and " + j + "\n"; has_unresolved = true; } } }

for (var k in modules) {
    for(var requirement in modules[k].requires) {
        if (injectables.indexOf(modules[k].requires[requirement]) == -1) {
            has_unresolved = true;
            message += "Module '" + k + "' requires '"  + modules[k].requires[requirement] + "' which was not found!\n";
        }
    }
}
if(!has_unresolved){
    message = "There are no unresolved dependencies";
}
return message;

}

Delfinek commented 9 years ago

Done. Wyświetlamy powiadomienia w obydwóch przypadkach:

edit (Mariusz): modół -> moduł ;P