@accordproject/markdown-cli

    0.14.1 • Public • Published

    Command Line

    Install the @accordproject/markdown-cli npm package to access the Markdown Transform command line interface (CLI). After installation you can use the markus command and its sub-commands as described below.

    To install the Markdown CLI:

    npm install -g @accordproject/markdown-cli

    Usage

    markus is a command line tool to debug and use markdown transformations.

    markus <cmd> [args]
    
    Commands:
      markus transform  transform between two formats
    
    Options:
      --version      Show version number                                   [boolean]
      --verbose, -v                                                 [default: false]
      --help         Show help                                             [boolean]

    markus transform

    The markus transform command lets you transform between any two of the supported formats

    markus transform
    
    transform between two formats
    
    Options:
      --version      Show version number                                   [boolean]
      --verbose, -v  verbose output                       [boolean] [default: false]
      --help         Show help                                             [boolean]
      --input        path to the input                                      [string]
      --from         source format                    [string] [default: "markdown"]
      --to           target format                  [string] [default: "commonmark"]
      --via          intermediate formats                      [array] [default: []]
      --roundtrip    roundtrip transform                  [boolean] [default: false]
      --output       path to the output file                                [string]
      --model        array of concerto model files                           [array]
      --template     template grammar                                       [string]
      --contract     contract template                    [boolean] [default: false]
      --currentTime  set current time                       [string] [default: null]
      --plugin       path to a parser plugin                                [string]
      --sourcePos    enable source position               [boolean] [default: false]
      --offline      do not resolve external models       [boolean] [default: false]

    Example

    For example, you can use the transform command on the README.md file from the Hello World template:

    markus transform --input README.md

    returns:

    {
      "$class": "org.accordproject.commonmark.Document",
      "xmlns": "http://commonmark.org/xml/1.0",
      "nodes": [
        {
          "$class": "org.accordproject.commonmark.Heading",
          "level": "1",
          "nodes": [
            {
              "$class": "org.accordproject.commonmark.Text",
              "text": "Hello World"
            }
          ]
        }, 
        {
          "$class": "org.accordproject.commonmark.Paragraph",
          "nodes": [
            {
              "$class": "org.accordproject.commonmark.Text",
              "text": "This is the Hello World of Accord Project Templates. Executing the clause will simply echo back the text that occurs after the string "
            }, 
            {
              "$class": "org.accordproject.commonmark.Code",
              "text": "Hello"
            }, 
            {
              "$class": "org.accordproject.commonmark.Text",
              "text": " prepended to text that is passed in the request."
            }
          ]
        }
      ]
    }

    --from and --to options

    You can indicate the source and target formats using the --from and --to options. For instance, the following transforms from markdown to html:

    markus transform --from markdown --to html

    returns:

    <html>
    <body>
    <div class="document">
    <h1>Hello World</h1>
    <p>This is the Hello World of Accord Project Templates. Executing the clause will simply echo back the text that occurs after the string <code>Hello</code> prepended to text that is passed in the request.</p>
    </div>
    </body>
    </html>

    --via option

    When there are several paths between two formats, you can indicate an intermediate format using the --via option. The following transforms from markdown to html via slate:

    markus transform --from markdown --via slate --to html

    returns:

    <html>
    <body>
    <div class="document">
    <h1>Hello World</h1>
    <p>This is the Hello World of Accord Project Templates. Executing the clause will simply echo back the text that occurs after the string <code>Hello</code> prepended to text that is passed in the request.</p>
    </div>
    </body>
    </html>

    --roundtrip option

    When the transforms allow, you can roundtrip between two formats, i.e., transform from a source to a target format and back to the source target. For instance, the following transform from markdown to slate and back to markdown:

    markus transform --from markdown --to slate --input README.md --roundtrip

    returns:

    Hello World
    ====
    
    This is the Hello World of Accord Project Templates. Executing the clause will simply echo back the text that occurs after the string `Hello` prepended to text that is passed in the request.

    Roundtripping might result in small changes in the source markdown, but should always be semantically equivalent. In the above example the source ATX heading # Hello World has been transformed into a Setext heading equivalent.

    --model --contract options

    When handling TemplateMark, one has to provide a model using the --model option and whether the template is a clause (default) or a contract (using the --contract option).

    For instance the following converts markdown with the template extension to a TemplateMark document object model:

    markus transform --from markdown_template --to templatemark --model model/model.cto --input text/grammar.tem.md

    returns:

    {
      "$class": "org.accordproject.commonmark.Document",
      "xmlns": "http://commonmark.org/xml/1.0",
      "nodes": [
        {
          "$class": "org.accordproject.templatemark.ClauseDefinition",
          "name": "top",
          "elementType": "org.accordproject.helloworld.HelloWorldClause",
          "nodes": [
            {
              "$class": "org.accordproject.commonmark.Paragraph",
              "nodes": [
                {
                  "$class": "org.accordproject.commonmark.Text",
                  "text": "Name of the person to greet: "
                }, 
                {
                  "$class": "org.accordproject.templatemark.VariableDefinition",
                  "name": "name",
                  "elementType": "String"
                }, 
                {
                  "$class": "org.accordproject.commonmark.Text",
                  "text": "."
                }, 
                {
                  "$class": "org.accordproject.commonmark.Softbreak"
                }, 
                {
                  "$class": "org.accordproject.commonmark.Text",
                  "text": "Thank you!"
                }
              ]
            }
          ]
        }
      ]
    }

    --template option

    Parsing or drafting contract text using a template can be done using the --template option, usually with the corresponding --model option to indicate the template model.

    For instance, the following parses a markdown with CiceroMark extension to get the correspond contract data:

    markus transform --from markdown_cicero --to data --template text/grammar.tem.md --model model/model.cto --input text/sample.md 

    returns:

    {
      "$class": "org.accordproject.helloworld.HelloWorldClause",
      "name": "Fred Blogs",
      "clauseId": "fc345528-2604-420c-9e02-8d85e03cb65b"
    }

    Install

    npm i @accordproject/markdown-cli

    DownloadsWeekly Downloads

    1,851

    Version

    0.14.1

    License

    Apache-2.0

    Unpacked Size

    32.9 kB

    Total Files

    5

    Last publish

    Collaborators

    • mttrbrts
    • petrgazarov
    • dselman
    • jsimeon
    • irmerk
    • dianalease