mirror of
https://github.com/kellyjonbrazil/jc.git
synced 2025-07-17 01:32:37 +02:00
doc update
This commit is contained in:
@ -147,6 +147,7 @@ option.
|
|||||||
- `--airport` enables the `airport -I` command parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/airport))
|
- `--airport` enables the `airport -I` command parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/airport))
|
||||||
- `--airport-s` enables the `airport -s` command parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/airport_s))
|
- `--airport-s` enables the `airport -s` command parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/airport_s))
|
||||||
- `--arp` enables the `arp` command parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/arp))
|
- `--arp` enables the `arp` command parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/arp))
|
||||||
|
- `--asciitable-m` enables the multi-line ASCII and Unicode table parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/asciitable_m))
|
||||||
- `--blkid` enables the `blkid` command parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/blkid))
|
- `--blkid` enables the `blkid` command parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/blkid))
|
||||||
- `--cksum` enables the `cksum` and `sum` command parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/cksum))
|
- `--cksum` enables the `cksum` and `sum` command parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/cksum))
|
||||||
- `--crontab` enables the `crontab` command and file parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/crontab))
|
- `--crontab` enables the `crontab` command and file parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/crontab))
|
||||||
|
122
docs/parsers/asciitable_m.md
Normal file
122
docs/parsers/asciitable_m.md
Normal file
@ -0,0 +1,122 @@
|
|||||||
|
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||||
|
<a id="jc.parsers.asciitable_m"></a>
|
||||||
|
|
||||||
|
# jc.parsers.asciitable\_m
|
||||||
|
|
||||||
|
jc - JSON Convert `asciitable-m` parser
|
||||||
|
|
||||||
|
This parser converts various styles of ASCII and Unicode text tables with
|
||||||
|
multi-line rows. Tables must have a header row and separator line between
|
||||||
|
rows.
|
||||||
|
|
||||||
|
For example:
|
||||||
|
|
||||||
|
╒══════════╤═════════╤════════╕
|
||||||
|
│ foo │ bar baz │ fiz │
|
||||||
|
│ │ │ buz │
|
||||||
|
╞══════════╪═════════╪════════╡
|
||||||
|
│ good day │ 12345 │ │
|
||||||
|
│ mate │ │ │
|
||||||
|
├──────────┼─────────┼────────┤
|
||||||
|
│ hi there │ abc def │ 3.14 │
|
||||||
|
│ │ │ │
|
||||||
|
╘══════════╧═════════╧════════╛
|
||||||
|
|
||||||
|
Cells with multiple lines within rows will be joined with a new-line
|
||||||
|
character ('\n').
|
||||||
|
|
||||||
|
Headers (keys) are converted to snake case and newlines between multi-line
|
||||||
|
headers are joined with an underscore. All values are returned as strings.
|
||||||
|
|
||||||
|
Usage (cli):
|
||||||
|
|
||||||
|
$ cat table.txt | jc --asciitable-m
|
||||||
|
|
||||||
|
Usage (module):
|
||||||
|
|
||||||
|
import jc
|
||||||
|
result = jc.parse('asciitable_m', asciitable-string)
|
||||||
|
|
||||||
|
Schema:
|
||||||
|
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"column_name1": string,
|
||||||
|
"column_name2": string
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
|
||||||
|
$ echo '
|
||||||
|
> +----------+---------+--------+
|
||||||
|
> | foo | bar | baz |
|
||||||
|
> | | | buz |
|
||||||
|
> +==========+=========+========+
|
||||||
|
> | good day | 12345 | |
|
||||||
|
> | mate | | |
|
||||||
|
> +----------+---------+--------+
|
||||||
|
> | hi there | abc def | 3.14 |
|
||||||
|
> | | | |
|
||||||
|
> +==========+=========+========+' | jc --asciitable-m -p
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"foo": "good day\nmate",
|
||||||
|
"bar": "12345",
|
||||||
|
"baz_buz": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"foo": "hi there",
|
||||||
|
"bar": "abc def",
|
||||||
|
"baz_buz": "3.14"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
$ echo '
|
||||||
|
> ╒══════════╤═════════╤════════╕
|
||||||
|
> │ foo │ bar │ baz │
|
||||||
|
> │ │ │ buz │
|
||||||
|
> ╞══════════╪═════════╪════════╡
|
||||||
|
> │ good day │ 12345 │ │
|
||||||
|
> │ mate │ │ │
|
||||||
|
> ├──────────┼─────────┼────────┤
|
||||||
|
> │ hi there │ abc def │ 3.14 │
|
||||||
|
> │ │ │ │
|
||||||
|
> ╘══════════╧═════════╧════════╛' | jc --asciitable-m -p
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"foo": "good day\nmate",
|
||||||
|
"bar": "12345",
|
||||||
|
"baz_buz": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"foo": "hi there",
|
||||||
|
"bar": "abc def",
|
||||||
|
"baz_buz": "3.14"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
<a id="jc.parsers.asciitable_m.parse"></a>
|
||||||
|
|
||||||
|
### parse
|
||||||
|
|
||||||
|
```python
|
||||||
|
def parse(data: str, raw: bool = False, quiet: bool = False) -> List[Dict]
|
||||||
|
```
|
||||||
|
|
||||||
|
Main text parsing function
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
|
||||||
|
data: (string) text data to parse
|
||||||
|
raw: (boolean) unprocessed output if True
|
||||||
|
quiet: (boolean) suppress warning messages if True
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
List of Dictionaries. Raw or processed structured data.
|
||||||
|
|
||||||
|
### Parser Information
|
||||||
|
Compatibility: linux, darwin, cygwin, win32, aix, freebsd
|
||||||
|
|
||||||
|
Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
@ -1,7 +1,8 @@
|
|||||||
"""jc - JSON Convert `asciitable-m` parser
|
"""jc - JSON Convert `asciitable-m` parser
|
||||||
|
|
||||||
This parser converts ASCII and Unicode text tables with multi-line rows.
|
This parser converts various styles of ASCII and Unicode text tables with
|
||||||
Tables must have some sort of separator line between rows.
|
multi-line rows. Tables must have a header row and separator line between
|
||||||
|
rows.
|
||||||
|
|
||||||
For example:
|
For example:
|
||||||
|
|
||||||
@ -16,6 +17,12 @@ For example:
|
|||||||
│ │ │ │
|
│ │ │ │
|
||||||
╘══════════╧═════════╧════════╛
|
╘══════════╧═════════╧════════╛
|
||||||
|
|
||||||
|
Cells with multiple lines within rows will be joined with a new-line
|
||||||
|
character ('\n').
|
||||||
|
|
||||||
|
Headers (keys) are converted to snake case and newlines between multi-line
|
||||||
|
headers are joined with an underscore. All values are returned as strings.
|
||||||
|
|
||||||
Usage (cli):
|
Usage (cli):
|
||||||
|
|
||||||
$ cat table.txt | jc --asciitable-m
|
$ cat table.txt | jc --asciitable-m
|
||||||
@ -29,19 +36,60 @@ Schema:
|
|||||||
|
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
"asciitable-m": string,
|
"column_name1": string,
|
||||||
"bar": boolean,
|
"column_name2": string
|
||||||
"baz": integer
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
||||||
Examples:
|
Examples:
|
||||||
|
|
||||||
$ asciitable-m | jc --asciitable-m -p
|
$ echo '
|
||||||
[]
|
> +----------+---------+--------+
|
||||||
|
> | foo | bar | baz |
|
||||||
|
> | | | buz |
|
||||||
|
> +==========+=========+========+
|
||||||
|
> | good day | 12345 | |
|
||||||
|
> | mate | | |
|
||||||
|
> +----------+---------+--------+
|
||||||
|
> | hi there | abc def | 3.14 |
|
||||||
|
> | | | |
|
||||||
|
> +==========+=========+========+' | jc --asciitable-m -p
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"foo": "good day\nmate",
|
||||||
|
"bar": "12345",
|
||||||
|
"baz_buz": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"foo": "hi there",
|
||||||
|
"bar": "abc def",
|
||||||
|
"baz_buz": "3.14"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
$ asciitable-m | jc --asciitable-m -p -r
|
$ echo '
|
||||||
[]
|
> ╒══════════╤═════════╤════════╕
|
||||||
|
> │ foo │ bar │ baz │
|
||||||
|
> │ │ │ buz │
|
||||||
|
> ╞══════════╪═════════╪════════╡
|
||||||
|
> │ good day │ 12345 │ │
|
||||||
|
> │ mate │ │ │
|
||||||
|
> ├──────────┼─────────┼────────┤
|
||||||
|
> │ hi there │ abc def │ 3.14 │
|
||||||
|
> │ │ │ │
|
||||||
|
> ╘══════════╧═════════╧════════╛' | jc --asciitable-m -p
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"foo": "good day\nmate",
|
||||||
|
"bar": "12345",
|
||||||
|
"baz_buz": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"foo": "hi there",
|
||||||
|
"bar": "abc def",
|
||||||
|
"baz_buz": "3.14"
|
||||||
|
}
|
||||||
|
]
|
||||||
"""
|
"""
|
||||||
import re
|
import re
|
||||||
from typing import Iterable, Tuple, List, Dict
|
from typing import Iterable, Tuple, List, Dict
|
||||||
@ -91,7 +139,7 @@ def _lstrip(string: str) -> str:
|
|||||||
|
|
||||||
|
|
||||||
def _rstrip(string: str) -> str:
|
def _rstrip(string: str) -> str:
|
||||||
"""find the rightmost non-whitespace character and rstrip to that index"""
|
"""find the rightmost non-whitespace character and rstrip and pad to that index"""
|
||||||
rstrip_list = [x for x in string.splitlines() if not len(x.strip()) == 0]
|
rstrip_list = [x for x in string.splitlines() if not len(x.strip()) == 0]
|
||||||
end_points = (len(x.rstrip()) for x in rstrip_list)
|
end_points = (len(x.rstrip()) for x in rstrip_list)
|
||||||
max_point = max(end_points)
|
max_point = max(end_points)
|
||||||
@ -110,10 +158,12 @@ def _table_sniff(string: str) -> str:
|
|||||||
# pretty tables
|
# pretty tables
|
||||||
for line in string.splitlines():
|
for line in string.splitlines():
|
||||||
line = line.strip()
|
line = line.strip()
|
||||||
if line.startswith('╞═') and line.endswith('═╡')\
|
if any((
|
||||||
or line.startswith('├─') and line.endswith('─┤')\
|
line.startswith('╞═') and line.endswith('═╡'),
|
||||||
or line.startswith('+=') and line.endswith('=+')\
|
line.startswith('├─') and line.endswith('─┤'),
|
||||||
or line.startswith('+-') and line.endswith('-+'):
|
line.startswith('+=') and line.endswith('=+'),
|
||||||
|
line.startswith('+-') and line.endswith('-+')
|
||||||
|
)):
|
||||||
return 'pretty'
|
return 'pretty'
|
||||||
|
|
||||||
# markdown tables
|
# markdown tables
|
||||||
|
7
man/jc.1
7
man/jc.1
@ -1,4 +1,4 @@
|
|||||||
.TH jc 1 2022-03-14 1.18.6 "JSON Convert"
|
.TH jc 1 2022-03-22 1.18.6 "JSON Convert"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
jc \- JSONifies the output of many CLI tools and file-types
|
jc \- JSONifies the output of many CLI tools and file-types
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
@ -37,6 +37,11 @@ Parsers:
|
|||||||
\fB--arp\fP
|
\fB--arp\fP
|
||||||
`arp` command parser
|
`arp` command parser
|
||||||
|
|
||||||
|
.TP
|
||||||
|
.B
|
||||||
|
\fB--asciitable-m\fP
|
||||||
|
multi-line ASCII and Unicode table parser
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
.B
|
.B
|
||||||
\fB--blkid\fP
|
\fB--blkid\fP
|
||||||
|
Reference in New Issue
Block a user