[PATCH 6/7] box/console: Provide console.eos() api

Cyrill Gorcunov gorcunov at gmail.com
Fri Oct 4 10:49:25 MSK 2019


The other modules would be able to find out which eos marker
is currently active. For example when reading replies from
remote server via text based console protocol.

@TarantoolBot document
Title: > require('console').eos()

Returns a string with currently active end of string marker.

Part-of #3834

Reviewed-by: Konstantin Osipov <kostja.osipov at gmail.com>
Signed-off-by: Cyrill Gorcunov <gorcunov at gmail.com>
---
 src/box/lua/console.lua | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/src/box/lua/console.lua b/src/box/lua/console.lua
index efd1cddd8..7cf8cfb68 100644
--- a/src/box/lua/console.lua
+++ b/src/box/lua/console.lua
@@ -177,6 +177,23 @@ local function current_eos()
     return output_eos[current_output()["fmt"]]
 end
 
+--
+-- Set/get current console EOS value from
+-- currently active output format.
+local function console_eos(eos_value)
+    if not eos_value then
+        return tostring(current_eos())
+    end
+    -- We can't allow to change yaml eos format
+    -- because it is a part of encoding standart.
+    local d = current_output()
+    if d["fmt"] == "yaml" then
+        error("console.eos(): is immutable for output " .. d["fmt"])
+    else
+        output_eos[d["fmt"]] = eos_value
+    end
+end
+
 --
 -- Map output format descriptor into a "\set" command.
 local function output_to_cmd_string(desc)
@@ -805,6 +822,7 @@ package.loaded['console'] = {
     delimiter = delimiter;
     set_default_output = set_default_output;
     get_default_output = get_default_output;
+    eos = console_eos;
     ac = ac;
     connect = connect;
     listen = listen;
-- 
2.20.1




More information about the Tarantool-patches mailing list