From a82cfc85ce249fe3598b03393773c1f6b2f369b9 Mon Sep 17 00:00:00 2001 From: Jonathan Stowe Date: Sat, 9 Feb 2019 08:41:08 +0000 Subject: [PATCH] Remove the Staticish implementation again It appears that the rakudo problem that made this break wasn't quite as fixed as I thought it was. This should address https://github.com/perl6/ecosystem-unbitrot/issues/458 This reverts commit 1bc85ac78c353328af3dbe53c70df6f2ade9a4ba. --- lib/Lumberjack.pm | 111 ++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 107 insertions(+), 4 deletions(-) diff --git a/lib/Lumberjack.pm b/lib/Lumberjack.pm index b474e57..a347ee9 100644 --- a/lib/Lumberjack.pm +++ b/lib/Lumberjack.pm @@ -546,16 +546,29 @@ may want to adjust this. =end pod -use soft; -use Staticish; +class Lumberjack { -class Lumberjack is Static { + my Lumberjack $lumberjack; class Message { ... }; has Supplier $!supplier; has Supply $.all-messages; + method !instance(|c) { + $lumberjack //= self.new(|c); + } + + proto method all-messages(|c) { * } + + multi method all-messages(Lumberjack:U:) returns Supply { + self!instance.all-messages; + } + + multi method all-messages(Lumberjack:D:) returns Supply { + $!all-messages; + } + enum Level does role { multi method ACCEPTS(Message $m) { $m.level == self; @@ -563,15 +576,82 @@ class Lumberjack is Static { }; has Supply $.fatal-messages; + + proto method fatal-messages(|c) { * } + + multi method fatal-messages(Lumberjack:U:) returns Supply { + self!instance.fatal-messages; + } + + multi method fatal-messages(Lumberjack:D:) returns Supply { + $!fatal-messages; + } has Supply $.error-messages; + + proto method error-messages(|c) { * } + + multi method error-messages(Lumberjack:U:) returns Supply { + self!instance.error-messages; + } + + multi method error-messages(Lumberjack:D:) returns Supply { + $!error-messages; + } has Supply $.warn-messages; + + proto method warn-messages(|c) { * } + multi method warn-messages(Lumberjack:U:) returns Supply { + self!instance.warn-messages; + } + + multi method warn-messages(Lumberjack:D:) returns Supply { + $!warn-messages; + } has Supply $.info-messages; + + proto method info-messages(|c) { * } + multi method info-messages(Lumberjack:U:) returns Supply { + self!instance.info-messages; + } + + multi method info-messages(Lumberjack:D:) returns Supply { + $!info-messages; + } has Supply $.debug-messages; + + proto method debug-messages(|c) { * } + multi method debug-messages(Lumberjack:U:) returns Supply { + self!instance.debug-messages; + } + + multi method debug-messages(Lumberjack:D:) returns Supply { + $!debug-messages; + } has Supply $.trace-messages; + proto method trace-messages(|c) { * } + multi method trace-messages(Lumberjack:U:) returns Supply { + self!instance.trace-messages; + } + + multi method trace-messages(Lumberjack:D:) returns Supply { + $!trace-messages; + } + has Level $.default-level is rw = Error; + proto method default-level(|c) { * } + + multi method default-level(Lumberjack:U:) returns Level is rw { + self!instance.default-level; + } + multi method default-level(Lumberjack:D:) returns Level is rw { + $!default-level; + } + + + class Message { has Mu $.class; has Level $.level; @@ -602,9 +682,12 @@ class Lumberjack is Static { } - method log(Message $message) is hidden-from-backtrace { + multi method log(Lumberjack:D: Message $message) is hidden-from-backtrace { $!supplier.emit($message); } + multi method log(Lumberjack:U: Message $message) is hidden-from-backtrace { + self!instance.log($message); + } role Logger { my Level $level; @@ -662,7 +745,27 @@ class Lumberjack is Static { has Dispatcher @.dispatchers; + proto method dispatchers(|c) { * } + + multi method dispatchers(Lumberjack:U:) { + self!instance.dispatchers; + } + + multi method dispatchers(Lumberjack:D:) { + @!dispatchers; + } + has Supply $.filtered-messages; + + proto method filtered-messages(|c) { * } + + multi method filtered-messages(Lumberjack:U:) returns Supply { + self!instance.filtered-messages; + } + + multi method filtered-messages(Lumberjack:D:) returns Supply { + $!filtered-messages; + } submethod BUILD() { $!supplier = Supplier.new;