2022-01-26 11:50:25 -08:00
|
|
|
# Table of Contents
|
|
|
|
|
|
|
|
* [jc.lib](#jc.lib)
|
|
|
|
* [parse](#jc.lib.parse)
|
|
|
|
* [parser\_mod\_list](#jc.lib.parser_mod_list)
|
|
|
|
* [plugin\_parser\_mod\_list](#jc.lib.plugin_parser_mod_list)
|
2022-03-03 17:38:47 -08:00
|
|
|
* [standard\_parser\_mod\_list](#jc.lib.standard_parser_mod_list)
|
|
|
|
* [streaming\_parser\_mod\_list](#jc.lib.streaming_parser_mod_list)
|
2022-01-26 11:50:25 -08:00
|
|
|
* [parser\_info](#jc.lib.parser_info)
|
2022-01-26 15:54:36 -08:00
|
|
|
* [all\_parser\_info](#jc.lib.all_parser_info)
|
2022-01-26 11:50:25 -08:00
|
|
|
* [get\_help](#jc.lib.get_help)
|
|
|
|
|
2022-01-25 17:07:47 -08:00
|
|
|
<a id="jc.lib"></a>
|
|
|
|
|
|
|
|
# jc.lib
|
2022-01-19 22:20:36 -08:00
|
|
|
|
2022-03-20 10:12:29 -07:00
|
|
|
jc - JSON Convert lib module
|
2022-01-19 22:20:36 -08:00
|
|
|
|
2022-01-25 17:07:47 -08:00
|
|
|
<a id="jc.lib.parse"></a>
|
|
|
|
|
2022-03-05 12:15:14 -08:00
|
|
|
### parse
|
2022-01-19 22:20:36 -08:00
|
|
|
|
|
|
|
```python
|
2022-03-04 13:27:39 -08:00
|
|
|
def parse(parser_mod_name: str,
|
2022-07-18 14:31:13 -07:00
|
|
|
data: Union[str, bytes, Iterable[str]],
|
2022-03-04 13:27:39 -08:00
|
|
|
quiet: bool = False,
|
|
|
|
raw: bool = False,
|
|
|
|
ignore_exceptions: bool = None,
|
|
|
|
**kwargs) -> Union[Dict, List[Dict], Iterator[Dict]]
|
2022-01-19 22:20:36 -08:00
|
|
|
```
|
|
|
|
|
|
|
|
Parse the string data using the supplied parser module.
|
|
|
|
|
|
|
|
This function provides a high-level API to simplify parser use. This
|
|
|
|
function will call built-in parsers and custom plugin parsers.
|
|
|
|
|
2022-08-21 16:20:13 -07:00
|
|
|
Example (standard parsers):
|
2022-01-25 18:03:34 -08:00
|
|
|
|
|
|
|
>>> import jc
|
2022-08-21 16:20:13 -07:00
|
|
|
>>> date_obj = jc.parse('date', 'Tue Jan 18 10:23:07 PST 2022')
|
|
|
|
>>> print(f'The year is: {date_obj["year"]}')
|
|
|
|
The year is: 2022
|
|
|
|
|
|
|
|
Example (streaming parsers):
|
|
|
|
|
|
|
|
>>> import jc
|
|
|
|
>>> ping_gen = jc.parse('ping_s', ping_output.splitlines())
|
|
|
|
>>> for item in ping_gen:
|
|
|
|
>>> print(f'Response time: {item["time_ms"]} ms')
|
|
|
|
Response time: 102 ms
|
|
|
|
Response time: 109 ms
|
|
|
|
...
|
2022-01-25 18:03:34 -08:00
|
|
|
|
2022-03-04 08:57:11 -08:00
|
|
|
To get a list of available parser module names, use `parser_mod_list()`.
|
2022-01-25 18:03:34 -08:00
|
|
|
|
|
|
|
You can also use the lower-level parser modules directly:
|
|
|
|
|
|
|
|
>>> import jc.parsers.date
|
|
|
|
>>> jc.parsers.date.parse('Tue Jan 18 10:23:07 PST 2022')
|
|
|
|
|
|
|
|
Though, accessing plugin parsers directly is a bit more cumbersome, so
|
|
|
|
this higher-level API is recommended. Here is how you can access plugin
|
|
|
|
parsers without this API:
|
|
|
|
|
|
|
|
>>> import os
|
|
|
|
>>> import sys
|
|
|
|
>>> import jc.appdirs
|
|
|
|
>>> data_dir = jc.appdirs.user_data_dir('jc', 'jc')
|
|
|
|
>>> local_parsers_dir = os.path.join(data_dir, 'jcparsers')
|
|
|
|
>>> sys.path.append(local_parsers_dir)
|
|
|
|
>>> import my_custom_parser
|
|
|
|
>>> my_custom_parser.parse('command_data')
|
|
|
|
|
|
|
|
Parameters:
|
|
|
|
|
|
|
|
parser_mod_name: (string) name of the parser module. This
|
|
|
|
function will accept module_name,
|
|
|
|
cli-name, and --argument-name
|
|
|
|
variants of the module name.
|
|
|
|
|
2022-07-18 14:31:13 -07:00
|
|
|
data: (string or data to parse (string or bytes for
|
|
|
|
bytes or standard parsers, iterable of
|
|
|
|
iterable) strings for streaming parsers)
|
2022-01-25 18:03:34 -08:00
|
|
|
|
|
|
|
raw: (boolean) output preprocessed JSON if True
|
|
|
|
|
|
|
|
quiet: (boolean) suppress warning messages if True
|
|
|
|
|
|
|
|
ignore_exceptions: (boolean) ignore parsing exceptions if True
|
|
|
|
(streaming parsers only)
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
|
|
|
Standard Parsers: Dictionary or List of Dictionaries
|
|
|
|
Streaming Parsers: Generator Object containing Dictionaries
|
2022-01-25 17:07:47 -08:00
|
|
|
|
|
|
|
<a id="jc.lib.parser_mod_list"></a>
|
|
|
|
|
2022-03-05 12:15:14 -08:00
|
|
|
### parser\_mod\_list
|
2022-01-19 22:20:36 -08:00
|
|
|
|
2022-01-25 17:07:47 -08:00
|
|
|
```python
|
2022-10-10 16:34:32 -07:00
|
|
|
def parser_mod_list(show_hidden: bool = True,
|
|
|
|
show_deprecated: bool = True) -> List[str]
|
2022-01-25 17:07:47 -08:00
|
|
|
```
|
2022-01-19 22:20:36 -08:00
|
|
|
|
2022-01-25 17:07:47 -08:00
|
|
|
Returns a list of all available parser module names.
|
2022-01-19 22:20:36 -08:00
|
|
|
|
2022-01-25 17:07:47 -08:00
|
|
|
<a id="jc.lib.plugin_parser_mod_list"></a>
|
2022-01-19 22:20:36 -08:00
|
|
|
|
2022-03-05 12:15:14 -08:00
|
|
|
### plugin\_parser\_mod\_list
|
2022-01-19 22:20:36 -08:00
|
|
|
|
2022-01-25 17:07:47 -08:00
|
|
|
```python
|
2022-10-10 16:34:32 -07:00
|
|
|
def plugin_parser_mod_list(show_hidden: bool = True,
|
|
|
|
show_deprecated: bool = True) -> List[str]
|
2022-01-25 17:07:47 -08:00
|
|
|
```
|
2022-01-19 22:20:36 -08:00
|
|
|
|
2022-01-25 17:07:47 -08:00
|
|
|
Returns a list of plugin parser module names. This function is a
|
|
|
|
subset of `parser_mod_list()`.
|
2022-01-19 22:20:36 -08:00
|
|
|
|
2022-03-03 17:38:47 -08:00
|
|
|
<a id="jc.lib.standard_parser_mod_list"></a>
|
|
|
|
|
2022-03-05 12:15:14 -08:00
|
|
|
### standard\_parser\_mod\_list
|
2022-03-03 17:38:47 -08:00
|
|
|
|
|
|
|
```python
|
2022-10-10 16:34:32 -07:00
|
|
|
def standard_parser_mod_list(show_hidden: bool = True,
|
|
|
|
show_deprecated: bool = True) -> List[str]
|
2022-03-03 17:38:47 -08:00
|
|
|
```
|
|
|
|
|
|
|
|
Returns a list of standard parser module names. This function is a
|
|
|
|
subset of `parser_mod_list()` and does not contain any streaming
|
|
|
|
parsers.
|
|
|
|
|
|
|
|
<a id="jc.lib.streaming_parser_mod_list"></a>
|
|
|
|
|
2022-03-05 12:15:14 -08:00
|
|
|
### streaming\_parser\_mod\_list
|
2022-03-03 17:38:47 -08:00
|
|
|
|
|
|
|
```python
|
2022-10-10 16:34:32 -07:00
|
|
|
def streaming_parser_mod_list(show_hidden: bool = True,
|
|
|
|
show_deprecated: bool = True) -> List[str]
|
2022-03-03 17:38:47 -08:00
|
|
|
```
|
|
|
|
|
|
|
|
Returns a list of streaming parser module names. This function is a
|
|
|
|
subset of `parser_mod_list()`.
|
|
|
|
|
2022-01-25 17:07:47 -08:00
|
|
|
<a id="jc.lib.parser_info"></a>
|
2022-01-19 22:24:59 -08:00
|
|
|
|
2022-03-05 12:15:14 -08:00
|
|
|
### parser\_info
|
2022-01-19 22:20:36 -08:00
|
|
|
|
2022-01-25 17:07:47 -08:00
|
|
|
```python
|
2022-03-14 10:50:10 -07:00
|
|
|
def parser_info(parser_mod_name: str, documentation: bool = False) -> Dict
|
2022-01-25 17:07:47 -08:00
|
|
|
```
|
2022-01-19 22:20:36 -08:00
|
|
|
|
2022-03-14 10:50:10 -07:00
|
|
|
Returns a dictionary that includes the parser module metadata.
|
2022-01-19 22:20:36 -08:00
|
|
|
|
2022-03-14 10:50:10 -07:00
|
|
|
Parameters:
|
|
|
|
|
|
|
|
parser_mod_name: (string) name of the parser module. This
|
|
|
|
function will accept module_name,
|
|
|
|
cli-name, and --argument-name
|
|
|
|
variants of the module name.
|
|
|
|
|
|
|
|
documentation: (boolean) include parser docstring if True
|
2022-01-19 22:20:36 -08:00
|
|
|
|
2022-01-26 15:54:36 -08:00
|
|
|
<a id="jc.lib.all_parser_info"></a>
|
|
|
|
|
2022-03-05 12:15:14 -08:00
|
|
|
### all\_parser\_info
|
2022-01-26 15:54:36 -08:00
|
|
|
|
|
|
|
```python
|
2022-09-06 10:07:19 -07:00
|
|
|
def all_parser_info(documentation: bool = False,
|
2022-10-10 16:34:32 -07:00
|
|
|
show_hidden: bool = False,
|
|
|
|
show_deprecated: bool = False) -> List[Dict]
|
2022-01-26 15:54:36 -08:00
|
|
|
```
|
|
|
|
|
2022-03-14 10:50:10 -07:00
|
|
|
Returns a list of dictionaries that includes metadata for all parser
|
2022-10-10 16:34:32 -07:00
|
|
|
modules. By default only non-hidden, non-deprecated parsers are
|
|
|
|
returned.
|
2022-03-14 10:50:10 -07:00
|
|
|
|
|
|
|
Parameters:
|
|
|
|
|
|
|
|
documentation: (boolean) include parser docstrings if True
|
2022-09-06 10:07:19 -07:00
|
|
|
show_hidden: (boolean) also show parsers marked as hidden
|
|
|
|
in their info metadata.
|
2022-10-10 16:34:32 -07:00
|
|
|
show_deprecated: (boolean) also show parsers marked as
|
|
|
|
deprecated in their info metadata.
|
2022-01-26 15:54:36 -08:00
|
|
|
|
2022-01-25 17:07:47 -08:00
|
|
|
<a id="jc.lib.get_help"></a>
|
2022-01-19 22:20:36 -08:00
|
|
|
|
2022-03-05 12:15:14 -08:00
|
|
|
### get\_help
|
2022-01-19 22:20:36 -08:00
|
|
|
|
|
|
|
```python
|
2022-01-25 17:07:47 -08:00
|
|
|
def get_help(parser_mod_name: str) -> None
|
2022-01-19 22:20:36 -08:00
|
|
|
```
|
2022-01-20 07:49:45 -08:00
|
|
|
|
2022-01-25 17:07:47 -08:00
|
|
|
Show help screen for the selected parser.
|
2022-01-20 07:49:45 -08:00
|
|
|
|
2022-01-26 16:34:23 -08:00
|
|
|
This function will accept **module_name**, **cli-name**, and
|
|
|
|
**--argument-name** variants of the module name string.
|
2022-01-19 22:20:36 -08:00
|
|
|
|