marqdo

12-list-cliok

features/12-list-cli.mq.md

Structure

importtable:lib/table.mq.mdcsv:lib/csv.mq.mdcli:lib/cli.mq.md
fn · h1Sort CSV rows and parse flags
comment

Zero plugins: parse CSV, sort by key, parse --input.

fn · h1main
bind `raw` = name,score bob,2 alice,10
bind `rows` = > csv.parse text=`raw`
bind `rows` = > table.sort_by list=`rows` key=name
bind `r0` = > at value=`rows` index=0
call> print text=[name](`r0`)
bind `args` = > split value=--input,scores.csv,--pretty sep=,
bind `flags` = > cli.parse args=`args`
call> print text=[input](`flags`)
branch
arm[pretty](`flags`)
call> print text=mid-m5-ok
armelse
call> print text=mid-m5-fail
Functions
Variables
  • args list · 3
    #value
    1--input
    2scores.csv
    3--pretty
  • flags map · 2
    inputscores.csv
    prettyTrue
  • r0 map · 2
    namealice
    score10
  • raw text
    name,score bob,2 alice,10
  • rows list · 2
    #namescore
    1alice10
    2bob2

Execution

alice scores.csv mid-m5-ok

Source

---
title: Mid stdlib — lists and cli
description: table sort/unique/zip + cli.parse (Mid M5)
import table:lib/table.mq.md
import csv:lib/csv.mq.md
import cli:lib/cli.mq.md
---

# Sort CSV rows and parse flags

Zero plugins: parse CSV, sort by key, parse `--input`.

# main

**raw = "name,score\nbob,2\nalice,10\n"**
**rows = > csv.parse text=`raw`**
**rows = > table.sort_by list=`rows` key="name"**
**r0 = > at value=`rows` index=0**
> print text=[name](`r0`)

**args = > split value="--input,scores.csv,--pretty" sep=","**
**flags = > cli.parse args=`args`**
> print text=[input](`flags`)
1. [pretty](`flags`)
  > print text=mid-m5-ok
2. *
  > print text=mid-m5-fail

Variable