note: using complex alternatives section ihier-part = "//" iauthority ipath-abempty / ipath-absolute / ipath-rootless / ipath-empty
ihier-part (first line) = "//" -> iauthority -> ipath-abempty
The final iri sections combining all other sections IRI = scheme ":" ihier-part [ "?" iquery ] [ "#" ifragment ]
note: using complex alternatives section ipath = ipath-abempty ; begins with "/" or is empty / ipath-absolute ; begins with "/" but not "//" / ipath-noscheme ; begins with a non-colon segment / ipath-rootless ; begins with a segment / ipath-empty ; zero characters
COMPLEX IRI SECTIONS: combining multiple atomic and complex sections separated by delineators to more sophisticated sections.
ATOMIC IRI SECTIONS: These IRI sections are the base building blocks of an IRI
DELINEATORS: defining available delineators of an IRI (e.g.: /,?,#,@...)
Created by chile on 01.10.17.
The IRIBuilder contains definitions of valid segments of an IRI, defined as instances of IRISection (see below). All IRI sections are defined as specified in RFC3987 (https://www.ietf.org/rfc/rfc3987.txt). TODO The only exceptions to this rule are IP literals as host(e.g. for IPV6). While all but one atomic sections are implemented as AtomicSection, the pct-encoded (percent encoded characters) section is implemented as a simple heuristic, since it has to consider multiple characters in sequence. Some variations of atomic sections as simple complex sections concerned with their receptiveness are subsumed (e.g. isegment & isegment-nz).