ad_page_contract_parse_argspec (private)

 ad_page_contract_parse_argspec arg_spec

Defined in packages/acs-tcl/tcl/tcl-documentation-procs.tcl

Parse the argument spec: this is a string in the form <name>:<flag_spec>[,<flag_spec>...]

  • <name> is a token made of any non-space, non-tab and non-colon
  • <flag_spec> is string in the form <flag_name&lgt;[(<flag_parameter>[|<flag_parameter>...])]
  • <flag_parameter> is a string containing arbitrary characters, however, because parenthesys ")" and "(" and pipe "|" are separators in the argspec syntax, they need to be escaped via the character backslash (\)
Examples of valid argspecs:
    - my_page_parameter
    - my_page_parameter:integer
    - my_page_parameter:integer,notnull
    - my_page_parameter:integer,notnull,oneof(1|2|3)
    - another_page_parameter:oneof(this is valid|This, is also valid|This is valid \(as well!\))

Parameters:
arg_spec (required)

Partial Call Graph (max 5 caller/called nodes):
%3 test_ad_page_contract_argspec_parsing ad_page_contract_argspec_parsing (test acs-tcl) ad_page_contract_parse_argspec ad_page_contract_parse_argspec test_ad_page_contract_argspec_parsing->ad_page_contract_parse_argspec ad_page_contract_argspec_flag_regexp ad_page_contract_argspec_flag_regexp (private) ad_page_contract_parse_argspec->ad_page_contract_argspec_flag_regexp ad_page_contract ad_page_contract (public) ad_page_contract->ad_page_contract_parse_argspec

Testcases:
ad_page_contract_argspec_parsing
Source code:
    set flag_rx [ad_page_contract_argspec_flag_regexp]

    if { ![regexp [subst -nocommands {^([^ \t:]+)(?::(${flag_rx}(?:,${flag_rx})*))?$}] $arg_spec match name flags] } {
        error "Argspec '$arg_spec' doesn't have the right format. It must be var\[:flag\[,flag ...\]\]"
    }

    return [list $name $flags]
XQL Not present:
Generic, PostgreSQL, Oracle
[ hide source ] | [ make this the default ]
Show another procedure: