summaryrefslogtreecommitdiffstats
path: root/lib/Bread/Board.pm
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2012-12-28 17:43:58 -0600
committerJesse Luehrs <doy@tozt.net>2012-12-28 17:43:58 -0600
commit5b860788353f345bec807a8eab3882c24acc3971 (patch)
tree2a9cb096867baebc6f1c9244a47b9f803e126b8a /lib/Bread/Board.pm
parenta34c723255bcc33e331a093f2df4a557fb117760 (diff)
downloadp6-bread-board-5b860788353f345bec807a8eab3882c24acc3971.tar.gz
p6-bread-board-5b860788353f345bec807a8eab3882c24acc3971.zip
add .gist for containers, for easier debugging
Diffstat (limited to 'lib/Bread/Board.pm')
-rw-r--r--lib/Bread/Board.pm28
1 files changed, 28 insertions, 0 deletions
diff --git a/lib/Bread/Board.pm b/lib/Bread/Board.pm
index 1934ec0..8ee05e7 100644
--- a/lib/Bread/Board.pm
+++ b/lib/Bread/Board.pm
@@ -356,6 +356,34 @@ class Container does Traversable {
method resolve (Str :$service) {
return self.fetch($service).get;
}
+
+ method gist (:$indent = 0) {
+ my $spaces = " " x $indent;
+ my $str = "{$spaces}{$.name // '???'} \{\n";
+
+ for $.sub_containers.values -> $c {
+ $str ~= $c.gist(indent => $indent + 2);
+ }
+
+ for $.services.values -> $s {
+ $str ~= "$spaces {$s.name // '???'}\n";
+ if ($s ~~ HasDependencies) {
+ for $s.dependencies.kv -> $dep_name, $dep {
+ $str ~= "$spaces $dep_name\: {$dep.service_path // '???'}\n";
+ }
+ }
+ if ($s ~~ HasParameters) {
+ for $s.parameters.keys -> $param_name {
+ $str ~= "$spaces !$param_name\n";
+ }
+ }
+
+ }
+
+ $str ~= "$spaces\}\n";
+
+ return $str;
+ }
}
role Singleton does Lifecycle is export {