Dynamic argument matching for visualization tags?

This commit is contained in:
John Chilton
2020-10-12 20:25:39 +02:00
committed by guerler
parent 0e455f9813
commit fa90ee271b
2 changed files with 18 additions and 5 deletions
+7 -5
View File
@@ -13,6 +13,7 @@ GALAXY_FLAVORED_MARKDOWN_CONTAINER_LINE_PATTERN = re.compile(
r"```\s*galaxy\s*"
)
VALID_CONTAINER_END_PATTERN = re.compile(r"^```\s*$")
DYNAMIC_ARGUMENTS = object()
VALID_ARGUMENTS = {
"history_dataset_display": ["input", "output", "history_dataset_id"],
"history_dataset_embedded": ["input", "output", "history_dataset_id"],
@@ -32,7 +33,7 @@ VALID_ARGUMENTS = {
"generate_galaxy_version": [],
"generate_time": [],
"invocation_time": ["invocation_id"],
"visualization": ["id", "history_dataset_id"],
"visualization": DYNAMIC_ARGUMENTS,
# Invocation Flavored Markdown
"invocation_outputs": [],
"invocation_inputs": [],
@@ -40,8 +41,8 @@ VALID_ARGUMENTS = {
GALAXY_FLAVORED_MARKDOWN_CONTAINERS = list(VALID_ARGUMENTS.keys())
GALAXY_FLAVORED_MARKDOWN_CONTAINER_REGEX = r'(?P<container>%s)' % "|".join(GALAXY_FLAVORED_MARKDOWN_CONTAINERS)
ARG_VAL_REGEX = r'''[\w_\-\|]+|\"[^\"]+\"|\'[^\']+\''''
FUNCTION_ARG = r'\s*\w+\s*=\s*(?:%s)\s*' % ARG_VAL_REGEX
ARG_VAL_REGEX = r'''[\w_\-]+|\"[^\"]+\"|\'[^\']+\''''
FUNCTION_ARG = r'\s*[\w\|]+\s*=\s*(?:%s)\s*' % ARG_VAL_REGEX
# embed commas between arguments
FUNCTION_MULTIPLE_ARGS = fr'(?P<firstargcall>{FUNCTION_ARG})(?P<restargcalls>(?:,{FUNCTION_ARG})*)'
FUNCTION_MULTIPLE_ARGS_PATTERN = re.compile(FUNCTION_MULTIPLE_ARGS)
@@ -86,14 +87,15 @@ def validate_galaxy_markdown(galaxy_markdown, internal=True):
continue
elif fenced and line and expecting_container_close_for:
func_call_match = GALAXY_MARKDOWN_FUNCTION_CALL_LINE.match(line)
# todo: issues with regex
continue
if func_call_match:
function_calls += 1
if function_calls > 1:
invalid_line("Only one Galaxy directive is allowed per fenced Galaxy block (```galaxy)")
container = func_call_match.group("container")
valid_args = VALID_ARGUMENTS[container]
if valid_args is DYNAMIC_ARGUMENTS:
continue
first_arg_call = func_call_match.group("firstargcall")
def _validate_arg(arg_str):
+11
View File
@@ -212,3 +212,14 @@ history_dataset_link( output = moo, pathx ="cow.png", label= "my label" )
history_dataset_link( output = moo, path ="cow.png", labelx= "my label" )
```
""", at_line=2)
assert_markdown_valid("""
```galaxy
visualization(id=1)
```
""")
assert_markdown_valid("""
```galaxy
visualization(foo|bar=hello)
```
""")