murex Shell Docs

API Reference: lang.MarshalData()

Converts structured memory into a murex data-type (eg for stdio)



b, err := lang.MarshalData(p, dataType, data)


func exampleCommand(p *lang.Process) error {
    data := map[string]string {
        "foo": "hello foo",
        "bar": "hello bar",

    dataType := "json"

    b, err := lang.MarshalData(p, dataType, data)
    if err != nil {
        return err

    _, err := p.Stdout.Write(b)
    return err


Go source file:

package lang

import (

// MarshalData is a global marshaller which should be called from within murex
// builtin commands (etc).
// See docs/apis/marshaldata.html for more details
func MarshalData(p *Process, dataType string, data interface{}) (b []byte, err error) {
    // This is one of the very few maps in Murex which isn't hidden behind a sync
    // lock of one description or other. The rational is that even mutexes can
    // add a noticeable overhead on the performance of tight loops and I expect
    // this function to be called _a lot_ while also only needing to be written
    // to via code residing in within builtin types init() function (ie while
    // murex is effectively single threaded). So there shouldn't be any data-
    // races -- PROVIDING developers strictly follow the pattern of only writing
    // to this map within init() func's.
    if Marshallers[dataType] == nil {
        return nil, errors.New("I don't know how to marshal `" + dataType + "`.")

    b, err = Marshallers[dataType](p, data)
    if err != nil {
        return nil, errors.New("[" + dataType + " marshaller] " + err.Error())



  1. *lang.Process: Process's runtime state. Typically expressed as the variable p
  2. string: murex data type
  3. interface{}: data you wish to marshal

See Also

This site is rebuilt weekly, the content is automatically generated from murex's source code. Last built on Mon Aug 3 06:12:53 UTC 2020 against commit 2557f7c2557f7cc7535c452c21d89164bd38ed8996f02fd. Downloadable murex binaries are also built weekly. Current version is 0.52.2000 BETA which has been verified against tests.