aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authors-ol <s-ol@users.noreply.github.com>2020-04-24 09:26:29 +0000
committers-ol <s-ol@users.noreply.github.com>2020-04-24 10:38:23 +0000
commitf189c84d1174713c36d3f2c1d172e1ad76776b47 (patch)
tree4fd1b961ea9a9559563b3f088a6154e2240f69b2
parentlib/string: fix str/.. (diff)
downloadalive-f189c84d1174713c36d3f2c1d172e1ad76776b47.tar.gz
alive-f189c84d1174713c36d3f2c1d172e1ad76776b47.zip
better logging interface
-rw-r--r--alv/copilot.moon5
-rw-r--r--alv/logger.moon34
-rw-r--r--alv/registry.moon2
-rwxr-xr-xbin/alv2
-rwxr-xr-xbin/alv-wx28
-rw-r--r--spec/cell_spec.moon2
-rw-r--r--spec/input_spec.moon2
-rw-r--r--spec/parsing_spec.moon2
-rw-r--r--spec/registry_spec.moon2
-rw-r--r--spec/result_spec.moon2
-rw-r--r--spec/scope_spec.moon2
-rw-r--r--spec/tag_spec.moon2
-rw-r--r--spec/value_spec.moon2
13 files changed, 48 insertions, 39 deletions
diff --git a/alv/copilot.moon b/alv/copilot.moon
index e5868bb..9d573c0 100644
--- a/alv/copilot.moon
+++ b/alv/copilot.moon
@@ -22,7 +22,6 @@ class Copilot
-- @tparam string file name/path of the alive file to watch and execute
new: (file) =>
@registry = Registry!
- @eval_stream, @run_stream = io.stderr, io.stdout
@open file if file
open: (file) =>
@@ -43,6 +42,7 @@ class Copilot
@poll!
if @root
+ L\set_time 'run'
@registry\begin_tick!
ok, error = Error.try "updating", ->
@root\tick_io!
@@ -69,10 +69,9 @@ class Copilot
return
if @last_modification < modification
- L.stream = @eval_stream
+ L\set_time 'eval'
L\log "#{@file} changed at #{modification}"
@eval!
- L.stream = @run_stream
@last_modification = os.time!
{
diff --git a/alv/logger.moon b/alv/logger.moon
index 26126ac..4887d67 100644
--- a/alv/logger.moon
+++ b/alv/logger.moon
@@ -37,8 +37,19 @@ class Logger
else
error unpack res
- --- the stream to write to.
- -- @tfield file stream
+ --- set the output time (runtime/evaltime).
+ -- @tparam string time (`'eval'` or `'run'`)
+ set_time: (time) =>
+ @stream = switch time
+ when 'eval' then io.stderr
+ when 'run' then io.stdout
+ else error "invalid time '#{time}'"
+
+ --- write out a message (for internal use).
+ -- @tparam string message
+ put: (message) =>
+ @stream\write message, '\n'
+ @stream\flush!
--- static functions
-- @section static
@@ -46,21 +57,19 @@ class Logger
--- create a new Logger.
-- @classmethod
-- @tparam string level the log-level to log at.
- -- @tparam file stream the stream to write to.
- new: (level='log', @stream=io.stdout) =>
+ new: (level='log') =>
@level = levels[level] or level
@prefix = ''
+ @set_time 'eval'
for name, level in pairs levels
@[name] = (msg) =>
return unless @level <= level
-
- msg = tostring msg
- @stream\write @prefix, msg, '\n'
- if level == levels.error or @level == levels.debug
+ @put if level == levels.error or @level == levels.debug
where = debug.traceback '', 2
- @stream\write where, '\n'
- @stream\flush!
+ "#{msg}\n#{where}"
+ else
+ tostring msg
if level == levels.print
@push = (fn, ...) => fn ...
@@ -78,9 +87,8 @@ class Logger
-- - `'silent'`
--
-- @tparam ?string level the level to initialize the logger at.
- -- @tparam ?file stream the output stream (stdout).
- @init: (...) ->
- L = Logger ...
+ @init: (...) =>
+ L = @ ...
{
:Logger
diff --git a/alv/registry.moon b/alv/registry.moon
index a39a1d7..21f57aa 100644
--- a/alv/registry.moon
+++ b/alv/registry.moon
@@ -113,7 +113,7 @@ class Registry
--- get the active Registry.
--
- -- Raises an erro when there is no active Regsitry.
+ -- Raises an error when there is no active Registry.
--
-- @treturn Registry
@active: -> assert Registry.active_registry, "no active Registry!"
diff --git a/bin/alv b/bin/alv
index 6abe6c8..02aee7e 100755
--- a/bin/alv
+++ b/bin/alv
@@ -13,7 +13,7 @@ for a in *arg
else
table.insert arguments, a
-Logger.init arguments.log
+Logger\init arguments.log
assert arguments[1], "no filename given"
copilot = Copilot arguments[1]
diff --git a/bin/alv-wx b/bin/alv-wx
index 85d1875..7a61bbe 100755
--- a/bin/alv-wx
+++ b/bin/alv-wx
@@ -10,14 +10,18 @@ from wx
STARTSTOP = 100
-class GUIStream
- new: (@ctrl) =>
-
- write: (...) =>
- message = table.concat {...}, ''
- @ctrl\AppendText message
-
- flush: =>
+class GUILogger extends Logger
+ new: (level, @eval_ctrl, @run_ctrl) =>
+ super level
+
+ set_time: (time) =>
+ @ctrl = switch time
+ when 'eval' then @eval_ctrl
+ when 'run' then @run_ctrl
+ else error "invalid time '#{time}'"
+
+ put: (message) =>
+ @ctrl\AppendText message .. '\n'
class GUICopilot extends Copilot
new: (...) =>
@@ -48,11 +52,9 @@ class GUICopilot extends Copilot
splitter = wxSplitterWindow @frame, wx.wxID_ANY
- eval, ctrl = @mkPanel splitter, 'eval-time messages'
- @eval_stream = GUIStream ctrl
+ eval, @eval_ctrl = @mkPanel splitter, 'eval-time messages'
- run, ctrl = @mkPanel splitter, 'run-time messages'
- @run_stream = GUIStream ctrl
+ run, @run_ctrl = @mkPanel splitter, 'run-time messages'
splitter\SetMinimumPaneSize 60
splitter\SplitHorizontally eval, run, 0
@@ -136,5 +138,5 @@ for a in *arg
table.insert arguments, a
copilot = GUICopilot arguments[1]
-Logger.init arguments.log, copilot.eval_stream
+GUILogger\init arguments.log, copilot.eval_ctrl, copilot.run_ctrl
copilot.app\MainLoop!
diff --git a/spec/cell_spec.moon b/spec/cell_spec.moon
index 81f30b1..f58cb50 100644
--- a/spec/cell_spec.moon
+++ b/spec/cell_spec.moon
@@ -1,7 +1,7 @@
import Cell, RootCell from require 'alv.cell'
import ValueStream, Scope, Tag, SimpleRegistry, globals from require 'alv'
import Logger from require 'alv.logger'
-Logger.init 'silent'
+Logger\init 'silent'
hello_world = Cell.parse (Tag.parse '2'), { '', (ValueStream.sym 'hello'), ' ', (ValueStream.str 'world'), '' }
two_plus_two = Cell.parse (Tag.parse '3'), { '', (ValueStream.sym '+'), ' ', (ValueStream.num 2), ' ', (ValueStream.num 2), '' }
diff --git a/spec/input_spec.moon b/spec/input_spec.moon
index 131ed4c..9a380f1 100644
--- a/spec/input_spec.moon
+++ b/spec/input_spec.moon
@@ -1,7 +1,7 @@
import Input, Result, ValueStream, EventStream, IOStream from require 'alv.base'
import SimpleRegistry from require 'alv'
import Logger from require 'alv.logger'
-Logger.init 'silent'
+Logger\init 'silent'
reg = SimpleRegistry!
setup -> reg\grab!
diff --git a/spec/parsing_spec.moon b/spec/parsing_spec.moon
index ce519a4..ecc8ff3 100644
--- a/spec/parsing_spec.moon
+++ b/spec/parsing_spec.moon
@@ -2,7 +2,7 @@ import space, atom, expr, explist, cell, program, comment
from require 'alv.parsing'
import ValueStream from require 'alv'
import Logger from require 'alv.logger'
-Logger.init 'silent'
+Logger\init 'silent'
verify_parse = (parser, str) ->
with assert parser\match str
diff --git a/spec/registry_spec.moon b/spec/registry_spec.moon
index 82816ba..4b0cfc3 100644
--- a/spec/registry_spec.moon
+++ b/spec/registry_spec.moon
@@ -1,6 +1,6 @@
import Registry, Tag from require 'alv.registry'
import Logger from require 'alv.logger'
-Logger.init 'silent'
+Logger\init 'silent'
mk = ->
mock destroy: =>
diff --git a/spec/result_spec.moon b/spec/result_spec.moon
index 643514e..c254b42 100644
--- a/spec/result_spec.moon
+++ b/spec/result_spec.moon
@@ -1,7 +1,7 @@
import Result, Scope, SimpleRegistry from require 'alv'
import Input, Op, ValueStream, EventStream, IOStream from require 'alv.base'
import Logger from require 'alv.logger'
-Logger.init 'silent'
+Logger\init 'silent'
op_with_inputs = (inputs) ->
with Op!
diff --git a/spec/scope_spec.moon b/spec/scope_spec.moon
index 301512c..beeeeac 100644
--- a/spec/scope_spec.moon
+++ b/spec/scope_spec.moon
@@ -1,7 +1,7 @@
import Scope, ValueStream, Result from require 'alv'
import Op from require 'alv.base'
import Logger from require 'alv.logger'
-Logger.init 'silent'
+Logger\init 'silent'
class TestOp extends Op
new: (...) => super ...
diff --git a/spec/tag_spec.moon b/spec/tag_spec.moon
index e0f2023..e68409a 100644
--- a/spec/tag_spec.moon
+++ b/spec/tag_spec.moon
@@ -1,7 +1,7 @@
import Tag from require 'alv.tag'
import Registry from require 'alv.registry'
import Logger from require 'alv.logger'
-Logger.init 'silent'
+Logger\init 'silent'
reg = Registry!
setup -> reg\begin_eval!
diff --git a/spec/value_spec.moon b/spec/value_spec.moon
index 457557d..e867a70 100644
--- a/spec/value_spec.moon
+++ b/spec/value_spec.moon
@@ -1,7 +1,7 @@
import ValueStream, Result, Scope, SimpleRegistry from require 'alv'
import Op, Builtin from require 'alv.base'
import Logger from require 'alv.logger'
-Logger.init 'silent'
+Logger\init 'silent'
class TestOp extends Op
new: (...) => super ...