Skip to main content

melina: meta/xml converter

Project description

Melina can convert meta.xml to meta language (similar to protobuf) and back.

melina --meta-out DIR1 meta.xml  # to meta
melina --xml-out DIR2 meta.meta  # back to xml

melina --meta-stdout meta.xml > x.meta  # or to stdout

This is how melina language looks like:

/// pdmeta: "1.1", domain: "f", product: "b", release: "AX", version: "1.5", revision: "198"

// line above is a header with meta module versions.
// It needs to be the first symbol in file and start with '///'

mo SCALAR
{
    // you can define managed objects like structs in C++

    bool x;
    int y;
    string z;
};

mo COMPLEX
{
    // enum/struct fields contain definition of enum/struct
    // enum/struct name should begin with small letter - after all it's a name of variable

    enum x
    {
        A = 1,
        B,
        C = 2
    };

    struct y
    {
        int z;
        struct v { int w; };
    };
};

mo CARDINALITY
{
    // you can define cardinality of each managed object or struct field

    int x; // required by default
    optional int y; // optional integer, may be null
    repeated int z; // list of integers
    repeated(15) int z; // at most 15 'z' integers
};

mo DEFAULTS
{
    // bool, int, string, enum can have default values

    bool x [default = true];
    int y [default = 12];
    string z [default = "foo bar"];
    enum v [default = 12] { A = 1, B = 12 };
};

mo RANGES
{
    // int/string fields can specify allowed ranges
    // if int has a 3-param specifier, it's considered a "float"

    int(0..12) x;  // allowed integers from 0 to 12 inclusive
    int(-0.5, 0.5, 0.001) y;  // allowed floats from -0.5 to 0.5 inclusive with step 0.001
    string(0..10) z; // allowed string length from 0 to 10 chars inclusive
};

mo UNITS
{
    // integers can have units (for documentational purposes)

    int y [units = "kbps"];
};

/**
 * Example managed object description.
 */
mo COMMENTS
{
    // you can use C++-style '//foo' or '/*foo*/' comments in meta files
    // doxygen-style comments '///foo' and '/**foo*/' are treated as mo/field description,
    // if present immediately above or rightwards of mo/field

    int x;  /// Example scalar field description
    int y;  /** Example scalar field description */

    /**
     * Example complex type description.
     */
    struct z
    {
    };

    /// Example complex type description.
    struct v
    {
    };
};

mo CHILDREN -> FIRST, SECOND, THIRD(10)
{
    // managed object can have children defined
    // children can have max count specified in parens (at most 10 THIRD children)
};

mo(hc) FLAGS
{
    // each managed object has: hidden('h'), create('c'), update('u'), delete('d') flags.
    // If not specified, hidden is assumed false, rest is assumed true.
    // Specification may be provided as 'hcud' letters in parens.
};

Project details


Release history Release notifications | RSS feed

This version

0.1

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

melina-0.1.tar.gz (14.0 kB view details)

Uploaded Source

Built Distribution

melina-0.1-py2.py3-none-any.whl (17.3 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file melina-0.1.tar.gz.

File metadata

  • Download URL: melina-0.1.tar.gz
  • Upload date:
  • Size: 14.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for melina-0.1.tar.gz
Algorithm Hash digest
SHA256 e277912546855f3c02155533498caafa0ecf256de870de8d3e52ed5c5e03d518
MD5 b0aee751082631987bef361243e71ab9
BLAKE2b-256 933a5a4ed9e4024513475b3d488c3da8a203e01a3472f2dcae2d2007507fe32b

See more details on using hashes here.

File details

Details for the file melina-0.1-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for melina-0.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 30ef825cd52aa25daa340933f31486a3f2254c520abf9f084007d1b82ad3c0eb
MD5 290f73a6cda316f4c0dc2a47ed47dbd6
BLAKE2b-256 d6cfb763c2865d803e954e609db9011ec8ea38458cc0ecc88add5328fe31339e

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page