diff --git a/.gitignore b/.gitignore index 7179e32..a005ec1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ .dub/ *test-library* *.lst +libdlog.a diff --git a/source/dlog/core.d b/source/dlog/core.d index 7f6a5d4..c1f891a 100644 --- a/source/dlog/core.d +++ b/source/dlog/core.d @@ -7,48 +7,9 @@ module dlog.core; import std.conv : to; import std.range : join; +import dlog.transform : MessageTransform; import dlog.defaults; -/** - * DefaultTransform - * - * Provides a transformation of the kind - * - * [date+time] (srcFile:lineNumber): message `\n` - */ -public final class DefaultTransform : MessageTransform -{ - /** - * Performs the default transformation - * - * Params: - * text = text input to transform - * context = the context (if any) - * Returns: the transformed text - */ - public override string transform(string text, string[] context) - { - string message; - - /* Date and time */ - import std.datetime.systime : Clock, SysTime; - SysTime currTime = Clock.currTime(); - import std.conv : to; - string timestamp = to!(string)(currTime); - message = "["~timestamp~"]"; - - /* Module information */ - message = message ~ "\t("; - message = message ~ context[1]~":"~context[2]; - message = message ~ "): "~text; - - /* Add trailing newline */ - message = message ~ '\n'; - - return message; - } -} - /** * Logger * @@ -117,51 +78,7 @@ public class Logger protected abstract void logImpl(string message); } -/** -* MessageTransform -* -* A message transform takes in text, applies -* a transformation to it and outputs said text -* -* Transforms may be chained -*/ -public abstract class MessageTransform -{ - /* Next transformation (if any) */ - private MessageTransform chainedTransform; - /** - * The actual textual transformation. - * - * This is to be implemented by sub-classes - */ - public abstract string transform(string text, string[] context); - - /** - * Chain a transform - */ - public final void chain(MessageTransform transform) - { - chainedTransform = transform; - } - - /** - * Perform the transformation - */ - public final string execute(string text, string[] context) - { - /* Perform the transformation */ - string transformedText = transform(text, context); - - /* If there is a chained transformation */ - if(chainedTransform) - { - transformedText = chainedTransform.execute(transformedText, context); - } - - return transformedText; - } -} /** * Tests the DefaultLogger diff --git a/source/dlog/defaults.d b/source/dlog/defaults.d index ec7a740..1c626c8 100644 --- a/source/dlog/defaults.d +++ b/source/dlog/defaults.d @@ -4,6 +4,7 @@ module dlog.defaults; import dlog.core : Logger; +import dlog.transform : MessageTransform; /** * DefaultLogger @@ -24,3 +25,43 @@ public final class DefaultLogger : Logger write(message); } } + +/** + * DefaultTransform + * + * Provides a transformation of the kind + * + * [date+time] (srcFile:lineNumber): message `\n` + */ +public final class DefaultTransform : MessageTransform +{ + /** + * Performs the default transformation + * + * Params: + * text = text input to transform + * context = the context (if any) + * Returns: the transformed text + */ + public override string transform(string text, string[] context) + { + string message; + + /* Date and time */ + import std.datetime.systime : Clock, SysTime; + SysTime currTime = Clock.currTime(); + import std.conv : to; + string timestamp = to!(string)(currTime); + message = "["~timestamp~"]"; + + /* Module information */ + message = message ~ "\t("; + message = message ~ context[1]~":"~context[2]; + message = message ~ "): "~text; + + /* Add trailing newline */ + message = message ~ '\n'; + + return message; + } +} \ No newline at end of file diff --git a/source/dlog/transform.d b/source/dlog/transform.d new file mode 100644 index 0000000..66e6b72 --- /dev/null +++ b/source/dlog/transform.d @@ -0,0 +1,47 @@ +module dlog.transform; + +/** +* MessageTransform +* +* A message transform takes in text, applies +* a transformation to it and outputs said text +* +* Transforms may be chained +*/ +public abstract class MessageTransform +{ + /* Next transformation (if any) */ + private MessageTransform chainedTransform; + + /** + * The actual textual transformation. + * + * This is to be implemented by sub-classes + */ + public abstract string transform(string text, string[] context); + + /** + * Chain a transform + */ + public final void chain(MessageTransform transform) + { + chainedTransform = transform; + } + + /** + * Perform the transformation + */ + public final string execute(string text, string[] context) + { + /* Perform the transformation */ + string transformedText = transform(text, context); + + /* If there is a chained transformation */ + if(chainedTransform) + { + transformedText = chainedTransform.execute(transformedText, context); + } + + return transformedText; + } +} \ No newline at end of file