From e58f747b9ebf9dd0dd947eb5b182a603e8575f17 Mon Sep 17 00:00:00 2001 From: nitely <nitely@users.noreply.github.com> Date: Sat, 6 Jan 2024 00:35:19 +0000 Subject: [PATCH] Deploy to GitHub pages --- dochack.js | 2036 ++++++++++++++++++++++++++++++++++ index.html | 9 + nimdoc.out.css | 1016 +++++++++++++++++ regex.html | 1303 ++++++++++++++++++++++ regex.idx | 78 ++ regex/.keep | 1 + regex/common.html | 301 +++++ regex/common.idx | 11 + regex/compiler.html | 175 +++ regex/compiler.idx | 2 + regex/dotgraph.html | 183 +++ regex/dotgraph.idx | 3 + regex/exptransformation.html | 201 ++++ regex/exptransformation.idx | 3 + regex/exptype.html | 173 +++ regex/exptype.idx | 2 + regex/litopt.html | 204 ++++ regex/litopt.idx | 3 + regex/nfa.html | 199 ++++ regex/nfa.idx | 4 + regex/nfafindall.html | 274 +++++ regex/nfafindall.idx | 7 + regex/nfafindall2.html | 276 +++++ regex/nfafindall2.idx | 7 + regex/nfamacro.html | 161 +++ regex/nfamacro.idx | 1 + regex/nfamatch.html | 257 +++++ regex/nfamatch.idx | 6 + regex/nfamatch2.html | 262 +++++ regex/nfamatch2.idx | 6 + regex/nfatype.html | 875 +++++++++++++++ regex/nfatype.idx | 61 + regex/nodematch.html | 183 +++ regex/nodematch.idx | 3 + regex/parser.html | 161 +++ regex/parser.idx | 1 + regex/scanner.html | 359 ++++++ regex/scanner.idx | 15 + regex/types.html | 614 ++++++++++ regex/types.idx | 90 ++ theindex.html | 1110 ++++++++++++++++++ ugh/nimdoc.out.css | 1016 +++++++++++++++++ ugh/ugh.html | 1303 ++++++++++++++++++++++ 43 files changed, 12955 insertions(+) create mode 100644 dochack.js create mode 100644 index.html create mode 100644 nimdoc.out.css create mode 100644 regex.html create mode 100644 regex.idx create mode 100644 regex/.keep create mode 100644 regex/common.html create mode 100644 regex/common.idx create mode 100644 regex/compiler.html create mode 100644 regex/compiler.idx create mode 100644 regex/dotgraph.html create mode 100644 regex/dotgraph.idx create mode 100644 regex/exptransformation.html create mode 100644 regex/exptransformation.idx create mode 100644 regex/exptype.html create mode 100644 regex/exptype.idx create mode 100644 regex/litopt.html create mode 100644 regex/litopt.idx create mode 100644 regex/nfa.html create mode 100644 regex/nfa.idx create mode 100644 regex/nfafindall.html create mode 100644 regex/nfafindall.idx create mode 100644 regex/nfafindall2.html create mode 100644 regex/nfafindall2.idx create mode 100644 regex/nfamacro.html create mode 100644 regex/nfamacro.idx create mode 100644 regex/nfamatch.html create mode 100644 regex/nfamatch.idx create mode 100644 regex/nfamatch2.html create mode 100644 regex/nfamatch2.idx create mode 100644 regex/nfatype.html create mode 100644 regex/nfatype.idx create mode 100644 regex/nodematch.html create mode 100644 regex/nodematch.idx create mode 100644 regex/parser.html create mode 100644 regex/parser.idx create mode 100644 regex/scanner.html create mode 100644 regex/scanner.idx create mode 100644 regex/types.html create mode 100644 regex/types.idx create mode 100644 theindex.html create mode 100644 ugh/nimdoc.out.css create mode 100644 ugh/ugh.html diff --git a/dochack.js b/dochack.js new file mode 100644 index 00000000..7654d6df --- /dev/null +++ b/dochack.js @@ -0,0 +1,2036 @@ +/* Generated by the Nim Compiler v1.6.14 */ +var framePtr = null; +var excHandler = 0; +var lastJSError = null; +var NTI637534222 = {size: 0, kind: 18, base: null, node: null, finalizer: null}; +var NTI486539801 = {size: 0, kind: 24, base: null, node: null, finalizer: null}; +var NTI620757084 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; +var NTI620757083 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; +var NTI620757082 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; +var NTI620757081 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; +var NTI620757080 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; +var NTI620757079 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; +var NTI620757078 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; +var NTI620757077 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; +var NTI620757076 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; +var NTI620757075 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; +var NTI620757074 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; +var NTI620757073 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; +var NTI620757072 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; +var NTI620757071 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; +var NTI620757070 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; +var NTI620757069 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; +var NTI620757068 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; +var NTI620757067 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; +var NTI620757066 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; +var NTI620757065 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; +var NTI620757064 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; +var NTI620757063 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; +var NTI620757062 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; +var NTI620757061 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; +var NTI620757060 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; +var NTI620757133 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; +var NTI620757022 = {size: 0, kind: 22, base: null, node: null, finalizer: null}; +var NTI620757180 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; +var NTI620757177 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; +var NTI620757176 = {size: 0, kind: 18, base: null, node: null, finalizer: null}; +var NTI620757057 = {size: 0, kind: 22, base: null, node: null, finalizer: null}; +var NTI620757179 = {size: 0, kind: 18, base: null, node: null, finalizer: null}; +var NTI620757058 = {size: 0, kind: 22, base: null, node: null, finalizer: null}; +var NTI620757126 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; +var NTI620757016 = {size: 0, kind: 22, base: null, node: null, finalizer: null}; +var NTI620757115 = {size: 0, kind: 24, base: null, node: null, finalizer: null}; +var NTI620757127 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; +var NTI620757017 = {size: 0, kind: 22, base: null, node: null, finalizer: null}; +var NTI620757114 = {size: 0, kind: 24, base: null, node: null, finalizer: null}; +var NTI620757113 = {size: 0, kind: 24, base: null, node: null, finalizer: null}; +var NTI620757132 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; +var NTI620757021 = {size: 0, kind: 22, base: null, node: null, finalizer: null}; +var NTI620757112 = {size: 0, kind: 24, base: null, node: null, finalizer: null}; +var NTI620757111 = {size: 0, kind: 24, base: null, node: null, finalizer: null}; +var NTI620757128 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; +var NTI620757018 = {size: 0, kind: 22, base: null, node: null, finalizer: null}; +var NTI620757110 = {size: 0, kind: 24, base: null, node: null, finalizer: null}; +var NTI620757118 = {size: 0, kind: 24, base: null, node: null, finalizer: null}; +var NTI620757129 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; +var NTI620757019 = {size: 0, kind: 22, base: null, node: null, finalizer: null}; +var NTI620757117 = {size: 0, kind: 24, base: null, node: null, finalizer: null}; +var NTI33554456 = {size: 0,kind: 31,base: null,node: null,finalizer: null}; +var NTI620757131 = {size: 0, kind: 24, base: null, node: null, finalizer: null}; +var NTI620757130 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; +var NTI620757020 = {size: 0, kind: 22, base: null, node: null, finalizer: null}; +var NTI33554466 = {size: 0,kind: 1,base: null,node: null,finalizer: null}; +var NTI620757102 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; +var NTI620757006 = {size: 0, kind: 22, base: null, node: null, finalizer: null}; +var NTI620757116 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; +var NTI620757010 = {size: 0, kind: 22, base: null, node: null, finalizer: null}; +var NTI620757109 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; +var NTI620757009 = {size: 0, kind: 22, base: null, node: null, finalizer: null}; +var NTI620757007 = {size: 0, kind: 14, base: null, node: null, finalizer: null}; +var NTI620757108 = {size: 0, kind: 24, base: null, node: null, finalizer: null}; +var NTI620757107 = {size: 0, kind: 24, base: null, node: null, finalizer: null}; +var NTI620757106 = {size: 0, kind: 24, base: null, node: null, finalizer: null}; +var NTI620757105 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; +var NTI620757008 = {size: 0, kind: 22, base: null, node: null, finalizer: null}; +var NTI620757436 = {size: 0, kind: 24, base: null, node: null, finalizer: null}; +var NTI33555124 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; +var NTI33555128 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; +var NTI33555130 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; +var NTI33555083 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; +var NTI33555165 = {size: 0, kind: 22, base: null, node: null, finalizer: null}; +var NTI33554439 = {size: 0,kind: 28,base: null,node: null,finalizer: null}; +var NTI33554440 = {size: 0,kind: 29,base: null,node: null,finalizer: null}; +var NTI33555164 = {size: 0, kind: 22, base: null, node: null, finalizer: null}; +var NTI33555112 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; +var NTI33555113 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; +var NTI33555120 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; +var NTI33555122 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; +var NNI33555122 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []}; +NTI33555122.node = NNI33555122; +var NNI33555120 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []}; +NTI33555120.node = NNI33555120; +var NNI33555113 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []}; +NTI33555113.node = NNI33555113; +NTI33555164.base = NTI33555112; +NTI33555165.base = NTI33555112; +var NNI33555112 = {kind: 2, len: 5, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "parent", len: 0, typ: NTI33555164, name: "parent", sons: null}, +{kind: 1, offset: "name", len: 0, typ: NTI33554440, name: "name", sons: null}, +{kind: 1, offset: "message", len: 0, typ: NTI33554439, name: "msg", sons: null}, +{kind: 1, offset: "trace", len: 0, typ: NTI33554439, name: "trace", sons: null}, +{kind: 1, offset: "up", len: 0, typ: NTI33555165, name: "up", sons: null}]}; +NTI33555112.node = NNI33555112; +var NNI33555083 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []}; +NTI33555083.node = NNI33555083; +NTI33555112.base = NTI33555083; +NTI33555113.base = NTI33555112; +NTI33555120.base = NTI33555113; +NTI33555122.base = NTI33555120; +var NNI33555130 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []}; +NTI33555130.node = NNI33555130; +NTI33555130.base = NTI33555113; +var NNI33555128 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []}; +NTI33555128.node = NNI33555128; +NTI33555128.base = NTI33555113; +var NNI33555124 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []}; +NTI33555124.node = NNI33555124; +NTI33555124.base = NTI33555113; +NTI620757106.base = NTI620757008; +NTI620757107.base = NTI620757008; +NTI620757108.base = NTI620757008; +var NNI620757007 = {kind: 2, offset: 0, typ: null, name: null, len: 12, sons: {"1": {kind: 1, offset: 1, typ: NTI620757007, name: "ElementNode", len: 0, sons: null}, +"2": {kind: 1, offset: 2, typ: NTI620757007, name: "AttributeNode", len: 0, sons: null}, +"3": {kind: 1, offset: 3, typ: NTI620757007, name: "TextNode", len: 0, sons: null}, +"4": {kind: 1, offset: 4, typ: NTI620757007, name: "CDATANode", len: 0, sons: null}, +"5": {kind: 1, offset: 5, typ: NTI620757007, name: "EntityRefNode", len: 0, sons: null}, +"6": {kind: 1, offset: 6, typ: NTI620757007, name: "EntityNode", len: 0, sons: null}, +"7": {kind: 1, offset: 7, typ: NTI620757007, name: "ProcessingInstructionNode", len: 0, sons: null}, +"8": {kind: 1, offset: 8, typ: NTI620757007, name: "CommentNode", len: 0, sons: null}, +"9": {kind: 1, offset: 9, typ: NTI620757007, name: "DocumentNode", len: 0, sons: null}, +"10": {kind: 1, offset: 10, typ: NTI620757007, name: "DocumentTypeNode", len: 0, sons: null}, +"11": {kind: 1, offset: 11, typ: NTI620757007, name: "DocumentFragmentNode", len: 0, sons: null}, +"12": {kind: 1, offset: 12, typ: NTI620757007, name: "NotationNode", len: 0, sons: null}}}; +NTI620757007.node = NNI620757007; +var NNI620757102 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []}; +NTI620757102.node = NNI620757102; +NTI620757102.base = NTI33555083; +NTI620757006.base = NTI620757102; +NTI620757131.base = NTI620757010; +var NNI620757130 = {kind: 2, len: 10, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "acceptCharset", len: 0, typ: NTI33554440, name: "acceptCharset", sons: null}, +{kind: 1, offset: "action", len: 0, typ: NTI33554440, name: "action", sons: null}, +{kind: 1, offset: "autocomplete", len: 0, typ: NTI33554440, name: "autocomplete", sons: null}, +{kind: 1, offset: "elements", len: 0, typ: NTI620757131, name: "elements", sons: null}, +{kind: 1, offset: "encoding", len: 0, typ: NTI33554440, name: "encoding", sons: null}, +{kind: 1, offset: "enctype", len: 0, typ: NTI33554440, name: "enctype", sons: null}, +{kind: 1, offset: "length", len: 0, typ: NTI33554456, name: "length", sons: null}, +{kind: 1, offset: "method", len: 0, typ: NTI33554440, name: "method", sons: null}, +{kind: 1, offset: "noValidate", len: 0, typ: NTI33554466, name: "noValidate", sons: null}, +{kind: 1, offset: "target", len: 0, typ: NTI33554440, name: "target", sons: null}]}; +NTI620757130.node = NNI620757130; +NTI620757130.base = NTI620757116; +NTI620757020.base = NTI620757130; +var NNI620757129 = {kind: 2, len: 5, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "defaultSelected", len: 0, typ: NTI33554466, name: "defaultSelected", sons: null}, +{kind: 1, offset: "selected", len: 0, typ: NTI33554466, name: "selected", sons: null}, +{kind: 1, offset: "selectedIndex", len: 0, typ: NTI33554456, name: "selectedIndex", sons: null}, +{kind: 1, offset: "text", len: 0, typ: NTI33554440, name: "text", sons: null}, +{kind: 1, offset: "value", len: 0, typ: NTI33554440, name: "value", sons: null}]}; +NTI620757129.node = NNI620757129; +NTI620757129.base = NTI620757116; +NTI620757019.base = NTI620757129; +NTI620757117.base = NTI620757019; +NTI620757118.base = NTI620757019; +var NNI620757116 = {kind: 2, len: 20, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "className", len: 0, typ: NTI33554440, name: "className", sons: null}, +{kind: 1, offset: "classList", len: 0, typ: NTI620757006, name: "classList", sons: null}, +{kind: 1, offset: "checked", len: 0, typ: NTI33554466, name: "checked", sons: null}, +{kind: 1, offset: "defaultChecked", len: 0, typ: NTI33554466, name: "defaultChecked", sons: null}, +{kind: 1, offset: "defaultValue", len: 0, typ: NTI33554440, name: "defaultValue", sons: null}, +{kind: 1, offset: "disabled", len: 0, typ: NTI33554466, name: "disabled", sons: null}, +{kind: 1, offset: "form", len: 0, typ: NTI620757020, name: "form", sons: null}, +{kind: 1, offset: "name", len: 0, typ: NTI33554440, name: "name", sons: null}, +{kind: 1, offset: "readOnly", len: 0, typ: NTI33554466, name: "readOnly", sons: null}, +{kind: 1, offset: "options", len: 0, typ: NTI620757117, name: "options", sons: null}, +{kind: 1, offset: "selectedOptions", len: 0, typ: NTI620757118, name: "selectedOptions", sons: null}, +{kind: 1, offset: "clientWidth", len: 0, typ: NTI33554456, name: "clientWidth", sons: null}, +{kind: 1, offset: "clientHeight", len: 0, typ: NTI33554456, name: "clientHeight", sons: null}, +{kind: 1, offset: "contentEditable", len: 0, typ: NTI33554440, name: "contentEditable", sons: null}, +{kind: 1, offset: "isContentEditable", len: 0, typ: NTI33554466, name: "isContentEditable", sons: null}, +{kind: 1, offset: "dir", len: 0, typ: NTI33554440, name: "dir", sons: null}, +{kind: 1, offset: "offsetHeight", len: 0, typ: NTI33554456, name: "offsetHeight", sons: null}, +{kind: 1, offset: "offsetWidth", len: 0, typ: NTI33554456, name: "offsetWidth", sons: null}, +{kind: 1, offset: "offsetLeft", len: 0, typ: NTI33554456, name: "offsetLeft", sons: null}, +{kind: 1, offset: "offsetTop", len: 0, typ: NTI33554456, name: "offsetTop", sons: null}]}; +NTI620757116.node = NNI620757116; +NTI620757116.base = NTI620757105; +NTI620757010.base = NTI620757116; +var NNI620757128 = {kind: 2, len: 3, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "text", len: 0, typ: NTI33554440, name: "text", sons: null}, +{kind: 1, offset: "x", len: 0, typ: NTI33554456, name: "x", sons: null}, +{kind: 1, offset: "y", len: 0, typ: NTI33554456, name: "y", sons: null}]}; +NTI620757128.node = NNI620757128; +NTI620757128.base = NTI620757116; +NTI620757018.base = NTI620757128; +NTI620757110.base = NTI620757018; +NTI620757111.base = NTI620757020; +var NNI620757132 = {kind: 2, len: 8, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "border", len: 0, typ: NTI33554456, name: "border", sons: null}, +{kind: 1, offset: "complete", len: 0, typ: NTI33554466, name: "complete", sons: null}, +{kind: 1, offset: "height", len: 0, typ: NTI33554456, name: "height", sons: null}, +{kind: 1, offset: "hspace", len: 0, typ: NTI33554456, name: "hspace", sons: null}, +{kind: 1, offset: "lowsrc", len: 0, typ: NTI33554440, name: "lowsrc", sons: null}, +{kind: 1, offset: "src", len: 0, typ: NTI33554440, name: "src", sons: null}, +{kind: 1, offset: "vspace", len: 0, typ: NTI33554456, name: "vspace", sons: null}, +{kind: 1, offset: "width", len: 0, typ: NTI33554456, name: "width", sons: null}]}; +NTI620757132.node = NNI620757132; +NTI620757132.base = NTI620757116; +NTI620757021.base = NTI620757132; +NTI620757112.base = NTI620757021; +NTI620757113.base = NTI620757010; +var NNI620757127 = {kind: 2, len: 6, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "height", len: 0, typ: NTI33554456, name: "height", sons: null}, +{kind: 1, offset: "hspace", len: 0, typ: NTI33554456, name: "hspace", sons: null}, +{kind: 1, offset: "src", len: 0, typ: NTI33554440, name: "src", sons: null}, +{kind: 1, offset: "width", len: 0, typ: NTI33554456, name: "width", sons: null}, +{kind: 1, offset: "type", len: 0, typ: NTI33554440, name: "type", sons: null}, +{kind: 1, offset: "vspace", len: 0, typ: NTI33554456, name: "vspace", sons: null}]}; +NTI620757127.node = NNI620757127; +NTI620757127.base = NTI620757116; +NTI620757017.base = NTI620757127; +NTI620757114.base = NTI620757017; +var NNI620757126 = {kind: 2, len: 4, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "target", len: 0, typ: NTI33554440, name: "target", sons: null}, +{kind: 1, offset: "text", len: 0, typ: NTI33554440, name: "text", sons: null}, +{kind: 1, offset: "x", len: 0, typ: NTI33554456, name: "x", sons: null}, +{kind: 1, offset: "y", len: 0, typ: NTI33554456, name: "y", sons: null}]}; +NTI620757126.node = NNI620757126; +NTI620757126.base = NTI620757116; +NTI620757016.base = NTI620757126; +NTI620757115.base = NTI620757016; +var NNI620757176 = {kind: 1, offset: "then", len: 0, typ: NTI620757177, name: "then", sons: null}; +NTI620757176.node = NNI620757176; +NTI620757057.base = NTI620757176; +var NNI620757179 = {kind: 2, len: 2, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "ready", len: 0, typ: NTI620757057, name: "ready", sons: null}, +{kind: 1, offset: "onloadingdone", len: 0, typ: NTI620757180, name: "onloadingdone", sons: null}]}; +NTI620757179.node = NNI620757179; +NTI620757058.base = NTI620757179; +var NNI620757109 = {kind: 2, len: 23, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "activeElement", len: 0, typ: NTI620757010, name: "activeElement", sons: null}, +{kind: 1, offset: "documentElement", len: 0, typ: NTI620757010, name: "documentElement", sons: null}, +{kind: 1, offset: "alinkColor", len: 0, typ: NTI33554440, name: "alinkColor", sons: null}, +{kind: 1, offset: "bgColor", len: 0, typ: NTI33554440, name: "bgColor", sons: null}, +{kind: 1, offset: "body", len: 0, typ: NTI620757010, name: "body", sons: null}, +{kind: 1, offset: "charset", len: 0, typ: NTI33554440, name: "charset", sons: null}, +{kind: 1, offset: "cookie", len: 0, typ: NTI33554440, name: "cookie", sons: null}, +{kind: 1, offset: "defaultCharset", len: 0, typ: NTI33554440, name: "defaultCharset", sons: null}, +{kind: 1, offset: "fgColor", len: 0, typ: NTI33554440, name: "fgColor", sons: null}, +{kind: 1, offset: "head", len: 0, typ: NTI620757010, name: "head", sons: null}, +{kind: 1, offset: "lastModified", len: 0, typ: NTI33554440, name: "lastModified", sons: null}, +{kind: 1, offset: "linkColor", len: 0, typ: NTI33554440, name: "linkColor", sons: null}, +{kind: 1, offset: "referrer", len: 0, typ: NTI33554440, name: "referrer", sons: null}, +{kind: 1, offset: "title", len: 0, typ: NTI33554440, name: "title", sons: null}, +{kind: 1, offset: "URL", len: 0, typ: NTI33554440, name: "URL", sons: null}, +{kind: 1, offset: "vlinkColor", len: 0, typ: NTI33554440, name: "vlinkColor", sons: null}, +{kind: 1, offset: "anchors", len: 0, typ: NTI620757110, name: "anchors", sons: null}, +{kind: 1, offset: "forms", len: 0, typ: NTI620757111, name: "forms", sons: null}, +{kind: 1, offset: "images", len: 0, typ: NTI620757112, name: "images", sons: null}, +{kind: 1, offset: "applets", len: 0, typ: NTI620757113, name: "applets", sons: null}, +{kind: 1, offset: "embeds", len: 0, typ: NTI620757114, name: "embeds", sons: null}, +{kind: 1, offset: "links", len: 0, typ: NTI620757115, name: "links", sons: null}, +{kind: 1, offset: "fonts", len: 0, typ: NTI620757058, name: "fonts", sons: null}]}; +NTI620757109.node = NNI620757109; +NTI620757109.base = NTI620757105; +NTI620757009.base = NTI620757109; +var NNI620757133 = {kind: 2, len: 368, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "alignContent", len: 0, typ: NTI33554440, name: "alignContent", sons: null}, +{kind: 1, offset: "alignItems", len: 0, typ: NTI33554440, name: "alignItems", sons: null}, +{kind: 1, offset: "alignSelf", len: 0, typ: NTI33554440, name: "alignSelf", sons: null}, +{kind: 1, offset: "all", len: 0, typ: NTI33554440, name: "all", sons: null}, +{kind: 1, offset: "animation", len: 0, typ: NTI33554440, name: "animation", sons: null}, +{kind: 1, offset: "animationDelay", len: 0, typ: NTI33554440, name: "animationDelay", sons: null}, +{kind: 1, offset: "animationDirection", len: 0, typ: NTI33554440, name: "animationDirection", sons: null}, +{kind: 1, offset: "animationDuration", len: 0, typ: NTI33554440, name: "animationDuration", sons: null}, +{kind: 1, offset: "animationFillMode", len: 0, typ: NTI33554440, name: "animationFillMode", sons: null}, +{kind: 1, offset: "animationIterationCount", len: 0, typ: NTI33554440, name: "animationIterationCount", sons: null}, +{kind: 1, offset: "animationName", len: 0, typ: NTI33554440, name: "animationName", sons: null}, +{kind: 1, offset: "animationPlayState", len: 0, typ: NTI33554440, name: "animationPlayState", sons: null}, +{kind: 1, offset: "animationTimingFunction", len: 0, typ: NTI33554440, name: "animationTimingFunction", sons: null}, +{kind: 1, offset: "backdropFilter", len: 0, typ: NTI33554440, name: "backdropFilter", sons: null}, +{kind: 1, offset: "backfaceVisibility", len: 0, typ: NTI33554440, name: "backfaceVisibility", sons: null}, +{kind: 1, offset: "background", len: 0, typ: NTI33554440, name: "background", sons: null}, +{kind: 1, offset: "backgroundAttachment", len: 0, typ: NTI33554440, name: "backgroundAttachment", sons: null}, +{kind: 1, offset: "backgroundBlendMode", len: 0, typ: NTI33554440, name: "backgroundBlendMode", sons: null}, +{kind: 1, offset: "backgroundClip", len: 0, typ: NTI33554440, name: "backgroundClip", sons: null}, +{kind: 1, offset: "backgroundColor", len: 0, typ: NTI33554440, name: "backgroundColor", sons: null}, +{kind: 1, offset: "backgroundImage", len: 0, typ: NTI33554440, name: "backgroundImage", sons: null}, +{kind: 1, offset: "backgroundOrigin", len: 0, typ: NTI33554440, name: "backgroundOrigin", sons: null}, +{kind: 1, offset: "backgroundPosition", len: 0, typ: NTI33554440, name: "backgroundPosition", sons: null}, +{kind: 1, offset: "backgroundRepeat", len: 0, typ: NTI33554440, name: "backgroundRepeat", sons: null}, +{kind: 1, offset: "backgroundSize", len: 0, typ: NTI33554440, name: "backgroundSize", sons: null}, +{kind: 1, offset: "blockSize", len: 0, typ: NTI33554440, name: "blockSize", sons: null}, +{kind: 1, offset: "border", len: 0, typ: NTI33554440, name: "border", sons: null}, +{kind: 1, offset: "borderBlock", len: 0, typ: NTI33554440, name: "borderBlock", sons: null}, +{kind: 1, offset: "borderBlockColor", len: 0, typ: NTI33554440, name: "borderBlockColor", sons: null}, +{kind: 1, offset: "borderBlockEnd", len: 0, typ: NTI33554440, name: "borderBlockEnd", sons: null}, +{kind: 1, offset: "borderBlockEndColor", len: 0, typ: NTI33554440, name: "borderBlockEndColor", sons: null}, +{kind: 1, offset: "borderBlockEndStyle", len: 0, typ: NTI33554440, name: "borderBlockEndStyle", sons: null}, +{kind: 1, offset: "borderBlockEndWidth", len: 0, typ: NTI33554440, name: "borderBlockEndWidth", sons: null}, +{kind: 1, offset: "borderBlockStart", len: 0, typ: NTI33554440, name: "borderBlockStart", sons: null}, +{kind: 1, offset: "borderBlockStartColor", len: 0, typ: NTI33554440, name: "borderBlockStartColor", sons: null}, +{kind: 1, offset: "borderBlockStartStyle", len: 0, typ: NTI33554440, name: "borderBlockStartStyle", sons: null}, +{kind: 1, offset: "borderBlockStartWidth", len: 0, typ: NTI33554440, name: "borderBlockStartWidth", sons: null}, +{kind: 1, offset: "borderBlockStyle", len: 0, typ: NTI33554440, name: "borderBlockStyle", sons: null}, +{kind: 1, offset: "borderBlockWidth", len: 0, typ: NTI33554440, name: "borderBlockWidth", sons: null}, +{kind: 1, offset: "borderBottom", len: 0, typ: NTI33554440, name: "borderBottom", sons: null}, +{kind: 1, offset: "borderBottomColor", len: 0, typ: NTI33554440, name: "borderBottomColor", sons: null}, +{kind: 1, offset: "borderBottomLeftRadius", len: 0, typ: NTI33554440, name: "borderBottomLeftRadius", sons: null}, +{kind: 1, offset: "borderBottomRightRadius", len: 0, typ: NTI33554440, name: "borderBottomRightRadius", sons: null}, +{kind: 1, offset: "borderBottomStyle", len: 0, typ: NTI33554440, name: "borderBottomStyle", sons: null}, +{kind: 1, offset: "borderBottomWidth", len: 0, typ: NTI33554440, name: "borderBottomWidth", sons: null}, +{kind: 1, offset: "borderCollapse", len: 0, typ: NTI33554440, name: "borderCollapse", sons: null}, +{kind: 1, offset: "borderColor", len: 0, typ: NTI33554440, name: "borderColor", sons: null}, +{kind: 1, offset: "borderEndEndRadius", len: 0, typ: NTI33554440, name: "borderEndEndRadius", sons: null}, +{kind: 1, offset: "borderEndStartRadius", len: 0, typ: NTI33554440, name: "borderEndStartRadius", sons: null}, +{kind: 1, offset: "borderImage", len: 0, typ: NTI33554440, name: "borderImage", sons: null}, +{kind: 1, offset: "borderImageOutset", len: 0, typ: NTI33554440, name: "borderImageOutset", sons: null}, +{kind: 1, offset: "borderImageRepeat", len: 0, typ: NTI33554440, name: "borderImageRepeat", sons: null}, +{kind: 1, offset: "borderImageSlice", len: 0, typ: NTI33554440, name: "borderImageSlice", sons: null}, +{kind: 1, offset: "borderImageSource", len: 0, typ: NTI33554440, name: "borderImageSource", sons: null}, +{kind: 1, offset: "borderImageWidth", len: 0, typ: NTI33554440, name: "borderImageWidth", sons: null}, +{kind: 1, offset: "borderInline", len: 0, typ: NTI33554440, name: "borderInline", sons: null}, +{kind: 1, offset: "borderInlineColor", len: 0, typ: NTI33554440, name: "borderInlineColor", sons: null}, +{kind: 1, offset: "borderInlineEnd", len: 0, typ: NTI33554440, name: "borderInlineEnd", sons: null}, +{kind: 1, offset: "borderInlineEndColor", len: 0, typ: NTI33554440, name: "borderInlineEndColor", sons: null}, +{kind: 1, offset: "borderInlineEndStyle", len: 0, typ: NTI33554440, name: "borderInlineEndStyle", sons: null}, +{kind: 1, offset: "borderInlineEndWidth", len: 0, typ: NTI33554440, name: "borderInlineEndWidth", sons: null}, +{kind: 1, offset: "borderInlineStart", len: 0, typ: NTI33554440, name: "borderInlineStart", sons: null}, +{kind: 1, offset: "borderInlineStartColor", len: 0, typ: NTI33554440, name: "borderInlineStartColor", sons: null}, +{kind: 1, offset: "borderInlineStartStyle", len: 0, typ: NTI33554440, name: "borderInlineStartStyle", sons: null}, +{kind: 1, offset: "borderInlineStartWidth", len: 0, typ: NTI33554440, name: "borderInlineStartWidth", sons: null}, +{kind: 1, offset: "borderInlineStyle", len: 0, typ: NTI33554440, name: "borderInlineStyle", sons: null}, +{kind: 1, offset: "borderInlineWidth", len: 0, typ: NTI33554440, name: "borderInlineWidth", sons: null}, +{kind: 1, offset: "borderLeft", len: 0, typ: NTI33554440, name: "borderLeft", sons: null}, +{kind: 1, offset: "borderLeftColor", len: 0, typ: NTI33554440, name: "borderLeftColor", sons: null}, +{kind: 1, offset: "borderLeftStyle", len: 0, typ: NTI33554440, name: "borderLeftStyle", sons: null}, +{kind: 1, offset: "borderLeftWidth", len: 0, typ: NTI33554440, name: "borderLeftWidth", sons: null}, +{kind: 1, offset: "borderRadius", len: 0, typ: NTI33554440, name: "borderRadius", sons: null}, +{kind: 1, offset: "borderRight", len: 0, typ: NTI33554440, name: "borderRight", sons: null}, +{kind: 1, offset: "borderRightColor", len: 0, typ: NTI33554440, name: "borderRightColor", sons: null}, +{kind: 1, offset: "borderRightStyle", len: 0, typ: NTI33554440, name: "borderRightStyle", sons: null}, +{kind: 1, offset: "borderRightWidth", len: 0, typ: NTI33554440, name: "borderRightWidth", sons: null}, +{kind: 1, offset: "borderSpacing", len: 0, typ: NTI33554440, name: "borderSpacing", sons: null}, +{kind: 1, offset: "borderStartEndRadius", len: 0, typ: NTI33554440, name: "borderStartEndRadius", sons: null}, +{kind: 1, offset: "borderStartStartRadius", len: 0, typ: NTI33554440, name: "borderStartStartRadius", sons: null}, +{kind: 1, offset: "borderStyle", len: 0, typ: NTI33554440, name: "borderStyle", sons: null}, +{kind: 1, offset: "borderTop", len: 0, typ: NTI33554440, name: "borderTop", sons: null}, +{kind: 1, offset: "borderTopColor", len: 0, typ: NTI33554440, name: "borderTopColor", sons: null}, +{kind: 1, offset: "borderTopLeftRadius", len: 0, typ: NTI33554440, name: "borderTopLeftRadius", sons: null}, +{kind: 1, offset: "borderTopRightRadius", len: 0, typ: NTI33554440, name: "borderTopRightRadius", sons: null}, +{kind: 1, offset: "borderTopStyle", len: 0, typ: NTI33554440, name: "borderTopStyle", sons: null}, +{kind: 1, offset: "borderTopWidth", len: 0, typ: NTI33554440, name: "borderTopWidth", sons: null}, +{kind: 1, offset: "borderWidth", len: 0, typ: NTI33554440, name: "borderWidth", sons: null}, +{kind: 1, offset: "bottom", len: 0, typ: NTI33554440, name: "bottom", sons: null}, +{kind: 1, offset: "boxDecorationBreak", len: 0, typ: NTI33554440, name: "boxDecorationBreak", sons: null}, +{kind: 1, offset: "boxShadow", len: 0, typ: NTI33554440, name: "boxShadow", sons: null}, +{kind: 1, offset: "boxSizing", len: 0, typ: NTI33554440, name: "boxSizing", sons: null}, +{kind: 1, offset: "breakAfter", len: 0, typ: NTI33554440, name: "breakAfter", sons: null}, +{kind: 1, offset: "breakBefore", len: 0, typ: NTI33554440, name: "breakBefore", sons: null}, +{kind: 1, offset: "breakInside", len: 0, typ: NTI33554440, name: "breakInside", sons: null}, +{kind: 1, offset: "captionSide", len: 0, typ: NTI33554440, name: "captionSide", sons: null}, +{kind: 1, offset: "caretColor", len: 0, typ: NTI33554440, name: "caretColor", sons: null}, +{kind: 1, offset: "clear", len: 0, typ: NTI33554440, name: "clear", sons: null}, +{kind: 1, offset: "clip", len: 0, typ: NTI33554440, name: "clip", sons: null}, +{kind: 1, offset: "clipPath", len: 0, typ: NTI33554440, name: "clipPath", sons: null}, +{kind: 1, offset: "color", len: 0, typ: NTI33554440, name: "color", sons: null}, +{kind: 1, offset: "colorAdjust", len: 0, typ: NTI33554440, name: "colorAdjust", sons: null}, +{kind: 1, offset: "columnCount", len: 0, typ: NTI33554440, name: "columnCount", sons: null}, +{kind: 1, offset: "columnFill", len: 0, typ: NTI33554440, name: "columnFill", sons: null}, +{kind: 1, offset: "columnGap", len: 0, typ: NTI33554440, name: "columnGap", sons: null}, +{kind: 1, offset: "columnRule", len: 0, typ: NTI33554440, name: "columnRule", sons: null}, +{kind: 1, offset: "columnRuleColor", len: 0, typ: NTI33554440, name: "columnRuleColor", sons: null}, +{kind: 1, offset: "columnRuleStyle", len: 0, typ: NTI33554440, name: "columnRuleStyle", sons: null}, +{kind: 1, offset: "columnRuleWidth", len: 0, typ: NTI33554440, name: "columnRuleWidth", sons: null}, +{kind: 1, offset: "columnSpan", len: 0, typ: NTI33554440, name: "columnSpan", sons: null}, +{kind: 1, offset: "columnWidth", len: 0, typ: NTI33554440, name: "columnWidth", sons: null}, +{kind: 1, offset: "columns", len: 0, typ: NTI33554440, name: "columns", sons: null}, +{kind: 1, offset: "contain", len: 0, typ: NTI33554440, name: "contain", sons: null}, +{kind: 1, offset: "content", len: 0, typ: NTI33554440, name: "content", sons: null}, +{kind: 1, offset: "counterIncrement", len: 0, typ: NTI33554440, name: "counterIncrement", sons: null}, +{kind: 1, offset: "counterReset", len: 0, typ: NTI33554440, name: "counterReset", sons: null}, +{kind: 1, offset: "counterSet", len: 0, typ: NTI33554440, name: "counterSet", sons: null}, +{kind: 1, offset: "cursor", len: 0, typ: NTI33554440, name: "cursor", sons: null}, +{kind: 1, offset: "direction", len: 0, typ: NTI33554440, name: "direction", sons: null}, +{kind: 1, offset: "display", len: 0, typ: NTI33554440, name: "display", sons: null}, +{kind: 1, offset: "emptyCells", len: 0, typ: NTI33554440, name: "emptyCells", sons: null}, +{kind: 1, offset: "filter", len: 0, typ: NTI33554440, name: "filter", sons: null}, +{kind: 1, offset: "flex", len: 0, typ: NTI33554440, name: "flex", sons: null}, +{kind: 1, offset: "flexBasis", len: 0, typ: NTI33554440, name: "flexBasis", sons: null}, +{kind: 1, offset: "flexDirection", len: 0, typ: NTI33554440, name: "flexDirection", sons: null}, +{kind: 1, offset: "flexFlow", len: 0, typ: NTI33554440, name: "flexFlow", sons: null}, +{kind: 1, offset: "flexGrow", len: 0, typ: NTI33554440, name: "flexGrow", sons: null}, +{kind: 1, offset: "flexShrink", len: 0, typ: NTI33554440, name: "flexShrink", sons: null}, +{kind: 1, offset: "flexWrap", len: 0, typ: NTI33554440, name: "flexWrap", sons: null}, +{kind: 1, offset: "cssFloat", len: 0, typ: NTI33554440, name: "cssFloat", sons: null}, +{kind: 1, offset: "font", len: 0, typ: NTI33554440, name: "font", sons: null}, +{kind: 1, offset: "fontFamily", len: 0, typ: NTI33554440, name: "fontFamily", sons: null}, +{kind: 1, offset: "fontFeatureSettings", len: 0, typ: NTI33554440, name: "fontFeatureSettings", sons: null}, +{kind: 1, offset: "fontKerning", len: 0, typ: NTI33554440, name: "fontKerning", sons: null}, +{kind: 1, offset: "fontLanguageOverride", len: 0, typ: NTI33554440, name: "fontLanguageOverride", sons: null}, +{kind: 1, offset: "fontOpticalSizing", len: 0, typ: NTI33554440, name: "fontOpticalSizing", sons: null}, +{kind: 1, offset: "fontSize", len: 0, typ: NTI33554440, name: "fontSize", sons: null}, +{kind: 1, offset: "fontSizeAdjust", len: 0, typ: NTI33554440, name: "fontSizeAdjust", sons: null}, +{kind: 1, offset: "fontStretch", len: 0, typ: NTI33554440, name: "fontStretch", sons: null}, +{kind: 1, offset: "fontStyle", len: 0, typ: NTI33554440, name: "fontStyle", sons: null}, +{kind: 1, offset: "fontSynthesis", len: 0, typ: NTI33554440, name: "fontSynthesis", sons: null}, +{kind: 1, offset: "fontVariant", len: 0, typ: NTI33554440, name: "fontVariant", sons: null}, +{kind: 1, offset: "fontVariantAlternates", len: 0, typ: NTI33554440, name: "fontVariantAlternates", sons: null}, +{kind: 1, offset: "fontVariantCaps", len: 0, typ: NTI33554440, name: "fontVariantCaps", sons: null}, +{kind: 1, offset: "fontVariantEastAsian", len: 0, typ: NTI33554440, name: "fontVariantEastAsian", sons: null}, +{kind: 1, offset: "fontVariantLigatures", len: 0, typ: NTI33554440, name: "fontVariantLigatures", sons: null}, +{kind: 1, offset: "fontVariantNumeric", len: 0, typ: NTI33554440, name: "fontVariantNumeric", sons: null}, +{kind: 1, offset: "fontVariantPosition", len: 0, typ: NTI33554440, name: "fontVariantPosition", sons: null}, +{kind: 1, offset: "fontVariationSettings", len: 0, typ: NTI33554440, name: "fontVariationSettings", sons: null}, +{kind: 1, offset: "fontWeight", len: 0, typ: NTI33554440, name: "fontWeight", sons: null}, +{kind: 1, offset: "gap", len: 0, typ: NTI33554440, name: "gap", sons: null}, +{kind: 1, offset: "grid", len: 0, typ: NTI33554440, name: "grid", sons: null}, +{kind: 1, offset: "gridArea", len: 0, typ: NTI33554440, name: "gridArea", sons: null}, +{kind: 1, offset: "gridAutoColumns", len: 0, typ: NTI33554440, name: "gridAutoColumns", sons: null}, +{kind: 1, offset: "gridAutoFlow", len: 0, typ: NTI33554440, name: "gridAutoFlow", sons: null}, +{kind: 1, offset: "gridAutoRows", len: 0, typ: NTI33554440, name: "gridAutoRows", sons: null}, +{kind: 1, offset: "gridColumn", len: 0, typ: NTI33554440, name: "gridColumn", sons: null}, +{kind: 1, offset: "gridColumnEnd", len: 0, typ: NTI33554440, name: "gridColumnEnd", sons: null}, +{kind: 1, offset: "gridColumnStart", len: 0, typ: NTI33554440, name: "gridColumnStart", sons: null}, +{kind: 1, offset: "gridRow", len: 0, typ: NTI33554440, name: "gridRow", sons: null}, +{kind: 1, offset: "gridRowEnd", len: 0, typ: NTI33554440, name: "gridRowEnd", sons: null}, +{kind: 1, offset: "gridRowStart", len: 0, typ: NTI33554440, name: "gridRowStart", sons: null}, +{kind: 1, offset: "gridTemplate", len: 0, typ: NTI33554440, name: "gridTemplate", sons: null}, +{kind: 1, offset: "gridTemplateAreas", len: 0, typ: NTI33554440, name: "gridTemplateAreas", sons: null}, +{kind: 1, offset: "gridTemplateColumns", len: 0, typ: NTI33554440, name: "gridTemplateColumns", sons: null}, +{kind: 1, offset: "gridTemplateRows", len: 0, typ: NTI33554440, name: "gridTemplateRows", sons: null}, +{kind: 1, offset: "hangingPunctuation", len: 0, typ: NTI33554440, name: "hangingPunctuation", sons: null}, +{kind: 1, offset: "height", len: 0, typ: NTI33554440, name: "height", sons: null}, +{kind: 1, offset: "hyphens", len: 0, typ: NTI33554440, name: "hyphens", sons: null}, +{kind: 1, offset: "imageOrientation", len: 0, typ: NTI33554440, name: "imageOrientation", sons: null}, +{kind: 1, offset: "imageRendering", len: 0, typ: NTI33554440, name: "imageRendering", sons: null}, +{kind: 1, offset: "inlineSize", len: 0, typ: NTI33554440, name: "inlineSize", sons: null}, +{kind: 1, offset: "inset", len: 0, typ: NTI33554440, name: "inset", sons: null}, +{kind: 1, offset: "insetBlock", len: 0, typ: NTI33554440, name: "insetBlock", sons: null}, +{kind: 1, offset: "insetBlockEnd", len: 0, typ: NTI33554440, name: "insetBlockEnd", sons: null}, +{kind: 1, offset: "insetBlockStart", len: 0, typ: NTI33554440, name: "insetBlockStart", sons: null}, +{kind: 1, offset: "insetInline", len: 0, typ: NTI33554440, name: "insetInline", sons: null}, +{kind: 1, offset: "insetInlineEnd", len: 0, typ: NTI33554440, name: "insetInlineEnd", sons: null}, +{kind: 1, offset: "insetInlineStart", len: 0, typ: NTI33554440, name: "insetInlineStart", sons: null}, +{kind: 1, offset: "isolation", len: 0, typ: NTI33554440, name: "isolation", sons: null}, +{kind: 1, offset: "justifyContent", len: 0, typ: NTI33554440, name: "justifyContent", sons: null}, +{kind: 1, offset: "justifyItems", len: 0, typ: NTI33554440, name: "justifyItems", sons: null}, +{kind: 1, offset: "justifySelf", len: 0, typ: NTI33554440, name: "justifySelf", sons: null}, +{kind: 1, offset: "left", len: 0, typ: NTI33554440, name: "left", sons: null}, +{kind: 1, offset: "letterSpacing", len: 0, typ: NTI33554440, name: "letterSpacing", sons: null}, +{kind: 1, offset: "lineBreak", len: 0, typ: NTI33554440, name: "lineBreak", sons: null}, +{kind: 1, offset: "lineHeight", len: 0, typ: NTI33554440, name: "lineHeight", sons: null}, +{kind: 1, offset: "listStyle", len: 0, typ: NTI33554440, name: "listStyle", sons: null}, +{kind: 1, offset: "listStyleImage", len: 0, typ: NTI33554440, name: "listStyleImage", sons: null}, +{kind: 1, offset: "listStylePosition", len: 0, typ: NTI33554440, name: "listStylePosition", sons: null}, +{kind: 1, offset: "listStyleType", len: 0, typ: NTI33554440, name: "listStyleType", sons: null}, +{kind: 1, offset: "margin", len: 0, typ: NTI33554440, name: "margin", sons: null}, +{kind: 1, offset: "marginBlock", len: 0, typ: NTI33554440, name: "marginBlock", sons: null}, +{kind: 1, offset: "marginBlockEnd", len: 0, typ: NTI33554440, name: "marginBlockEnd", sons: null}, +{kind: 1, offset: "marginBlockStart", len: 0, typ: NTI33554440, name: "marginBlockStart", sons: null}, +{kind: 1, offset: "marginBottom", len: 0, typ: NTI33554440, name: "marginBottom", sons: null}, +{kind: 1, offset: "marginInline", len: 0, typ: NTI33554440, name: "marginInline", sons: null}, +{kind: 1, offset: "marginInlineEnd", len: 0, typ: NTI33554440, name: "marginInlineEnd", sons: null}, +{kind: 1, offset: "marginInlineStart", len: 0, typ: NTI33554440, name: "marginInlineStart", sons: null}, +{kind: 1, offset: "marginLeft", len: 0, typ: NTI33554440, name: "marginLeft", sons: null}, +{kind: 1, offset: "marginRight", len: 0, typ: NTI33554440, name: "marginRight", sons: null}, +{kind: 1, offset: "marginTop", len: 0, typ: NTI33554440, name: "marginTop", sons: null}, +{kind: 1, offset: "mask", len: 0, typ: NTI33554440, name: "mask", sons: null}, +{kind: 1, offset: "maskBorder", len: 0, typ: NTI33554440, name: "maskBorder", sons: null}, +{kind: 1, offset: "maskBorderMode", len: 0, typ: NTI33554440, name: "maskBorderMode", sons: null}, +{kind: 1, offset: "maskBorderOutset", len: 0, typ: NTI33554440, name: "maskBorderOutset", sons: null}, +{kind: 1, offset: "maskBorderRepeat", len: 0, typ: NTI33554440, name: "maskBorderRepeat", sons: null}, +{kind: 1, offset: "maskBorderSlice", len: 0, typ: NTI33554440, name: "maskBorderSlice", sons: null}, +{kind: 1, offset: "maskBorderSource", len: 0, typ: NTI33554440, name: "maskBorderSource", sons: null}, +{kind: 1, offset: "maskBorderWidth", len: 0, typ: NTI33554440, name: "maskBorderWidth", sons: null}, +{kind: 1, offset: "maskClip", len: 0, typ: NTI33554440, name: "maskClip", sons: null}, +{kind: 1, offset: "maskComposite", len: 0, typ: NTI33554440, name: "maskComposite", sons: null}, +{kind: 1, offset: "maskImage", len: 0, typ: NTI33554440, name: "maskImage", sons: null}, +{kind: 1, offset: "maskMode", len: 0, typ: NTI33554440, name: "maskMode", sons: null}, +{kind: 1, offset: "maskOrigin", len: 0, typ: NTI33554440, name: "maskOrigin", sons: null}, +{kind: 1, offset: "maskPosition", len: 0, typ: NTI33554440, name: "maskPosition", sons: null}, +{kind: 1, offset: "maskRepeat", len: 0, typ: NTI33554440, name: "maskRepeat", sons: null}, +{kind: 1, offset: "maskSize", len: 0, typ: NTI33554440, name: "maskSize", sons: null}, +{kind: 1, offset: "maskType", len: 0, typ: NTI33554440, name: "maskType", sons: null}, +{kind: 1, offset: "maxBlockSize", len: 0, typ: NTI33554440, name: "maxBlockSize", sons: null}, +{kind: 1, offset: "maxHeight", len: 0, typ: NTI33554440, name: "maxHeight", sons: null}, +{kind: 1, offset: "maxInlineSize", len: 0, typ: NTI33554440, name: "maxInlineSize", sons: null}, +{kind: 1, offset: "maxWidth", len: 0, typ: NTI33554440, name: "maxWidth", sons: null}, +{kind: 1, offset: "minBlockSize", len: 0, typ: NTI33554440, name: "minBlockSize", sons: null}, +{kind: 1, offset: "minHeight", len: 0, typ: NTI33554440, name: "minHeight", sons: null}, +{kind: 1, offset: "minInlineSize", len: 0, typ: NTI33554440, name: "minInlineSize", sons: null}, +{kind: 1, offset: "minWidth", len: 0, typ: NTI33554440, name: "minWidth", sons: null}, +{kind: 1, offset: "mixBlendMode", len: 0, typ: NTI33554440, name: "mixBlendMode", sons: null}, +{kind: 1, offset: "objectFit", len: 0, typ: NTI33554440, name: "objectFit", sons: null}, +{kind: 1, offset: "objectPosition", len: 0, typ: NTI33554440, name: "objectPosition", sons: null}, +{kind: 1, offset: "offset", len: 0, typ: NTI33554440, name: "offset", sons: null}, +{kind: 1, offset: "offsetAnchor", len: 0, typ: NTI33554440, name: "offsetAnchor", sons: null}, +{kind: 1, offset: "offsetDistance", len: 0, typ: NTI33554440, name: "offsetDistance", sons: null}, +{kind: 1, offset: "offsetPath", len: 0, typ: NTI33554440, name: "offsetPath", sons: null}, +{kind: 1, offset: "offsetRotate", len: 0, typ: NTI33554440, name: "offsetRotate", sons: null}, +{kind: 1, offset: "opacity", len: 0, typ: NTI33554440, name: "opacity", sons: null}, +{kind: 1, offset: "order", len: 0, typ: NTI33554440, name: "order", sons: null}, +{kind: 1, offset: "orphans", len: 0, typ: NTI33554440, name: "orphans", sons: null}, +{kind: 1, offset: "outline", len: 0, typ: NTI33554440, name: "outline", sons: null}, +{kind: 1, offset: "outlineColor", len: 0, typ: NTI33554440, name: "outlineColor", sons: null}, +{kind: 1, offset: "outlineOffset", len: 0, typ: NTI33554440, name: "outlineOffset", sons: null}, +{kind: 1, offset: "outlineStyle", len: 0, typ: NTI33554440, name: "outlineStyle", sons: null}, +{kind: 1, offset: "outlineWidth", len: 0, typ: NTI33554440, name: "outlineWidth", sons: null}, +{kind: 1, offset: "overflow", len: 0, typ: NTI33554440, name: "overflow", sons: null}, +{kind: 1, offset: "overflowAnchor", len: 0, typ: NTI33554440, name: "overflowAnchor", sons: null}, +{kind: 1, offset: "overflowBlock", len: 0, typ: NTI33554440, name: "overflowBlock", sons: null}, +{kind: 1, offset: "overflowInline", len: 0, typ: NTI33554440, name: "overflowInline", sons: null}, +{kind: 1, offset: "overflowWrap", len: 0, typ: NTI33554440, name: "overflowWrap", sons: null}, +{kind: 1, offset: "overflowX", len: 0, typ: NTI33554440, name: "overflowX", sons: null}, +{kind: 1, offset: "overflowY", len: 0, typ: NTI33554440, name: "overflowY", sons: null}, +{kind: 1, offset: "overscrollBehavior", len: 0, typ: NTI33554440, name: "overscrollBehavior", sons: null}, +{kind: 1, offset: "overscrollBehaviorBlock", len: 0, typ: NTI33554440, name: "overscrollBehaviorBlock", sons: null}, +{kind: 1, offset: "overscrollBehaviorInline", len: 0, typ: NTI33554440, name: "overscrollBehaviorInline", sons: null}, +{kind: 1, offset: "overscrollBehaviorX", len: 0, typ: NTI33554440, name: "overscrollBehaviorX", sons: null}, +{kind: 1, offset: "overscrollBehaviorY", len: 0, typ: NTI33554440, name: "overscrollBehaviorY", sons: null}, +{kind: 1, offset: "padding", len: 0, typ: NTI33554440, name: "padding", sons: null}, +{kind: 1, offset: "paddingBlock", len: 0, typ: NTI33554440, name: "paddingBlock", sons: null}, +{kind: 1, offset: "paddingBlockEnd", len: 0, typ: NTI33554440, name: "paddingBlockEnd", sons: null}, +{kind: 1, offset: "paddingBlockStart", len: 0, typ: NTI33554440, name: "paddingBlockStart", sons: null}, +{kind: 1, offset: "paddingBottom", len: 0, typ: NTI33554440, name: "paddingBottom", sons: null}, +{kind: 1, offset: "paddingInline", len: 0, typ: NTI33554440, name: "paddingInline", sons: null}, +{kind: 1, offset: "paddingInlineEnd", len: 0, typ: NTI33554440, name: "paddingInlineEnd", sons: null}, +{kind: 1, offset: "paddingInlineStart", len: 0, typ: NTI33554440, name: "paddingInlineStart", sons: null}, +{kind: 1, offset: "paddingLeft", len: 0, typ: NTI33554440, name: "paddingLeft", sons: null}, +{kind: 1, offset: "paddingRight", len: 0, typ: NTI33554440, name: "paddingRight", sons: null}, +{kind: 1, offset: "paddingTop", len: 0, typ: NTI33554440, name: "paddingTop", sons: null}, +{kind: 1, offset: "pageBreakAfter", len: 0, typ: NTI33554440, name: "pageBreakAfter", sons: null}, +{kind: 1, offset: "pageBreakBefore", len: 0, typ: NTI33554440, name: "pageBreakBefore", sons: null}, +{kind: 1, offset: "pageBreakInside", len: 0, typ: NTI33554440, name: "pageBreakInside", sons: null}, +{kind: 1, offset: "paintOrder", len: 0, typ: NTI33554440, name: "paintOrder", sons: null}, +{kind: 1, offset: "perspective", len: 0, typ: NTI33554440, name: "perspective", sons: null}, +{kind: 1, offset: "perspectiveOrigin", len: 0, typ: NTI33554440, name: "perspectiveOrigin", sons: null}, +{kind: 1, offset: "placeContent", len: 0, typ: NTI33554440, name: "placeContent", sons: null}, +{kind: 1, offset: "placeItems", len: 0, typ: NTI33554440, name: "placeItems", sons: null}, +{kind: 1, offset: "placeSelf", len: 0, typ: NTI33554440, name: "placeSelf", sons: null}, +{kind: 1, offset: "pointerEvents", len: 0, typ: NTI33554440, name: "pointerEvents", sons: null}, +{kind: 1, offset: "position", len: 0, typ: NTI33554440, name: "position", sons: null}, +{kind: 1, offset: "quotes", len: 0, typ: NTI33554440, name: "quotes", sons: null}, +{kind: 1, offset: "resize", len: 0, typ: NTI33554440, name: "resize", sons: null}, +{kind: 1, offset: "right", len: 0, typ: NTI33554440, name: "right", sons: null}, +{kind: 1, offset: "rotate", len: 0, typ: NTI33554440, name: "rotate", sons: null}, +{kind: 1, offset: "rowGap", len: 0, typ: NTI33554440, name: "rowGap", sons: null}, +{kind: 1, offset: "scale", len: 0, typ: NTI33554440, name: "scale", sons: null}, +{kind: 1, offset: "scrollBehavior", len: 0, typ: NTI33554440, name: "scrollBehavior", sons: null}, +{kind: 1, offset: "scrollMargin", len: 0, typ: NTI33554440, name: "scrollMargin", sons: null}, +{kind: 1, offset: "scrollMarginBlock", len: 0, typ: NTI33554440, name: "scrollMarginBlock", sons: null}, +{kind: 1, offset: "scrollMarginBlockEnd", len: 0, typ: NTI33554440, name: "scrollMarginBlockEnd", sons: null}, +{kind: 1, offset: "scrollMarginBlockStart", len: 0, typ: NTI33554440, name: "scrollMarginBlockStart", sons: null}, +{kind: 1, offset: "scrollMarginBottom", len: 0, typ: NTI33554440, name: "scrollMarginBottom", sons: null}, +{kind: 1, offset: "scrollMarginInline", len: 0, typ: NTI33554440, name: "scrollMarginInline", sons: null}, +{kind: 1, offset: "scrollMarginInlineEnd", len: 0, typ: NTI33554440, name: "scrollMarginInlineEnd", sons: null}, +{kind: 1, offset: "scrollMarginInlineStart", len: 0, typ: NTI33554440, name: "scrollMarginInlineStart", sons: null}, +{kind: 1, offset: "scrollMarginLeft", len: 0, typ: NTI33554440, name: "scrollMarginLeft", sons: null}, +{kind: 1, offset: "scrollMarginRight", len: 0, typ: NTI33554440, name: "scrollMarginRight", sons: null}, +{kind: 1, offset: "scrollMarginTop", len: 0, typ: NTI33554440, name: "scrollMarginTop", sons: null}, +{kind: 1, offset: "scrollPadding", len: 0, typ: NTI33554440, name: "scrollPadding", sons: null}, +{kind: 1, offset: "scrollPaddingBlock", len: 0, typ: NTI33554440, name: "scrollPaddingBlock", sons: null}, +{kind: 1, offset: "scrollPaddingBlockEnd", len: 0, typ: NTI33554440, name: "scrollPaddingBlockEnd", sons: null}, +{kind: 1, offset: "scrollPaddingBlockStart", len: 0, typ: NTI33554440, name: "scrollPaddingBlockStart", sons: null}, +{kind: 1, offset: "scrollPaddingBottom", len: 0, typ: NTI33554440, name: "scrollPaddingBottom", sons: null}, +{kind: 1, offset: "scrollPaddingInline", len: 0, typ: NTI33554440, name: "scrollPaddingInline", sons: null}, +{kind: 1, offset: "scrollPaddingInlineEnd", len: 0, typ: NTI33554440, name: "scrollPaddingInlineEnd", sons: null}, +{kind: 1, offset: "scrollPaddingInlineStart", len: 0, typ: NTI33554440, name: "scrollPaddingInlineStart", sons: null}, +{kind: 1, offset: "scrollPaddingLeft", len: 0, typ: NTI33554440, name: "scrollPaddingLeft", sons: null}, +{kind: 1, offset: "scrollPaddingRight", len: 0, typ: NTI33554440, name: "scrollPaddingRight", sons: null}, +{kind: 1, offset: "scrollPaddingTop", len: 0, typ: NTI33554440, name: "scrollPaddingTop", sons: null}, +{kind: 1, offset: "scrollSnapAlign", len: 0, typ: NTI33554440, name: "scrollSnapAlign", sons: null}, +{kind: 1, offset: "scrollSnapStop", len: 0, typ: NTI33554440, name: "scrollSnapStop", sons: null}, +{kind: 1, offset: "scrollSnapType", len: 0, typ: NTI33554440, name: "scrollSnapType", sons: null}, +{kind: 1, offset: "scrollbar3dLightColor", len: 0, typ: NTI33554440, name: "scrollbar3dLightColor", sons: null}, +{kind: 1, offset: "scrollbarArrowColor", len: 0, typ: NTI33554440, name: "scrollbarArrowColor", sons: null}, +{kind: 1, offset: "scrollbarBaseColor", len: 0, typ: NTI33554440, name: "scrollbarBaseColor", sons: null}, +{kind: 1, offset: "scrollbarColor", len: 0, typ: NTI33554440, name: "scrollbarColor", sons: null}, +{kind: 1, offset: "scrollbarDarkshadowColor", len: 0, typ: NTI33554440, name: "scrollbarDarkshadowColor", sons: null}, +{kind: 1, offset: "scrollbarFaceColor", len: 0, typ: NTI33554440, name: "scrollbarFaceColor", sons: null}, +{kind: 1, offset: "scrollbarHighlightColor", len: 0, typ: NTI33554440, name: "scrollbarHighlightColor", sons: null}, +{kind: 1, offset: "scrollbarShadowColor", len: 0, typ: NTI33554440, name: "scrollbarShadowColor", sons: null}, +{kind: 1, offset: "scrollbarTrackColor", len: 0, typ: NTI33554440, name: "scrollbarTrackColor", sons: null}, +{kind: 1, offset: "scrollbarWidth", len: 0, typ: NTI33554440, name: "scrollbarWidth", sons: null}, +{kind: 1, offset: "shapeImageThreshold", len: 0, typ: NTI33554440, name: "shapeImageThreshold", sons: null}, +{kind: 1, offset: "shapeMargin", len: 0, typ: NTI33554440, name: "shapeMargin", sons: null}, +{kind: 1, offset: "shapeOutside", len: 0, typ: NTI33554440, name: "shapeOutside", sons: null}, +{kind: 1, offset: "tabSize", len: 0, typ: NTI33554440, name: "tabSize", sons: null}, +{kind: 1, offset: "tableLayout", len: 0, typ: NTI33554440, name: "tableLayout", sons: null}, +{kind: 1, offset: "textAlign", len: 0, typ: NTI33554440, name: "textAlign", sons: null}, +{kind: 1, offset: "textAlignLast", len: 0, typ: NTI33554440, name: "textAlignLast", sons: null}, +{kind: 1, offset: "textCombineUpright", len: 0, typ: NTI33554440, name: "textCombineUpright", sons: null}, +{kind: 1, offset: "textDecoration", len: 0, typ: NTI33554440, name: "textDecoration", sons: null}, +{kind: 1, offset: "textDecorationColor", len: 0, typ: NTI33554440, name: "textDecorationColor", sons: null}, +{kind: 1, offset: "textDecorationLine", len: 0, typ: NTI33554440, name: "textDecorationLine", sons: null}, +{kind: 1, offset: "textDecorationSkipInk", len: 0, typ: NTI33554440, name: "textDecorationSkipInk", sons: null}, +{kind: 1, offset: "textDecorationStyle", len: 0, typ: NTI33554440, name: "textDecorationStyle", sons: null}, +{kind: 1, offset: "textDecorationThickness", len: 0, typ: NTI33554440, name: "textDecorationThickness", sons: null}, +{kind: 1, offset: "textEmphasis", len: 0, typ: NTI33554440, name: "textEmphasis", sons: null}, +{kind: 1, offset: "textEmphasisColor", len: 0, typ: NTI33554440, name: "textEmphasisColor", sons: null}, +{kind: 1, offset: "textEmphasisPosition", len: 0, typ: NTI33554440, name: "textEmphasisPosition", sons: null}, +{kind: 1, offset: "textEmphasisStyle", len: 0, typ: NTI33554440, name: "textEmphasisStyle", sons: null}, +{kind: 1, offset: "textIndent", len: 0, typ: NTI33554440, name: "textIndent", sons: null}, +{kind: 1, offset: "textJustify", len: 0, typ: NTI33554440, name: "textJustify", sons: null}, +{kind: 1, offset: "textOrientation", len: 0, typ: NTI33554440, name: "textOrientation", sons: null}, +{kind: 1, offset: "textOverflow", len: 0, typ: NTI33554440, name: "textOverflow", sons: null}, +{kind: 1, offset: "textRendering", len: 0, typ: NTI33554440, name: "textRendering", sons: null}, +{kind: 1, offset: "textShadow", len: 0, typ: NTI33554440, name: "textShadow", sons: null}, +{kind: 1, offset: "textTransform", len: 0, typ: NTI33554440, name: "textTransform", sons: null}, +{kind: 1, offset: "textUnderlineOffset", len: 0, typ: NTI33554440, name: "textUnderlineOffset", sons: null}, +{kind: 1, offset: "textUnderlinePosition", len: 0, typ: NTI33554440, name: "textUnderlinePosition", sons: null}, +{kind: 1, offset: "top", len: 0, typ: NTI33554440, name: "top", sons: null}, +{kind: 1, offset: "touchAction", len: 0, typ: NTI33554440, name: "touchAction", sons: null}, +{kind: 1, offset: "transform", len: 0, typ: NTI33554440, name: "transform", sons: null}, +{kind: 1, offset: "transformBox", len: 0, typ: NTI33554440, name: "transformBox", sons: null}, +{kind: 1, offset: "transformOrigin", len: 0, typ: NTI33554440, name: "transformOrigin", sons: null}, +{kind: 1, offset: "transformStyle", len: 0, typ: NTI33554440, name: "transformStyle", sons: null}, +{kind: 1, offset: "transition", len: 0, typ: NTI33554440, name: "transition", sons: null}, +{kind: 1, offset: "transitionDelay", len: 0, typ: NTI33554440, name: "transitionDelay", sons: null}, +{kind: 1, offset: "transitionDuration", len: 0, typ: NTI33554440, name: "transitionDuration", sons: null}, +{kind: 1, offset: "transitionProperty", len: 0, typ: NTI33554440, name: "transitionProperty", sons: null}, +{kind: 1, offset: "transitionTimingFunction", len: 0, typ: NTI33554440, name: "transitionTimingFunction", sons: null}, +{kind: 1, offset: "translate", len: 0, typ: NTI33554440, name: "translate", sons: null}, +{kind: 1, offset: "unicodeBidi", len: 0, typ: NTI33554440, name: "unicodeBidi", sons: null}, +{kind: 1, offset: "verticalAlign", len: 0, typ: NTI33554440, name: "verticalAlign", sons: null}, +{kind: 1, offset: "visibility", len: 0, typ: NTI33554440, name: "visibility", sons: null}, +{kind: 1, offset: "whiteSpace", len: 0, typ: NTI33554440, name: "whiteSpace", sons: null}, +{kind: 1, offset: "widows", len: 0, typ: NTI33554440, name: "widows", sons: null}, +{kind: 1, offset: "width", len: 0, typ: NTI33554440, name: "width", sons: null}, +{kind: 1, offset: "willChange", len: 0, typ: NTI33554440, name: "willChange", sons: null}, +{kind: 1, offset: "wordBreak", len: 0, typ: NTI33554440, name: "wordBreak", sons: null}, +{kind: 1, offset: "wordSpacing", len: 0, typ: NTI33554440, name: "wordSpacing", sons: null}, +{kind: 1, offset: "writingMode", len: 0, typ: NTI33554440, name: "writingMode", sons: null}, +{kind: 1, offset: "zIndex", len: 0, typ: NTI33554440, name: "zIndex", sons: null}]}; +NTI620757133.node = NNI620757133; +NTI620757133.base = NTI33555083; +NTI620757022.base = NTI620757133; +var NNI620757105 = {kind: 2, len: 22, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "attributes", len: 0, typ: NTI620757106, name: "attributes", sons: null}, +{kind: 1, offset: "childNodes", len: 0, typ: NTI620757107, name: "childNodes", sons: null}, +{kind: 1, offset: "children", len: 0, typ: NTI620757108, name: "children", sons: null}, +{kind: 1, offset: "data", len: 0, typ: NTI33554440, name: "data", sons: null}, +{kind: 1, offset: "firstChild", len: 0, typ: NTI620757008, name: "firstChild", sons: null}, +{kind: 1, offset: "lastChild", len: 0, typ: NTI620757008, name: "lastChild", sons: null}, +{kind: 1, offset: "nextSibling", len: 0, typ: NTI620757008, name: "nextSibling", sons: null}, +{kind: 1, offset: "nodeName", len: 0, typ: NTI33554440, name: "nodeName", sons: null}, +{kind: 1, offset: "nodeType", len: 0, typ: NTI620757007, name: "nodeType", sons: null}, +{kind: 1, offset: "nodeValue", len: 0, typ: NTI33554440, name: "nodeValue", sons: null}, +{kind: 1, offset: "parentNode", len: 0, typ: NTI620757008, name: "parentNode", sons: null}, +{kind: 1, offset: "content", len: 0, typ: NTI620757008, name: "content", sons: null}, +{kind: 1, offset: "previousSibling", len: 0, typ: NTI620757008, name: "previousSibling", sons: null}, +{kind: 1, offset: "ownerDocument", len: 0, typ: NTI620757009, name: "ownerDocument", sons: null}, +{kind: 1, offset: "innerHTML", len: 0, typ: NTI33554440, name: "innerHTML", sons: null}, +{kind: 1, offset: "outerHTML", len: 0, typ: NTI33554440, name: "outerHTML", sons: null}, +{kind: 1, offset: "innerText", len: 0, typ: NTI33554440, name: "innerText", sons: null}, +{kind: 1, offset: "textContent", len: 0, typ: NTI33554440, name: "textContent", sons: null}, +{kind: 1, offset: "style", len: 0, typ: NTI620757022, name: "style", sons: null}, +{kind: 1, offset: "baseURI", len: 0, typ: NTI33554440, name: "baseURI", sons: null}, +{kind: 1, offset: "parentElement", len: 0, typ: NTI620757010, name: "parentElement", sons: null}, +{kind: 1, offset: "isConnected", len: 0, typ: NTI33554466, name: "isConnected", sons: null}]}; +NTI620757105.node = NNI620757105; +var NNI620757060 = {kind: 2, len: 24, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "onabort", len: 0, typ: NTI620757061, name: "onabort", sons: null}, +{kind: 1, offset: "onblur", len: 0, typ: NTI620757062, name: "onblur", sons: null}, +{kind: 1, offset: "onchange", len: 0, typ: NTI620757063, name: "onchange", sons: null}, +{kind: 1, offset: "onclick", len: 0, typ: NTI620757064, name: "onclick", sons: null}, +{kind: 1, offset: "ondblclick", len: 0, typ: NTI620757065, name: "ondblclick", sons: null}, +{kind: 1, offset: "onerror", len: 0, typ: NTI620757066, name: "onerror", sons: null}, +{kind: 1, offset: "onfocus", len: 0, typ: NTI620757067, name: "onfocus", sons: null}, +{kind: 1, offset: "onkeydown", len: 0, typ: NTI620757068, name: "onkeydown", sons: null}, +{kind: 1, offset: "onkeypress", len: 0, typ: NTI620757069, name: "onkeypress", sons: null}, +{kind: 1, offset: "onkeyup", len: 0, typ: NTI620757070, name: "onkeyup", sons: null}, +{kind: 1, offset: "onload", len: 0, typ: NTI620757071, name: "onload", sons: null}, +{kind: 1, offset: "onmousedown", len: 0, typ: NTI620757072, name: "onmousedown", sons: null}, +{kind: 1, offset: "onmousemove", len: 0, typ: NTI620757073, name: "onmousemove", sons: null}, +{kind: 1, offset: "onmouseout", len: 0, typ: NTI620757074, name: "onmouseout", sons: null}, +{kind: 1, offset: "onmouseover", len: 0, typ: NTI620757075, name: "onmouseover", sons: null}, +{kind: 1, offset: "onmouseup", len: 0, typ: NTI620757076, name: "onmouseup", sons: null}, +{kind: 1, offset: "onreset", len: 0, typ: NTI620757077, name: "onreset", sons: null}, +{kind: 1, offset: "onselect", len: 0, typ: NTI620757078, name: "onselect", sons: null}, +{kind: 1, offset: "onstorage", len: 0, typ: NTI620757079, name: "onstorage", sons: null}, +{kind: 1, offset: "onsubmit", len: 0, typ: NTI620757080, name: "onsubmit", sons: null}, +{kind: 1, offset: "onunload", len: 0, typ: NTI620757081, name: "onunload", sons: null}, +{kind: 1, offset: "onloadstart", len: 0, typ: NTI620757082, name: "onloadstart", sons: null}, +{kind: 1, offset: "onprogress", len: 0, typ: NTI620757083, name: "onprogress", sons: null}, +{kind: 1, offset: "onloadend", len: 0, typ: NTI620757084, name: "onloadend", sons: null}]}; +NTI620757060.node = NNI620757060; +NTI620757060.base = NTI33555083; +NTI620757105.base = NTI620757060; +NTI620757008.base = NTI620757105; +NTI620757436.base = NTI620757008; +NTI486539801.base = NTI33554440; +var NNI637534222 = {kind: 2, len: 2, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "Field0", len: 0, typ: NTI33554456, name: "Field0", sons: null}, +{kind: 1, offset: "Field1", len: 0, typ: NTI33554466, name: "Field1", sons: null}]}; +NTI637534222.node = NNI637534222; + +function makeNimstrLit(c_33556801) { + var result = []; + for (var i = 0; i < c_33556801.length; ++i) { + result[i] = c_33556801.charCodeAt(i); + } + return result; + + + +} + +function toJSStr(s_33556807) { + var Temporary5; + + var result_33556808 = null; + + var res_33556842 = newSeq_33556825((s_33556807).length); + var i_33556843 = 0; + var j_33556844 = 0; + Label1: do { + Label2: while (true) { + if (!(i_33556843 < (s_33556807).length)) break Label2; + var c_33556845 = s_33556807[i_33556843]; + if ((c_33556845 < 128)) { + res_33556842[j_33556844] = String.fromCharCode(c_33556845); + i_33556843 += 1; + } + else { + var helper_33556857 = newSeq_33556825(0); + Label3: do { + Label4: while (true) { + if (!true) break Label4; + var code_33556858 = c_33556845.toString(16); + if ((((code_33556858) == null ? 0 : (code_33556858).length) == 1)) { + helper_33556857.push("%0");; + } + else { + helper_33556857.push("%");; + } + + helper_33556857.push(code_33556858);; + i_33556843 += 1; + if (((s_33556807).length <= i_33556843)) Temporary5 = true; else { Temporary5 = (s_33556807[i_33556843] < 128); } if (Temporary5) { + break Label3; + } + + c_33556845 = s_33556807[i_33556843]; + } + } while (false); +++excHandler; + try { + res_33556842[j_33556844] = decodeURIComponent(helper_33556857.join("")); +--excHandler; +} catch (EXCEPTION) { + var prevJSError = lastJSError; + lastJSError = EXCEPTION; + --excHandler; + res_33556842[j_33556844] = helper_33556857.join(""); + lastJSError = prevJSError; + } finally { + } + } + + j_33556844 += 1; + } + } while (false); + if (res_33556842.length < j_33556844) { for (var i = res_33556842.length ; i < j_33556844 ; ++i) res_33556842.push(null); } + else { res_33556842.length = j_33556844; }; + result_33556808 = res_33556842.join(""); + + return result_33556808; + +} + +function raiseException(e_33556667, ename_33556668) { + e_33556667.name = ename_33556668; + if ((excHandler == 0)) { + unhandledException(e_33556667); + } + + throw e_33556667; + + +} + +function addInt(a_33556940, b_33556941) { + var result = a_33556940 + b_33556941; + checkOverflowInt(result); + return result; + + + +} + +function mnewString(len_33556893) { + return new Array(len_33556893); + + + +} + +function chckRange(i_33557189, a_33557190, b_33557191) { + var Temporary1; + + var result_33557192 = 0; + + BeforeRet: do { + if (!(a_33557190 <= i_33557189)) Temporary1 = false; else { Temporary1 = (i_33557189 <= b_33557191); } if (Temporary1) { + result_33557192 = i_33557189; + break BeforeRet; + } + else { + raiseRangeError(); + } + + } while (false); + + return result_33557192; + +} + +function setConstr() { + var result = {}; + for (var i = 0; i < arguments.length; ++i) { + var x = arguments[i]; + if (typeof(x) == "object") { + for (var j = x[0]; j <= x[1]; ++j) { + result[j] = true; + } + } else { + result[x] = true; + } + } + return result; + + + +} +var ConstSet1 = setConstr(17, 16, 4, 18, 27, 19, 23, 22, 21); + +function nimCopy(dest_33557140, src_33557141, ti_33557142) { + var result_33557151 = null; + + switch (ti_33557142.kind) { + case 21: + case 22: + case 23: + case 5: + if (!(isFatPointer_33557131(ti_33557142))) { + result_33557151 = src_33557141; + } + else { + result_33557151 = [src_33557141[0], src_33557141[1]]; + } + + break; + case 19: + if (dest_33557140 === null || dest_33557140 === undefined) { + dest_33557140 = {}; + } + else { + for (var key in dest_33557140) { delete dest_33557140[key]; } + } + for (var key in src_33557141) { dest_33557140[key] = src_33557141[key]; } + result_33557151 = dest_33557140; + + break; + case 18: + case 17: + if (!((ti_33557142.base == null))) { + result_33557151 = nimCopy(dest_33557140, src_33557141, ti_33557142.base); + } + else { + if ((ti_33557142.kind == 17)) { + result_33557151 = (dest_33557140 === null || dest_33557140 === undefined) ? {m_type: ti_33557142} : dest_33557140; + } + else { + result_33557151 = (dest_33557140 === null || dest_33557140 === undefined) ? {} : dest_33557140; + } + } + nimCopyAux(result_33557151, src_33557141, ti_33557142.node); + break; + case 24: + case 4: + case 27: + case 16: + if (src_33557141 === null) { + result_33557151 = null; + } + else { + if (dest_33557140 === null || dest_33557140 === undefined || dest_33557140.length != src_33557141.length) { + dest_33557140 = new Array(src_33557141.length); + } + result_33557151 = dest_33557140; + for (var i = 0; i < src_33557141.length; ++i) { + result_33557151[i] = nimCopy(result_33557151[i], src_33557141[i], ti_33557142.base); + } + } + + break; + case 28: + if (src_33557141 !== null) { + result_33557151 = src_33557141.slice(0); + } + + break; + default: + result_33557151 = src_33557141; + break; + } + + return result_33557151; + +} + +function chckIndx(i_33557184, a_33557185, b_33557186) { + var Temporary1; + + var result_33557187 = 0; + + BeforeRet: do { + if (!(a_33557185 <= i_33557184)) Temporary1 = false; else { Temporary1 = (i_33557184 <= b_33557186); } if (Temporary1) { + result_33557187 = i_33557184; + break BeforeRet; + } + else { + raiseIndexError(i_33557184, a_33557185, b_33557186); + } + + } while (false); + + return result_33557187; + +} + +function subInt(a_33556944, b_33556945) { + var result = a_33556944 - b_33556945; + checkOverflowInt(result); + return result; + + + +} +var ConstSet2 = setConstr([65, 90]); +var ConstSet3 = setConstr(95, 32, 46); +var ConstSet4 = setConstr(95, 32, 46); + +function mulInt(a_33556948, b_33556949) { + var result = a_33556948 * b_33556949; + checkOverflowInt(result); + return result; + + + +} +var ConstSet5 = setConstr([97, 122]); +var ConstSet6 = setConstr([65, 90], [97, 122]); +var ConstSet7 = setConstr([97, 122]); +var ConstSet8 = setConstr([65, 90]); +var ConstSet9 = setConstr([65, 90], [97, 122]); + +function nimMax(a_33556998, b_33556999) { + var Temporary1; + + var result_33557000 = 0; + + BeforeRet: do { + if ((b_33556999 <= a_33556998)) { + Temporary1 = a_33556998; + } + else { + Temporary1 = b_33556999; + } + + result_33557000 = Temporary1; + break BeforeRet; + } while (false); + + return result_33557000; + +} + +function nimMin(a_33556994, b_33556995) { + var Temporary1; + + var result_33556996 = 0; + + BeforeRet: do { + if ((a_33556994 <= b_33556995)) { + Temporary1 = a_33556994; + } + else { + Temporary1 = b_33556995; + } + + result_33556996 = Temporary1; + break BeforeRet; + } while (false); + + return result_33556996; + +} + +function addChar(x_33557255, c_33557256) { + x_33557255.push(c_33557256); + + +} +if (!Math.trunc) { + Math.trunc = function(v) { + v = +v; + if (!isFinite(v)) return v; + return (v - v % 1) || (v < 0 ? -0 : v === 0 ? v : 0); + }; +} + +var alternative_486539858 = [null]; + +function add_33556419(x_33556420, x_33556420_Idx, y_33556421) { + if (x_33556420[x_33556420_Idx] === null) { x_33556420[x_33556420_Idx] = []; } + var off = x_33556420[x_33556420_Idx].length; + x_33556420[x_33556420_Idx].length += y_33556421.length; + for (var i = 0; i < y_33556421.length; ++i) { + x_33556420[x_33556420_Idx][off+i] = y_33556421.charCodeAt(i); + } + + + +} + +function newSeq_33556825(len_33556827) { + var result_33556828 = []; + + result_33556828 = new Array(len_33556827); for (var i = 0 ; i < len_33556827 ; ++i) { result_33556828[i] = null; } + return result_33556828; + +} + +function unhandledException(e_33556663) { + var buf_33556664 = [[]]; + if (!(((e_33556663.message).length == 0))) { + buf_33556664[0].push.apply(buf_33556664[0], makeNimstrLit("Error: unhandled exception: "));; + buf_33556664[0].push.apply(buf_33556664[0], e_33556663.message);; + } + else { + buf_33556664[0].push.apply(buf_33556664[0], makeNimstrLit("Error: unhandled exception"));; + } + + buf_33556664[0].push.apply(buf_33556664[0], makeNimstrLit(" ["));; + add_33556419(buf_33556664, 0, e_33556663.name); + buf_33556664[0].push.apply(buf_33556664[0], makeNimstrLit("]\x0A"));; + var cbuf_33556665 = toJSStr(buf_33556664[0]); + if (typeof(Error) !== "undefined") { + throw new Error(cbuf_33556665); + } + else { + throw cbuf_33556665; + } + + + +} + +function raiseOverflow() { + raiseException({message: makeNimstrLit("over- or underflow"), parent: null, m_type: NTI33555122, name: null, trace: [], up: null}, "OverflowDefect"); + + +} + +function checkOverflowInt(a_33556938) { + if (a_33556938 > 2147483647 || a_33556938 < -2147483648) raiseOverflow(); + + + +} + +function isWhitespace_486539572(text_486539573) { + return !/[^\s]/.test(text_486539573); + + + +} + +function isWhitespace_486539575(x_486539576) { + var Temporary1; + var Temporary2; + + var result_486539577 = false; + + if (!(x_486539576.nodeName == "#text")) Temporary2 = false; else { Temporary2 = isWhitespace_486539572(x_486539576.textContent); } if (Temporary2) Temporary1 = true; else { Temporary1 = (x_486539576.nodeName == "#comment"); } result_486539577 = Temporary1; + + return result_486539577; + +} + +function raiseRangeError() { + raiseException({message: makeNimstrLit("value out of range"), parent: null, m_type: NTI33555130, name: null, trace: [], up: null}, "RangeDefect"); + + +} + +function addChars_251658415(result_251658417, result_251658417_Idx, x_251658418, start_251658419, n_251658420) { + var old_251658421 = (result_251658417[result_251658417_Idx]).length; + (result_251658417[result_251658417_Idx].length = chckRange(addInt(old_251658421, n_251658420), 0, 2147483647)); + Label1: do { + var iHEX60gensym4_251658435 = 0; + var i_486539917 = 0; + Label2: do { + Label3: while (true) { + if (!(i_486539917 < n_251658420)) break Label3; + iHEX60gensym4_251658435 = i_486539917; + result_251658417[result_251658417_Idx][chckIndx(addInt(old_251658421, iHEX60gensym4_251658435), 0, (result_251658417[result_251658417_Idx]).length - 1)] = x_251658418.charCodeAt(chckIndx(addInt(start_251658419, iHEX60gensym4_251658435), 0, (x_251658418).length - 1)); + i_486539917 = addInt(i_486539917, 1); + } + } while (false); + } while (false); + + +} + +function addChars_251658411(result_251658413, result_251658413_Idx, x_251658414) { + addChars_251658415(result_251658413, result_251658413_Idx, x_251658414, 0, ((x_251658414) == null ? 0 : (x_251658414).length)); + + +} + +function addInt_251658436(result_251658437, result_251658437_Idx, x_251658438) { + addChars_251658411(result_251658437, result_251658437_Idx, ((x_251658438) + "")); + + +} + +function addInt_251658457(result_251658458, result_251658458_Idx, x_251658459) { + addInt_251658436(result_251658458, result_251658458_Idx, x_251658459); + + +} + +function HEX24_352321539(x_352321540) { + var result_352321541 = [[]]; + + addInt_251658457(result_352321541, 0, x_352321540); + + return result_352321541[0]; + +} + +function isFatPointer_33557131(ti_33557132) { + var result_33557133 = false; + + BeforeRet: do { + result_33557133 = !((ConstSet1[ti_33557132.base.kind] != undefined)); + break BeforeRet; + } while (false); + + return result_33557133; + +} + +function nimCopyAux(dest_33557144, src_33557145, n_33557146) { + switch (n_33557146.kind) { + case 0: + break; + case 1: + dest_33557144[n_33557146.offset] = nimCopy(dest_33557144[n_33557146.offset], src_33557145[n_33557146.offset], n_33557146.typ); + + break; + case 2: + for (var i = 0; i < n_33557146.sons.length; i++) { + nimCopyAux(dest_33557144, src_33557145, n_33557146.sons[i]); + } + + break; + case 3: + dest_33557144[n_33557146.offset] = nimCopy(dest_33557144[n_33557146.offset], src_33557145[n_33557146.offset], n_33557146.typ); + for (var i = 0; i < n_33557146.sons.length; ++i) { + nimCopyAux(dest_33557144, src_33557145, n_33557146.sons[i][1]); + } + + break; + } + + +} + +function raiseIndexError(i_33556754, a_33556755, b_33556756) { + var Temporary1; + + if ((b_33556756 < a_33556755)) { + Temporary1 = makeNimstrLit("index out of bounds, the container is empty"); + } + else { + Temporary1 = (makeNimstrLit("index ") || []).concat(HEX24_352321539(i_33556754) || [],makeNimstrLit(" not in ") || [],HEX24_352321539(a_33556755) || [],makeNimstrLit(" .. ") || [],HEX24_352321539(b_33556756) || []); + } + + raiseException({message: nimCopy(null, Temporary1, NTI33554439), parent: null, m_type: NTI33555128, name: null, trace: [], up: null}, "IndexDefect"); + + +} + +function toToc_486539578(x_486539579, father_486539580) { + var Temporary5; + var Temporary6; + var Temporary7; + var Temporary8; + var Temporary15; + + if ((x_486539579.nodeName == "UL")) { + var f_486539588 = {heading: null, kids: [], sortId: (father_486539580.kids).length, doSort: false}; + var i_486539589 = 0; + Label1: do { + Label2: while (true) { + if (!(i_486539589 < x_486539579.childNodes.length)) break Label2; + var nxt_486539590 = addInt(i_486539589, 1); + Label3: do { + Label4: while (true) { + if (!(nxt_486539590 < x_486539579.childNodes.length)) Temporary5 = false; else { Temporary5 = isWhitespace_486539575(x_486539579.childNodes[nxt_486539590]); } if (!Temporary5) break Label4; + nxt_486539590 = addInt(nxt_486539590, 1); + } + } while (false); + if (!(nxt_486539590 < x_486539579.childNodes.length)) Temporary8 = false; else { Temporary8 = (x_486539579.childNodes[i_486539589].nodeName == "LI"); } if (!Temporary8) Temporary7 = false; else { Temporary7 = (x_486539579.childNodes[i_486539589].childNodes.length == 1); } if (!Temporary7) Temporary6 = false; else { Temporary6 = (x_486539579.childNodes[nxt_486539590].nodeName == "UL"); } if (Temporary6) { + var e_486539602 = {heading: x_486539579.childNodes[i_486539589].childNodes[0], kids: [], sortId: (f_486539588.kids).length, doSort: false}; + var it_486539603 = x_486539579.childNodes[nxt_486539590]; + Label9: do { + var j_486539608 = 0; + var colontmp__486539896 = 0; + colontmp__486539896 = it_486539603.childNodes.length; + var i_486539897 = 0; + Label10: do { + Label11: while (true) { + if (!(i_486539897 < colontmp__486539896)) break Label11; + j_486539608 = i_486539897; + toToc_486539578(it_486539603.childNodes[j_486539608], e_486539602); + i_486539897 = addInt(i_486539897, 1); + } + } while (false); + } while (false); + f_486539588.kids.push(e_486539602);; + i_486539589 = addInt(nxt_486539590, 1); + } + else { + toToc_486539578(x_486539579.childNodes[i_486539589], f_486539588); + i_486539589 = addInt(i_486539589, 1); + } + + } + } while (false); + father_486539580.kids.push(f_486539588);; + } + else { + if (isWhitespace_486539575(x_486539579)) { + } + else { + if ((x_486539579.nodeName == "LI")) { + var idx_486539625 = []; + Label12: do { + var i_486539630 = 0; + var colontmp__486539900 = 0; + colontmp__486539900 = x_486539579.childNodes.length; + var i_486539901 = 0; + Label13: do { + Label14: while (true) { + if (!(i_486539901 < colontmp__486539900)) break Label14; + i_486539630 = i_486539901; + if (!(isWhitespace_486539575(x_486539579.childNodes[i_486539630]))) { + idx_486539625.push(i_486539630);; + } + + i_486539901 = addInt(i_486539901, 1); + } + } while (false); + } while (false); + if (!((idx_486539625).length == 2)) Temporary15 = false; else { Temporary15 = (x_486539579.childNodes[idx_486539625[chckIndx(1, 0, (idx_486539625).length - 1)]].nodeName == "UL"); } if (Temporary15) { + var e_486539646 = {heading: x_486539579.childNodes[idx_486539625[chckIndx(0, 0, (idx_486539625).length - 1)]], kids: [], sortId: (father_486539580.kids).length, doSort: false}; + var it_486539647 = x_486539579.childNodes[idx_486539625[chckIndx(1, 0, (idx_486539625).length - 1)]]; + Label16: do { + var j_486539652 = 0; + var colontmp__486539904 = 0; + colontmp__486539904 = it_486539647.childNodes.length; + var i_486539905 = 0; + Label17: do { + Label18: while (true) { + if (!(i_486539905 < colontmp__486539904)) break Label18; + j_486539652 = i_486539905; + toToc_486539578(it_486539647.childNodes[j_486539652], e_486539646); + i_486539905 = addInt(i_486539905, 1); + } + } while (false); + } while (false); + father_486539580.kids.push(e_486539646);; + } + else { + Label19: do { + var i_486539661 = 0; + var colontmp__486539908 = 0; + colontmp__486539908 = x_486539579.childNodes.length; + var i_486539909 = 0; + Label20: do { + Label21: while (true) { + if (!(i_486539909 < colontmp__486539908)) break Label21; + i_486539661 = i_486539909; + toToc_486539578(x_486539579.childNodes[i_486539661], father_486539580); + i_486539909 = addInt(i_486539909, 1); + } + } while (false); + } while (false); + } + + } + else { + father_486539580.kids.push({heading: x_486539579, kids: [], sortId: (father_486539580.kids).length, doSort: false});; + } + }} + + +} + +function extractItems_486539398(x_486539399, heading_486539400, items_486539401, items_486539401_Idx) { + var Temporary1; + + BeforeRet: do { + if ((x_486539399 == null)) { + break BeforeRet; + } + + if (!!((x_486539399.heading == null))) Temporary1 = false; else { Temporary1 = (x_486539399.heading.textContent == heading_486539400); } if (Temporary1) { + Label2: do { + var i_486539418 = 0; + var colontmp__486539920 = 0; + colontmp__486539920 = (x_486539399.kids).length; + var i_486539921 = 0; + Label3: do { + Label4: while (true) { + if (!(i_486539921 < colontmp__486539920)) break Label4; + i_486539418 = i_486539921; + items_486539401[items_486539401_Idx].push(x_486539399.kids[chckIndx(i_486539418, 0, (x_486539399.kids).length - 1)].heading);; + i_486539921 = addInt(i_486539921, 1); + } + } while (false); + } while (false); + } + else { + Label5: do { + var i_486539430 = 0; + var colontmp__486539924 = 0; + colontmp__486539924 = (x_486539399.kids).length; + var i_486539925 = 0; + Label6: do { + Label7: while (true) { + if (!(i_486539925 < colontmp__486539924)) break Label7; + i_486539430 = i_486539925; + var it_486539431 = x_486539399.kids[chckIndx(i_486539430, 0, (x_486539399.kids).length - 1)]; + extractItems_486539398(it_486539431, heading_486539400, items_486539401, items_486539401_Idx); + i_486539925 = addInt(i_486539925, 1); + } + } while (false); + } while (false); + } + + } while (false); + + +} + +function tree_486539271(tag_486539272, kids_486539273) { + var result_486539274 = null; + + result_486539274 = document.createElement(toJSStr(tag_486539272)); + Label1: do { + var k_486539287 = null; + var i_486539938 = 0; + Label2: do { + Label3: while (true) { + if (!(i_486539938 < (kids_486539273).length)) break Label3; + k_486539287 = kids_486539273[chckIndx(i_486539938, 0, (kids_486539273).length - 1)]; + result_486539274.appendChild(k_486539287); + i_486539938 = addInt(i_486539938, 1); + } + } while (false); + } while (false); + + return result_486539274; + +} + +function text_486539325(s_486539326) { + var result_486539327 = null; + + result_486539327 = document.createTextNode(s_486539326); + + return result_486539327; + +} + +function sysFatal_218103842(message_218103845) { + raiseException({message: nimCopy(null, message_218103845, NTI33554439), m_type: NTI33555124, parent: null, name: null, trace: [], up: null}, "AssertionDefect"); + + +} + +function raiseAssert_218103840(msg_218103841) { + sysFatal_218103842(msg_218103841); + + +} + +function failedAssertImpl_218103864(msg_218103865) { + raiseAssert_218103840(msg_218103865); + + +} + +function uncovered_486539727(x_486539728) { + var Temporary1; + var Temporary2; + + var result_486539729 = null; + + BeforeRet: do { + if (!((x_486539728.kids).length == 0)) Temporary1 = false; else { Temporary1 = !((x_486539728.heading == null)); } if (Temporary1) { + if (!(x_486539728.heading.hasOwnProperty('__karaxMarker__'))) { + Temporary2 = x_486539728; + } + else { + Temporary2 = null; + } + + result_486539729 = Temporary2; + break BeforeRet; + } + + result_486539729 = {heading: x_486539728.heading, kids: [], sortId: x_486539728.sortId, doSort: x_486539728.doSort}; + Label3: do { + var i_486539748 = 0; + var colontmp__486539945 = 0; + colontmp__486539945 = (x_486539728.kids).length; + var i_486539946 = 0; + Label4: do { + Label5: while (true) { + if (!(i_486539946 < colontmp__486539945)) break Label5; + i_486539748 = i_486539946; + var y_486539749 = uncovered_486539727(x_486539728.kids[chckIndx(i_486539748, 0, (x_486539728.kids).length - 1)]); + if (!((y_486539749 == null))) { + result_486539729.kids.push(y_486539749);; + } + + i_486539946 = addInt(i_486539946, 1); + } + } while (false); + } while (false); + if (((result_486539729.kids).length == 0)) { + result_486539729 = null; + } + + } while (false); + + return result_486539729; + +} + +function mergeTocs_486539761(orig_486539762, news_486539763) { + var result_486539764 = null; + + result_486539764 = uncovered_486539727(orig_486539762); + if ((result_486539764 == null)) { + result_486539764 = news_486539763; + } + else { + Label1: do { + var i_486539776 = 0; + var colontmp__486539941 = 0; + colontmp__486539941 = (news_486539763.kids).length; + var i_486539942 = 0; + Label2: do { + Label3: while (true) { + if (!(i_486539942 < colontmp__486539941)) break Label3; + i_486539776 = i_486539942; + result_486539764.kids.push(news_486539763.kids[chckIndx(i_486539776, 0, (news_486539763.kids).length - 1)]);; + i_486539942 = addInt(i_486539942, 1); + } + } while (false); + } while (false); + } + + + return result_486539764; + +} + +function buildToc_486539781(orig_486539782, types_486539783, procs_486539784) { + var Temporary7; + + var result_486539785 = null; + + var newStuff_486539790 = {heading: null, kids: [], doSort: true, sortId: 0}; + Label1: do { + var t_486539812 = null; + var i_486539933 = 0; + var L_486539934 = (types_486539783).length; + Label2: do { + Label3: while (true) { + if (!(i_486539933 < L_486539934)) break Label3; + t_486539812 = types_486539783[chckIndx(i_486539933, 0, (types_486539783).length - 1)]; + var c_486539817 = {heading: t_486539812.cloneNode(true), kids: [], doSort: true, sortId: 0}; + t_486539812.__karaxMarker__ = true; + Label4: do { + var p_486539821 = null; + var i_486539930 = 0; + var L_486539931 = (procs_486539784).length; + Label5: do { + Label6: while (true) { + if (!(i_486539930 < L_486539931)) break Label6; + p_486539821 = procs_486539784[chckIndx(i_486539930, 0, (procs_486539784).length - 1)]; + if (!(p_486539821.hasOwnProperty('__karaxMarker__'))) { + var xx_486539822 = p_486539821.parentNode.getElementsByClassName("attachedType"); + if (!((xx_486539822).length == 1)) Temporary7 = false; else { Temporary7 = (xx_486539822[chckIndx(0, 0, (xx_486539822).length - 1)].textContent == t_486539812.textContent); } if (Temporary7) { + var q_486539827 = tree_486539271(makeNimstrLit("A"), [text_486539325(p_486539821.title)]); + q_486539827.setAttribute("href", p_486539821.getAttribute("href")); + c_486539817.kids.push({heading: q_486539827, kids: [], sortId: 0, doSort: false});; + p_486539821.__karaxMarker__ = true; + } + + } + + i_486539930 = addInt(i_486539930, 1); + if (!(((procs_486539784).length == L_486539931))) { + failedAssertImpl_218103864(makeNimstrLit("iterators.nim(240, 11) `len(a) == L` the length of the seq changed while iterating over it")); + } + + } + } while (false); + } while (false); + newStuff_486539790.kids.push(c_486539817);; + i_486539933 = addInt(i_486539933, 1); + if (!(((types_486539783).length == L_486539934))) { + failedAssertImpl_218103864(makeNimstrLit("iterators.nim(240, 11) `len(a) == L` the length of the seq changed while iterating over it")); + } + + } + } while (false); + } while (false); + result_486539785 = mergeTocs_486539761(orig_486539782, newStuff_486539790); + + return result_486539785; + +} + +function add_486539315(parent_486539316, kid_486539317) { + var Temporary1; + var Temporary2; + + if (!(parent_486539316.nodeName == "TR")) Temporary1 = false; else { if ((kid_486539317.nodeName == "TD")) Temporary2 = true; else { Temporary2 = (kid_486539317.nodeName == "TH"); } Temporary1 = Temporary2; } if (Temporary1) { + var k_486539318 = document.createElement("TD"); + k_486539318.appendChild(kid_486539317); + parent_486539316.appendChild(k_486539318); + } + else { + parent_486539316.appendChild(kid_486539317); + } + + + +} + +function setClass_486539319(e_486539320, value_486539321) { + e_486539320.setAttribute("class", toJSStr(value_486539321)); + + +} + +function toHtml_486539441(x_486539442, isRoot_486539443) { + var Temporary1; + +function HEX3Aanonymous_486539461(a_486539462, b_486539463) { + var Temporary1; + + var result_486539464 = 0; + + BeforeRet: do { + if (!!((a_486539462.heading == null))) Temporary1 = false; else { Temporary1 = !((b_486539463.heading == null)); } if (Temporary1) { + var x_486539473 = a_486539462.heading.textContent; + var y_486539474 = b_486539463.heading.textContent; + if ((x_486539473 < y_486539474)) { + result_486539464 = -1; + break BeforeRet; + } + + if ((y_486539474 < x_486539473)) { + result_486539464 = 1; + break BeforeRet; + } + + result_486539464 = 0; + break BeforeRet; + } + else { + result_486539464 = subInt(a_486539462.sortId, b_486539463.sortId); + break BeforeRet; + } + + } while (false); + + return result_486539464; + + } + + var result_486539444 = null; + + BeforeRet: do { + if ((x_486539442 == null)) { + result_486539444 = null; + break BeforeRet; + } + + if (((x_486539442.kids).length == 0)) { + if ((x_486539442.heading == null)) { + result_486539444 = null; + break BeforeRet; + } + + result_486539444 = x_486539442.heading.cloneNode(true); + break BeforeRet; + } + + result_486539444 = tree_486539271(makeNimstrLit("DIV"), []); + if (!!((x_486539442.heading == null))) Temporary1 = false; else { Temporary1 = !(x_486539442.heading.hasOwnProperty('__karaxMarker__')); } if (Temporary1) { + add_486539315(result_486539444, x_486539442.heading.cloneNode(true)); + } + + var ul_486539460 = tree_486539271(makeNimstrLit("UL"), []); + if (isRoot_486539443) { + setClass_486539319(ul_486539460, makeNimstrLit("simple simple-toc")); + } + else { + setClass_486539319(ul_486539460, makeNimstrLit("simple")); + } + + if (x_486539442.doSort) { + x_486539442.kids.sort(HEX3Aanonymous_486539461); + } + + Label2: do { + var k_486539503 = null; + var i_486539950 = 0; + var L_486539951 = (x_486539442.kids).length; + Label3: do { + Label4: while (true) { + if (!(i_486539950 < L_486539951)) break Label4; + k_486539503 = x_486539442.kids[chckIndx(i_486539950, 0, (x_486539442.kids).length - 1)]; + var y_486539504 = toHtml_486539441(k_486539503, false); + if (!((y_486539504 == null))) { + add_486539315(ul_486539460, tree_486539271(makeNimstrLit("LI"), [y_486539504])); + } + + i_486539950 = addInt(i_486539950, 1); + if (!(((x_486539442.kids).length == L_486539951))) { + failedAssertImpl_218103864(makeNimstrLit("iterators.nim(240, 11) `len(a) == L` the length of the seq changed while iterating over it")); + } + + } + } while (false); + } while (false); + if (!((ul_486539460.childNodes.length == 0))) { + add_486539315(result_486539444, ul_486539460); + } + + if ((result_486539444.childNodes.length == 0)) { + result_486539444 = null; + } + + } while (false); + + return result_486539444; + +} + +function replaceById_486539330(id_486539331, newTree_486539332) { + var x_486539333 = document.getElementById(id_486539331); + x_486539333.parentNode.replaceChild(newTree_486539332, x_486539333); + newTree_486539332.id = id_486539331; + + +} + +function togglevis_486539859(d_486539860) { + if (d_486539860.style.display == 'none') + d_486539860.style.display = 'inline'; + else + d_486539860.style.display = 'none'; + + + +} + +function groupBy(value_486539862) { + var toc_486539863 = document.getElementById("toc-list"); + if ((alternative_486539858[0] == null)) { + var tt_486539871 = {heading: null, kids: [], sortId: 0, doSort: false}; + toToc_486539578(toc_486539863, tt_486539871); + tt_486539871 = tt_486539871.kids[chckIndx(0, 0, (tt_486539871.kids).length - 1)]; + var types_486539876 = [[]]; + var procs_486539881 = [[]]; + extractItems_486539398(tt_486539871, "Types", types_486539876, 0); + extractItems_486539398(tt_486539871, "Procs", procs_486539881, 0); + extractItems_486539398(tt_486539871, "Converters", procs_486539881, 0); + extractItems_486539398(tt_486539871, "Methods", procs_486539881, 0); + extractItems_486539398(tt_486539871, "Templates", procs_486539881, 0); + extractItems_486539398(tt_486539871, "Macros", procs_486539881, 0); + extractItems_486539398(tt_486539871, "Iterators", procs_486539881, 0); + var ntoc_486539882 = buildToc_486539781(tt_486539871, types_486539876[0], procs_486539881[0]); + var x_486539883 = toHtml_486539441(ntoc_486539882, true); + alternative_486539858[0] = tree_486539271(makeNimstrLit("DIV"), [x_486539883]); + } + + if ((value_486539862 == "type")) { + replaceById_486539330("tocRoot", alternative_486539858[0]); + } + else { + replaceById_486539330("tocRoot", tree_486539271(makeNimstrLit("DIV"), [])); + } + + togglevis_486539859(document.getElementById("toc-list")); + + +} +var db_486539953 = [[]]; +var contents_486539954 = [[]]; +var oldtoc_486540119 = [null]; +var timer_486540120 = [null]; + +function nsuToLowerAsciiChar(c_654311492) { + var result_654311493 = 0; + + if ((ConstSet2[c_654311492] != undefined)) { + result_654311493 = (c_654311492 ^ 32); + } + else { + result_654311493 = c_654311492; + } + + + return result_654311493; + +} + +function fuzzyMatch_637534224(pattern_637534225, str_637534226) { + var Temporary4; + var Temporary5; + var Temporary6; + var Temporary7; + var Temporary8; + + var result_637534229 = {Field0: 0, Field1: false}; + + var scoreState_637534230 = -100; + var headerMatched_637534231 = false; + var unmatchedLeadingCharCount_637534232 = 0; + var consecutiveMatchCount_637534233 = 0; + var strIndex_637534234 = 0; + var patIndex_637534235 = 0; + var score_637534236 = 0; + Label1: do { + Label2: while (true) { + if (!((strIndex_637534234 < ((str_637534226) == null ? 0 : (str_637534226).length)) && (patIndex_637534235 < ((pattern_637534225) == null ? 0 : (pattern_637534225).length)))) break Label2; + Label3: do { + var patternChar_637534239 = nsuToLowerAsciiChar(pattern_637534225.charCodeAt(chckIndx(patIndex_637534235, 0, (pattern_637534225).length - 1))); + var strChar_637534240 = nsuToLowerAsciiChar(str_637534226.charCodeAt(chckIndx(strIndex_637534234, 0, (str_637534226).length - 1))); + if ((ConstSet3[patternChar_637534239] != undefined)) { + patIndex_637534235 = addInt(patIndex_637534235, 1); + break Label3; + } + + if ((ConstSet4[strChar_637534240] != undefined)) { + strIndex_637534234 = addInt(strIndex_637534234, 1); + break Label3; + } + + if ((!(headerMatched_637534231) && (strChar_637534240 == 58))) { + headerMatched_637534231 = true; + scoreState_637534230 = -100; + score_637534236 = ((Math.floor((0.5 * score_637534236))) | 0); + patIndex_637534235 = 0; + strIndex_637534234 = addInt(strIndex_637534234, 1); + break Label3; + } + + if ((strChar_637534240 == patternChar_637534239)) { + switch (scoreState_637534230) { + case -100: + case 20: + scoreState_637534230 = 10; + break; + case 0: + scoreState_637534230 = 5; + score_637534236 = addInt(score_637534236, scoreState_637534230); + break; + case 10: + case 5: + consecutiveMatchCount_637534233 = addInt(consecutiveMatchCount_637534233, 1); + scoreState_637534230 = 5; + score_637534236 = addInt(score_637534236, mulInt(5, consecutiveMatchCount_637534233)); + if ((scoreState_637534230 == 10)) { + score_637534236 = addInt(score_637534236, 10); + } + + var onBoundary_637534292 = (patIndex_637534235 == ((pattern_637534225) == null ? -1 : (pattern_637534225).length - 1)); + if ((!(onBoundary_637534292) && (strIndex_637534234 < ((str_637534226) == null ? -1 : (str_637534226).length - 1)))) { + var nextPatternChar_637534293 = nsuToLowerAsciiChar(pattern_637534225.charCodeAt(chckIndx(addInt(patIndex_637534235, 1), 0, (pattern_637534225).length - 1))); + var nextStrChar_637534294 = nsuToLowerAsciiChar(str_637534226.charCodeAt(chckIndx(addInt(strIndex_637534234, 1), 0, (str_637534226).length - 1))); + if (!!((ConstSet5[nextStrChar_637534294] != undefined))) Temporary4 = false; else { Temporary4 = !((nextStrChar_637534294 == nextPatternChar_637534293)); } onBoundary_637534292 = Temporary4; + } + + if (onBoundary_637534292) { + scoreState_637534230 = 20; + score_637534236 = addInt(score_637534236, scoreState_637534230); + } + + break; + case -1: + case -3: + if (!((ConstSet6[str_637534226.charCodeAt(chckIndx(subInt(strIndex_637534234, 1), 0, (str_637534226).length - 1))] != undefined))) Temporary5 = true; else { if (!(ConstSet7[str_637534226.charCodeAt(chckIndx(subInt(strIndex_637534234, 1), 0, (str_637534226).length - 1))] != undefined)) Temporary6 = false; else { Temporary6 = (ConstSet8[str_637534226.charCodeAt(chckIndx(strIndex_637534234, 0, (str_637534226).length - 1))] != undefined); } Temporary5 = Temporary6; } var isLeadingChar_637534318 = Temporary5; + if (isLeadingChar_637534318) { + scoreState_637534230 = 10; + } + else { + scoreState_637534230 = 0; + score_637534236 = addInt(score_637534236, scoreState_637534230); + } + + break; + } + patIndex_637534235 = addInt(patIndex_637534235, 1); + } + else { + switch (scoreState_637534230) { + case -100: + scoreState_637534230 = -3; + score_637534236 = addInt(score_637534236, scoreState_637534230); + break; + case 5: + scoreState_637534230 = -1; + score_637534236 = addInt(score_637534236, scoreState_637534230); + consecutiveMatchCount_637534233 = 0; + break; + case -3: + if ((unmatchedLeadingCharCount_637534232 < 3)) { + scoreState_637534230 = -3; + score_637534236 = addInt(score_637534236, scoreState_637534230); + } + + unmatchedLeadingCharCount_637534232 = addInt(unmatchedLeadingCharCount_637534232, 1); + break; + default: + scoreState_637534230 = -1; + score_637534236 = addInt(score_637534236, scoreState_637534230); + break; + } + } + + strIndex_637534234 = addInt(strIndex_637534234, 1); + } while (false); + } + } while (false); + if (!(patIndex_637534235 == ((pattern_637534225) == null ? 0 : (pattern_637534225).length))) Temporary7 = false; else { if ((strIndex_637534234 == ((str_637534226) == null ? 0 : (str_637534226).length))) Temporary8 = true; else { Temporary8 = !((ConstSet9[str_637534226.charCodeAt(chckIndx(strIndex_637534234, 0, (str_637534226).length - 1))] != undefined)); } Temporary7 = Temporary8; } if (Temporary7) { + score_637534236 = addInt(score_637534236, 10); + } + + var colontmp__486540180 = nimMax(0, score_637534236); + var colontmp__486540181 = (0 < score_637534236); + result_637534229 = nimCopy(result_637534229, {Field0: colontmp__486540180, Field1: colontmp__486540181}, NTI637534222); + + return result_637534229; + +} + +function escapeCString_486539957(x_486539958, x_486539958_Idx) { + var s_486539959 = []; + Label1: do { + var c_486539960 = 0; + var iHEX60gensym6_486540184 = 0; + var nHEX60gensym6_486540185 = ((x_486539958[x_486539958_Idx]) == null ? 0 : (x_486539958[x_486539958_Idx]).length); + Label2: do { + Label3: while (true) { + if (!(iHEX60gensym6_486540184 < nHEX60gensym6_486540185)) break Label3; + c_486539960 = x_486539958[x_486539958_Idx].charCodeAt(chckIndx(iHEX60gensym6_486540184, 0, (x_486539958[x_486539958_Idx]).length - 1)); + switch (c_486539960) { + case 60: + s_486539959.push.apply(s_486539959, makeNimstrLit("<"));; + break; + case 62: + s_486539959.push.apply(s_486539959, makeNimstrLit(">"));; + break; + default: + addChar(s_486539959, c_486539960);; + break; + } + iHEX60gensym6_486540184 = addInt(iHEX60gensym6_486540184, 1); + } + } while (false); + } while (false); + x_486539958[x_486539958_Idx] = toJSStr(s_486539959); + + +} + +function text_486539322(s_486539323) { + var result_486539324 = null; + + result_486539324 = document.createTextNode(toJSStr(s_486539323)); + + return result_486539324; + +} + +function dosearch_486539961(value_486539962) { + +function HEX3Aanonymous_486540018(a_486540023, b_486540024) { + var result_486540029 = 0; + + result_486540029 = subInt(b_486540024["Field1"], a_486540023["Field1"]); + + return result_486540029; + + } + + var result_486539963 = null; + + if (((db_486539953[0]).length == 0)) { + var stuff_486539967 = null; + var request = new XMLHttpRequest(); + request.open("GET", "theindex.html", false); + request.send(null); + + var doc = document.implementation.createHTMLDocument("theindex"); + doc.documentElement.innerHTML = request.responseText; + + //parser=new DOMParser(); + //doc=parser.parseFromString("<html></html>", "text/html"); + + stuff_486539967 = doc.documentElement; + + db_486539953[0] = nimCopy(null, stuff_486539967.getElementsByClassName("reference"), NTI620757436); + contents_486539954[0] = nimCopy(null, [], NTI486539801); + Label1: do { + var ahref_486539992 = null; + var i_486540165 = 0; + var L_486540166 = (db_486539953[0]).length; + Label2: do { + Label3: while (true) { + if (!(i_486540165 < L_486540166)) break Label3; + ahref_486539992 = db_486539953[0][chckIndx(i_486540165, 0, (db_486539953[0]).length - 1)]; + contents_486539954[0].push(ahref_486539992.getAttribute("data-doc-search-tag"));; + i_486540165 = addInt(i_486540165, 1); + if (!(((db_486539953[0]).length == L_486540166))) { + failedAssertImpl_218103864(makeNimstrLit("iterators.nim(240, 11) `len(a) == L` the length of the seq changed while iterating over it")); + } + + } + } while (false); + } while (false); + } + + var ul_486539997 = tree_486539271(makeNimstrLit("UL"), []); + result_486539963 = tree_486539271(makeNimstrLit("DIV"), []); + setClass_486539319(result_486539963, makeNimstrLit("search_results")); + var matches_486540002 = []; + Label4: do { + var i_486540010 = 0; + var colontmp__486540170 = 0; + colontmp__486540170 = (db_486539953[0]).length; + var i_486540171 = 0; + Label5: do { + Label6: while (true) { + if (!(i_486540171 < colontmp__486540170)) break Label6; + i_486540010 = i_486540171; + Label7: do { + var c_486540011 = contents_486539954[0][chckIndx(i_486540010, 0, (contents_486539954[0]).length - 1)]; + if (((c_486540011 == "Examples") || (c_486540011 == "PEG construction"))) { + break Label7; + } + + var colontmp__486540177 = fuzzyMatch_637534224(value_486539962, c_486540011); + var score_486540012 = colontmp__486540177["Field0"]; + var matched_486540013 = colontmp__486540177["Field1"]; + if (matched_486540013) { + matches_486540002.push({Field0: db_486539953[0][chckIndx(i_486540010, 0, (db_486539953[0]).length - 1)], Field1: score_486540012});; + } + + } while (false); + i_486540171 = addInt(i_486540171, 1); + } + } while (false); + } while (false); + matches_486540002.sort(HEX3Aanonymous_486540018); + Label8: do { + var i_486540046 = 0; + var colontmp__486540174 = 0; + colontmp__486540174 = nimMin((matches_486540002).length, 29); + var i_486540175 = 0; + Label9: do { + Label10: while (true) { + if (!(i_486540175 < colontmp__486540174)) break Label10; + i_486540046 = i_486540175; + matches_486540002[chckIndx(i_486540046, 0, (matches_486540002).length - 1)]["Field0"].innerHTML = matches_486540002[chckIndx(i_486540046, 0, (matches_486540002).length - 1)]["Field0"].getAttribute("data-doc-search-tag"); + escapeCString_486539957(matches_486540002[chckIndx(i_486540046, 0, (matches_486540002).length - 1)]["Field0"], "innerHTML"); + add_486539315(ul_486539997, tree_486539271(makeNimstrLit("LI"), [matches_486540002[chckIndx(i_486540046, 0, (matches_486540002).length - 1)]["Field0"]])); + i_486540175 = addInt(i_486540175, 1); + } + } while (false); + } while (false); + if ((ul_486539997.childNodes.length == 0)) { + add_486539315(result_486539963, tree_486539271(makeNimstrLit("B"), [text_486539322(makeNimstrLit("no search results"))])); + } + else { + add_486539315(result_486539963, tree_486539271(makeNimstrLit("B"), [text_486539322(makeNimstrLit("search results"))])); + add_486539315(result_486539963, ul_486539997); + } + + + return result_486539963; + +} + +function search() { + +function wrapper_486540131() { + var elem_486540132 = document.getElementById("searchInput"); + var value_486540133 = elem_486540132.value; + if (!((((value_486540133) == null ? 0 : (value_486540133).length) == 0))) { + if ((oldtoc_486540119[0] == null)) { + oldtoc_486540119[0] = document.getElementById("tocRoot"); + } + + var results_486540137 = dosearch_486539961(value_486540133); + replaceById_486539330("tocRoot", results_486540137); + } + else { + if (!((oldtoc_486540119[0] == null))) { + replaceById_486539330("tocRoot", oldtoc_486540119[0]); + } + } + + + } + + if (!((timer_486540120[0] == null))) { + clearTimeout(timer_486540120[0]); + } + + timer_486540120[0] = setTimeout(wrapper_486540131, 400); + + +} diff --git a/index.html b/index.html new file mode 100644 index 00000000..5ba945bf --- /dev/null +++ b/index.html @@ -0,0 +1,9 @@ +<!DOCTYPE html> +<html> + <head> + <meta http-equiv="Refresh" content="0; url=regex.html" /> + </head> + <body> + <p>Please follow <a href="regex.html">this link</a>.</p> + </body> +</html> \ No newline at end of file diff --git a/nimdoc.out.css b/nimdoc.out.css new file mode 100644 index 00000000..4abea9ce --- /dev/null +++ b/nimdoc.out.css @@ -0,0 +1,1016 @@ +/* +Stylesheet for use with Docutils/rst2html. + +See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to +customize this style sheet. + +Modified from Chad Skeeters' rst2html-style +https://bitbucket.org/cskeeters/rst2html-style/ + +Modified by Boyd Greenfield and narimiran +*/ + +:root { + --primary-background: #fff; + --secondary-background: ghostwhite; + --third-background: #e8e8e8; + --info-background: #50c050; + --warning-background: #c0a000; + --error-background: #e04040; + --border: #dde; + --text: #222; + --anchor: #07b; + --anchor-focus: #607c9f; + --input-focus: #1fa0eb; + --strong: #3c3c3c; + --hint: #9A9A9A; + --nim-sprite-base64: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAN4AAAA9CAYAAADCt9ebAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFFmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDggNzkuMTY0MDM2LCAyMDE5LzA4LzEzLTAxOjA2OjU3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjEuMCAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDE5LTEyLTAzVDAxOjAzOjQ4KzAxOjAwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAxOS0xMi0wM1QwMjoyODo0MSswMTowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAxOS0xMi0wM1QwMjoyODo0MSswMTowMCIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozMzM0ZjAxYS0yMDExLWE1NGQtOTVjNy1iOTgxMDFlMDFhMmEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MzMzNGYwMWEtMjAxMS1hNTRkLTk1YzctYjk4MTAxZTAxYTJhIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6MzMzNGYwMWEtMjAxMS1hNTRkLTk1YzctYjk4MTAxZTAxYTJhIj4gPHhtcE1NOkhpc3Rvcnk+IDxyZGY6U2VxPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY3JlYXRlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDozMzM0ZjAxYS0yMDExLWE1NGQtOTVjNy1iOTgxMDFlMDFhMmEiIHN0RXZ0OndoZW49IjIwMTktMTItMDNUMDE6MDM6NDgrMDE6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCAyMS4wIChXaW5kb3dzKSIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4PsixkAAAJ5klEQVR4nO2dfbBUZR3HP3vvxVD0zo0ACXxBuQMoQjJ1DfMl0NIhNcuSZqQhfGt6UWtK06xJexkrmywVRTQlHCIdtclC0zBJvYIvvEUgZpc3XyC7RVbKlQu1/fHdbc+uu2fPOfs85+y55/nMnBl2z+5zfnc5v/M8z+8119XVRYroAG4HfgvMT1YUR4MMAa4HLkhakCRoSVqAELwLeBY4C7gF+D6QS1QiR1ROAJ4Dzk9akKQwoXhtwL4GxvHjU8AKoNPz3leAu4HBFq+bAyZZHD9rDAK+BywDDklYlkQxoXhfAtYAEw2MVckQYBHwU6or99nA08BBFq49GngUeBIYaWH8rNEJdAOXA60Jy5I4jSreSOBKYDzwBPCJhiUqcSjwe2BWnc9NLnxuvMFrnwqsAqYBBwBfNzh2FpmNfs9jkhakWcg1aFxZiH5UL3cDnwf+Xue7BwFjgFHAOwuv24tyob3cO0LIshP4EbCn8Pq/wKvA9sLxMvCvOmPsA1yDZnHv/nEv2mM+F0IeR4m8z7lM7tMbUbzj0CxX7YfbAXwaWFJ4PRrNIu9FS9KJyEIZN68CG4DnkRJtLBw7gHHAYuDdNb77EDAjBhkHIk7xKoiqeK3IwjilzuceQJvoZjdQ/AMZaeoZiWYgBXSEwyleBW0Rv3cR9ZUO4LSI48fN2wN+bi5wJNBvUZaBSCaVy48oxpVhwDdMC5ISxpJRh6/DLGEUrxXt29YBQ+2IkwquR76ofZIWxJFegireNLSnm48skFmmDfmiVgJHJyuKI620ADOpbWEcDPwYOZKD7OmyxCTkXL+wzueOiEEWR8poQb60V4A7kLm/yFjgKeALuM1xLfYDbkX+zEGe98cAX0Oui6viF8vR7OS6urragW2UZr21wK+Aiwlu7XPoN3sYOAd4H6WH1SnA0qSEcjQnRT/e1bgnsw16kGPez4/lyCBF48oNwL+TFGSAsgCndI4qFBVvJ0owdZhjL3CnxfHzBo8+YBMyol0CHBijrKbHS/LoA7Yio9sPgJNr/QHekLGR6MffL+KP4SjnHmQxtoXNmbQP+CHyV75hYDzTIWNpWkU8iR5mq71vVsZqXgtcFqNQ/wG2IOtfD8oi6AX+Ujj+isKz8sBrnu+1okyGdmD/wnEgcDClTIdRyJRvI1cvCMciq7At4rj5eoCPAusbHCfLigda/VyKgi+AtyreMGAzykGzQQ/wO+BxSlkCuy1dq8hw5OieUjimYT+x9bHCdWwS1823Ez1EXmhgjKwrXpHzkduuanbCtzGX+NkPPAj8GincNkPjNkIO5dadUjiOB95m+BonopQpm8R58/0JJbHWy2eshVM8sRvdbyurKV4Hmoka2WA/iwwLP6d+QmzSdKC92GzK/W9R+Q3woQbHCELcN991wJcjftcpXolngKm18vFmoVonYcgDv0Qz5pqGREuOTuA8lPYUZbndh0LJNpkUqgZx33xvomim7RG+6xSvnOm1gqQXoyiMoKxFs8VZpFfpQHvQK4HDUPnAsBa9bxGP0tUjF+IYCkxFew+/G3owdq20pgjzt3uPRscs/o43IaOhH2f4ZaAPRyZQP6vgbuCbyGext87F0sgIZFI/N8BnlwBnolovcWAjq/uzwM0+55cBJ0UYN84ZL+rfbnLMM4FfUDv7Z1XlCe8FetETbleNL7+CZrnvMjCVDuTOOA84Hf+96ga0PC8qXY50FQsuMg+41+d8p885R4n7gdt8zo+qvDkmUF4fZQXwEbS+99KDMhlWkw0eALqQglXyDDCdcovf+4lv5jPNXJ9zWc/FDMMdPudGVCreRlTWwVtWbynwYVQQCFSp61Q042WJLUjB1nneuw8tvXo97x1Lugvg+j1Mo9boySLVHtJFWqsthx5GlbSGeN5bigrHdqPl52Zj4qWLXvTQWY4KOX2ccgPMBLRcuy9+0YzhguXN4GuYq2Zc2R/NZg+hfYt3/9ZCepdQthmB4vIWIYOTbWyWzGt2Y0izG1fqjlltxnsdpbPMRMmd3lqTTumqMw7FZY5G5mSHw5dalreiRWYGWjbZ7gYUlFa0xOtIWA4vk1E6zWEoI+FvyYrjSAO1FG8DCmQGKd+DJFsGogWVVFiP/GWbga9Svg9NgtPQvnd04fUNCcriSBF+vqZ5nn9PQ+Xs4q401oI6EP0R+BkyXoAeAtcgBfwidnvkVaMVFTO6n1JoWTfqiONw1MVP8e6l3GVwOPJZXW5VItGGiuduAu5CZdOrMQJ1CHqpIFccS+LxaD/3Hcr7vF0Xw7UdAwQ/xduLGkJ6aUMhVAuwU006B3wM+ZLmozJ5QRhWkGs9yjKw1fhwDsq8eE/F+y+i1CeHIxD1wppupXrA5xyUOjQHMzU3cyjTeS2aaaN2Fzoc1bhch3xspuqBTkDulQVUz1q4mYEbNuewQD3FexGFS1VjOLoRHwOOinj9HAooXY2CSidHHKeSI5GFcRWNdSxqR7VH1iHHeTV24R+X53C8hSCBvPPqnD8B+AOygn6OYAm0ORSGthLl8B0d4DtRmIKsoMsJF1U/Hi1dt6DusIN8PrsIlUdwOAITpDFlC6q3MTbgmHm011qGepOvQSXPipyOCujW6rxqk0dRWYsVFe8PRSn5JxWOoEvdfOGzfnF5tnCRK+bGi33MoB1hL0U5d1H5J5oVD6A5mp8sQS6KSWh5e0jEcR4BPmhKqJA4xTM3XuxjBlW8DuRacDU3y0myNbNTPHPjxT5m0GTN15A/zVFiI+HKYzgc/ydMlrRfgmQWuYn0F91xJEQYxVuDnMcOrQAWJi2EI72ErQviwqLEQpQ+5XBEIqzi3YWLwF+BMiMcjshEqYR1Gdk1KmxBsaR9SQviSDdRFK8fxVU+YliWZmcbcq7vSFoQR/qJWvuxD0WgLDYoSzPzAqowtjVhORwDhEaKru4GPoliGgcyy4Hj0DLT4TBCo9WO88jQ8Bns97lLghvRTOfqqDiMYqrM+HyUYdBtaLykeRmlK12C9rQOh1FM1vd/HqUIzaT5e+LVoh/VxByHShs6HFaw0VjjHhTxP5d0LT+fRnu5q3HuAodlbHW02Q5cDByM+sw1642cRylCx6PeZiuTFScUFxK+f19QovaRS+t4tsasxhvABbZbSfUCV6CM7qtQl6Fm4E1U22UqcAYqvZ42fgJMxH6vdYc5nkBlSW6Pq4fbS6hb6jg0u9yGug7FyS5U1+UcVBbwbFSuMM1sQ1bXK4A9CcviqM0e9H80HdUxCpwIa4McygA/GfgAcCJqmGKKXUixupEv7nHsLc2agWNQ0d9OzC+PHNHIo1XeLCoe8kkqXiUtwKFoWXoEKqk3BpWLaC8cXsV8HT1J+tFTZKvn+DMqFZi1knvtyKg1O2lBHADcCVxEedNSAP4HJcsr0NNWHVUAAAAASUVORK5CYII="); + + --keyword: #5e8f60; + --identifier: #222; + --comment: #484a86; + --operator: #155da4; + --punctuation: black; + --other: black; + --escapeSequence: #c4891b; + --number: #252dbe; + --literal: #a4255b; + --program: #6060c0; + --option: #508000; + --raw-data: #a4255b; +} + +[data-theme="dark"] { + --primary-background: #171921; + --secondary-background: #1e202a; + --third-background: #2b2e3b; + --info-background: #008000; + --warning-background: #807000; + --error-background: #c03000; + --border: #0e1014; + --text: #fff; + --anchor: #8be9fd; + --anchor-focus: #8be9fd; + --input-focus: #8be9fd; + --strong: #bd93f9; + --hint: #7A7C85; + --nim-sprite-base64: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARMAAABMCAYAAABOBlMuAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFFmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDggNzkuMTY0MDM2LCAyMDE5LzA4LzEzLTAxOjA2OjU3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjEuMCAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDE5LTEyLTAzVDAxOjE4OjIyKzAxOjAwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAxOS0xMi0wM1QwMToyMDoxMCswMTowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAxOS0xMi0wM1QwMToyMDoxMCswMTowMCIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDplZGViMzU3MC1iNmZjLWQyNDQtYTExZi0yMjc5YmY4NDNhYTAiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6ZWRlYjM1NzAtYjZmYy1kMjQ0LWExMWYtMjI3OWJmODQzYWEwIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6ZWRlYjM1NzAtYjZmYy1kMjQ0LWExMWYtMjI3OWJmODQzYWEwIj4gPHhtcE1NOkhpc3Rvcnk+IDxyZGY6U2VxPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY3JlYXRlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDplZGViMzU3MC1iNmZjLWQyNDQtYTExZi0yMjc5YmY4NDNhYTAiIHN0RXZ0OndoZW49IjIwMTktMTItMDNUMDE6MTg6MjIrMDE6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCAyMS4wIChXaW5kb3dzKSIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4JZNR8AAAfG0lEQVR4nO2deViTZ7r/7yxkJaxJ2MK+GCBAMCwS1kgUFQSKK4XWWqsz1jpjp3b0tDP1V+eqU391fqfT/mpPPd20drTFDS0KFEVWJSGAEgLIZpAICBJACIRs549Rj1WILAkBfD/XlevySp68z/0S3+/7vPdzLyidTgcLkU2bd+z39/f/q1gshsrKSoJELFCa2iaEuU9K6kb+8uXxv54/fzE8L/eswNT2zCfQpjbAGKS8lPFKSEjIXiaTCSEhIeDj4xNnapsQ5j6rktZGp6UlfxIdzQVzCplmanvmG1hTG2BIAtlc26CgoDfT0tL2e3l5AQCAjY0NkMnk/a9s2k6rrKw8UV8n1JjYTIQ5RlAw14KzmL3xze1vfJyUuMJaq9UCFovFm9qu+YbBxcSPFUYkk8l2Q0NDsvo6ocrQx5+I8Ih4bz6f/0l8fHyKlZXV4/dRKBQwmcwwMpn8A4FAoPgHhH9bV1sxa488wZxoaycnJ/a9e/duCa5fkc3WvAiTI4Ib77p+XdqHG9anbfLy8gAAgLGxMdBpF+bjvzExqJj4scKI0dHRnwQHB++orq7+AgDeMuTxJ2Jl4rqU9PT0EwEBAUQCgTDuGAaDAampqYepVKpHUHDk325Ulw0a266YuFW+Gzdu/MDPz29jfn7+XgA4aOw5ESZP6kvpCXv3vnM8NiaSamVl+fj9BepGNDoGFRN7e/slcXFxO1xcXMDJyWnH7j//H/fi4uJdgutXmgw5z5O8smn7X9euXbvf29sbMBjMhONQKBRYWVlBbGzsbjMzM3JoOG+/sKKwy1h2rd/4elpGRsYuLy+vaDweD2w2Oy1h5ZrCvEunEaeeiVnMiabyl/F2/+X9P+8JDPQHHA5napMWBAYTk6DgSNuEhIS9DAYDAP7tq1i6dOkqOp3OWbNu0wens44emeoxA9lcWwKBYEMkEm2JRKIdHo+3QKFQWJ1Op8ZgMER3d/dVq1evTnFycpr0MSkUCsTExGzH4/Gk1LTME/39/TI0Go1FoVCg1WrVY2NjipGRkcGRkRH5dPwrEZHLXMPCwjJSUlIy3dzcfB+97+rqGhYSEpIOAIiYmBguN3zL77dt3uPh4W5qUxYUBhMTb2/vjeHh4cvR6P/dILK0tITIyEg7BweHr363/Z3Ampqaf1Zcu/zMKiVsyVJvMplsRyKR7IhEor2FhYUbhUJhJCYm2pFIJB6JRAIymQx4PB7QaDRoNBowMzMDJycnwOOn7icjEokQGxu7icFgbLp///7jFY1WqwWlUgkjIyOgUCgO7Ni5Rz48PCwfHh7uGRkZeaBQKOSjo6ODCoVCXlNVKn/6uCsT13FXrVr1emho6BYKhfLMnP7+/omrU9LPX8g+UThloxEMxqJFXjxESAyPQcSEExrLWLNmzW57e/txP/fw8ABHR8cdDAaDt3xF2ru9vb03sVgs0cbGxs/FxWVZUlISj0aj+dna2oKtrS1M5PcwJCgUCry8vODRrs84vPfoH6OjoyCXy6Gvr+/R6+CWrX9s7evrk/b19bWr1Wqli4sLZ8OGDe95eXmxUSjUuAd0cHDwjoqK2sYKXFIhvnldYYTTQpgU4/8+jyASCYDGoCd+ZkYYF8OICYezl8PhuOkbQyAQIDo62s/NzS2np6cHbGxsgEajAYFAAAwGA1gsFia6CE0NgUAABwcHsLe3B61WC2q1eo9WqwWNRgNKpRLUajUQiUSgUCh6zwGHwwGTydzo5+eXBQBnZu8MEJ5keHhYPqyYWMtHR0ZBpVIhYj9FUDONgOUvT12+du3avMDAQJjssdRqNWCxCyrEZdLodDoQi8Ulx44de628NL/V1Pa8iERE8l2dHB2CJvpcq9Nqbt1qKURWj1Njxld0ZGTkAW9v70kLCQC8sEIC8O/HKx8fn2gmk8kHgCk7pRFmzrWyAikASE1tx0Jj2uH0EZHL/N7YtuvT4OBgzmz4OBYSeDweIiMjt2S++vtMP1YYEmmJsCCY8mNOIJtr6+zsHBcZGXmIw+G4mZubG8m0hU9HRwcUFxe/KxQKTyDRsQjznSmJCS9+dVRERMTfQ0NDo2xtbfUGiSFMjtHRUaitrc3Jzc09kHvxVLmp7UFAmC6oZQkvrZLL5RJhReHtiQb5scKIXC7371FRUX90dnYGIpE4JR8Jgn40Gg20t7fXFxYWfnr9+vWjz8sdYi+Osh4vzgUBwZSgtu94V+fs7Hx7YGCgra6u7khLS0u2RCwYeTQgKmYFh8fj/f/g4OAldnZ2prR1wdPd3Q1CofBQSUnJkdLi3N8E93FCY6k+Pj48FxcXjlar1ZSWlh65VvYr4kREmDNg79+/D3FxcW5OTk5uXl5evNbW1tL0jK3ZXV1d1ykUintycvInoaGhdkj+gvGxs7MDPp+/m0AgWMQvS/lyeHhYTqPRPJycnIJSU1NZ3t7eW2g0Gly/fv2oWq1Gij0hzClQ/gHhpLS0tEM8Hm/7I8Ho7++HlpYWsLa2Bg8PDxOb+OKhUCigqakJ7t+/D25ubuDu7g4oFAp0Oh08ePAAvv7666TTWUdzTG0nAsKTYMU3ryuSU18+4+bmFrZo0SIOAICVlRUsXrx4zkakLnRIJBI8CgJ8MtdJp9NBZ2enqL29XWRC8xAQxgUNAHD+3L8KGhoaCp78ABES04JCoX4jJAAAAwMDUFtbe96YpRMQEKbL41DU5ubmko6Ojj2PSgggzD36+/vrb9y4cX425zzw93/8EBjon2is44+NjSkePBjqGRwc7G5v7xBV19w8U5B/3qgrr9+/uWtXUuKKD/TZ9MXh/066/OuFmunO8dGBQ98HBbGSp/t9U6LRaDXK0dHBoeFhuVzeL22/0yFqamopufjLqRJ933ssJi0tLSXV1dWHGAzGbuObOzs8ubqa71vZKpUKOjo6blwpOF8zm/Mu5cVkLlkSaswprAHAaVihgK7O7oSGxltvfXLon3nXK4RHT2cdN4pfKDCAlZyUuMJan02nTmczAaBmunPw4qI3cbnh0/36XICq0+lgcPABp7OrK629vUP5z8++LLh2XXD05L++yxrvC4/F5EZ12WBS8saLS5Ys2U2lUufUY45SqQSlUgkqlQrUavXj19jYGGg0GtBoNKDT6UCn05VotVq1TqfToFAojFar1eh0Og0Wi8XhcDgeGo1+/PhgZmYGOBwOsFgsmJmZ/eY1F+nt7YXa2trs2Z73wdCQBgCMHp1IJpHA09MdPD3dLRIS+OtKisvWvbP7vf2lZdePVFwzbHTwyMiI3hidkZFRUKvUYzOZ48HQkBIA5nWqBAqFAktLC7C0tADmIh88Pz4uMSyUk7hn776DV4tKPn/6d/lNxp1MJqsRCASf8vn8XdMpOjRTVCoVjI2NgUqlAq1WCyMjI9DX1wf379+Hvr6+/Q8ePOgdGRmRKxSKx0WLFAqFXKlUKnQ6nUar1arHq47mxwrD4/F4Eg6HI2GxWDwej7cgkUjWFAqFam5uTjU3N6eRyeQPLSwswNraGqysrIBAIDwWFywW+zja11Qi29LSclIikeSZZPJZBovBAI8XA8HBQR9kZZ3lR8cmvFZSlGe00p8IkwONRkNERBj4+i7a4+XpHv307/IbMakWlciXJbx0nMPh7Jqo0JGh0el0MDo6Cl1dXSCVSkEmk7177969W319fe1DQ0M9KpVKoVarlWq1WjndNhUPG3ApAWDcOxLTLwSDwWAOotFoDBaLxRMIBAsrKysne3t7Xzqd7k2n0/c4OzsDlUoFHA4364IyMDAATU1NxdWikhcq6tXKyhJezljPJZKI2eERS5cZeoWCMD2srCwhPX0tVzk2djiCG//GtfLLUoBxShB0dHTU3Lx580sLC4vtJBLJKMZoNBqQSqUglUqPdnR01PT09DT19/fLHjx40DM0NNQ72933GiSVGgB4JFQK+LfoSAGgnL04yppEIh2xtLS0t7GxcaFSqR7Ozs4fMRgMcHR0nJX8pJs3b54Ui8UXjT7RHIRMIkFK8irfwcEHPwQELUmqvYHUGJkLmJubw8YNa/i9vfffY/px3myQiDTPiEl9nVDDX576jaenZ7SnpyfLUJNrNBqQyWRw+/bt4x0dHTdkMlltV1dXw/XygjkdEv4wB0YOAK0AUM70C8HQ6fSzdDrdm0qlejg6OrLc3Ny2MBiMadWjfR4PHjyAmzdvZs/1v5MxoVAokJK8iicWS95k+nH+s0EiQhqpzQGoVFtYk5a87ba0XQAA34xbpagg/5zoT7s/OGNnZ8eaaYkBuVwOnZ2d5VKpVNTS0lLS2NhYWFVZ3Dujg5qQh6uY+ocvCAiKIPn4+Jz19PSMdnV15VCpVL6Dg4NBViw6nQ5EItHRpqamqzM+2DzHzo4O69amftLQeKsAZrDLgmBY/PyYsCIhfs+SiKUFE5Y8EwqFx11cXDihoaFTjjFAoVAwPDwMHR0dourq6jNCofDHhZqUVnvjmgIAcgAgJyg40mLRokX8kJCQjT4+PussLS1n1JPl7t27UFxcfHguB6mNjY2B7G4naNRTWyygUCjAYDGAx+PB0sICSCSi3vFYLBbCwjjA8vddBQtATKb7d3saBwc7IJPJBpsHjUGDGRYLJBIJLK0sAfucmyIGg4FFi3y8AwNZtycUk5KiS02vvf7WWQaDkejg4DApQwAeh3xDaWnpPoFAcPxFqnP6sEvgGf+A8Bx3d/cvIyIiNi1evHjT8wpNj8fAwACUlZW9P9dD5+/ckcFbf9gd2dcnn9LNAovF4inmZHtXNxdOdBR3+/JlS33pdP29wolEInA4weuiYxOy5vvuTkeHDHb+8c8xvb33Z3R9/N+Df+uIjYk02DwkEsna2trS1d/fNyGeF7uTyw1/7g3R3t4O2OxA/TVghULhcQqFQk1JSfmYSNR/5wD4d6EfgUBwvLS09IhUKhW9qAV5H9YjKQwJi6uvrKw8ERoamhkSEpKp7w7yJEqlEiQSyZmysrJv53qjdaVSCZdyTk+3qFMrAJRHRPLPN95qeifj5fU7mYt8JhyMRqMhMJDFdnF25gDAvBYTpXIMWlpay2fq/8m5mDcIABYGnEcGAGI/VlhBZWX1yZdSkz55OX0dV5+7w9bGGvz8mPrFpK62QskJjf2GTqd7x8bGbpnID4BCoUAmk0lLSkqOiESik2UleS/MakQflYKrXQDQxY1a3tTe3i6KiIjY5OXlxX7e9+rr6wsuXbr0t4ffn9OgMWjghMZQRcLp+8GulRVI/QPC37Wxtnal0ajJtjY2E451ZjiBra31vE9lR2PQQKFQaAAwo98Yi8Xq9fpPd56HO6rlvKWJv/PwcK+JilyCmajWMw6HAzs7+rMFpQOCIn6zHywSFvXm5eUdFAqFZ9Rq9bgHa2trq79w4cK+zz49cAARkmcpL81v/a/Dhz49d+7c3qqqqjyVSjXuOJ1OBxKJpDw3N/fA5V+zax6978cKw/sHhM/raMrnUVdboSy4fPWQSFSjd5yFBQWIRNKEd2IEw1J4JUd88WL+R51d3XrHWVDMnxUTa2tr1zXrNiUGsrmPf7DS4tymCxcu7Kuurs55+kKQSqVN586d23vs+8NHDXUCC5Wzp3/Iy8rKeruysvLM2Nhvo7VVKhXU1tYWnj17du/T7UOdnZ2D7OzsfGGB09raVi4S1RzXl0eFw+EAj8chYjKLVFffyOrq1C8mJBLpWTFRKBRyDofzC4vFWvXk+1ev/CLOzs7eKxAIslQqFeh0Oujp6enKzs7em/XTd7OayTqfKb56sT4rK+sPAoHg5KO/o0KhAKFQmHXy5MkdF3/5+TeZmctXpIXZ29v7zqVcKWNRX1epuXu3U/y8pEw0GmndOZt0dnXVDw0P6/W5oNHoZ30mQ0NDPb29vfvj4+Pf3rR5B/7od188XnEUXr4gDgmL+0NfX5/U19d3d3l5+YGfTnyDtLmcIhXXLsu4UcvfR6PRGGtra9eysrIjYrE45+kt4Fheou/69es/unnz5vm7d+/Wmsre2WRkZGTQ1DYg/JYGiUiTm1ugBAC9IfHPiEmDpFITE7fqJI/H27lmzZpDq5LWtz55t6wUXO3ihMYerK+vz2tpaUFaM0yT8tL81ujYle+TSCTrvEunBU9/voTLd92wYcPHVCqV39XVdXCu7+oYCp1O90Kc50Jk3I5+xVcv1jc3N5d4enpSMzIyvkpK3sh78nORsKg3++yPBS/q1q+hKCm61DSekERGJ3ikp6d/ERsbm1xVVXWwtbX1hRFtFAqFPMLMUyZsDyoQCI7LZDKIiIjwzczM/GpV0vro2TTsRSUqZoX3+vXrP1u9enXi0NAQiESirIdRtggIc5oJ40zq6uryGhoa8ry8vBJCQ0O9USjU94mrN7yWc+EnvaXb5gJMvxCMp6cnl0Kh2Le1tZVXXLs8L1LXefGrWRkZGZ/x+XyeUqkEkUh0vqenZ14HZyG8OEwoJjdrygd37NxTEBkZmWBtbQ3BwcEeKBTq+/UbX3/355Pfzlmn66qk9dGbN29+k8PhbCSRSNDZ2Snb9ae/HCkpKTksEhbN2QTD5NSX+Vu3bj0cHBzsjcFg4O7du1BWVvbNwxB9BIQ5j94I2Fu3bhXW19cDl8sFLBYLHA7Hg0wmf/e77e84ffXlPz6fLSMnQ2paZkJ4eHjmtm3b+B4eHvZkMhlQKBTY29s72dvbfxgUFJT8x7ffP1NRUfHjXErnZ/qFYKKjo7dt3rz5g8DAQPtH/XHa2tpqGhsbC55/BASEuYFeMblz505NTU3NgfDw8PcwGAygUCjw9fW1IJPJn/1130Hv0tLSI4WXL4hny9inYS+Osvbz80tgMpn8jIwMPovFch2vpoiDgwM4ODhwfH19OYsWLeJv3/Hu+cbGxquzXZz5aZYlvMRJT0/fFhkZue3JZmfd3d0gEolOIr4ShPmEXjFpkFRqXlrzSnFnZ+d7Tk5OjzNfXVxcICMjY6ezszNnVdL6vU8HWhmbgKAIkrOzMyc1NTXz0YU4maAuOp0OK1as4EVFRfGEQqHg1dfePHzr1q2rs71S8WOF4f38/BLS09M/iIyM5DxdxLq5uVlcVVU1bgVwBIS5il4xAQCQyWRigUBwJikpKe3JVGQcDgdLly7l2tranti0ecf7IpEoy9hbxX6sMDydTvdevXr1ltjY2F3u7u6AxT73FJ7B3Nwc4uLiwthsdphQKCzZkL7l0/r6+oKbNeVG90+EhMXZL1++fFtycvKHrq6uz4igUqmE5ubmEiTHCWG+8dwrUXD9imz9xtd/jIuLS7N5KpsTjUZDUFCQE4PB+F4oFGYmJW888Mv5k4UTHGpGxC9LYaenp78VEhKyxdHRESgUyoyOh0KhwNraGuLi4qIDAgKi6+rqyjekb/mHMSN6N6RvSdu+ffseNpsdZm09ftuW+vp6EIvFSB9hhHnHpG7rUqm0orW1tdXS0tLj6TIEaDQaaDQaxMfH811dXTl/3Xfw+JUrVz411J01cfWG6IiIiC07d+5McHNzs7ewMGyOFw6HAwcHB6BSqVx3d/fwz7/4rkAgEBwXCoUnHpZonDGrU9J5MTEx27du3Zrm4uKC0beaqq6u/ry+vj7XEPMiIMwmkxKTimuXZe/u+fCkp6fnexPdUfF4PPj7+1szGIydLi4unF1/+kvenTt3RG1tbRXTqfma8lIG39/fP/HVV19NZrFYHpMpzjQTzMzMwNPTE+Pp6Zng6emZ4Ofnl5CesfV8bW1tznQe3/wDwvFeXl7Rvr6+Ca+88kpaUFCQh74GXzqdDrq7u6GpqankRQmdR1hYTNrhUFVVlcXj8d6ysrKy0OfstLS0hPj4eC6Xy+U2NzeDRCI5/sa2XeX37t1rGhwc7BoYGJBN1P+FFbiE5OzszGaxWImvvvrqpoCAAKfp+ERmCpPJBCaTmcnhcDJLS0u/TE59+YxUKhXoi/lg+oVgrKysGJaWlna2trYeaWlpXDabvTMgIGDSfp2KiorzbW1tL0zoPMLCYtJX6uVfs2u++PKowMPDgz+ZIslEIhECAgKAxWJlajSazJ6eHmhra4PW1tZvtmz9o6Czs7O+r6+vfWxsbFir1WosLCzsV6xYkcnj8d7z9vaelmPV0Hh5eYGnp+f2mJiY7UVFRZ/HL0v5tru7+5ZGo1FisVg8Docj4fF4CxsbG1c+nx/m7e39sYeHB7i4uIC5ufmU6r4ODQ1BZWXlifkSrYuA8DRTumIrKytPent78728vCb9HRQKBVgsFhwcHIBOpwObzd4yNja2RaVSwdDQEHR1dcHo6CjQaDRwdXWdsWPV0KBQKPDw8AA7O7udERERO2tra2FgYACoVCo4OTkBjUYDMpkMeDz+8WuqaLVaaGxsbL19+/YzSX8ICPOFqYrJidDQ0AwvLy/e80c/CwaDARKJBI86BdJoNHB3dwe1Wj0nViL6IJPJwGQywdnZGZRKJRAIBDBUx8OBgQEoLS39BtkORpjPTJg1PB61N64pmpqarvb39xvUiLkuJE9CJpPBxsbGYEICANDZ2SlHgtQQ5jtTEhMAgLq6ulyJRFJvDGNeREZGRkAikRSUFuci2cEI85opi0l+7hmBWCzOeV6dToTJcfv27cHr168jxbgR5j1TFhMAgObm5hKZDNl0MAQtLS3Xzpw6hkS8Isx7piUmUqlUIBAIJuyjgzA5Ojs7QSKRINGuCAuCaYmJsKKw68qVK59KJJIu5HFneiiVSigqKjouEolOmtoWBARDMC0xAQC4+MvPJadOnXq3ra1N8yL0dDEkOp0OSktLy/Pz8w8+3d4CAWG+Mm0xAQA4fuy/jl+8ePGju3fvGsqeBY9Wq4XKysrWU6dOvX31yi8mKyyFgGBoZiQmAAD/79D+fadPn96PCMrz0el0UFVV1frtt9+mj9fiAgFhPjNjMQEAyMvLO3Ds2LE/tLS0INmuerh27Vr9999//xoiJAgLEYOEntbVVigB4PNNm3cMpqSkfMRms50McdyFgkqlgqKiovJTp069nZ97BhEShAWJQePYj373xdF1GzbLFQrFx6Ghob766ne8KNy7dw+KiopO5ubmfmTK4tsICMbG4EkxWT99d35l4rre/v7+D0NCQvh0Ot3QU8wL1Go1SKVSTX5+/sH8/PyDSP8bhIWOUTLsLuVklQcFR65pbGzcvnLlyvfc3NwsCASCMaaac+h0OhgaGoLq6uqaCxcu/OV01tGcTw7uM7VZCAhGx2jpug/vxAd58atzoqKitq1cuXKnvb29saabE+h0Oqiurpbm5eUdrK6uPlspuDrvY0hmO4YIhUIBGq1/X2CmNqFQKL3/79HomZ/z82xEowyy9zFr80zGDqPn/hdeviBmL47ad+fOnRsRERGbQkNDo62srIw97azT2dkJxcXFx0tKSo7Mdh8hY4LD4TDPH2U4MFjMc6tLmZmZzaj+Aw6H0/t9PB4PGCxmRudNJBL0ngeZTAI0Gj3jv+1szfM88Hic8cUEAKCmqlQOAN/ELU2qkEgkySwWK3HRokVcBoMxG9MbDZ1OB83NzdDU1FRQW1t7XiAQHJ+ovu18pbr6Rg6L5ZtoM0EhcUPT0tJW8tWRb0vQqIkvgKqqmhnVfrl2TfANXo+gjKlUio4OWc1M5sjOzjnQUH8rbqLPu3t6moaGhmfc+3q25tGHUqmECoEIUKbIrVkcEkONiIh4jcvlvu7s7OxLo9GmVe7QVCgUCujq6oKGhoaCioqKo9XV1WeM3YDMVPDik1gpyas+XrVyeaKXl8czjyANjbcgI/MNmkg49Q4ECPOH3NyC4RUr+M8IcHt7B1y9WlKRl3/5kElKnD1sfXEoJCzueEBAQGJYWFgGk8nk2djYAIFAgLm4pTw6Ogqjo6Mgl8vhxo0b50tLS4/U19fnLvS2FIWXfxEDQNLmLW9ueW1TxtchHDaQyWRTm4VgYkZHR6G+vhF+/NfP+y5e+vVjiVgwZpKVydOwF0dZW1lZOTGZTD6bzU4LCAiIptPp8HTDL1MwOjoKLS0tUFdXd1IsFudIpdKKgYGB7tloJTrX4MUnsVJTEj9etzY10dHRAQAAGm81wcsZW5CVyQInL69gNCGBjwcAGBx8ANnncypOnTr3H9nn/reD55wovvrQpyIHAHFUzIocGo3mQaPRfBwdHVlubm7bXF1dgcFgABqNNvruglwuh7t374JMJoOOjo7P79y5I+ru7m7q7e1tXQi7MzOh8PIv4pCw2DdaWtte37Au7aPIyCWAxWABjUbPif9HCMbjURtKiaQBfvr5zH9evlJ0uLQ4r/nJMXNiZTIRrMAlJAcHB18HBweWo6Mjy8rKajeJRAJLS0uwtLQECwsLoFAogMfjAYvFgpmZ2XNXMyqVCoaHh2FoaAiGh4cfvwYGBqCvrw+6u7vfvnfvXlNvb29rT09Pq0QsUM7S6c4rNqS/lrZ5U+YPRBKR9M7u9xwqBUUvtNAudH766XSLE8PR49ixE78/8tVnX403Zk7fUR46NUUAIPIPCMdTKJTdNjY2QKPRgE6nA51OB1tbWyCRSIDD4YBAIAAejwcCgfDYUajVakGlUoFarQadTvfY79HX1wf9/f0gl8tBLpfDvXv3HvXw+dxQPYYXMj+d+P7Mmzv+5OHr6/OJWq1GBHeB09TcUiKuq/coKS3/eqIx/wPkiIXC3w6YjAAAAABJRU5ErkJggg=="); + + --keyword: #ff79c6; + --identifier: #f8f8f2; + --comment: #6272a4; + --operator: #ff79c6; + --punctuation: #f8f8f2; + --other: #f8f8f2; + --escapeSequence: #bd93f9; + --number: #bd93f9; + --literal: #f1fa8c; + --program: #9090c0; + --option: #90b010; + --raw-data: #8be9fd; +} + +.theme-switch-wrapper { + display: flex; + align-items: center; +} + +.theme-switch-wrapper em { + margin-left: 10px; + font-size: 1rem; +} + +.theme-switch { + display: inline-block; + height: 22px; + position: relative; + width: 50px; +} + +.theme-switch input { + display: none; +} + +.slider { + background-color: #ccc; + bottom: 0; + cursor: pointer; + left: 0; + position: absolute; + right: 0; + top: 0; + transition: .4s; +} + +.slider:before { + background-color: #fff; + bottom: 4px; + content: ""; + height: 13px; + left: 4px; + position: absolute; + transition: .4s; + width: 13px; +} + +input:checked + .slider { + background-color: #66bb6a; +} + +input:checked + .slider:before { + transform: translateX(26px); +} + +.slider.round { + border-radius: 17px; +} + +.slider.round:before { + border-radius: 50%; +} + +html { + font-size: 100%; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; } + +body { + font-family: "Lato", "Helvetica Neue", "HelveticaNeue", Helvetica, Arial, sans-serif; + font-weight: 400; + font-size: 1.125em; + line-height: 1.5; + color: var(--text); + background-color: var(--primary-background); } + +/* Skeleton grid */ +.container { + position: relative; + width: 100%; + max-width: 1050px; + margin: 0 auto; + padding: 0; + box-sizing: border-box; } + +.column, +.columns { + width: 100%; + float: left; + box-sizing: border-box; + margin-left: 1%; +} + +.column:first-child, +.columns:first-child { + margin-left: 0; } + +.three.columns { + width: 22%; +} + +.nine.columns { + width: 77.0%; } + +.twelve.columns { + width: 100%; + margin-left: 0; } + +@media screen and (max-width: 860px) { + .three.columns { + display: none; + } + .nine.columns { + width: 98.0%; + } + body { + font-size: 1em; + line-height: 1.35; + } +} + +cite { + font-style: italic !important; } + + +/* Nim search input */ +div#searchInputDiv { + margin-bottom: 1em; +} +input#searchInput { + width: 80%; +} + +/* + * Some custom formatting for input forms. + * This also fixes input form colors on Firefox with a dark system theme on Linux. + */ +input { + -moz-appearance: none; + background-color: var(--secondary-background); + color: var(--text); + border: 1px solid var(--border); + font-family: "Lato", "Helvetica Neue", "HelveticaNeue", Helvetica, Arial, sans-serif; + font-size: 0.9em; + padding: 6px; +} + +input:focus { + border: 1px solid var(--input-focus); + box-shadow: 0 0 3px var(--input-focus); +} + +select { + -moz-appearance: none; + background-color: var(--secondary-background); + color: var(--text); + border: 1px solid var(--border); + font-family: "Lato", "Helvetica Neue", "HelveticaNeue", Helvetica, Arial, sans-serif; + font-size: 0.9em; + padding: 6px; +} + +select:focus { + border: 1px solid var(--input-focus); + box-shadow: 0 0 3px var(--input-focus); +} + +/* Docgen styles */ + +:target { + border: 2px solid #B5651D; + border-style: dotted; +} + +/* Links */ +a { + color: var(--anchor); + text-decoration: none; +} + +a span.Identifier { + text-decoration: underline; + text-decoration-color: #aab; +} + +a.reference-toplevel { + font-weight: bold; +} + +a.toc-backref { + text-decoration: none; + color: var(--text); } + +a.link-seesrc { + color: #607c9f; + font-size: 0.9em; + font-style: italic; } + +a:hover, +a:focus { + color: var(--anchor-focus); + text-decoration: underline; } + +a:hover span.Identifier { + color: var(--anchor); +} + + +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; } + +sup { + top: -0.5em; } + +sub { + bottom: -0.25em; } + +img { + width: auto; + height: auto; + max-width: 100%; + vertical-align: middle; + border: 0; + -ms-interpolation-mode: bicubic; } + +@media print { + * { + color: black !important; + text-shadow: none !important; + background: transparent !important; + box-shadow: none !important; } + + a, + a:visited { + text-decoration: underline; } + + a[href]:after { + content: " (" attr(href) ")"; } + + abbr[title]:after { + content: " (" attr(title) ")"; } + + .ir a:after, + a[href^="javascript:"]:after, + a[href^="#"]:after { + content: ""; } + + pre, + blockquote { + border: 1px solid #999; + page-break-inside: avoid; } + + thead { + display: table-header-group; } + + tr, + img { + page-break-inside: avoid; } + + img { + max-width: 100% !important; } + + @page { + margin: 0.5cm; } + + h1 { + page-break-before: always; } + + h1.title { + page-break-before: avoid; } + + p, + h2, + h3 { + orphans: 3; + widows: 3; } + + h2, + h3 { + page-break-after: avoid; } +} + + +p { + margin-top: 0.5em; + margin-bottom: 0.5em; +} + +small { + font-size: 85%; } + +strong { + font-weight: 600; + font-size: 0.95em; + color: var(--strong); +} + +em { + font-style: italic; } + +h1 { + font-size: 1.8em; + font-weight: 400; + padding-bottom: .25em; + border-bottom: 6px solid var(--third-background); + margin-top: 2.5em; + margin-bottom: 1em; + line-height: 1.2em; } + +h1.title { + padding-bottom: 1em; + border-bottom: 0px; + font-size: 2.5em; + text-align: center; + font-weight: 900; + margin-top: 0.75em; + margin-bottom: 0em; +} + +h2 { + font-size: 1.3em; + margin-top: 2em; } + +h2.subtitle { + margin-top: 0em; + text-align: center; } + +h3 { + font-size: 1.125em; + font-style: italic; + margin-top: 1.5em; } + +h4 { + font-size: 1.125em; + margin-top: 1em; } + +h5 { + font-size: 1.125em; + margin-top: 0.75em; } + +h6 { + font-size: 1.1em; } + + +ul, +ol { + padding: 0; + margin-top: 0.5em; + margin-left: 0.75em; } + +ul ul, +ul ol, +ol ol, +ol ul { + margin-bottom: 0; + margin-left: 1.25em; } + +ul.simple > li { + list-style-type: circle; +} + +ul.simple-boot li { + list-style-type: none; + margin-left: 0em; + margin-bottom: 0.5em; +} + +ol.simple > li, ul.simple > li { + margin-bottom: 0.2em; + margin-left: 0.4em } + +ul.simple.simple-toc > li { + margin-top: 1em; +} + +ul.simple-toc { + list-style: none; + font-size: 0.9em; + margin-left: -0.3em; + margin-top: 1em; } + +ul.simple-toc > li { + list-style-type: none; +} + +ul.simple-toc-section { + list-style-type: circle; + margin-left: 0.8em; + color: #6c9aae; } + +ul.nested-toc-section { + list-style-type: circle; + margin-left: -0.75em; + color: var(--text); +} + +ul.nested-toc-section > li { + margin-left: 1.25em; +} + + +ol.arabic { + list-style: decimal; } + +ol.loweralpha { + list-style: lower-alpha; } + +ol.upperalpha { + list-style: upper-alpha; } + +ol.lowerroman { + list-style: lower-roman; } + +ol.upperroman { + list-style: upper-roman; } + +ul.auto-toc { + list-style-type: none; } + + +dl { + margin-bottom: 1.5em; } + +dt { + margin-bottom: -0.5em; + margin-left: 0.0em; } + +dd { + margin-left: 2.0em; + margin-bottom: 3.0em; + margin-top: 0.5em; } + + +hr { + margin: 2em 0; + border: 0; + border-top: 1px solid #aaa; } + +hr.footnote { + width: 25%; + border-top: 0.15em solid #999; + margin-bottom: 0.15em; + margin-top: 0.15em; +} +div.footnote-group { + margin-left: 1em; } +div.footnote-label { + display: inline-block; + min-width: 1.7em; +} + +div.option-list { + border: 0.1em solid var(--border); +} +div.option-list-item { + padding-left: 12em; + padding-right: 0; + padding-bottom: 0.3em; + padding-top: 0.3em; +} +div.odd { + background-color: var(--secondary-background); +} +div.option-list-label { + margin-left: -11.5em; + margin-right: 0em; + min-width: 11.5em; + display: inline-block; + vertical-align: top; +} +div.option-list-description { + width: calc(100% - 1em); + padding-left: 1em; + padding-right: 0; + display: inline-block; +} + +blockquote { + font-size: 0.9em; + font-style: italic; + padding-left: 0.5em; + margin-left: 0; + border-left: 5px solid #bbc; +} + +.pre, span.tok { + font-family: "Source Code Pro", Monaco, Menlo, Consolas, "Courier New", monospace; + font-weight: 500; + font-size: 0.85em; + color: var(--text); + background-color: var(--third-background); + padding-left: 3px; + padding-right: 3px; + border-radius: 4px; +} + +span.tok { + border: 1px solid #808080; + padding-bottom: 0.1em; + margin-right: 0.2em; +} + +pre { + font-family: "Source Code Pro", Monaco, Menlo, Consolas, "Courier New", monospace; + color: var(--text); + font-weight: 500; + display: inline-block; + box-sizing: border-box; + min-width: 100%; + padding: 0.5em; + margin-top: 0.5em; + margin-bottom: 0.5em; + font-size: 0.85em; + white-space: pre !important; + overflow-y: hidden; + overflow-x: visible; + background-color: var(--secondary-background); + border: 1px solid var(--border); + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; } + +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; } + + +/* Nim line-numbered tables */ +.line-nums-table { + width: 100%; + table-layout: fixed; } + +table.line-nums-table { + border-radius: 4px; + border: 1px solid #cccccc; + background-color: ghostwhite; + border-collapse: separate; + margin-top: 15px; + margin-bottom: 25px; } + +.line-nums-table tbody { + border: none; } + +.line-nums-table td pre { + border: none; + background-color: transparent; } + +.line-nums-table td.blob-line-nums { + width: 28px; } + +.line-nums-table td.blob-line-nums pre { + color: #b0b0b0; + -webkit-filter: opacity(75%); + filter: opacity(75%); + text-align: right; + border-color: transparent; + background-color: transparent; + padding-left: 0px; + margin-left: 0px; + padding-right: 0px; + margin-right: 0px; } + + +table { + max-width: 100%; + background-color: transparent; + margin-top: 0.5em; + margin-bottom: 1.5em; + border-collapse: collapse; + border-color: var(--third-background); + border-spacing: 0; + font-size: 0.9em; +} + +table th, table td { + padding: 0px 0.5em 0px; + border-color: var(--third-background); +} + +table th { + background-color: var(--third-background); + border-color: var(--third-background); + font-weight: bold; } + +table th.docinfo-name { + background-color: transparent; + text-align: right; +} + +table tr:hover { + background-color: var(--third-background); } + + +/* rst2html default used to remove borders from tables and images */ +.borderless, table.borderless td, table.borderless th { + border: 0; } + +table.borderless td, table.borderless th { + /* Override padding for "table.docutils td" with "! important". + The right padding separates the table cells. */ + padding: 0 0.5em 0 0 !important; } + +.admonition { + padding: 0.3em; + background-color: var(--secondary-background); + border-left: 0.4em solid #7f7f84; + margin-bottom: 0.5em; + -webkit-box-shadow: 0 5px 8px -6px rgba(0,0,0,.2); + -moz-box-shadow: 0 5px 8px -6px rgba(0,0,0,.2); + box-shadow: 0 5px 8px -6px rgba(0,0,0,.2); +} +.admonition-info { + border-color: var(--info-background); +} +.admonition-info-text { + color: var(--info-background); +} +.admonition-warning { + border-color: var(--warning-background); +} +.admonition-warning-text { + color: var(--warning-background); +} +.admonition-error { + border-color: var(--error-background); +} +.admonition-error-text { + color: var(--error-background); +} + +.first { + /* Override more specific margin styles with "! important". */ + margin-top: 0 !important; } + +.last, .with-subtitle { + margin-bottom: 0 !important; } + +.hidden { + display: none; } + +blockquote.epigraph { + margin: 2em 5em; } + +dl.docutils dd { + margin-bottom: 0.5em; } + +object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] { + overflow: hidden; } + + +div.figure { + margin-left: 2em; + margin-right: 2em; } + +div.footer, div.header { + clear: both; + text-align: center; + color: #666; + font-size: smaller; } + +div.footer { + padding-top: 5em; +} + +div.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; } + +div.line-block div.line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; } + +div.topic { + margin: 2em; } + +div.search_results { + background-color: var(--third-background); + margin: 3em; + padding: 1em; + border: 1px solid #4d4d4d; +} + +div#global-links ul { + margin-left: 0; + list-style-type: none; +} + +div#global-links > simple-boot { + margin-left: 3em; +} + +hr.docutils { + width: 75%; } + +img.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; } + +img.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; } + +img.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; } + +.align-left { + text-align: left; } + +.align-center { + clear: both; + text-align: center; } + +.align-right { + text-align: right; } + +/* reset inner alignment in figures */ +div.align-right { + text-align: inherit; } + +p.attribution { + text-align: right; + margin-left: 50%; } + +p.caption { + font-style: italic; } + +p.credits { + font-style: italic; + font-size: smaller; } + +p.label { + white-space: nowrap; } + +p.rubric { + font-weight: bold; + font-size: larger; + color: maroon; + text-align: center; } + +p.topic-title { + font-weight: bold; } + +pre.address { + margin-bottom: 0; + margin-top: 0; + font: inherit; } + +pre.literal-block, pre.doctest-block, pre.math, pre.code { + margin-left: 2em; + margin-right: 2em; } + +pre.code .ln { + color: grey; } + +/* line numbers */ +pre.code, code { + background-color: #eeeeee; } + +pre.code .comment, code .comment { + color: #5c6576; } + +pre.code .keyword, code .keyword { + color: #3B0D06; + font-weight: bold; } + +pre.code .literal.string, code .literal.string { + color: #0c5404; } + +pre.code .name.builtin, code .name.builtin { + color: #352b84; } + +pre.code .deleted, code .deleted { + background-color: #DEB0A1; } + +pre.code .inserted, code .inserted { + background-color: #A3D289; } + +span.classifier { + font-style: oblique; } + +span.classifier-delimiter { + font-weight: bold; } + +span.problematic { + color: #b30000; } + +span.section-subtitle { + /* font-size relative to parent (h1..h6 element) */ + font-size: 80%; } + +span.DecNumber { + color: var(--number); } + +span.BinNumber { + color: var(--number); } + +span.HexNumber { + color: var(--number); } + +span.OctNumber { + color: var(--number); } + +span.FloatNumber { + color: var(--number); } + +span.Identifier { + color: var(--identifier); } + +span.Keyword { + font-weight: 600; + color: var(--keyword); } + +span.StringLit { + color: var(--literal); } + +span.LongStringLit { + color: var(--literal); } + +span.CharLit { + color: var(--literal); } + +span.EscapeSequence { + color: var(--escapeSequence); } + +span.Operator { + color: var(--operator); } + +span.Punctuation { + color: var(--punctuation); } + +span.Comment, span.LongComment { + font-style: italic; + font-weight: 400; + color: var(--comment); } + +span.RegularExpression { + color: darkviolet; } + +span.TagStart { + color: darkviolet; } + +span.TagEnd { + color: darkviolet; } + +span.Key { + color: #252dbe; } + +span.Value { + color: #252dbe; } + +span.RawData { + color: var(--raw-data); } + +span.Assembler { + color: #252dbe; } + +span.Preprocessor { + color: #252dbe; } + +span.Directive { + color: #252dbe; } + +span.option { + font-weight: bold; + font-family: "Source Code Pro", Monaco, Menlo, Consolas, "Courier New", monospace; + color: var(--option); +} + +span.Prompt { + font-weight: bold; + color: red; } + +span.ProgramOutput { + font-weight: bold; + color: #808080; } + +span.program { + font-weight: bold; + color: var(--program); + text-decoration: underline; + text-decoration-color: var(--hint); + text-decoration-thickness: 0.05em; + text-underline-offset: 0.15em; +} + +span.Command, span.Rule, span.Hyperlink, span.Label, span.Reference, +span.Other { + color: var(--other); } + +/* Pop type, const, proc, and iterator defs in nim def blocks */ +dt pre > span.Identifier, dt pre > span.Operator { + color: var(--identifier); + font-weight: 700; } + +dt pre > span.Keyword ~ span.Identifier, dt pre > span.Identifier ~ span.Identifier, +dt pre > span.Operator ~ span.Identifier, dt pre > span.Other ~ span.Identifier { + color: var(--identifier); + font-weight: inherit; } + +/* Nim sprite for the footer (taken from main page favicon) */ +.nim-sprite { + display: inline-block; + width: 51px; + height: 14px; + background-position: 0 0; + background-size: 51px 14px; + -webkit-filter: opacity(50%); + filter: opacity(50%); + background-repeat: no-repeat; + background-image: var(--nim-sprite-base64); + margin-bottom: 5px; } + +span.pragmadots { + /* Position: relative frees us up to make the dots + look really nice without fucking up the layout and + causing bulging in the parent container */ + position: relative; + /* 1px down looks slightly nicer */ + top: 1px; + padding: 2px; + background-color: var(--third-background); + border-radius: 4px; + margin: 0 2px; + cursor: pointer; + font-size: 0.8em; +} + +span.pragmadots:hover { + background-color: var(--hint); +} +span.pragmawrap { + display: none; +} + +span.attachedType { + display: none; + visibility: hidden; +} diff --git a/regex.html b/regex.html new file mode 100644 index 00000000..2b779adc --- /dev/null +++ b/regex.html @@ -0,0 +1,1303 @@ +<?xml version="1.0" encoding="utf-8" ?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!-- This file is generated by Nim. --> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + +<meta name="viewport" content="width=device-width, initial-scale=1.0"> + +<!-- Favicon --> +<link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA=="/> +<link rel="icon" type="image/png" sizes="32x32" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QQQEwksSS9ZWwAAAk1JREFUWMPtll2ITVEUx39nn/O7Y5qR8f05wtCUUr6ZIS++8pEnkZInPImneaCQ5METNdOkeFBKUhMPRIkHKfEuUZSUlGlKPN2TrgfncpvmnntnmlEyq1Z7t89/rf9a6+y99oZxGZf/XeIq61EdtgKXgdXA0xrYAvBjOIF1AI9zvjcC74BSpndrJPkBWDScTF8Aa4E3wDlgHbASaANmVqlcCnwHvgDvgVfAJ+AikAAvgfVZwLnSVZHZaOuKoQi3ZOMi4NkYkpe1p4J7A8BpYAD49hfIy/oqG0+hLomiKP2L5L+1ubn5115S+3OAn4EnwBlgMzCjyt6ZAnQCJ4A7wOs88iRJHvw50HoujuPBoCKwHWiosy8MdfZnAdcHk8dxXFJ3VQbQlCTJvRBCGdRbD4M6uc5glpY3eAihpN5S5w12diSEcCCEcKUO4ljdr15T76ur1FDDLIQQ3qv71EdDOe3Kxj3leRXyk+pxdWnFWod6Wt2bY3de3aSuUHcPBVimHs7mK9WrmeOF6lR1o9qnzskh2ar2qm1qizpfXaPeVGdlmGN5pb09qMxz1Xb1kLqgzn1RyH7JUXW52lr5e/Kqi9qpto7V1atuUzfnARrV7jEib1T76gG2qxdGmXyiekkt1GswPTtek0aBfJp6YySGBfWg2tPQ0FAYgf1stUfdmdcjarbYJEniKIq6gY/Aw+zWHAC+p2labGpqiorFYgGYCEzN7oQdQClN07O1/EfDyGgC0ALMBdYAi4FyK+4H3gLPsxfR1zRNi+NP7nH5J+QntnXe5B5mpfQAAAAASUVORK5CYII="> + +<!-- Google fonts --> +<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/> +<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/> + +<!-- CSS --> +<title>src/regex</title> +<link rel="stylesheet" type="text/css" href="nimdoc.out.css"> + +<script type="text/javascript" src="dochack.js"></script> + +<script type="text/javascript"> +function main() { + var pragmaDots = document.getElementsByClassName("pragmadots"); + for (var i = 0; i < pragmaDots.length; i++) { + pragmaDots[i].onclick = function(event) { + // Hide tease + event.target.parentNode.style.display = "none"; + // Show actual + event.target.parentNode.nextElementSibling.style.display = "inline"; + } + } + + function switchTheme(e) { + if (e.target.checked) { + document.documentElement.setAttribute('data-theme', 'dark'); + localStorage.setItem('theme', 'dark'); + } else { + document.documentElement.setAttribute('data-theme', 'light'); + localStorage.setItem('theme', 'light'); + } + } + + const toggleSwitch = document.querySelector('.theme-switch input[type="checkbox"]'); + if (toggleSwitch !== null) { + toggleSwitch.addEventListener('change', switchTheme, false); + } + + var currentTheme = localStorage.getItem('theme'); + if (!currentTheme && window.matchMedia('(prefers-color-scheme: dark)').matches) { + currentTheme = 'dark'; + } + if (currentTheme) { + document.documentElement.setAttribute('data-theme', currentTheme); + + if (currentTheme === 'dark' && toggleSwitch !== null) { + toggleSwitch.checked = true; + } + } +} + +window.addEventListener('DOMContentLoaded', main); +</script> + +</head> +<body> +<div class="document" id="documentId"> + <div class="container"> + <h1 class="title">src/regex</h1> + <div class="row"> + <div class="three columns"> + <div class="theme-switch-wrapper"> + <label class="theme-switch" for="checkbox"> + <input type="checkbox" id="checkbox" /> + <div class="slider round"></div> + </label> + <em>Dark Mode</em> + </div> + <div id="global-links"> + <ul class="simple"> + <li> + <a href="theindex.html">Index</a> + </li> + </ul> + </div> + <div id="searchInputDiv"> + Search: <input type="text" id="searchInput" + onkeyup="search()" /> + </div> + <div> + Group by: + <select onchange="groupBy(this.value)"> + <option value="section">Section</option> + <option value="type">Type</option> + </select> + </div> + <ul class="simple simple-toc" id="toc-list"> +<li><a class="reference" id="syntax_toc" href="#syntax">Syntax</a></li> +<ul class="simple"><li><a class="reference" id="syntax-matching-one-character_toc" href="#syntax-matching-one-character">Matching one character</a></li> +<li><a class="reference" id="syntax-character-classes_toc" href="#syntax-character-classes">Character classes</a></li> +<li><a class="reference" id="syntax-composites_toc" href="#syntax-composites">Composites</a></li> +<li><a class="reference" id="syntax-repetitions_toc" href="#syntax-repetitions">Repetitions</a></li> +<li><a class="reference" id="syntax-empty-matches_toc" href="#syntax-empty-matches">Empty matches</a></li> +<li><a class="reference" id="syntax-grouping-and-flags_toc" href="#syntax-grouping-and-flags">Grouping and flags</a></li> +<li><a class="reference" id="syntax-escape-sequences_toc" href="#syntax-escape-sequences">Escape sequences</a></li> +<li><a class="reference" id="syntax-perl-character-classes-unicode-friendly_toc" href="#syntax-perl-character-classes-unicode-friendly">Perl character classes (Unicode friendly)</a></li> +<li><a class="reference" id="syntax-ascii-character-classes_toc" href="#syntax-ascii-character-classes">ASCII character classes</a></li> +<li><a class="reference" id="syntax-lookaround-assertions_toc" href="#syntax-lookaround-assertions">Lookaround Assertions</a></li> +</ul><li><a class="reference" id="examples_toc" href="#examples">Examples</a></li> +<ul class="simple"><li><a class="reference" id="examples-match_toc" href="#examples-match">Match</a></li> +<li><a class="reference" id="examples-captures_toc" href="#examples-captures">Captures</a></li> +<li><a class="reference" id="examples-find_toc" href="#examples-find">Find</a></li> +<li><a class="reference" id="examples-find-all_toc" href="#examples-find-all">Find All</a></li> +<li><a class="reference" id="examples-verbose-mode_toc" href="#examples-verbose-mode">Verbose Mode</a></li> +<li><a class="reference" id="examples-match-macro_toc" href="#examples-match-macro">Match Macro</a></li> +<li><a class="reference" id="examples-invalid-utfminus8-input-text_toc" href="#examples-invalid-utfminus8-input-text">Invalid UTF-8 input text</a></li> +<li><a class="reference" id="examples-match-arbitrary-bytes_toc" href="#examples-match-arbitrary-bytes">Match arbitrary bytes</a></li> +</ul><li> + <a class="reference reference-toplevel" href="#6" id="56">Imports</a> + <ul class="simple simple-toc-section"> + + </ul> +</li> +<li> + <a class="reference reference-toplevel" href="#10" id="60">Consts</a> + <ul class="simple simple-toc-section"> + <li><a class="reference" href="#reNonCapture" + title="reNonCapture = (a: -1, b: -2)">reNonCapture</a></li> + + </ul> +</li> +<li> + <a class="reference reference-toplevel" href="#12" id="62">Procs</a> + <ul class="simple simple-toc-section"> + <ul class="simple nested-toc-section">contains + <li><a class="reference" href="#contains%2Cstring%2CRegex" + title="contains(s: string; pattern: Regex): bool">contains(s: string; pattern: Regex): bool</a></li> + <li><a class="reference" href="#contains%2Cstring%2CRegex2" + title="contains(s: string; pattern: Regex2): bool">contains(s: string; pattern: Regex2): bool</a></li> + + </ul> + <ul class="simple nested-toc-section">endsWith + <li><a class="reference" href="#endsWith%2Cstring%2CRegex" + title="endsWith(s: string; pattern: Regex): bool">endsWith(s: string; pattern: Regex): bool</a></li> + <li><a class="reference" href="#endsWith%2Cstring%2CRegex2" + title="endsWith(s: string; pattern: Regex2): bool">endsWith(s: string; pattern: Regex2): bool</a></li> + + </ul> + <ul class="simple nested-toc-section">escapeRe + <li><a class="reference" href="#escapeRe%2Cstring" + title="escapeRe(s: string): string">escapeRe(s: string): string</a></li> + + </ul> + <ul class="simple nested-toc-section">find + <li><a class="reference" href="#find%2Cstring%2CRegex2%2CRegexMatch2%2Cint" + title="find(s: string; pattern: Regex2; m: var RegexMatch2; start = 0): bool">find(s: string; pattern: Regex2; m: var RegexMatch2; start = 0): bool</a></li> + <li><a class="reference" href="#find%2Cstring%2CRegex%2CRegexMatch%2Cint" + title="find(s: string; pattern: Regex; m: var RegexMatch; start = 0): bool">find(s: string; pattern: Regex; m: var RegexMatch; start = 0): bool</a></li> + + </ul> + <ul class="simple nested-toc-section">findAll + <li><a class="reference" href="#findAll%2Cstring%2CRegex2%2Cint" + title="findAll(s: string; pattern: Regex2; start = 0): seq[RegexMatch2]">findAll(s: string; pattern: Regex2; start = 0): seq[RegexMatch2]</a></li> + <li><a class="reference" href="#findAll%2Cstring%2CRegex%2Cint" + title="findAll(s: string; pattern: Regex; start = 0): seq[RegexMatch]">findAll(s: string; pattern: Regex; start = 0): seq[RegexMatch]</a></li> + + </ul> + <ul class="simple nested-toc-section">findAllBounds + <li><a class="reference" href="#findAllBounds%2Cstring%2CRegex2%2Cint" + title="findAllBounds(s: string; pattern: Regex2; start = 0): seq[Slice[int]]">findAllBounds(s: string; pattern: Regex2; start = 0): seq[Slice[int]]</a></li> + <li><a class="reference" href="#findAllBounds%2Cstring%2CRegex%2Cint" + title="findAllBounds(s: string; pattern: Regex; start = 0): seq[Slice[int]]">findAllBounds(s: string; pattern: Regex; start = 0): seq[Slice[int]]</a></li> + + </ul> + <ul class="simple nested-toc-section">findAndCaptureAll + <li><a class="reference" href="#findAndCaptureAll%2Cstring%2CRegex" + title="findAndCaptureAll(s: string; pattern: Regex): seq[string]">findAndCaptureAll(s: string; pattern: Regex): seq[string]</a></li> + + </ul> + <ul class="simple nested-toc-section">group + <li><a class="reference" href="#group%2CRegexMatch2%2Cint" + title="group(m: RegexMatch2; i: int): Slice[int]">group(m: RegexMatch2; i: int): Slice[int]</a></li> + <li><a class="reference" href="#group%2CRegexMatch2%2Cstring" + title="group(m: RegexMatch2; s: string): Slice[int]">group(m: RegexMatch2; s: string): Slice[int]</a></li> + <li><a class="reference" href="#group%2CRegexMatch%2Cstring%2Cstring" + title="group(m: RegexMatch; groupName: string; text: string): seq[string]">group(m: RegexMatch; groupName: string; text: string): seq[string]</a></li> + <li><a class="reference" href="#group%2CRegexMatch%2Cint" + title="group(m: RegexMatch; i: int): seq[Slice[int]]">group(m: RegexMatch; i: int): seq[Slice[int]]</a></li> + <li><a class="reference" href="#group%2CRegexMatch%2Cint%2Cstring" + title="group(m: RegexMatch; i: int; text: string): seq[string]">group(m: RegexMatch; i: int; text: string): seq[string]</a></li> + <li><a class="reference" href="#group%2CRegexMatch%2Cstring" + title="group(m: RegexMatch; s: string): seq[Slice[int]]">group(m: RegexMatch; s: string): seq[Slice[int]]</a></li> + + </ul> + <ul class="simple nested-toc-section">groupFirstCapture + <li><a class="reference" href="#groupFirstCapture%2CRegexMatch%2Cstring%2Cstring" + title="groupFirstCapture(m: RegexMatch; groupName: string; text: string): string">groupFirstCapture(m: RegexMatch; groupName: string; text: string): string</a></li> + <li><a class="reference" href="#groupFirstCapture%2CRegexMatch%2Cint%2Cstring" + title="groupFirstCapture(m: RegexMatch; i: int; text: string): string">groupFirstCapture(m: RegexMatch; i: int; text: string): string</a></li> + + </ul> + <ul class="simple nested-toc-section">groupLastCapture + <li><a class="reference" href="#groupLastCapture%2CRegexMatch%2Cstring%2Cstring" + title="groupLastCapture(m: RegexMatch; groupName: string; text: string): string">groupLastCapture(m: RegexMatch; groupName: string; text: string): string</a></li> + <li><a class="reference" href="#groupLastCapture%2CRegexMatch%2Cint%2Cstring" + title="groupLastCapture(m: RegexMatch; i: int; text: string): string">groupLastCapture(m: RegexMatch; i: int; text: string): string</a></li> + + </ul> + <ul class="simple nested-toc-section">groupNames + <li><a class="reference" href="#groupNames%2CRegexMatch" + title="groupNames(m: RegexMatch): seq[string]">groupNames(m: RegexMatch): seq[string]</a></li> + <li><a class="reference" href="#groupNames%2CRegexMatch2" + title="groupNames(m: RegexMatch2): seq[string]">groupNames(m: RegexMatch2): seq[string]</a></li> + + </ul> + <ul class="simple nested-toc-section">groupsCount + <li><a class="reference" href="#groupsCount%2CRegexMatch" + title="groupsCount(m: RegexMatch): int">groupsCount(m: RegexMatch): int</a></li> + <li><a class="reference" href="#groupsCount%2CRegexMatch2" + title="groupsCount(m: RegexMatch2): int">groupsCount(m: RegexMatch2): int</a></li> + + </ul> + <ul class="simple nested-toc-section">isInitialized + <li><a class="reference" href="#isInitialized%2CRegex" + title="isInitialized(re: Regex): bool">isInitialized(re: Regex): bool</a></li> + <li><a class="reference" href="#isInitialized%2CRegex2" + title="isInitialized(re: Regex2): bool">isInitialized(re: Regex2): bool</a></li> + + </ul> + <ul class="simple nested-toc-section">match + <li><a class="reference" href="#match%2Cstring%2CRegex" + title="match(s: string; pattern: Regex): bool">match(s: string; pattern: Regex): bool</a></li> + <li><a class="reference" href="#match%2Cstring%2CRegex2" + title="match(s: string; pattern: Regex2): bool">match(s: string; pattern: Regex2): bool</a></li> + <li><a class="reference" href="#match%2Cstring%2CRegex2%2CRegexMatch2%2Cint" + title="match(s: string; pattern: Regex2; m: var RegexMatch2; start = 0): bool">match(s: string; pattern: Regex2; m: var RegexMatch2; start = 0): bool</a></li> + <li><a class="reference" href="#match%2Cstring%2CRegex%2CRegexMatch%2Cint" + title="match(s: string; pattern: Regex; m: var RegexMatch; start = 0): bool">match(s: string; pattern: Regex; m: var RegexMatch; start = 0): bool</a></li> + + </ul> + <ul class="simple nested-toc-section">re + <li><a class="reference" href="#re%2Cstaticstring" + title="re(s: static string): static[Regex]">re(s: static string): static[Regex]</a></li> + <li><a class="reference" href="#re%2Cstring" + title="re(s: string): Regex">re(s: string): Regex</a></li> + + </ul> + <ul class="simple nested-toc-section">re2 + <li><a class="reference" href="#re2%2Cstaticstring%2CstaticRegexFlags" + title="re2(s: static string; flags: static RegexFlags = {}): static[Regex2]">re2(s: static string; flags: static RegexFlags = {}): static[Regex2]</a></li> + <li><a class="reference" href="#re2%2Cstring%2CRegexFlags" + title="re2(s: string; flags: RegexFlags = {}): Regex2">re2(s: string; flags: RegexFlags = {}): Regex2</a></li> + + </ul> + <ul class="simple nested-toc-section">replace + <li><a class="reference" href="#replace%2Cstring%2CRegex2%2Cproc%28RegexMatch2%2Cstring%29%2Cint" + title="replace(s: string; pattern: Regex2; + by: proc (m: RegexMatch2; s: string): string; limit = 0): string">replace(s: string; pattern: Regex2; + by: proc (m: RegexMatch2; s: string): string; limit = 0): string</a></li> + <li><a class="reference" href="#replace%2Cstring%2CRegex2%2Cstring%2Cint" + title="replace(s: string; pattern: Regex2; by: string; limit = 0): string">replace(s: string; pattern: Regex2; by: string; limit = 0): string</a></li> + <li><a class="reference" href="#replace%2Cstring%2CRegex%2Cproc%28RegexMatch%2Cstring%29%2Cint" + title="replace(s: string; pattern: Regex; by: proc (m: RegexMatch; s: string): string; + limit = 0): string">replace(s: string; pattern: Regex; by: proc (m: RegexMatch; s: string): string; + limit = 0): string</a></li> + <li><a class="reference" href="#replace%2Cstring%2CRegex%2Cstring%2Cint" + title="replace(s: string; pattern: Regex; by: string; limit = 0): string">replace(s: string; pattern: Regex; by: string; limit = 0): string</a></li> + + </ul> + <ul class="simple nested-toc-section">rex + <li><a class="reference" href="#rex%2Cstring" + title="rex(s: string): RegexLit">rex(s: string): RegexLit</a></li> + + </ul> + <ul class="simple nested-toc-section">split + <li><a class="reference" href="#split%2Cstring%2CRegex" + title="split(s: string; sep: Regex): seq[string]">split(s: string; sep: Regex): seq[string]</a></li> + <li><a class="reference" href="#split%2Cstring%2CRegex2" + title="split(s: string; sep: Regex2): seq[string]">split(s: string; sep: Regex2): seq[string]</a></li> + + </ul> + <ul class="simple nested-toc-section">splitIncl + <li><a class="reference" href="#splitIncl%2Cstring%2CRegex" + title="splitIncl(s: string; sep: Regex): seq[string]">splitIncl(s: string; sep: Regex): seq[string]</a></li> + <li><a class="reference" href="#splitIncl%2Cstring%2CRegex2" + title="splitIncl(s: string; sep: Regex2): seq[string]">splitIncl(s: string; sep: Regex2): seq[string]</a></li> + + </ul> + <ul class="simple nested-toc-section">startsWith + <li><a class="reference" href="#startsWith%2Cstring%2CRegex2%2Cint" + title="startsWith(s: string; pattern: Regex2; start = 0): bool">startsWith(s: string; pattern: Regex2; start = 0): bool</a></li> + <li><a class="reference" href="#startsWith%2Cstring%2CRegex%2Cint" + title="startsWith(s: string; pattern: Regex; start = 0): bool">startsWith(s: string; pattern: Regex; start = 0): bool</a></li> + + </ul> + <ul class="simple nested-toc-section">toPattern + <li><a class="reference" href="#toPattern%2Cstring" + title="toPattern(s: string): Regex">toPattern(s: string): Regex</a></li> + + </ul> + + </ul> +</li> +<li> + <a class="reference reference-toplevel" href="#15" id="65">Iterators</a> + <ul class="simple simple-toc-section"> + <ul class="simple nested-toc-section">findAll + <li><a class="reference" href="#findAll.i%2Cstring%2CRegex2%2Cint" + title="findAll(s: string; pattern: Regex2; start = 0): RegexMatch2">findAll(s: string; pattern: Regex2; start = 0): RegexMatch2</a></li> + <li><a class="reference" href="#findAll.i%2Cstring%2CRegex%2Cint" + title="findAll(s: string; pattern: Regex; start = 0): RegexMatch">findAll(s: string; pattern: Regex; start = 0): RegexMatch</a></li> + + </ul> + <ul class="simple nested-toc-section">findAllBounds + <li><a class="reference" href="#findAllBounds.i%2Cstring%2CRegex2%2Cint" + title="findAllBounds(s: string; pattern: Regex2; start = 0): Slice[int]">findAllBounds(s: string; pattern: Regex2; start = 0): Slice[int]</a></li> + <li><a class="reference" href="#findAllBounds.i%2Cstring%2CRegex%2Cint" + title="findAllBounds(s: string; pattern: Regex; start = 0): Slice[int]">findAllBounds(s: string; pattern: Regex; start = 0): Slice[int]</a></li> + + </ul> + <ul class="simple nested-toc-section">group + <li><a class="reference" href="#group.i%2CRegexMatch%2Cint" + title="group(m: RegexMatch; i: int): Slice[int]">group(m: RegexMatch; i: int): Slice[int]</a></li> + <li><a class="reference" href="#group.i%2CRegexMatch%2Cstring" + title="group(m: RegexMatch; s: string): Slice[int]">group(m: RegexMatch; s: string): Slice[int]</a></li> + + </ul> + <ul class="simple nested-toc-section">split + <li><a class="reference" href="#split.i%2Cstring%2CRegex" + title="split(s: string; sep: Regex): string">split(s: string; sep: Regex): string</a></li> + <li><a class="reference" href="#split.i%2Cstring%2CRegex2" + title="split(s: string; sep: Regex2): string">split(s: string; sep: Regex2): string</a></li> + + </ul> + + </ul> +</li> +<li> + <a class="reference reference-toplevel" href="#17" id="67">Macros</a> + <ul class="simple simple-toc-section"> + <ul class="simple nested-toc-section">match + <li><a class="reference" href="#match.m%2Cstring%2CRegexLit%2Cuntyped" + title="match(text: string; regex: RegexLit; body: untyped): untyped">match(text: string; regex: RegexLit; body: untyped): untyped</a></li> + + </ul> + + </ul> +</li> +<li> + <a class="reference reference-toplevel" href="#19" id="69">Exports</a> + <ul class="simple simple-toc-section"> + + </ul> +</li> + +</ul> + + </div> + + <div class="nine columns" id="content"> + <div id="tocRoot"></div> + + <p class="module-desc">A library for parsing, compiling, and executing regular expressions. The match time is linear in the length of the text and the regular expression. So, it can handle input from untrusted users. The syntax is similar to PCRE but lacks a few features that can not be implemented while keeping the space/time complexity guarantees, ex: backreferences. +<h1><a class="toc-backref" id="syntax" href="#syntax">Syntax</a></h1> +<h2><a class="toc-backref" id="syntax-matching-one-character" href="#syntax-matching-one-character">Matching one character</a></h2><pre class="listing"><span class="Operator">.</span> <span class="Identifier">any</span> <span class="Identifier">character</span> <span class="Keyword">except</span> <span class="Identifier">new</span> <span class="Identifier">line</span> <span class="Punctuation">(</span><span class="Identifier">includes</span> <span class="Identifier">new</span> <span class="Identifier">line</span> <span class="Identifier">with</span> <span class="Identifier">s</span> <span class="Identifier">flag</span><span class="Punctuation">)</span> +<span class="Operator">\</span><span class="Identifier">d</span> <span class="Identifier">digit</span> <span class="Punctuation">(</span><span class="Operator">\</span><span class="Identifier">p</span><span class="Punctuation">{</span><span class="Identifier">Nd</span><span class="Punctuation">}</span><span class="Punctuation">)</span> +<span class="Operator">\</span><span class="Identifier">D</span> <span class="Keyword">not</span> <span class="Identifier">digit</span> +<span class="Operator">\</span><span class="Identifier">pN</span> <span class="Identifier">One</span><span class="Operator">-</span><span class="Identifier">letter</span> <span class="Identifier">name</span> <span class="Identifier">Unicode</span> <span class="Identifier">character</span> <span class="Identifier">class</span> +<span class="Operator">\</span><span class="Identifier">p</span><span class="Punctuation">{</span><span class="Identifier">Greek</span><span class="Punctuation">}</span> <span class="Identifier">Unicode</span> <span class="Identifier">character</span> <span class="Identifier">class</span> <span class="Punctuation">(</span><span class="Identifier">general</span> <span class="Identifier">category</span> <span class="Keyword">or</span> <span class="Identifier">script</span><span class="Punctuation">)</span> +<span class="Operator">\</span><span class="Identifier">PN</span> <span class="Identifier">Negated</span> <span class="Identifier">one</span><span class="Operator">-</span><span class="Identifier">letter</span> <span class="Identifier">name</span> <span class="Identifier">Unicode</span> <span class="Identifier">character</span> <span class="Identifier">class</span> +<span class="Operator">\</span><span class="Identifier">P</span><span class="Punctuation">{</span><span class="Identifier">Greek</span><span class="Punctuation">}</span> <span class="Identifier">negated</span> <span class="Identifier">Unicode</span> <span class="Identifier">character</span> <span class="Identifier">class</span> <span class="Punctuation">(</span><span class="Identifier">general</span> <span class="Identifier">category</span> <span class="Keyword">or</span> <span class="Identifier">script</span><span class="Punctuation">)</span></pre> +<h2><a class="toc-backref" id="syntax-character-classes" href="#syntax-character-classes">Character classes</a></h2><pre class="listing"><span class="Punctuation">[</span><span class="Identifier">xyz</span><span class="Punctuation">]</span> <span class="Identifier">A</span> <span class="Identifier">character</span> <span class="Identifier">class</span> <span class="Identifier">matching</span> <span class="Identifier">either</span> <span class="Identifier">x</span><span class="Punctuation">,</span> <span class="Identifier">y</span> <span class="Keyword">or</span> <span class="Identifier">z</span> <span class="Punctuation">(</span><span class="Identifier">union</span><span class="Punctuation">)</span><span class="Operator">.</span> +<span class="Punctuation">[</span><span class="Operator">^</span><span class="Identifier">xyz</span><span class="Punctuation">]</span> <span class="Identifier">A</span> <span class="Identifier">character</span> <span class="Identifier">class</span> <span class="Identifier">matching</span> <span class="Identifier">any</span> <span class="Identifier">character</span> <span class="Keyword">except</span> <span class="Identifier">x</span><span class="Punctuation">,</span> <span class="Identifier">y</span> <span class="Keyword">and</span> <span class="Identifier">z</span><span class="Operator">.</span> +<span class="Punctuation">[</span><span class="Identifier">a</span><span class="Operator">-</span><span class="Identifier">z</span><span class="Punctuation">]</span> <span class="Identifier">A</span> <span class="Identifier">character</span> <span class="Identifier">class</span> <span class="Identifier">matching</span> <span class="Identifier">any</span> <span class="Identifier">character</span> <span class="Keyword">in</span> <span class="Identifier">range</span> <span class="Identifier">a</span><span class="Operator">-</span><span class="Identifier">z</span><span class="Operator">.</span> +<span class="Punctuation">[</span><span class="Punctuation">[</span><span class="Punctuation">:</span><span class="Identifier">alpha</span><span class="Punctuation">:</span><span class="Punctuation">]</span><span class="Punctuation">]</span> <span class="Identifier">ASCII</span> <span class="Identifier">character</span> <span class="Identifier">class</span> <span class="Punctuation">(</span><span class="Punctuation">[</span><span class="Identifier">A</span><span class="Operator">-</span><span class="Identifier">Za</span><span class="Operator">-</span><span class="Identifier">z</span><span class="Punctuation">]</span><span class="Punctuation">)</span> +<span class="Punctuation">[</span><span class="Punctuation">[</span><span class="Punctuation">:</span><span class="Operator">^</span><span class="Identifier">alpha</span><span class="Punctuation">:</span><span class="Punctuation">]</span><span class="Punctuation">]</span> <span class="Identifier">Negated</span> <span class="Identifier">ASCII</span> <span class="Identifier">character</span> <span class="Identifier">class</span> <span class="Punctuation">(</span><span class="Punctuation">[</span><span class="Operator">^</span><span class="Identifier">A</span><span class="Operator">-</span><span class="Identifier">Za</span><span class="Operator">-</span><span class="Identifier">z</span><span class="Punctuation">]</span><span class="Punctuation">)</span> +<span class="Punctuation">[</span><span class="Operator">\</span><span class="Punctuation">[</span><span class="Operator">\</span><span class="Punctuation">]</span><span class="Punctuation">]</span> <span class="Identifier">Escaping</span> <span class="Keyword">in</span> <span class="Identifier">character</span> <span class="Identifier">classes</span> <span class="Punctuation">(</span><span class="Identifier">matching</span> <span class="Punctuation">[</span> <span class="Keyword">or</span> <span class="Punctuation">]</span><span class="Punctuation">)</span></pre> +<h2><a class="toc-backref" id="syntax-composites" href="#syntax-composites">Composites</a></h2><pre class="listing"><span class="Identifier">xy</span> <span class="Identifier">concatenation</span> <span class="Punctuation">(</span><span class="Identifier">x</span> <span class="Identifier">followed</span> <span class="Identifier">by</span> <span class="Identifier">y</span><span class="Punctuation">)</span> +<span class="Identifier">x</span><span class="Operator">|</span><span class="Identifier">y</span> <span class="Identifier">alternation</span> <span class="Punctuation">(</span><span class="Identifier">x</span> <span class="Keyword">or</span> <span class="Identifier">y</span><span class="Punctuation">,</span> <span class="Identifier">prefer</span> <span class="Identifier">x</span><span class="Punctuation">)</span></pre> +<h2><a class="toc-backref" id="syntax-repetitions" href="#syntax-repetitions">Repetitions</a></h2><pre class="listing"><span class="Identifier">x</span><span class="Operator">*</span> <span class="Identifier">zero</span> <span class="Keyword">or</span> <span class="Identifier">more</span> <span class="Keyword">of</span> <span class="Identifier">x</span> <span class="Punctuation">(</span><span class="Identifier">greedy</span><span class="Punctuation">)</span> +<span class="Identifier">x</span><span class="Operator">+</span> <span class="Identifier">one</span> <span class="Keyword">or</span> <span class="Identifier">more</span> <span class="Keyword">of</span> <span class="Identifier">x</span> <span class="Punctuation">(</span><span class="Identifier">greedy</span><span class="Punctuation">)</span> +<span class="Identifier">x</span><span class="Operator">?</span> <span class="Identifier">zero</span> <span class="Keyword">or</span> <span class="Identifier">one</span> <span class="Keyword">of</span> <span class="Identifier">x</span> <span class="Punctuation">(</span><span class="Identifier">greedy</span><span class="Punctuation">)</span> +<span class="Identifier">x</span><span class="Operator">*?</span> <span class="Identifier">zero</span> <span class="Keyword">or</span> <span class="Identifier">more</span> <span class="Keyword">of</span> <span class="Identifier">x</span> <span class="Punctuation">(</span><span class="Identifier">ungreedy</span><span class="Operator">/</span><span class="Identifier">lazy</span><span class="Punctuation">)</span> +<span class="Identifier">x</span><span class="Operator">+?</span> <span class="Identifier">one</span> <span class="Keyword">or</span> <span class="Identifier">more</span> <span class="Keyword">of</span> <span class="Identifier">x</span> <span class="Punctuation">(</span><span class="Identifier">ungreedy</span><span class="Operator">/</span><span class="Identifier">lazy</span><span class="Punctuation">)</span> +<span class="Identifier">x</span><span class="Operator">??</span> <span class="Identifier">zero</span> <span class="Keyword">or</span> <span class="Identifier">one</span> <span class="Keyword">of</span> <span class="Identifier">x</span> <span class="Punctuation">(</span><span class="Identifier">ungreedy</span><span class="Operator">/</span><span class="Identifier">lazy</span><span class="Punctuation">)</span> +<span class="Identifier">x</span><span class="Punctuation">{</span><span class="Identifier">n</span><span class="Punctuation">,</span><span class="Identifier">m</span><span class="Punctuation">}</span> <span class="Identifier">at</span> <span class="Identifier">least</span> <span class="Identifier">n</span> <span class="Identifier">x</span> <span class="Keyword">and</span> <span class="Identifier">at</span> <span class="Identifier">most</span> <span class="Identifier">m</span> <span class="Identifier">x</span> <span class="Punctuation">(</span><span class="Identifier">greedy</span><span class="Punctuation">)</span> +<span class="Identifier">x</span><span class="Punctuation">{</span><span class="Identifier">n</span><span class="Punctuation">,</span><span class="Punctuation">}</span> <span class="Identifier">at</span> <span class="Identifier">least</span> <span class="Identifier">n</span> <span class="Identifier">x</span> <span class="Punctuation">(</span><span class="Identifier">greedy</span><span class="Punctuation">)</span> +<span class="Identifier">x</span><span class="Punctuation">{</span><span class="Identifier">n</span><span class="Punctuation">}</span> <span class="Identifier">exactly</span> <span class="Identifier">n</span> <span class="Identifier">x</span> +<span class="Identifier">x</span><span class="Punctuation">{</span><span class="Identifier">n</span><span class="Punctuation">,</span><span class="Identifier">m</span><span class="Punctuation">}</span><span class="Operator">?</span> <span class="Identifier">at</span> <span class="Identifier">least</span> <span class="Identifier">n</span> <span class="Identifier">x</span> <span class="Keyword">and</span> <span class="Identifier">at</span> <span class="Identifier">most</span> <span class="Identifier">m</span> <span class="Identifier">x</span> <span class="Punctuation">(</span><span class="Identifier">ungreedy</span><span class="Operator">/</span><span class="Identifier">lazy</span><span class="Punctuation">)</span> +<span class="Identifier">x</span><span class="Punctuation">{</span><span class="Identifier">n</span><span class="Punctuation">,</span><span class="Punctuation">}</span><span class="Operator">?</span> <span class="Identifier">at</span> <span class="Identifier">least</span> <span class="Identifier">n</span> <span class="Identifier">x</span> <span class="Punctuation">(</span><span class="Identifier">ungreedy</span><span class="Operator">/</span><span class="Identifier">lazy</span><span class="Punctuation">)</span> +<span class="Identifier">x</span><span class="Punctuation">{</span><span class="Identifier">n</span><span class="Punctuation">}</span><span class="Operator">?</span> <span class="Identifier">exactly</span> <span class="Identifier">n</span> <span class="Identifier">x</span></pre> +<h2><a class="toc-backref" id="syntax-empty-matches" href="#syntax-empty-matches">Empty matches</a></h2><pre class="listing"><span class="Operator">^</span> <span class="Identifier">the</span> <span class="Identifier">beginning</span> <span class="Keyword">of</span> <span class="Identifier">text</span> <span class="Punctuation">(</span><span class="Keyword">or</span> <span class="Identifier">start</span><span class="Operator">-</span><span class="Keyword">of</span><span class="Operator">-</span><span class="Identifier">line</span> <span class="Identifier">with</span> <span class="Identifier">multi</span><span class="Operator">-</span><span class="Identifier">line</span> <span class="Identifier">mode</span><span class="Punctuation">)</span> +<span class="Operator">$</span> <span class="Identifier">the</span> <span class="Keyword">end</span> <span class="Keyword">of</span> <span class="Identifier">text</span> <span class="Punctuation">(</span><span class="Keyword">or</span> <span class="Keyword">end</span><span class="Operator">-</span><span class="Keyword">of</span><span class="Operator">-</span><span class="Identifier">line</span> <span class="Identifier">with</span> <span class="Identifier">multi</span><span class="Operator">-</span><span class="Identifier">line</span> <span class="Identifier">mode</span><span class="Punctuation">)</span> +<span class="Operator">\</span><span class="Identifier">A</span> <span class="Identifier">only</span> <span class="Identifier">the</span> <span class="Identifier">beginning</span> <span class="Keyword">of</span> <span class="Identifier">text</span> <span class="Punctuation">(</span><span class="Identifier">even</span> <span class="Identifier">with</span> <span class="Identifier">multi</span><span class="Operator">-</span><span class="Identifier">line</span> <span class="Identifier">mode</span> <span class="Identifier">enabled</span><span class="Punctuation">)</span> +<span class="Operator">\</span><span class="Identifier">z</span> <span class="Identifier">only</span> <span class="Identifier">the</span> <span class="Keyword">end</span> <span class="Keyword">of</span> <span class="Identifier">text</span> <span class="Punctuation">(</span><span class="Identifier">even</span> <span class="Identifier">with</span> <span class="Identifier">multi</span><span class="Operator">-</span><span class="Identifier">line</span> <span class="Identifier">mode</span> <span class="Identifier">enabled</span><span class="Punctuation">)</span> +<span class="Operator">\</span><span class="Identifier">b</span> <span class="Identifier">a</span> <span class="Identifier">Unicode</span> <span class="Identifier">word</span> <span class="Identifier">boundary</span> <span class="Punctuation">(</span><span class="Operator">\</span><span class="Identifier">w</span> <span class="Identifier">on</span> <span class="Identifier">one</span> <span class="Identifier">side</span> <span class="Keyword">and</span> <span class="Operator">\</span><span class="Identifier">W</span><span class="Punctuation">,</span> <span class="Operator">\</span><span class="Identifier">A</span><span class="Punctuation">,</span> <span class="Keyword">or</span> <span class="Operator">\</span><span class="Identifier">z</span> <span class="Identifier">on</span> <span class="Identifier">other</span><span class="Punctuation">)</span> +<span class="Operator">\</span><span class="Identifier">B</span> <span class="Keyword">not</span> <span class="Identifier">a</span> <span class="Identifier">Unicode</span> <span class="Identifier">word</span> <span class="Identifier">boundary</span></pre> +<h2><a class="toc-backref" id="syntax-grouping-and-flags" href="#syntax-grouping-and-flags">Grouping and flags</a></h2><pre class="listing"><span class="Punctuation">(</span><span class="Identifier">exp</span><span class="Punctuation">)</span> <span class="Identifier">numbered</span> <span class="Identifier">capture</span> <span class="Identifier">group</span> <span class="Punctuation">(</span><span class="Identifier">indexed</span> <span class="Identifier">by</span> <span class="Identifier">opening</span> <span class="Identifier">parenthesis</span><span class="Punctuation">)</span> +<span class="Punctuation">(</span><span class="Operator">?</span><span class="Identifier">P</span><span class="Operator"><</span><span class="Identifier">name</span><span class="Operator">></span><span class="Identifier">exp</span><span class="Punctuation">)</span> <span class="Identifier">named</span> <span class="Punctuation">(</span><span class="Identifier">also</span> <span class="Identifier">numbered</span><span class="Punctuation">)</span> <span class="Identifier">capture</span> <span class="Identifier">group</span> <span class="Punctuation">(</span><span class="Identifier">allowed</span> <span class="Identifier">chars</span><span class="Punctuation">:</span> <span class="Punctuation">[</span><span class="Identifier">_0</span><span class="Operator">-</span><span class="DecNumber">9</span><span class="Identifier">a</span><span class="Operator">-</span><span class="Identifier">zA</span><span class="Operator">-</span><span class="Identifier">Z</span><span class="Punctuation">]</span><span class="Punctuation">)</span> +<span class="Punctuation">(</span><span class="Operator">?:</span><span class="Identifier">exp</span><span class="Punctuation">)</span> <span class="Identifier">non</span><span class="Operator">-</span><span class="Identifier">capturing</span> <span class="Identifier">group</span> +<span class="Punctuation">(</span><span class="Operator">?</span><span class="Identifier">flags</span><span class="Punctuation">)</span> <span class="Identifier">set</span> <span class="Identifier">flags</span> <span class="Identifier">within</span> <span class="Identifier">current</span> <span class="Identifier">group</span> +<span class="Punctuation">(</span><span class="Operator">?</span><span class="Identifier">flags</span><span class="Punctuation">:</span><span class="Identifier">exp</span><span class="Punctuation">)</span> <span class="Identifier">set</span> <span class="Identifier">flags</span> <span class="Keyword">for</span> <span class="Identifier">exp</span> <span class="Punctuation">(</span><span class="Identifier">non</span><span class="Operator">-</span><span class="Identifier">capturing</span><span class="Punctuation">)</span></pre><p>Flags are each a single character. For example, (?x) sets the flag x and (?-x) clears the flag x. Multiple flags can be set or cleared at the same time: (?xy) sets both the x and y flags, (?x-y) sets the x flag and clears the y flag, and (?-xy) clears both the x and y flags.</p> +<pre class="listing"><span class="Identifier">i</span> <span class="Keyword">case</span><span class="Operator">-</span><span class="Identifier">insensitive</span><span class="Punctuation">:</span> <span class="Identifier">letters</span> <span class="Identifier">match</span> <span class="Identifier">both</span> <span class="Identifier">upper</span> <span class="Keyword">and</span> <span class="Identifier">lower</span> <span class="Keyword">case</span> +<span class="Identifier">m</span> <span class="Identifier">multi</span><span class="Operator">-</span><span class="Identifier">line</span> <span class="Identifier">mode</span><span class="Punctuation">:</span> <span class="Operator">^</span> <span class="Keyword">and</span> <span class="Operator">$</span> <span class="Identifier">match</span> <span class="Identifier">begin</span><span class="Operator">/</span><span class="Keyword">end</span> <span class="Keyword">of</span> <span class="Identifier">line</span> +<span class="Identifier">s</span> <span class="Identifier">allow</span> <span class="Operator">.</span> <span class="Identifier">to</span> <span class="Identifier">match</span> <span class="Operator">\</span><span class="Identifier">L</span> <span class="Punctuation">(</span><span class="Identifier">new</span> <span class="Identifier">line</span><span class="Punctuation">)</span> +<span class="Identifier">U</span> <span class="Identifier">swap</span> <span class="Identifier">the</span> <span class="Identifier">meaning</span> <span class="Keyword">of</span> <span class="Identifier">x</span><span class="Operator">*</span> <span class="Keyword">and</span> <span class="Identifier">x</span><span class="Operator">*?</span> <span class="Punctuation">(</span><span class="Identifier">un</span><span class="Operator">-</span><span class="Identifier">greedy</span> <span class="Identifier">mode</span><span class="Punctuation">)</span> +<span class="Identifier">u</span> <span class="Identifier">Unicode</span> <span class="Identifier">support</span> <span class="Punctuation">(</span><span class="Identifier">enabled</span> <span class="Identifier">by</span> <span class="Identifier">default</span><span class="Punctuation">)</span> +<span class="Identifier">x</span> <span class="Identifier">ignore</span> <span class="Identifier">whitespace</span> <span class="Keyword">and</span> <span class="Identifier">allow</span> <span class="Identifier">line</span> <span class="Identifier">comments</span> <span class="Punctuation">(</span><span class="Identifier">starting</span> <span class="Identifier">with</span> <span class="Punctuation">`</span><span class="Comment">#`)</span></pre><p><tt class="docutils literal"><span class="pre"><span class="Identifier">All</span> <span class="Identifier">flags</span> <span class="Identifier">are</span> <span class="Identifier">disabled</span> <span class="Identifier">by</span> <span class="Identifier">default</span> <span class="Identifier">unless</span> <span class="Identifier">stated</span> <span class="Identifier">otherwise</span></span></tt></p> + +<h2><a class="toc-backref" id="syntax-escape-sequences" href="#syntax-escape-sequences">Escape sequences</a></h2><pre class="listing"><span class="Operator">\*</span> <span class="Identifier">literal</span> <span class="Operator">*</span><span class="Punctuation">,</span> <span class="Identifier">works</span> <span class="Keyword">for</span> <span class="Identifier">any</span> <span class="Identifier">punctuation</span> <span class="Identifier">character</span><span class="Punctuation">:</span> <span class="Operator">\.+*?</span><span class="Punctuation">(</span><span class="Punctuation">)</span><span class="Operator">|</span><span class="Punctuation">[</span><span class="Punctuation">]</span><span class="Punctuation">{</span><span class="Punctuation">}</span><span class="Operator">^$</span> +<span class="Operator">\</span><span class="Identifier">a</span> <span class="Identifier">bell</span> <span class="Punctuation">(</span><span class="Operator">\</span><span class="Identifier">x07</span><span class="Punctuation">)</span> +<span class="Operator">\</span><span class="Identifier">f</span> <span class="Identifier">form</span> <span class="Identifier">feed</span> <span class="Punctuation">(</span><span class="Operator">\</span><span class="Identifier">x0C</span><span class="Punctuation">)</span> +<span class="Operator">\</span><span class="Identifier">t</span> <span class="Identifier">horizontal</span> <span class="Identifier">tab</span> +<span class="Operator">\</span><span class="Identifier">n</span> <span class="Identifier">new</span> <span class="Identifier">line</span> <span class="Punctuation">(</span><span class="Operator">\</span><span class="Identifier">L</span><span class="Punctuation">)</span> +<span class="Operator">\</span><span class="Identifier">r</span> <span class="Identifier">carriage</span> <span class="Keyword">return</span> +<span class="Operator">\</span><span class="Identifier">v</span> <span class="Identifier">vertical</span> <span class="Identifier">tab</span> <span class="Punctuation">(</span><span class="Operator">\</span><span class="Identifier">x0B</span><span class="Punctuation">)</span> +<span class="Operator">\</span><span class="DecNumber">123</span> <span class="Identifier">octal</span> <span class="Identifier">character</span> <span class="Identifier">code</span> <span class="Punctuation">(</span><span class="Identifier">up</span> <span class="Identifier">to</span> <span class="Identifier">three</span> <span class="Identifier">digits</span><span class="Punctuation">)</span> +<span class="Operator">\</span><span class="Identifier">x7F</span> <span class="Identifier">hex</span> <span class="Identifier">character</span> <span class="Identifier">code</span> <span class="Punctuation">(</span><span class="Identifier">exactly</span> <span class="Identifier">two</span> <span class="Identifier">digits</span><span class="Punctuation">)</span> +<span class="Operator">\</span><span class="Identifier">x</span><span class="Punctuation">{</span><span class="DecNumber">10</span><span class="Identifier">FFFF</span><span class="Punctuation">}</span> <span class="Identifier">any</span> <span class="Identifier">hex</span> <span class="Identifier">character</span> <span class="Identifier">code</span> <span class="Identifier">corresponding</span> <span class="Identifier">to</span> <span class="Identifier">a</span> <span class="Identifier">Unicode</span> <span class="Identifier">code</span> <span class="Identifier">point</span> +<span class="Operator">\</span><span class="Identifier">u007F</span> <span class="Identifier">hex</span> <span class="Identifier">character</span> <span class="Identifier">code</span> <span class="Punctuation">(</span><span class="Identifier">exactly</span> <span class="Identifier">four</span> <span class="Identifier">digits</span><span class="Punctuation">)</span> +<span class="Operator">\</span><span class="Identifier">U0010FFFF</span> <span class="Identifier">hex</span> <span class="Identifier">character</span> <span class="Identifier">code</span> <span class="Punctuation">(</span><span class="Identifier">exactly</span> <span class="Identifier">eight</span> <span class="Identifier">digits</span><span class="Punctuation">)</span></pre> +<h2><a class="toc-backref" id="syntax-perl-character-classes-unicode-friendly" href="#syntax-perl-character-classes-unicode-friendly">Perl character classes (Unicode friendly)</a></h2><p>These classes are based on the definitions provided in <a class="reference external" href="http://www.unicode.org/reports/tr18/#Compatibility_Properties">UTS#18</a></p> +<pre class="listing"><span class="Operator">\</span><span class="Identifier">d</span> <span class="Identifier">digit</span> <span class="Punctuation">(</span><span class="Operator">\</span><span class="Identifier">p</span><span class="Punctuation">{</span><span class="Identifier">Nd</span><span class="Punctuation">}</span><span class="Punctuation">)</span> +<span class="Operator">\</span><span class="Identifier">D</span> <span class="Keyword">not</span> <span class="Identifier">digit</span> +<span class="Operator">\</span><span class="Identifier">s</span> <span class="Identifier">whitespace</span> <span class="Punctuation">(</span><span class="Operator">\</span><span class="Identifier">p</span><span class="Punctuation">{</span><span class="Identifier">White_Space</span><span class="Punctuation">}</span><span class="Punctuation">)</span> +<span class="Operator">\</span><span class="Identifier">S</span> <span class="Keyword">not</span> <span class="Identifier">whitespace</span> +<span class="Operator">\</span><span class="Identifier">w</span> <span class="Identifier">word</span> <span class="Identifier">character</span> <span class="Punctuation">(</span><span class="Operator">\</span><span class="Identifier">p</span><span class="Punctuation">{</span><span class="Identifier">Alphabetic</span><span class="Punctuation">}</span> <span class="Operator">+</span> <span class="Operator">\</span><span class="Identifier">p</span><span class="Punctuation">{</span><span class="Identifier">M</span><span class="Punctuation">}</span> <span class="Operator">+</span> <span class="Operator">\</span><span class="Identifier">d</span> <span class="Operator">+</span> <span class="Operator">\</span><span class="Identifier">p</span><span class="Punctuation">{</span><span class="Identifier">Pc</span><span class="Punctuation">}</span> <span class="Operator">+</span> <span class="Operator">\</span><span class="Identifier">p</span><span class="Punctuation">{</span><span class="Identifier">Join_Control</span><span class="Punctuation">}</span><span class="Punctuation">)</span> +<span class="Operator">\</span><span class="Identifier">W</span> <span class="Keyword">not</span> <span class="Identifier">word</span> <span class="Identifier">character</span></pre> +<h2><a class="toc-backref" id="syntax-ascii-character-classes" href="#syntax-ascii-character-classes">ASCII character classes</a></h2><pre class="listing"><span class="Punctuation">[</span><span class="Punctuation">[</span><span class="Punctuation">:</span><span class="Identifier">alnum</span><span class="Punctuation">:</span><span class="Punctuation">]</span><span class="Punctuation">]</span> <span class="Identifier">alphanumeric</span> <span class="Punctuation">(</span><span class="Punctuation">[</span><span class="DecNumber">0</span><span class="Operator">-</span><span class="DecNumber">9</span><span class="Identifier">A</span><span class="Operator">-</span><span class="Identifier">Za</span><span class="Operator">-</span><span class="Identifier">z</span><span class="Punctuation">]</span><span class="Punctuation">)</span> +<span class="Punctuation">[</span><span class="Punctuation">[</span><span class="Punctuation">:</span><span class="Identifier">alpha</span><span class="Punctuation">:</span><span class="Punctuation">]</span><span class="Punctuation">]</span> <span class="Identifier">alphabetic</span> <span class="Punctuation">(</span><span class="Punctuation">[</span><span class="Identifier">A</span><span class="Operator">-</span><span class="Identifier">Za</span><span class="Operator">-</span><span class="Identifier">z</span><span class="Punctuation">]</span><span class="Punctuation">)</span> +<span class="Punctuation">[</span><span class="Punctuation">[</span><span class="Punctuation">:</span><span class="Identifier">ascii</span><span class="Punctuation">:</span><span class="Punctuation">]</span><span class="Punctuation">]</span> <span class="Identifier">ASCII</span> <span class="Punctuation">(</span><span class="Punctuation">[</span><span class="Operator">\</span><span class="Identifier">x00</span><span class="Operator">-\</span><span class="Identifier">x7F</span><span class="Punctuation">]</span><span class="Punctuation">)</span> +<span class="Punctuation">[</span><span class="Punctuation">[</span><span class="Punctuation">:</span><span class="Identifier">blank</span><span class="Punctuation">:</span><span class="Punctuation">]</span><span class="Punctuation">]</span> <span class="Identifier">blank</span> <span class="Punctuation">(</span><span class="Punctuation">[</span><span class="Operator">\</span><span class="Identifier">t</span> <span class="Punctuation">]</span><span class="Punctuation">)</span> +<span class="Punctuation">[</span><span class="Punctuation">[</span><span class="Punctuation">:</span><span class="Identifier">cntrl</span><span class="Punctuation">:</span><span class="Punctuation">]</span><span class="Punctuation">]</span> <span class="Identifier">control</span> <span class="Punctuation">(</span><span class="Punctuation">[</span><span class="Operator">\</span><span class="Identifier">x00</span><span class="Operator">-\</span><span class="Identifier">x1F</span><span class="Operator">\</span><span class="Identifier">x7F</span><span class="Punctuation">]</span><span class="Punctuation">)</span> +<span class="Punctuation">[</span><span class="Punctuation">[</span><span class="Punctuation">:</span><span class="Identifier">digit</span><span class="Punctuation">:</span><span class="Punctuation">]</span><span class="Punctuation">]</span> <span class="Identifier">digits</span> <span class="Punctuation">(</span><span class="Punctuation">[</span><span class="DecNumber">0</span><span class="Operator">-</span><span class="DecNumber">9</span><span class="Punctuation">]</span><span class="Punctuation">)</span> +<span class="Punctuation">[</span><span class="Punctuation">[</span><span class="Punctuation">:</span><span class="Identifier">graph</span><span class="Punctuation">:</span><span class="Punctuation">]</span><span class="Punctuation">]</span> <span class="Identifier">graphical</span> <span class="Punctuation">(</span><span class="Punctuation">[</span><span class="Operator">!-~</span><span class="Punctuation">]</span><span class="Punctuation">)</span> +<span class="Punctuation">[</span><span class="Punctuation">[</span><span class="Punctuation">:</span><span class="Identifier">lower</span><span class="Punctuation">:</span><span class="Punctuation">]</span><span class="Punctuation">]</span> <span class="Identifier">lower</span> <span class="Keyword">case</span> <span class="Punctuation">(</span><span class="Punctuation">[</span><span class="Identifier">a</span><span class="Operator">-</span><span class="Identifier">z</span><span class="Punctuation">]</span><span class="Punctuation">)</span> +<span class="Punctuation">[</span><span class="Punctuation">[</span><span class="Punctuation">:</span><span class="Identifier">print</span><span class="Punctuation">:</span><span class="Punctuation">]</span><span class="Punctuation">]</span> <span class="Identifier">printable</span> <span class="Punctuation">(</span><span class="Punctuation">[</span> <span class="Operator">-~</span><span class="Punctuation">]</span><span class="Punctuation">)</span> +<span class="Punctuation">[</span><span class="Punctuation">[</span><span class="Punctuation">:</span><span class="Identifier">punct</span><span class="Punctuation">:</span><span class="Punctuation">]</span><span class="Punctuation">]</span> <span class="Identifier">punctuation</span> <span class="Punctuation">(</span><span class="Punctuation">[</span><span class="Operator">!-/:-@\</span><span class="Punctuation">[</span><span class="Operator">-</span><span class="Punctuation">`</span><span class="Punctuation">{</span><span class="Operator">-~</span><span class="Punctuation">]</span><span class="Punctuation">)</span> +<span class="Punctuation">[</span><span class="Punctuation">[</span><span class="Punctuation">:</span><span class="Identifier">space</span><span class="Punctuation">:</span><span class="Punctuation">]</span><span class="Punctuation">]</span> <span class="Identifier">whitespace</span> <span class="Punctuation">(</span><span class="Punctuation">[</span><span class="Operator">\</span><span class="Identifier">t</span><span class="Operator">\</span><span class="Identifier">n</span><span class="Operator">\</span><span class="Identifier">v</span><span class="Operator">\</span><span class="Identifier">f</span><span class="Operator">\</span><span class="Identifier">r</span> <span class="Punctuation">]</span><span class="Punctuation">)</span> +<span class="Punctuation">[</span><span class="Punctuation">[</span><span class="Punctuation">:</span><span class="Identifier">upper</span><span class="Punctuation">:</span><span class="Punctuation">]</span><span class="Punctuation">]</span> <span class="Identifier">upper</span> <span class="Keyword">case</span> <span class="Punctuation">(</span><span class="Punctuation">[</span><span class="Identifier">A</span><span class="Operator">-</span><span class="Identifier">Z</span><span class="Punctuation">]</span><span class="Punctuation">)</span> +<span class="Punctuation">[</span><span class="Punctuation">[</span><span class="Punctuation">:</span><span class="Identifier">word</span><span class="Punctuation">:</span><span class="Punctuation">]</span><span class="Punctuation">]</span> <span class="Identifier">word</span> <span class="Identifier">characters</span> <span class="Punctuation">(</span><span class="Punctuation">[</span><span class="DecNumber">0</span><span class="Operator">-</span><span class="DecNumber">9</span><span class="Identifier">A</span><span class="Operator">-</span><span class="Identifier">Za</span><span class="Operator">-</span><span class="Identifier">z_</span><span class="Punctuation">]</span><span class="Punctuation">)</span> +<span class="Punctuation">[</span><span class="Punctuation">[</span><span class="Punctuation">:</span><span class="Identifier">xdigit</span><span class="Punctuation">:</span><span class="Punctuation">]</span><span class="Punctuation">]</span> <span class="Identifier">hex</span> <span class="Identifier">digit</span> <span class="Punctuation">(</span><span class="Punctuation">[</span><span class="DecNumber">0</span><span class="Operator">-</span><span class="DecNumber">9</span><span class="Identifier">A</span><span class="Operator">-</span><span class="Identifier">Fa</span><span class="Operator">-</span><span class="Identifier">f</span><span class="Punctuation">]</span><span class="Punctuation">)</span></pre> +<h2><a class="toc-backref" id="syntax-lookaround-assertions" href="#syntax-lookaround-assertions">Lookaround Assertions</a></h2><pre class="listing"><span class="Punctuation">(</span><span class="Operator">?=</span><span class="Identifier">regex</span><span class="Punctuation">)</span> <span class="Identifier">A</span> <span class="Identifier">positive</span> <span class="Identifier">lookahead</span> <span class="Identifier">assertion</span> +<span class="Punctuation">(</span><span class="Operator">?!</span><span class="Identifier">regex</span><span class="Punctuation">)</span> <span class="Identifier">A</span> <span class="Identifier">negative</span> <span class="Identifier">lookahead</span> <span class="Identifier">assertion</span> +<span class="Punctuation">(</span><span class="Operator">?<=</span><span class="Identifier">regex</span><span class="Punctuation">)</span> <span class="Identifier">A</span> <span class="Identifier">positive</span> <span class="Identifier">lookbehind</span> <span class="Identifier">assertion</span> +<span class="Punctuation">(</span><span class="Operator">?<!</span><span class="Identifier">regex</span><span class="Punctuation">)</span> <span class="Identifier">A</span> <span class="Identifier">negative</span> <span class="Identifier">lookbehind</span> <span class="Identifier">assertion</span></pre><p>Any regex expression is a valid lookaround; groups are captured as well. Beware, lookarounds containing repetitions (<tt class="docutils literal"><span class="pre">*</span></tt>, <tt class="docutils literal"><span class="pre">+</span></tt>, and <tt class="docutils literal"><span class="pre">{n,}</span></tt>) may run in polynomial time.</p> + +<h1><a class="toc-backref" id="examples" href="#examples">Examples</a></h1> +<h2><a class="toc-backref" id="examples-match" href="#examples-match">Match</a></h2><p>The <tt class="docutils literal"><span class="pre">match</span></tt> function match a text from start to end, similar to <tt class="docutils literal"><span class="pre">^regex$</span></tt>. This means the whole text needs to match the regex for this function to return <tt class="docutils literal"><span class="pre">true</span></tt>.</p> +<pre class="listing"><span class="Keyword">let</span> <span class="Identifier">text</span> <span class="Operator">=</span> <span class="StringLit">"nim c --styleCheck:hint --colors:off regex.nim"</span> +<span class="Keyword">var</span> <span class="Identifier">m</span><span class="Punctuation">:</span> <span class="Identifier">RegexMatch2</span> +<span class="Keyword">if</span> <span class="Identifier">match</span><span class="Punctuation">(</span><span class="Identifier">text</span><span class="Punctuation">,</span> <span class="RawData">re2"nim c (?:--(\w+:\w+) *)+ (\w+).nim"</span><span class="Punctuation">,</span> <span class="Identifier">m</span><span class="Punctuation">)</span><span class="Punctuation">:</span> + <span class="Identifier">doAssert</span> <span class="Identifier">text</span><span class="Punctuation">[</span><span class="Identifier">m</span><span class="Operator">.</span><span class="Identifier">group</span><span class="Punctuation">(</span><span class="DecNumber">0</span><span class="Punctuation">)</span><span class="Punctuation">]</span> <span class="Operator">==</span> <span class="StringLit">"colors:off"</span> + <span class="Identifier">doAssert</span> <span class="Identifier">text</span><span class="Punctuation">[</span><span class="Identifier">m</span><span class="Operator">.</span><span class="Identifier">group</span><span class="Punctuation">(</span><span class="DecNumber">1</span><span class="Punctuation">)</span><span class="Punctuation">]</span> <span class="Operator">==</span> <span class="StringLit">"regex"</span> +<span class="Keyword">else</span><span class="Punctuation">:</span> + <span class="Identifier">doAssert</span> <span class="Identifier">false</span><span class="Punctuation">,</span> <span class="StringLit">"no match"</span></pre> +<h2><a class="toc-backref" id="examples-captures" href="#examples-captures">Captures</a></h2><p>Like most other regex engines, this library only captures the last repetition in a repeated group (<tt class="docutils literal"><span class="pre">*</span></tt>, <tt class="docutils literal"><span class="pre">+</span></tt>, <tt class="docutils literal"><span class="pre">{n}</span></tt>). Note how in the previous example both <tt class="docutils literal"><span class="pre">styleCheck:hint</span></tt> and <tt class="docutils literal"><span class="pre">colors:off</span></tt> are matched in the same group but only the last captured match (<tt class="docutils literal"><span class="pre">colors:off</span></tt>) is returned.</p> +<p>To check if a capture group did match you can use <tt class="docutils literal"><span class="pre">reNonCapture</span></tt>. For example <tt class="docutils literal"><span class="pre">doAssert m.group(0) != reNonCapture</span></tt>. This is useful to disambiguate empty captures and non-matched captures. Since both return an empty string when slicing the text.</p> +<p>The space complexity for captures is <tt class="docutils literal"><span class="pre">O(regex_len * groups_count)</span></tt>, and so it can be used to match untrusted text.</p> + +<h2><a class="toc-backref" id="examples-find" href="#examples-find">Find</a></h2><p>The <tt class="docutils literal"><span class="pre">find</span></tt> function will find the first piece of text that match a given regex.</p> +<pre class="listing"><span class="Keyword">let</span> <span class="Identifier">text</span> <span class="Operator">=</span> <span class="LongStringLit">""" +The Continental's email list: +john_wick@continental.com +winston@continental.com +ms_perkins@continental.com +"""</span> +<span class="Keyword">var</span> <span class="Identifier">match</span> <span class="Operator">=</span> <span class="StringLit">""</span> +<span class="Keyword">var</span> <span class="Identifier">capture</span> <span class="Operator">=</span> <span class="StringLit">""</span> +<span class="Keyword">var</span> <span class="Identifier">m</span><span class="Punctuation">:</span> <span class="Identifier">RegexMatch2</span> +<span class="Keyword">if</span> <span class="Identifier">find</span><span class="Punctuation">(</span><span class="Identifier">text</span><span class="Punctuation">,</span> <span class="RawData">re2"(\w+)@\w+\.\w+"</span><span class="Punctuation">,</span> <span class="Identifier">m</span><span class="Punctuation">)</span><span class="Punctuation">:</span> + <span class="Identifier">match</span> <span class="Operator">=</span> <span class="Identifier">text</span><span class="Punctuation">[</span><span class="Identifier">m</span><span class="Operator">.</span><span class="Identifier">boundaries</span><span class="Punctuation">]</span> + <span class="Identifier">capture</span> <span class="Operator">=</span> <span class="Identifier">text</span><span class="Punctuation">[</span><span class="Identifier">m</span><span class="Operator">.</span><span class="Identifier">group</span><span class="Punctuation">(</span><span class="DecNumber">0</span><span class="Punctuation">)</span><span class="Punctuation">]</span> +<span class="Identifier">doAssert</span> <span class="Identifier">match</span> <span class="Operator">==</span> <span class="StringLit">"john_wick@continental.com"</span> +<span class="Identifier">doAssert</span> <span class="Identifier">capture</span> <span class="Operator">==</span> <span class="StringLit">"john_wick"</span></pre> +<h2><a class="toc-backref" id="examples-find-all" href="#examples-find-all">Find All</a></h2><p>The <tt class="docutils literal"><span class="pre"><span class="Identifier">findAll</span></span></tt> function will find all pieces of text that match a given regex, returning their boundaries and captures/submatches.</p> +<pre class="listing"><span class="Keyword">let</span> <span class="Identifier">text</span> <span class="Operator">=</span> <span class="LongStringLit">""" +The Continental's email list: +john_wick@continental.com +winston@continental.com +ms_perkins@continental.com +"""</span> +<span class="Keyword">var</span> <span class="Identifier">matches</span> <span class="Operator">=</span> <span class="Identifier">newSeq</span><span class="Punctuation">[</span><span class="Identifier">string</span><span class="Punctuation">]</span><span class="Punctuation">(</span><span class="Punctuation">)</span> +<span class="Keyword">var</span> <span class="Identifier">captures</span> <span class="Operator">=</span> <span class="Identifier">newSeq</span><span class="Punctuation">[</span><span class="Identifier">string</span><span class="Punctuation">]</span><span class="Punctuation">(</span><span class="Punctuation">)</span> +<span class="Keyword">for</span> <span class="Identifier">m</span> <span class="Keyword">in</span> <span class="Identifier">findAll</span><span class="Punctuation">(</span><span class="Identifier">text</span><span class="Punctuation">,</span> <span class="RawData">re2"(\w+)@\w+\.\w+"</span><span class="Punctuation">)</span><span class="Punctuation">:</span> + <span class="Identifier">matches</span><span class="Operator">.</span><span class="Identifier">add</span> <span class="Identifier">text</span><span class="Punctuation">[</span><span class="Identifier">m</span><span class="Operator">.</span><span class="Identifier">boundaries</span><span class="Punctuation">]</span> + <span class="Identifier">captures</span><span class="Operator">.</span><span class="Identifier">add</span> <span class="Identifier">text</span><span class="Punctuation">[</span><span class="Identifier">m</span><span class="Operator">.</span><span class="Identifier">group</span><span class="Punctuation">(</span><span class="DecNumber">0</span><span class="Punctuation">)</span><span class="Punctuation">]</span> +<span class="Identifier">doAssert</span> <span class="Identifier">matches</span> <span class="Operator">==</span> <span class="Operator">@</span><span class="Punctuation">[</span> + <span class="StringLit">"john_wick@continental.com"</span><span class="Punctuation">,</span> + <span class="StringLit">"winston@continental.com"</span><span class="Punctuation">,</span> + <span class="StringLit">"ms_perkins@continental.com"</span> +<span class="Punctuation">]</span> +<span class="Identifier">doAssert</span> <span class="Identifier">captures</span> <span class="Operator">==</span> <span class="Operator">@</span><span class="Punctuation">[</span><span class="StringLit">"john_wick"</span><span class="Punctuation">,</span> <span class="StringLit">"winston"</span><span class="Punctuation">,</span> <span class="StringLit">"ms_perkins"</span><span class="Punctuation">]</span></pre> +<h2><a class="toc-backref" id="examples-verbose-mode" href="#examples-verbose-mode">Verbose Mode</a></h2><p>Verbose mode <tt class="docutils literal"><span class="pre"><span class="Punctuation">(</span><span class="Operator">?</span><span class="Identifier">x</span><span class="Punctuation">)</span></span></tt> makes regexes more readable by allowing comments and multi-lines within the regular expression itself. The caveat is spaces and pound signs must be scaped to be matched.</p> +<pre class="listing"><span class="Keyword">const</span> <span class="Identifier">exp</span> <span class="Operator">=</span> <span class="LongStringLit">re2"""(?x) +\# # the hashtag +\w+ # hashtag words +"""</span> +<span class="Keyword">let</span> <span class="Identifier">text</span> <span class="Operator">=</span> <span class="StringLit">"#NimLang"</span> +<span class="Identifier">doAssert</span> <span class="Identifier">match</span><span class="Punctuation">(</span><span class="Identifier">text</span><span class="Punctuation">,</span> <span class="Identifier">exp</span><span class="Punctuation">)</span></pre> +<h2><a class="toc-backref" id="examples-match-macro" href="#examples-match-macro">Match Macro</a></h2><p>The <tt class="docutils literal"><span class="pre">match</span></tt> macro is sometimes more convenient, and faster than the function version. It will run a full match on the whole string, similar to <tt class="docutils literal"><span class="pre"><span class="Operator">^</span><span class="Identifier">regex</span><span class="Operator">$</span></span></tt>.</p> +<p>A <tt class="docutils literal"><span class="pre">matches: seq[string]</span></tt> variable is injected into the scope, and it contains the submatches for every capture group.</p> +<pre class="listing"><span class="Keyword">var</span> <span class="Identifier">matched</span> <span class="Operator">=</span> <span class="Identifier">false</span> +<span class="Keyword">let</span> <span class="Identifier">text</span> <span class="Operator">=</span> <span class="StringLit">"[my link](https://example.com)"</span> +<span class="Identifier">match</span> <span class="Identifier">text</span><span class="Punctuation">,</span> <span class="RawData">rex"\[([^\]]+)\]\((https?://[^)]+)\)"</span><span class="Punctuation">:</span> + <span class="Identifier">doAssert</span> <span class="Identifier">matches</span> <span class="Operator">==</span> <span class="Operator">@</span><span class="Punctuation">[</span><span class="StringLit">"my link"</span><span class="Punctuation">,</span> <span class="StringLit">"https://example.com"</span><span class="Punctuation">]</span> + <span class="Identifier">matched</span> <span class="Operator">=</span> <span class="Identifier">true</span> +<span class="Identifier">doAssert</span> <span class="Identifier">matched</span></pre> +<h2><a class="toc-backref" id="examples-invalid-utfminus8-input-text" href="#examples-invalid-utfminus8-input-text">Invalid UTF-8 input text</a></h2><p>UTF-8 validation on the input text is only done in debug mode for perf reasons. The behaviour on invalid UTF-8 input (i.e: malformed, corrupted, truncated, etc) when compiling in release/danger mode is currently undefined, and it will likely result in an internal AssertionDefect or some other error.</p> +<p>What can be done about this is validating the input text to avoid passing invalid input to the match function.</p> +<pre class="listing"><span class="Keyword">import</span> <span class="Identifier">unicode</span> +<span class="Comment"># good input text</span> +<span class="Identifier">doAssert</span> <span class="Identifier">validateUtf8</span><span class="Punctuation">(</span><span class="StringLit">"abc"</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="Operator">-</span><span class="DecNumber">1</span> +<span class="Comment"># bad input text</span> +<span class="Identifier">doAssert</span> <span class="Identifier">validateUtf8</span><span class="Punctuation">(</span><span class="StringLit">"</span><span class="EscapeSequence">\xf8</span><span class="EscapeSequence">\xa1</span><span class="EscapeSequence">\xa1</span><span class="EscapeSequence">\xa1</span><span class="EscapeSequence">\xa1</span><span class="StringLit">"</span><span class="Punctuation">)</span> <span class="Operator">!=</span> <span class="Operator">-</span><span class="DecNumber">1</span></pre><p>Note at the time of writting this, Nim's <tt class="docutils literal"><span class="pre">validateUtf8</span></tt> <a class="reference external" href="https://github.com/nim-lang/Nim/issues/19333">is not strict enough</a> and so you are better off using <a class="reference external" href="https://github.com/nitely/nim-unicodeplus">nim-unicodeplus's</a> <tt class="docutils literal"><span class="pre">verifyUtf8</span></tt> function.</p> + +<h2><a class="toc-backref" id="examples-match-arbitrary-bytes" href="#examples-match-arbitrary-bytes">Match arbitrary bytes</a></h2><p>Setting the <tt class="docutils literal"><span class="pre">regexArbitraryBytes</span></tt> flag will treat both the regex and the input text as byte sequences. This flag makes ascii mode <tt class="docutils literal"><span class="pre">(?-u)</span></tt> the default.</p> +<pre class="listing"><span class="Keyword">let</span> <span class="Identifier">flags</span> <span class="Operator">=</span> <span class="Punctuation">{</span><span class="Identifier">regexArbitraryBytes</span><span class="Punctuation">}</span> +<span class="Identifier">doAssert</span> <span class="Identifier">match</span><span class="Punctuation">(</span><span class="StringLit">"</span><span class="EscapeSequence">\xff</span><span class="StringLit">"</span><span class="Punctuation">,</span> <span class="Identifier">re2</span><span class="Punctuation">(</span><span class="RawData">r"\xff"</span><span class="Punctuation">,</span> <span class="Identifier">flags</span><span class="Punctuation">)</span><span class="Punctuation">)</span> +<span class="Identifier">doAssert</span> <span class="Identifier">match</span><span class="Punctuation">(</span><span class="StringLit">"</span><span class="EscapeSequence">\xf8</span><span class="EscapeSequence">\xa1</span><span class="EscapeSequence">\xa1</span><span class="EscapeSequence">\xa1</span><span class="EscapeSequence">\xa1</span><span class="StringLit">"</span><span class="Punctuation">,</span> <span class="Identifier">re2</span><span class="Punctuation">(</span><span class="RawData">r".+"</span><span class="Punctuation">,</span> <span class="Identifier">flags</span><span class="Punctuation">)</span><span class="Punctuation">)</span></pre><p>Beware of (un)expected behaviour when mixin UTF-8 characters.</p> +<pre class="listing"><span class="Keyword">let</span> <span class="Identifier">flags</span> <span class="Operator">=</span> <span class="Punctuation">{</span><span class="Identifier">regexArbitraryBytes</span><span class="Punctuation">}</span> +<span class="Identifier">doAssert</span> <span class="Identifier">match</span><span class="Punctuation">(</span><span class="StringLit">"Ⓐ"</span><span class="Punctuation">,</span> <span class="Identifier">re2</span><span class="Punctuation">(</span><span class="RawData">r"Ⓐ"</span><span class="Punctuation">,</span> <span class="Identifier">flags</span><span class="Punctuation">)</span><span class="Punctuation">)</span> +<span class="Identifier">doAssert</span> <span class="Identifier">match</span><span class="Punctuation">(</span><span class="StringLit">"ⒶⒶ"</span><span class="Punctuation">,</span> <span class="Identifier">re2</span><span class="Punctuation">(</span><span class="RawData">r"(Ⓐ)+"</span><span class="Punctuation">,</span> <span class="Identifier">flags</span><span class="Punctuation">)</span><span class="Punctuation">)</span> +<span class="Identifier">doAssert</span> <span class="Keyword">not</span> <span class="Identifier">match</span><span class="Punctuation">(</span><span class="StringLit">"ⒶⒶ"</span><span class="Punctuation">,</span> <span class="Identifier">re2</span><span class="Punctuation">(</span><span class="RawData">r"Ⓐ+"</span><span class="Punctuation">,</span> <span class="Identifier">flags</span><span class="Punctuation">)</span><span class="Punctuation">)</span> <span class="Comment"># ???</span></pre><p>The last line in the above example won't match because the regex is parsed as a byte sequence. The <tt class="docutils literal"><span class="pre">Ⓐ</span></tt> character is composed of multiple bytes (<tt class="docutils literal"><span class="pre">\xe2\x92\xb6</span></tt>), and only the last byte is affected by the <tt class="docutils literal"><span class="pre">+</span></tt> operator.</p> +</p> + <div class="section" id="6"> +<h1><a class="toc-backref" href="#6">Imports</a></h1> +<dl class="item"> +<a class="reference external" href="regex/types.html">regex/types</a>, <a class="reference external" href="regex/common.html">regex/common</a>, <a class="reference external" href="regex/compiler.html">regex/compiler</a>, <a class="reference external" href="regex/nfatype.html">regex/nfatype</a>, <a class="reference external" href="regex/nfafindall.html">regex/nfafindall</a>, <a class="reference external" href="regex/nfafindall2.html">regex/nfafindall2</a>, <a class="reference external" href="regex/nfamatch.html">regex/nfamatch</a>, <a class="reference external" href="regex/nfamatch2.html">regex/nfamatch2</a>, <a class="reference external" href="regex/litopt.html">regex/litopt</a>, <a class="reference external" href="regex/nfamacro.html">regex/nfamacro</a>, <a class="reference external" href="regex/parser.html">regex/parser</a>, <a class="reference external" href="regex/exptransformation.html">regex/exptransformation</a>, <a class="reference external" href="regex/dotgraph.html">regex/dotgraph</a> +</dl></div> +<div class="section" id="10"> +<h1><a class="toc-backref" href="#10">Consts</a></h1> +<dl class="item"> +<div id="reNonCapture"> +<dt><pre><a href="regex.html#reNonCapture"><span class="Identifier">reNonCapture</span></a> <span class="Other">=</span> <span class="Other">(</span><span class="Identifier">a</span><span class="Other">:</span> <span class="DecNumber">-1</span><span class="Other">,</span> <span class="Identifier">b</span><span class="Other">:</span> <span class="DecNumber">-2</span><span class="Other">)</span></pre></dt> +<dd> + + + +</dd> +</div> + +</dl></div> +<div class="section" id="12"> +<h1><a class="toc-backref" href="#12">Procs</a></h1> +<dl class="item"> +<div id="contains,string,Regex"> +<dt><pre><span class="Keyword">func</span> <a href="#contains%2Cstring%2CRegex"><span class="Identifier">contains</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">pattern</span><span class="Other">:</span> <a href="regex/nfatype.html#Regex"><span class="Identifier">Regex</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">bool</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> + <span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">"use contains(string, Regex2) instead"</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + <div class="deprecation-message"> + <b>Deprecated:</b> use contains(string, Regex2) instead + </div> + + + +</dd> +</div> +<div id="contains,string,Regex2"> +<dt><pre><span class="Keyword">func</span> <a href="#contains%2Cstring%2CRegex2"><span class="Identifier">contains</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">pattern</span><span class="Other">:</span> <a href="regex/nfatype.html#Regex2"><span class="Identifier">Regex2</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">bool</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> + <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + +<p><strong class="examples_text">Example:</strong></p> +<pre class="listing"><span class="Identifier">doAssert</span> <span class="RawData">re2"bc"</span> <span class="Keyword">in</span> <span class="StringLit">"abcd"</span> +<span class="Identifier">doAssert</span> <span class="RawData">re2"(23)+"</span> <span class="Keyword">in</span> <span class="StringLit">"23232"</span> +<span class="Identifier">doAssert</span> <span class="RawData">re2"^(23)+$"</span> <span class="Keyword">notin</span> <span class="StringLit">"23232"</span></pre> + +</dd> +</div> +<div id="endsWith,string,Regex"> +<dt><pre><span class="Keyword">func</span> <a href="#endsWith%2Cstring%2CRegex"><span class="Identifier">endsWith</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">pattern</span><span class="Other">:</span> <a href="regex/nfatype.html#Regex"><span class="Identifier">Regex</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">bool</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> + <span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">"use endsWith(string, Regex2) instead"</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + <div class="deprecation-message"> + <b>Deprecated:</b> use endsWith(string, Regex2) instead + </div> + + + +</dd> +</div> +<div id="endsWith,string,Regex2"> +<dt><pre><span class="Keyword">func</span> <a href="#endsWith%2Cstring%2CRegex2"><span class="Identifier">endsWith</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">pattern</span><span class="Other">:</span> <a href="regex/nfatype.html#Regex2"><span class="Identifier">Regex2</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">bool</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> + <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + +return whether the string ends with the pattern or not +<p><strong class="examples_text">Example:</strong></p> +<pre class="listing"><span class="Identifier">doAssert</span> <span class="StringLit">"abc"</span><span class="Operator">.</span><span class="Identifier">endsWith</span><span class="Punctuation">(</span><span class="RawData">re2"\w"</span><span class="Punctuation">)</span> +<span class="Identifier">doAssert</span> <span class="Keyword">not</span> <span class="StringLit">"abc"</span><span class="Operator">.</span><span class="Identifier">endsWith</span><span class="Punctuation">(</span><span class="RawData">re2"\d"</span><span class="Punctuation">)</span></pre> + +</dd> +</div> +<div id="escapeRe,string"> +<dt><pre><span class="Keyword">func</span> <a href="#escapeRe%2Cstring"><span class="Identifier">escapeRe</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + +Escape special regex characters in <tt class="docutils literal"><span class="pre">s</span></tt> so that it can be matched verbatim + +</dd> +</div> +<div id="find,string,Regex2,RegexMatch2,int"> +<dt><pre><span class="Keyword">func</span> <a href="#find%2Cstring%2CRegex2%2CRegexMatch2%2Cint"><span class="Identifier">find</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">pattern</span><span class="Other">:</span> <a href="regex/nfatype.html#Regex2"><span class="Identifier">Regex2</span></a><span class="Other">;</span> <span class="Identifier">m</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="regex/nfatype.html#RegexMatch2"><span class="Identifier">RegexMatch2</span></a><span class="Other">;</span> <span class="Identifier">start</span> <span class="Other">=</span> <span class="DecNumber">0</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">bool</span> {. + <span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + +search through the string looking for the first location where there is a match +<p><strong class="examples_text">Example:</strong></p> +<pre class="listing"><span class="Keyword">var</span> <span class="Identifier">m</span><span class="Punctuation">:</span> <span class="Identifier">RegexMatch2</span> +<span class="Identifier">doAssert</span> <span class="StringLit">"abcd"</span><span class="Operator">.</span><span class="Identifier">find</span><span class="Punctuation">(</span><span class="RawData">re2"bc"</span><span class="Punctuation">,</span> <span class="Identifier">m</span><span class="Punctuation">)</span> <span class="Keyword">and</span> + <span class="Identifier">m</span><span class="Operator">.</span><span class="Identifier">boundaries</span> <span class="Operator">==</span> <span class="DecNumber">1</span> <span class="Operator">..</span> <span class="DecNumber">2</span> +<span class="Identifier">doAssert</span> <span class="Keyword">not</span> <span class="StringLit">"abcd"</span><span class="Operator">.</span><span class="Identifier">find</span><span class="Punctuation">(</span><span class="RawData">re2"de"</span><span class="Punctuation">,</span> <span class="Identifier">m</span><span class="Punctuation">)</span> +<span class="Identifier">doAssert</span> <span class="StringLit">"2222"</span><span class="Operator">.</span><span class="Identifier">find</span><span class="Punctuation">(</span><span class="RawData">re2"(22)*"</span><span class="Punctuation">,</span> <span class="Identifier">m</span><span class="Punctuation">)</span> <span class="Keyword">and</span> + <span class="Identifier">m</span><span class="Operator">.</span><span class="Identifier">group</span><span class="Punctuation">(</span><span class="DecNumber">0</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">2</span> <span class="Operator">..</span> <span class="DecNumber">3</span></pre> + +</dd> +</div> +<div id="find,string,Regex,RegexMatch,int"> +<dt><pre><span class="Keyword">func</span> <a href="#find%2Cstring%2CRegex%2CRegexMatch%2Cint"><span class="Identifier">find</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">pattern</span><span class="Other">:</span> <a href="regex/nfatype.html#Regex"><span class="Identifier">Regex</span></a><span class="Other">;</span> <span class="Identifier">m</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="regex/nfatype.html#RegexMatch"><span class="Identifier">RegexMatch</span></a><span class="Other">;</span> <span class="Identifier">start</span> <span class="Other">=</span> <span class="DecNumber">0</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">bool</span> {. + <span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> + <span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">"use find(string, Regex2, var RegexMatch2) instead"</span><span class="Other">,</span> + <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + <div class="deprecation-message"> + <b>Deprecated:</b> use find(string, Regex2, var RegexMatch2) instead + </div> + + + +</dd> +</div> +<div id="findAll,string,Regex2,int"> +<dt><pre><span class="Keyword">func</span> <a href="#findAll%2Cstring%2CRegex2%2Cint"><span class="Identifier">findAll</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">pattern</span><span class="Other">:</span> <a href="regex/nfatype.html#Regex2"><span class="Identifier">Regex2</span></a><span class="Other">;</span> <span class="Identifier">start</span> <span class="Other">=</span> <span class="DecNumber">0</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="regex/nfatype.html#RegexMatch2"><span class="Identifier">RegexMatch2</span></a><span class="Other">]</span> {.<span class="Identifier">inline</span><span class="Other">,</span> + <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> +<div id="findAll,string,Regex,int"> +<dt><pre><span class="Keyword">func</span> <a href="#findAll%2Cstring%2CRegex%2Cint"><span class="Identifier">findAll</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">pattern</span><span class="Other">:</span> <a href="regex/nfatype.html#Regex"><span class="Identifier">Regex</span></a><span class="Other">;</span> <span class="Identifier">start</span> <span class="Other">=</span> <span class="DecNumber">0</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="regex/nfatype.html#RegexMatch"><span class="Identifier">RegexMatch</span></a><span class="Other">]</span> {.<span class="Identifier">inline</span><span class="Other">,</span> + <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">"use findAll(string, Regex2) instead"</span><span class="Other">,</span> + <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + <div class="deprecation-message"> + <b>Deprecated:</b> use findAll(string, Regex2) instead + </div> + + + +</dd> +</div> +<div id="findAllBounds,string,Regex2,int"> +<dt><pre><span class="Keyword">func</span> <a href="#findAllBounds%2Cstring%2CRegex2%2Cint"><span class="Identifier">findAllBounds</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">pattern</span><span class="Other">:</span> <a href="regex/nfatype.html#Regex2"><span class="Identifier">Regex2</span></a><span class="Other">;</span> <span class="Identifier">start</span> <span class="Other">=</span> <span class="DecNumber">0</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">Slice</span><span class="Other">[</span><span class="Identifier">int</span><span class="Other">]</span><span class="Other">]</span> {. + <span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> +<div id="findAllBounds,string,Regex,int"> +<dt><pre><span class="Keyword">func</span> <a href="#findAllBounds%2Cstring%2CRegex%2Cint"><span class="Identifier">findAllBounds</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">pattern</span><span class="Other">:</span> <a href="regex/nfatype.html#Regex"><span class="Identifier">Regex</span></a><span class="Other">;</span> <span class="Identifier">start</span> <span class="Other">=</span> <span class="DecNumber">0</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">Slice</span><span class="Other">[</span><span class="Identifier">int</span><span class="Other">]</span><span class="Other">]</span> {. + <span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">"use findAllBounds(string, Regex2) instead"</span><span class="Other">,</span> + <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + <div class="deprecation-message"> + <b>Deprecated:</b> use findAllBounds(string, Regex2) instead + </div> + + + +</dd> +</div> +<div id="findAndCaptureAll,string,Regex"> +<dt><pre><span class="Keyword">func</span> <a href="#findAndCaptureAll%2Cstring%2CRegex"><span class="Identifier">findAndCaptureAll</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">pattern</span><span class="Other">:</span> <a href="regex/nfatype.html#Regex"><span class="Identifier">Regex</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span> {.<span class="Identifier">inline</span><span class="Other">,</span> + <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">"use findAll(string, Regex2) instead"</span><span class="Other">,</span> + <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + <div class="deprecation-message"> + <b>Deprecated:</b> use findAll(string, Regex2) instead + </div> + + + +</dd> +</div> +<div id="group,RegexMatch2,int"> +<dt><pre><span class="Keyword">func</span> <a href="#group%2CRegexMatch2%2Cint"><span class="Identifier">group</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <a href="regex/nfatype.html#RegexMatch2"><span class="Identifier">RegexMatch2</span></a><span class="Other">;</span> <span class="Identifier">i</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Slice</span><span class="Other">[</span><span class="Identifier">int</span><span class="Other">]</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + +return slice for a given group. Slice of start > end are empty matches (i.e.: <tt class="docutils literal"><span class="pre">re2"(\d?)"</span></tt>) and they are included same as in PCRE. +<p><strong class="examples_text">Example:</strong></p> +<pre class="listing"><span class="Keyword">let</span> <span class="Identifier">text</span> <span class="Operator">=</span> <span class="StringLit">"abc"</span> +<span class="Keyword">var</span> <span class="Identifier">m</span><span class="Punctuation">:</span> <span class="Identifier">RegexMatch2</span> +<span class="Identifier">doAssert</span> <span class="Identifier">text</span><span class="Operator">.</span><span class="Identifier">match</span><span class="Punctuation">(</span><span class="RawData">re2"(\w)+"</span><span class="Punctuation">,</span> <span class="Identifier">m</span><span class="Punctuation">)</span> +<span class="Identifier">doAssert</span> <span class="Identifier">text</span><span class="Punctuation">[</span><span class="Identifier">m</span><span class="Operator">.</span><span class="Identifier">group</span><span class="Punctuation">(</span><span class="DecNumber">0</span><span class="Punctuation">)</span><span class="Punctuation">]</span> <span class="Operator">==</span> <span class="StringLit">"c"</span></pre> + +</dd> +</div> +<div id="group,RegexMatch2,string"> +<dt><pre><span class="Keyword">func</span> <a href="#group%2CRegexMatch2%2Cstring"><span class="Identifier">group</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <a href="regex/nfatype.html#RegexMatch2"><span class="Identifier">RegexMatch2</span></a><span class="Other">;</span> <span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Slice</span><span class="Other">[</span><span class="Identifier">int</span><span class="Other">]</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">KeyError</span><span class="Other">]</span><span class="Other">,</span> + <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + +return slices for a given named group +<p><strong class="examples_text">Example:</strong></p> +<pre class="listing"><span class="Keyword">let</span> <span class="Identifier">text</span> <span class="Operator">=</span> <span class="StringLit">"abc"</span> +<span class="Keyword">var</span> <span class="Identifier">m</span><span class="Punctuation">:</span> <span class="Identifier">RegexMatch2</span> +<span class="Identifier">doAssert</span> <span class="Identifier">text</span><span class="Operator">.</span><span class="Identifier">match</span><span class="Punctuation">(</span><span class="RawData">re2"(?P<foo>\w)+"</span><span class="Punctuation">,</span> <span class="Identifier">m</span><span class="Punctuation">)</span> +<span class="Identifier">doAssert</span> <span class="Identifier">text</span><span class="Punctuation">[</span><span class="Identifier">m</span><span class="Operator">.</span><span class="Identifier">group</span><span class="Punctuation">(</span><span class="StringLit">"foo"</span><span class="Punctuation">)</span><span class="Punctuation">]</span> <span class="Operator">==</span> <span class="StringLit">"c"</span></pre> + +</dd> +</div> +<div id="group,RegexMatch,string,string"> +<dt><pre><span class="Keyword">func</span> <a href="#group%2CRegexMatch%2Cstring%2Cstring"><span class="Identifier">group</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <a href="regex/nfatype.html#RegexMatch"><span class="Identifier">RegexMatch</span></a><span class="Other">;</span> <span class="Identifier">groupName</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">text</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span> {. + <span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">KeyError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">deprecated</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + <div class="deprecation-message"> + <b>Deprecated</b> + </div> + + + +</dd> +</div> +<div id="group,RegexMatch,int"> +<dt><pre><span class="Keyword">func</span> <a href="#group%2CRegexMatch%2Cint"><span class="Identifier">group</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <a href="regex/nfatype.html#RegexMatch"><span class="Identifier">RegexMatch</span></a><span class="Other">;</span> <span class="Identifier">i</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">Slice</span><span class="Other">[</span><span class="Identifier">int</span><span class="Other">]</span><span class="Other">]</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> + <span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">"use group(RegexMatch2, int)"</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + <div class="deprecation-message"> + <b>Deprecated:</b> use group(RegexMatch2, int) + </div> + + + +</dd> +</div> +<div id="group,RegexMatch,int,string"> +<dt><pre><span class="Keyword">func</span> <a href="#group%2CRegexMatch%2Cint%2Cstring"><span class="Identifier">group</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <a href="regex/nfatype.html#RegexMatch"><span class="Identifier">RegexMatch</span></a><span class="Other">;</span> <span class="Identifier">i</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">;</span> <span class="Identifier">text</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span> {.<span class="Identifier">inline</span><span class="Other">,</span> + <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">deprecated</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + <div class="deprecation-message"> + <b>Deprecated</b> + </div> + + + +</dd> +</div> +<div id="group,RegexMatch,string"> +<dt><pre><span class="Keyword">func</span> <a href="#group%2CRegexMatch%2Cstring"><span class="Identifier">group</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <a href="regex/nfatype.html#RegexMatch"><span class="Identifier">RegexMatch</span></a><span class="Other">;</span> <span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">Slice</span><span class="Other">[</span><span class="Identifier">int</span><span class="Other">]</span><span class="Other">]</span> {.<span class="Identifier">inline</span><span class="Other">,</span> + <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">KeyError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">"use group(RegexMatch2, string)"</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + <div class="deprecation-message"> + <b>Deprecated:</b> use group(RegexMatch2, string) + </div> + + + +</dd> +</div> +<div id="groupFirstCapture,RegexMatch,string,string"> +<dt><pre><span class="Keyword">func</span> <a href="#groupFirstCapture%2CRegexMatch%2Cstring%2Cstring"><span class="Identifier">groupFirstCapture</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <a href="regex/nfatype.html#RegexMatch"><span class="Identifier">RegexMatch</span></a><span class="Other">;</span> <span class="Identifier">groupName</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">text</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</span> {. + <span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">KeyError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">deprecated</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + <div class="deprecation-message"> + <b>Deprecated</b> + </div> + + + +</dd> +</div> +<div id="groupFirstCapture,RegexMatch,int,string"> +<dt><pre><span class="Keyword">func</span> <a href="#groupFirstCapture%2CRegexMatch%2Cint%2Cstring"><span class="Identifier">groupFirstCapture</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <a href="regex/nfatype.html#RegexMatch"><span class="Identifier">RegexMatch</span></a><span class="Other">;</span> <span class="Identifier">i</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">;</span> <span class="Identifier">text</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</span> {.<span class="Identifier">inline</span><span class="Other">,</span> + <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">deprecated</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + <div class="deprecation-message"> + <b>Deprecated</b> + </div> + + + +</dd> +</div> +<div id="groupLastCapture,RegexMatch,string,string"> +<dt><pre><span class="Keyword">func</span> <a href="#groupLastCapture%2CRegexMatch%2Cstring%2Cstring"><span class="Identifier">groupLastCapture</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <a href="regex/nfatype.html#RegexMatch"><span class="Identifier">RegexMatch</span></a><span class="Other">;</span> <span class="Identifier">groupName</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">text</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</span> {. + <span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">KeyError</span><span class="Other">]</span><span class="Other">,</span> + <span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">"use group(RegexMatch2, string) instead"</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + <div class="deprecation-message"> + <b>Deprecated:</b> use group(RegexMatch2, string) instead + </div> + + + +</dd> +</div> +<div id="groupLastCapture,RegexMatch,int,string"> +<dt><pre><span class="Keyword">func</span> <a href="#groupLastCapture%2CRegexMatch%2Cint%2Cstring"><span class="Identifier">groupLastCapture</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <a href="regex/nfatype.html#RegexMatch"><span class="Identifier">RegexMatch</span></a><span class="Other">;</span> <span class="Identifier">i</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">;</span> <span class="Identifier">text</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</span> {.<span class="Identifier">inline</span><span class="Other">,</span> + <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">"use group(RegexMatch2, int) instead"</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + <div class="deprecation-message"> + <b>Deprecated:</b> use group(RegexMatch2, int) instead + </div> + + + +</dd> +</div> +<div id="groupNames,RegexMatch"> +<dt><pre><span class="Keyword">func</span> <a href="#groupNames%2CRegexMatch"><span class="Identifier">groupNames</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <a href="regex/nfatype.html#RegexMatch"><span class="Identifier">RegexMatch</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> + <span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">"use groupNames(RegexMatch2)"</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + <div class="deprecation-message"> + <b>Deprecated:</b> use groupNames(RegexMatch2) + </div> + + + +</dd> +</div> +<div id="groupNames,RegexMatch2"> +<dt><pre><span class="Keyword">func</span> <a href="#groupNames%2CRegexMatch2"><span class="Identifier">groupNames</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <a href="regex/nfatype.html#RegexMatch2"><span class="Identifier">RegexMatch2</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + +return the names of capturing groups. +<p><strong class="examples_text">Example:</strong></p> +<pre class="listing"><span class="Keyword">let</span> <span class="Identifier">text</span> <span class="Operator">=</span> <span class="StringLit">"hello world"</span> +<span class="Keyword">var</span> <span class="Identifier">m</span><span class="Punctuation">:</span> <span class="Identifier">RegexMatch2</span> +<span class="Identifier">doAssert</span> <span class="Identifier">text</span><span class="Operator">.</span><span class="Identifier">match</span><span class="Punctuation">(</span><span class="RawData">re2"(?P<greet>hello) (?P<who>world)"</span><span class="Punctuation">,</span> <span class="Identifier">m</span><span class="Punctuation">)</span> +<span class="Identifier">doAssert</span> <span class="Identifier">m</span><span class="Operator">.</span><span class="Identifier">groupNames</span> <span class="Operator">==</span> <span class="Operator">@</span><span class="Punctuation">[</span><span class="StringLit">"greet"</span><span class="Punctuation">,</span> <span class="StringLit">"who"</span><span class="Punctuation">]</span></pre> + +</dd> +</div> +<div id="groupsCount,RegexMatch"> +<dt><pre><span class="Keyword">func</span> <a href="#groupsCount%2CRegexMatch"><span class="Identifier">groupsCount</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <a href="regex/nfatype.html#RegexMatch"><span class="Identifier">RegexMatch</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">int</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">"use groupsCount(RegexMatch2)"</span><span class="Other">,</span> + <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + <div class="deprecation-message"> + <b>Deprecated:</b> use groupsCount(RegexMatch2) + </div> + + + +</dd> +</div> +<div id="groupsCount,RegexMatch2"> +<dt><pre><span class="Keyword">func</span> <a href="#groupsCount%2CRegexMatch2"><span class="Identifier">groupsCount</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <a href="regex/nfatype.html#RegexMatch2"><span class="Identifier">RegexMatch2</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">int</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + +return the number of capturing groups +<p><strong class="examples_text">Example:</strong></p> +<pre class="listing"><span class="Keyword">var</span> <span class="Identifier">m</span><span class="Punctuation">:</span> <span class="Identifier">RegexMatch2</span> +<span class="Identifier">doAssert</span> <span class="StringLit">"ab"</span><span class="Operator">.</span><span class="Identifier">match</span><span class="Punctuation">(</span><span class="RawData">re2"(a)(b)"</span><span class="Punctuation">,</span> <span class="Identifier">m</span><span class="Punctuation">)</span> +<span class="Identifier">doAssert</span> <span class="Identifier">m</span><span class="Operator">.</span><span class="Identifier">groupsCount</span> <span class="Operator">==</span> <span class="DecNumber">2</span></pre> + +</dd> +</div> +<div id="isInitialized,Regex"> +<dt><pre><span class="Keyword">func</span> <a href="#isInitialized%2CRegex"><span class="Identifier">isInitialized</span></a><span class="Other">(</span><span class="Identifier">re</span><span class="Other">:</span> <a href="regex/nfatype.html#Regex"><span class="Identifier">Regex</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">bool</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">"use isInitialized(Regex2) instead"</span><span class="Other">,</span> + <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + <div class="deprecation-message"> + <b>Deprecated:</b> use isInitialized(Regex2) instead + </div> + + + +</dd> +</div> +<div id="isInitialized,Regex2"> +<dt><pre><span class="Keyword">func</span> <a href="#isInitialized%2CRegex2"><span class="Identifier">isInitialized</span></a><span class="Other">(</span><span class="Identifier">re</span><span class="Other">:</span> <a href="regex/nfatype.html#Regex2"><span class="Identifier">Regex2</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">bool</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + +Check whether the regex has been initialized +<p><strong class="examples_text">Example:</strong></p> +<pre class="listing"><span class="Keyword">var</span> <span class="Identifier">re</span><span class="Punctuation">:</span> <span class="Identifier">Regex2</span> +<span class="Identifier">doAssert</span> <span class="Keyword">not</span> <span class="Identifier">re</span><span class="Operator">.</span><span class="Identifier">isInitialized</span> +<span class="Identifier">re</span> <span class="Operator">=</span> <span class="RawData">re2"foo"</span> +<span class="Identifier">doAssert</span> <span class="Identifier">re</span><span class="Operator">.</span><span class="Identifier">isInitialized</span></pre> + +</dd> +</div> +<div id="match,string,Regex"> +<dt><pre><span class="Keyword">func</span> <a href="#match%2Cstring%2CRegex"><span class="Identifier">match</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">pattern</span><span class="Other">:</span> <a href="regex/nfatype.html#Regex"><span class="Identifier">Regex</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">bool</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> + <span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">"use match(string, Regex2) instead"</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + <div class="deprecation-message"> + <b>Deprecated:</b> use match(string, Regex2) instead + </div> + + + +</dd> +</div> +<div id="match,string,Regex2"> +<dt><pre><span class="Keyword">func</span> <a href="#match%2Cstring%2CRegex2"><span class="Identifier">match</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">pattern</span><span class="Other">:</span> <a href="regex/nfatype.html#Regex2"><span class="Identifier">Regex2</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">bool</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> + <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> +<div id="match,string,Regex2,RegexMatch2,int"> +<dt><pre><span class="Keyword">func</span> <a href="#match%2Cstring%2CRegex2%2CRegexMatch2%2Cint"><span class="Identifier">match</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">pattern</span><span class="Other">:</span> <a href="regex/nfatype.html#Regex2"><span class="Identifier">Regex2</span></a><span class="Other">;</span> <span class="Identifier">m</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="regex/nfatype.html#RegexMatch2"><span class="Identifier">RegexMatch2</span></a><span class="Other">;</span> <span class="Identifier">start</span> <span class="Other">=</span> <span class="DecNumber">0</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">bool</span> {. + <span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + +return a match if the whole string matches the regular expression. This is similar to <tt class="docutils literal"><span class="pre">find(text, re"^regex$", m)</span></tt> but has better performance +<p><strong class="examples_text">Example:</strong></p> +<pre class="listing"><span class="Keyword">var</span> <span class="Identifier">m</span><span class="Punctuation">:</span> <span class="Identifier">RegexMatch2</span> +<span class="Identifier">doAssert</span> <span class="StringLit">"abcd"</span><span class="Operator">.</span><span class="Identifier">match</span><span class="Punctuation">(</span><span class="RawData">re2"abcd"</span><span class="Punctuation">,</span> <span class="Identifier">m</span><span class="Punctuation">)</span> +<span class="Identifier">doAssert</span> <span class="Keyword">not</span> <span class="StringLit">"abcd"</span><span class="Operator">.</span><span class="Identifier">match</span><span class="Punctuation">(</span><span class="RawData">re2"abc"</span><span class="Punctuation">,</span> <span class="Identifier">m</span><span class="Punctuation">)</span></pre> + +</dd> +</div> +<div id="match,string,Regex,RegexMatch,int"> +<dt><pre><span class="Keyword">func</span> <a href="#match%2Cstring%2CRegex%2CRegexMatch%2Cint"><span class="Identifier">match</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">pattern</span><span class="Other">:</span> <a href="regex/nfatype.html#Regex"><span class="Identifier">Regex</span></a><span class="Other">;</span> <span class="Identifier">m</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="regex/nfatype.html#RegexMatch"><span class="Identifier">RegexMatch</span></a><span class="Other">;</span> <span class="Identifier">start</span> <span class="Other">=</span> <span class="DecNumber">0</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">bool</span> {. + <span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> + <span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">"use match(string, Regex2, var RegexMatch2) instead"</span><span class="Other">,</span> + <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + <div class="deprecation-message"> + <b>Deprecated:</b> use match(string, Regex2, var RegexMatch2) instead + </div> + + + +</dd> +</div> +<div id="re,staticstring"> +<dt><pre><span class="Keyword">func</span> <a href="#re%2Cstaticstring"><span class="Identifier">re</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">static</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">static</span><span class="Other">[</span><a href="regex/nfatype.html#Regex"><span class="Identifier">Regex</span></a><span class="Other">]</span> {.<span class="Identifier">inline</span><span class="Other">,</span> + <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">"use re2(static string) instead"</span></span>.}</pre></dt> +<dd> + <div class="deprecation-message"> + <b>Deprecated:</b> use re2(static string) instead + </div> + + + +</dd> +</div> +<div id="re,string"> +<dt><pre><span class="Keyword">func</span> <a href="#re%2Cstring"><span class="Identifier">re</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <a href="regex/nfatype.html#Regex"><span class="Identifier">Regex</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><a href="regex/common.html#RegexError"><span class="Identifier">RegexError</span></a><span class="Other">]</span><span class="Other">,</span> + <span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">"use re2(string) instead"</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + <div class="deprecation-message"> + <b>Deprecated:</b> use re2(string) instead + </div> + + + +</dd> +</div> +<div id="re2,staticstring,staticRegexFlags"> +<dt><pre><span class="Keyword">func</span> <a href="#re2%2Cstaticstring%2CstaticRegexFlags"><span class="Identifier">re2</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">static</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">flags</span><span class="Other">:</span> <span class="Identifier">static</span> <span class="Identifier">RegexFlags</span> <span class="Other">=</span> <span class="Other">{</span><span class="Other">}</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">static</span><span class="Other">[</span><a href="regex/nfatype.html#Regex2"><span class="Identifier">Regex2</span></a><span class="Other">]</span> {. + <span class="Identifier">inline</span>.}</pre></dt> +<dd> + +Parse and compile a regular expression at compile-time + +</dd> +</div> +<div id="re2,string,RegexFlags"> +<dt><pre><span class="Keyword">func</span> <a href="#re2%2Cstring%2CRegexFlags"><span class="Identifier">re2</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">flags</span><span class="Other">:</span> <a href="regex/types.html#RegexFlags"><span class="Identifier">RegexFlags</span></a> <span class="Other">=</span> <span class="Other">{</span><span class="Other">}</span><span class="Other">)</span><span class="Other">:</span> <a href="regex/nfatype.html#Regex2"><span class="Identifier">Regex2</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><a href="regex/common.html#RegexError"><span class="Identifier">RegexError</span></a><span class="Other">]</span><span class="Other">,</span> + <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + +Parse and compile a regular expression at run-time +<p><strong class="examples_text">Example:</strong></p> +<pre class="listing"><span class="Keyword">let</span> <span class="Identifier">abcx</span> <span class="Operator">=</span> <span class="RawData">re2"abc\w"</span> +<span class="Keyword">let</span> <span class="Identifier">abcx2</span> <span class="Operator">=</span> <span class="Identifier">re2</span><span class="Punctuation">(</span><span class="RawData">r"abc\w"</span><span class="Punctuation">)</span> +<span class="Keyword">let</span> <span class="Identifier">pat</span> <span class="Operator">=</span> <span class="RawData">r"abc\w"</span> +<span class="Keyword">let</span> <span class="Identifier">abcx3</span> <span class="Operator">=</span> <span class="Identifier">re2</span><span class="Punctuation">(</span><span class="Identifier">pat</span><span class="Punctuation">)</span></pre> + +</dd> +</div> +<div id="replace,string,Regex2,proc(RegexMatch2,string),int"> +<dt><pre><span class="Keyword">func</span> <a href="#replace%2Cstring%2CRegex2%2Cproc%28RegexMatch2%2Cstring%29%2Cint"><span class="Identifier">replace</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">pattern</span><span class="Other">:</span> <a href="regex/nfatype.html#Regex2"><span class="Identifier">Regex2</span></a><span class="Other">;</span> + <span class="Identifier">by</span><span class="Other">:</span> <span class="Keyword">proc</span> <span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <a href="regex/nfatype.html#RegexMatch2"><span class="Identifier">RegexMatch2</span></a><span class="Other">;</span> <span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">limit</span> <span class="Other">=</span> <span class="DecNumber">0</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</span> {. + <span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> </span><span class="Identifier">effectsOf</span><span class="Other">:</span> <span class="Identifier">by</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + +<p>Replace matched substrings.</p> +<p>If <tt class="docutils literal"><span class="pre">limit</span></tt> is given, at most <tt class="docutils literal"><span class="pre">limit</span></tt> replacements are done. <tt class="docutils literal"><span class="pre">limit</span></tt> of 0 means there is no limit</p> + +<p><strong class="examples_text">Example:</strong></p> +<pre class="listing"><span class="Keyword">proc</span> <span class="Identifier">removeStars</span><span class="Punctuation">(</span><span class="Identifier">m</span><span class="Punctuation">:</span> <span class="Identifier">RegexMatch2</span><span class="Punctuation">,</span> <span class="Identifier">s</span><span class="Punctuation">:</span> <span class="Identifier">string</span><span class="Punctuation">)</span><span class="Punctuation">:</span> <span class="Identifier">string</span> <span class="Operator">=</span> + <span class="Identifier">result</span> <span class="Operator">=</span> <span class="Identifier">s</span><span class="Punctuation">[</span><span class="Identifier">m</span><span class="Operator">.</span><span class="Identifier">group</span><span class="Punctuation">(</span><span class="DecNumber">0</span><span class="Punctuation">)</span><span class="Punctuation">]</span> + <span class="Keyword">if</span> <span class="Identifier">result</span> <span class="Operator">==</span> <span class="StringLit">"*"</span><span class="Punctuation">:</span> + <span class="Identifier">result</span> <span class="Operator">=</span> <span class="StringLit">""</span> +<span class="Keyword">let</span> <span class="Identifier">text</span> <span class="Operator">=</span> <span class="StringLit">"**this is a test**"</span> +<span class="Identifier">doAssert</span> <span class="Identifier">text</span><span class="Operator">.</span><span class="Identifier">replace</span><span class="Punctuation">(</span><span class="RawData">re2"(\*)"</span><span class="Punctuation">,</span> <span class="Identifier">removeStars</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">"this is a test"</span></pre> + +</dd> +</div> +<div id="replace,string,Regex2,string,int"> +<dt><pre><span class="Keyword">func</span> <a href="#replace%2Cstring%2CRegex2%2Cstring%2Cint"><span class="Identifier">replace</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">pattern</span><span class="Other">:</span> <a href="regex/nfatype.html#Regex2"><span class="Identifier">Regex2</span></a><span class="Other">;</span> <span class="Identifier">by</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">limit</span> <span class="Other">=</span> <span class="DecNumber">0</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</span> {. + <span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">ValueError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + +<p>Replace matched substrings.</p> +<p>Matched groups can be accessed with <tt class="docutils literal"><span class="pre">$N</span></tt> notation, where <tt class="docutils literal"><span class="pre">N</span></tt> is the group's index, starting at 1 (1-indexed). <tt class="docutils literal"><span class="pre">$$</span></tt> means literal <tt class="docutils literal"><span class="pre">$</span></tt>.</p> +<p>If <tt class="docutils literal"><span class="pre">limit</span></tt> is given, at most <tt class="docutils literal"><span class="pre">limit</span></tt> replacements are done. <tt class="docutils literal"><span class="pre">limit</span></tt> of 0 means there is no limit</p> + +<p><strong class="examples_text">Example:</strong></p> +<pre class="listing"><span class="Identifier">doAssert</span> <span class="StringLit">"aaa"</span><span class="Operator">.</span><span class="Identifier">replace</span><span class="Punctuation">(</span><span class="RawData">re2"a"</span><span class="Punctuation">,</span> <span class="StringLit">"b"</span><span class="Punctuation">,</span> <span class="DecNumber">1</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">"baa"</span> +<span class="Identifier">doAssert</span> <span class="StringLit">"abc"</span><span class="Operator">.</span><span class="Identifier">replace</span><span class="Punctuation">(</span><span class="RawData">re2"(a(b)c)"</span><span class="Punctuation">,</span> <span class="StringLit">"m($1) m($2)"</span><span class="Punctuation">)</span> <span class="Operator">==</span> + <span class="StringLit">"m(abc) m(b)"</span> +<span class="Identifier">doAssert</span> <span class="StringLit">"Nim is awesome!"</span><span class="Operator">.</span><span class="Identifier">replace</span><span class="Punctuation">(</span><span class="RawData">re2"(\w\B)"</span><span class="Punctuation">,</span> <span class="StringLit">"$1_"</span><span class="Punctuation">)</span> <span class="Operator">==</span> + <span class="StringLit">"N_i_m i_s a_w_e_s_o_m_e!"</span></pre> + +</dd> +</div> +<div id="replace,string,Regex,proc(RegexMatch,string),int"> +<dt><pre><span class="Keyword">func</span> <a href="#replace%2Cstring%2CRegex%2Cproc%28RegexMatch%2Cstring%29%2Cint"><span class="Identifier">replace</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">pattern</span><span class="Other">:</span> <a href="regex/nfatype.html#Regex"><span class="Identifier">Regex</span></a><span class="Other">;</span> + <span class="Identifier">by</span><span class="Other">:</span> <span class="Keyword">proc</span> <span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <a href="regex/nfatype.html#RegexMatch"><span class="Identifier">RegexMatch</span></a><span class="Other">;</span> <span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">limit</span> <span class="Other">=</span> <span class="DecNumber">0</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</span> {. + <span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> </span><span class="Identifier">effectsOf</span><span class="Other">:</span> <span class="Identifier">by</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">"use replace(string, Regex2, proc(RegexMatch2, string): string) instead"</span><span class="Other">,</span> + <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + <div class="deprecation-message"> + <b>Deprecated:</b> use replace(string, Regex2, proc(RegexMatch2, string): string) instead + </div> + + + +</dd> +</div> +<div id="replace,string,Regex,string,int"> +<dt><pre><span class="Keyword">func</span> <a href="#replace%2Cstring%2CRegex%2Cstring%2Cint"><span class="Identifier">replace</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">pattern</span><span class="Other">:</span> <a href="regex/nfatype.html#Regex"><span class="Identifier">Regex</span></a><span class="Other">;</span> <span class="Identifier">by</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">limit</span> <span class="Other">=</span> <span class="DecNumber">0</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</span> {.<span class="Identifier">inline</span><span class="Other">,</span> + <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">ValueError</span><span class="Other">]</span><span class="Other">,</span> + <span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">"use replace(string, Regex2, string) instead"</span><span class="Other">,</span> + <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + <div class="deprecation-message"> + <b>Deprecated:</b> use replace(string, Regex2, string) instead + </div> + + + +</dd> +</div> +<div id="rex,string"> +<dt><pre><span class="Keyword">func</span> <a href="#rex%2Cstring"><span class="Identifier">rex</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <a href="regex/nfatype.html#RegexLit"><span class="Identifier">RegexLit</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + +Raw regex literal string + +</dd> +</div> +<div id="split,string,Regex"> +<dt><pre><span class="Keyword">func</span> <a href="#split%2Cstring%2CRegex"><span class="Identifier">split</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">sep</span><span class="Other">:</span> <a href="regex/nfatype.html#Regex"><span class="Identifier">Regex</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> + <span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">"use split(string, Regex2) instead"</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + <div class="deprecation-message"> + <b>Deprecated:</b> use split(string, Regex2) instead + </div> + + + +</dd> +</div> +<div id="split,string,Regex2"> +<dt><pre><span class="Keyword">func</span> <a href="#split%2Cstring%2CRegex2"><span class="Identifier">split</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">sep</span><span class="Other">:</span> <a href="regex/nfatype.html#Regex2"><span class="Identifier">Regex2</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> + <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + +return not matched substrings +<p><strong class="examples_text">Example:</strong></p> +<pre class="listing"><span class="Identifier">doAssert</span> <span class="Identifier">split</span><span class="Punctuation">(</span><span class="StringLit">"11a22Ϊ33Ⓐ44弢55"</span><span class="Punctuation">,</span> <span class="RawData">re2"\d+"</span><span class="Punctuation">)</span> <span class="Operator">==</span> + <span class="Operator">@</span><span class="Punctuation">[</span><span class="StringLit">""</span><span class="Punctuation">,</span> <span class="StringLit">"a"</span><span class="Punctuation">,</span> <span class="StringLit">"Ϊ"</span><span class="Punctuation">,</span> <span class="StringLit">"Ⓐ"</span><span class="Punctuation">,</span> <span class="StringLit">"弢"</span><span class="Punctuation">,</span> <span class="StringLit">""</span><span class="Punctuation">]</span></pre> + +</dd> +</div> +<div id="splitIncl,string,Regex"> +<dt><pre><span class="Keyword">func</span> <a href="#splitIncl%2Cstring%2CRegex"><span class="Identifier">splitIncl</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">sep</span><span class="Other">:</span> <a href="regex/nfatype.html#Regex"><span class="Identifier">Regex</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> + <span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">"use splitIncl(string, Regex2) instead"</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + <div class="deprecation-message"> + <b>Deprecated:</b> use splitIncl(string, Regex2) instead + </div> + + + +</dd> +</div> +<div id="splitIncl,string,Regex2"> +<dt><pre><span class="Keyword">func</span> <a href="#splitIncl%2Cstring%2CRegex2"><span class="Identifier">splitIncl</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">sep</span><span class="Other">:</span> <a href="regex/nfatype.html#Regex2"><span class="Identifier">Regex2</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> + <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + +return not matched substrings, including captured groups +<p><strong class="examples_text">Example:</strong></p> +<pre class="listing"><span class="Keyword">let</span> + <span class="Identifier">parts</span> <span class="Operator">=</span> <span class="Identifier">splitIncl</span><span class="Punctuation">(</span><span class="StringLit">"a,b"</span><span class="Punctuation">,</span> <span class="RawData">re2"(,)"</span><span class="Punctuation">)</span> + <span class="Identifier">expected</span> <span class="Operator">=</span> <span class="Operator">@</span><span class="Punctuation">[</span><span class="StringLit">"a"</span><span class="Punctuation">,</span> <span class="StringLit">","</span><span class="Punctuation">,</span> <span class="StringLit">"b"</span><span class="Punctuation">]</span> +<span class="Identifier">doAssert</span> <span class="Identifier">parts</span> <span class="Operator">==</span> <span class="Identifier">expected</span></pre> + +</dd> +</div> +<div id="startsWith,string,Regex2,int"> +<dt><pre><span class="Keyword">func</span> <a href="#startsWith%2Cstring%2CRegex2%2Cint"><span class="Identifier">startsWith</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">pattern</span><span class="Other">:</span> <a href="regex/nfatype.html#Regex2"><span class="Identifier">Regex2</span></a><span class="Other">;</span> <span class="Identifier">start</span> <span class="Other">=</span> <span class="DecNumber">0</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">bool</span> {.<span class="Identifier">inline</span><span class="Other">,</span> + <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + +return whether the string starts with the pattern or not +<p><strong class="examples_text">Example:</strong></p> +<pre class="listing"><span class="Identifier">doAssert</span> <span class="StringLit">"abc"</span><span class="Operator">.</span><span class="Identifier">startsWith</span><span class="Punctuation">(</span><span class="RawData">re2"\w"</span><span class="Punctuation">)</span> +<span class="Identifier">doAssert</span> <span class="Keyword">not</span> <span class="StringLit">"abc"</span><span class="Operator">.</span><span class="Identifier">startsWith</span><span class="Punctuation">(</span><span class="RawData">re2"\d"</span><span class="Punctuation">)</span></pre> + +</dd> +</div> +<div id="startsWith,string,Regex,int"> +<dt><pre><span class="Keyword">func</span> <a href="#startsWith%2Cstring%2CRegex%2Cint"><span class="Identifier">startsWith</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">pattern</span><span class="Other">:</span> <a href="regex/nfatype.html#Regex"><span class="Identifier">Regex</span></a><span class="Other">;</span> <span class="Identifier">start</span> <span class="Other">=</span> <span class="DecNumber">0</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">bool</span> {.<span class="Identifier">inline</span><span class="Other">,</span> + <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">"use startsWith(string, Regex2) instead"</span><span class="Other">,</span> + <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + <div class="deprecation-message"> + <b>Deprecated:</b> use startsWith(string, Regex2) instead + </div> + + + +</dd> +</div> +<div id="toPattern,string"> +<dt><pre><span class="Keyword">func</span> <a href="#toPattern%2Cstring"><span class="Identifier">toPattern</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <a href="regex/nfatype.html#Regex"><span class="Identifier">Regex</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><a href="regex/common.html#RegexError"><span class="Identifier">RegexError</span></a><span class="Other">]</span><span class="Other">,</span> + <span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">"Use `re2(string)` instead"</span><span class="Other">,</span> + <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + <div class="deprecation-message"> + <b>Deprecated:</b> Use `re2(string)` instead + </div> + + + +</dd> +</div> + +</dl></div> +<div class="section" id="15"> +<h1><a class="toc-backref" href="#15">Iterators</a></h1> +<dl class="item"> +<div id="findAll.i,string,Regex2,int"> +<dt><pre><span class="Keyword">iterator</span> <a href="#findAll.i%2Cstring%2CRegex2%2Cint"><span class="Identifier">findAll</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">pattern</span><span class="Other">:</span> <a href="regex/nfatype.html#Regex2"><span class="Identifier">Regex2</span></a><span class="Other">;</span> <span class="Identifier">start</span> <span class="Other">=</span> <span class="DecNumber">0</span><span class="Other">)</span><span class="Other">:</span> <a href="regex/nfatype.html#RegexMatch2"><span class="Identifier">RegexMatch2</span></a> {.<span class="Identifier">inline</span><span class="Other">,</span> + <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + +search through the string and return each match. Empty matches (start > end) are included +<p><strong class="examples_text">Example:</strong></p> +<pre class="listing"><span class="Keyword">let</span> <span class="Identifier">text</span> <span class="Operator">=</span> <span class="StringLit">"abcabc"</span> +<span class="Keyword">var</span> <span class="Identifier">bounds</span> <span class="Operator">=</span> <span class="Identifier">newSeq</span><span class="Punctuation">[</span><span class="Identifier">Slice</span><span class="Punctuation">[</span><span class="Identifier">int</span><span class="Punctuation">]</span><span class="Punctuation">]</span><span class="Punctuation">(</span><span class="Punctuation">)</span> +<span class="Keyword">var</span> <span class="Identifier">found</span> <span class="Operator">=</span> <span class="Identifier">newSeq</span><span class="Punctuation">[</span><span class="Identifier">string</span><span class="Punctuation">]</span><span class="Punctuation">(</span><span class="Punctuation">)</span> +<span class="Keyword">for</span> <span class="Identifier">m</span> <span class="Keyword">in</span> <span class="Identifier">findAll</span><span class="Punctuation">(</span><span class="Identifier">text</span><span class="Punctuation">,</span> <span class="RawData">re2"bc"</span><span class="Punctuation">)</span><span class="Punctuation">:</span> + <span class="Identifier">bounds</span><span class="Operator">.</span><span class="Identifier">add</span> <span class="Identifier">m</span><span class="Operator">.</span><span class="Identifier">boundaries</span> + <span class="Identifier">found</span><span class="Operator">.</span><span class="Identifier">add</span> <span class="Identifier">text</span><span class="Punctuation">[</span><span class="Identifier">m</span><span class="Operator">.</span><span class="Identifier">boundaries</span><span class="Punctuation">]</span> +<span class="Identifier">doAssert</span> <span class="Identifier">bounds</span> <span class="Operator">==</span> <span class="Operator">@</span><span class="Punctuation">[</span><span class="DecNumber">1</span> <span class="Operator">..</span> <span class="DecNumber">2</span><span class="Punctuation">,</span> <span class="DecNumber">4</span> <span class="Operator">..</span> <span class="DecNumber">5</span><span class="Punctuation">]</span> +<span class="Identifier">doAssert</span> <span class="Identifier">found</span> <span class="Operator">==</span> <span class="Operator">@</span><span class="Punctuation">[</span><span class="StringLit">"bc"</span><span class="Punctuation">,</span> <span class="StringLit">"bc"</span><span class="Punctuation">]</span></pre> + +</dd> +</div> +<div id="findAll.i,string,Regex,int"> +<dt><pre><span class="Keyword">iterator</span> <a href="#findAll.i%2Cstring%2CRegex%2Cint"><span class="Identifier">findAll</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">pattern</span><span class="Other">:</span> <a href="regex/nfatype.html#Regex"><span class="Identifier">Regex</span></a><span class="Other">;</span> <span class="Identifier">start</span> <span class="Other">=</span> <span class="DecNumber">0</span><span class="Other">)</span><span class="Other">:</span> <a href="regex/nfatype.html#RegexMatch"><span class="Identifier">RegexMatch</span></a> {.<span class="Identifier">inline</span><span class="Other">,</span> + <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">"use findAll(string, Regex2) instead"</span><span class="Other">,</span> + <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + <div class="deprecation-message"> + <b>Deprecated:</b> use findAll(string, Regex2) instead + </div> + + + +</dd> +</div> +<div id="findAllBounds.i,string,Regex2,int"> +<dt><pre><span class="Keyword">iterator</span> <a href="#findAllBounds.i%2Cstring%2CRegex2%2Cint"><span class="Identifier">findAllBounds</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">pattern</span><span class="Other">:</span> <a href="regex/nfatype.html#Regex2"><span class="Identifier">Regex2</span></a><span class="Other">;</span> <span class="Identifier">start</span> <span class="Other">=</span> <span class="DecNumber">0</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Slice</span><span class="Other">[</span><span class="Identifier">int</span><span class="Other">]</span> {. + <span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + +search through the string and return each match. Empty matches (start > end) are included +<p><strong class="examples_text">Example:</strong></p> +<pre class="listing"><span class="Keyword">let</span> <span class="Identifier">text</span> <span class="Operator">=</span> <span class="StringLit">"abcabc"</span> +<span class="Keyword">var</span> <span class="Identifier">bounds</span> <span class="Operator">=</span> <span class="Identifier">newSeq</span><span class="Punctuation">[</span><span class="Identifier">Slice</span><span class="Punctuation">[</span><span class="Identifier">int</span><span class="Punctuation">]</span><span class="Punctuation">]</span><span class="Punctuation">(</span><span class="Punctuation">)</span> +<span class="Keyword">for</span> <span class="Identifier">bd</span> <span class="Keyword">in</span> <span class="Identifier">findAllBounds</span><span class="Punctuation">(</span><span class="Identifier">text</span><span class="Punctuation">,</span> <span class="RawData">re2"bc"</span><span class="Punctuation">)</span><span class="Punctuation">:</span> + <span class="Identifier">bounds</span><span class="Operator">.</span><span class="Identifier">add</span> <span class="Identifier">bd</span> +<span class="Identifier">doAssert</span> <span class="Identifier">bounds</span> <span class="Operator">==</span> <span class="Operator">@</span><span class="Punctuation">[</span><span class="DecNumber">1</span> <span class="Operator">..</span> <span class="DecNumber">2</span><span class="Punctuation">,</span> <span class="DecNumber">4</span> <span class="Operator">..</span> <span class="DecNumber">5</span><span class="Punctuation">]</span></pre> + +</dd> +</div> +<div id="findAllBounds.i,string,Regex,int"> +<dt><pre><span class="Keyword">iterator</span> <a href="#findAllBounds.i%2Cstring%2CRegex%2Cint"><span class="Identifier">findAllBounds</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">pattern</span><span class="Other">:</span> <a href="regex/nfatype.html#Regex"><span class="Identifier">Regex</span></a><span class="Other">;</span> <span class="Identifier">start</span> <span class="Other">=</span> <span class="DecNumber">0</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Slice</span><span class="Other">[</span><span class="Identifier">int</span><span class="Other">]</span> {. + <span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">"use findAllBounds(string, Regex2) instead"</span><span class="Other">,</span> + <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + <div class="deprecation-message"> + <b>Deprecated:</b> use findAllBounds(string, Regex2) instead + </div> + + + +</dd> +</div> +<div id="group.i,RegexMatch,int"> +<dt><pre><span class="Keyword">iterator</span> <a href="#group.i%2CRegexMatch%2Cint"><span class="Identifier">group</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <a href="regex/nfatype.html#RegexMatch"><span class="Identifier">RegexMatch</span></a><span class="Other">;</span> <span class="Identifier">i</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Slice</span><span class="Other">[</span><span class="Identifier">int</span><span class="Other">]</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> + <span class="Identifier">deprecated</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + <div class="deprecation-message"> + <b>Deprecated</b> + </div> + + + +</dd> +</div> +<div id="group.i,RegexMatch,string"> +<dt><pre><span class="Keyword">iterator</span> <a href="#group.i%2CRegexMatch%2Cstring"><span class="Identifier">group</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <a href="regex/nfatype.html#RegexMatch"><span class="Identifier">RegexMatch</span></a><span class="Other">;</span> <span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Slice</span><span class="Other">[</span><span class="Identifier">int</span><span class="Other">]</span> {.<span class="Identifier">inline</span><span class="Other">,</span> + <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">KeyError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">deprecated</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + <div class="deprecation-message"> + <b>Deprecated</b> + </div> + + + +</dd> +</div> +<div id="split.i,string,Regex"> +<dt><pre><span class="Keyword">iterator</span> <a href="#split.i%2Cstring%2CRegex"><span class="Identifier">split</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">sep</span><span class="Other">:</span> <a href="regex/nfatype.html#Regex"><span class="Identifier">Regex</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> + <span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">"use split(string, Regex2) instead"</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + <div class="deprecation-message"> + <b>Deprecated:</b> use split(string, Regex2) instead + </div> + + + +</dd> +</div> +<div id="split.i,string,Regex2"> +<dt><pre><span class="Keyword">iterator</span> <a href="#split.i%2Cstring%2CRegex2"><span class="Identifier">split</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">sep</span><span class="Other">:</span> <a href="regex/nfatype.html#Regex2"><span class="Identifier">Regex2</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> + <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + +return not matched substrings +<p><strong class="examples_text">Example:</strong></p> +<pre class="listing"><span class="Keyword">var</span> <span class="Identifier">found</span> <span class="Operator">=</span> <span class="Identifier">newSeq</span><span class="Punctuation">[</span><span class="Identifier">string</span><span class="Punctuation">]</span><span class="Punctuation">(</span><span class="Punctuation">)</span> +<span class="Keyword">for</span> <span class="Identifier">s</span> <span class="Keyword">in</span> <span class="Identifier">split</span><span class="Punctuation">(</span><span class="StringLit">"11a22Ϊ33Ⓐ44弢55"</span><span class="Punctuation">,</span> <span class="RawData">re2"\d+"</span><span class="Punctuation">)</span><span class="Punctuation">:</span> + <span class="Identifier">found</span><span class="Operator">.</span><span class="Identifier">add</span> <span class="Identifier">s</span> +<span class="Identifier">doAssert</span> <span class="Identifier">found</span> <span class="Operator">==</span> <span class="Operator">@</span><span class="Punctuation">[</span><span class="StringLit">""</span><span class="Punctuation">,</span> <span class="StringLit">"a"</span><span class="Punctuation">,</span> <span class="StringLit">"Ϊ"</span><span class="Punctuation">,</span> <span class="StringLit">"Ⓐ"</span><span class="Punctuation">,</span> <span class="StringLit">"弢"</span><span class="Punctuation">,</span> <span class="StringLit">""</span><span class="Punctuation">]</span></pre> + +</dd> +</div> + +</dl></div> +<div class="section" id="17"> +<h1><a class="toc-backref" href="#17">Macros</a></h1> +<dl class="item"> +<div id="match.m,string,RegexLit,untyped"> +<dt><pre><span class="Keyword">macro</span> <a href="#match.m%2Cstring%2CRegexLit%2Cuntyped"><span class="Identifier">match</span></a><span class="Other">(</span><span class="Identifier">text</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">regex</span><span class="Other">:</span> <a href="regex/nfatype.html#RegexLit"><span class="Identifier">RegexLit</span></a><span class="Other">;</span> <span class="Identifier">body</span><span class="Other">:</span> <span class="Identifier">untyped</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">untyped</span></pre></dt> +<dd> + +<p>return a match if the whole string matches the regular expression. This is similar to the <tt class="docutils literal"><span class="pre">match</span></tt> function, but faster. Notice it requires a raw regex <em>literal</em> string as second parameter; the regex must be known at compile time, and cannot be a var/let/const</p> +<p>A <tt class="docutils literal"><span class="pre">matches: seq[string]</span></tt> variable is injected into the scope, and it contains the submatches for every capture group. If a group is repeated (ex: <tt class="docutils literal"><span class="pre"><span class="Punctuation">(</span><span class="Operator">\\</span><span class="Identifier">w</span><span class="Punctuation">)</span><span class="Operator">+</span></span></tt>), it will contain the last capture for that group.</p> +<p>Note: Only available in Nim +1.1</p> + +<p><strong class="examples_text">Example:</strong></p> +<pre class="listing"><span class="Identifier">match</span> <span class="StringLit">"abc"</span><span class="Punctuation">,</span> <span class="RawData">rex"(a(b)c)"</span><span class="Punctuation">:</span> + <span class="Identifier">doAssert</span> <span class="Identifier">matches</span> <span class="Operator">==</span> <span class="Operator">@</span><span class="Punctuation">[</span><span class="StringLit">"abc"</span><span class="Punctuation">,</span> <span class="StringLit">"b"</span><span class="Punctuation">]</span></pre> + +</dd> +</div> + +</dl></div> +<div class="section" id="19"> +<h1><a class="toc-backref" href="#19">Exports</a></h1> +<dl class="item"> +<a href="regex/nfatype.html#RegexLit"><span class="Identifier">RegexLit</span></a>, <a href="regex/nfatype.html#Regex"><span class="Identifier">Regex</span></a>, <a href="regex/nfatype.html#Regex2"><span class="Identifier">Regex2</span></a>, <a href="regex/nfatype.html#RegexMatch"><span class="Identifier">RegexMatch</span></a>, <a href="regex/nfatype.html#RegexMatch2"><span class="Identifier">RegexMatch2</span></a>, <a href="regex/types.html#RegexFlag"><span class="Identifier">RegexFlag</span></a>, <a href="regex/types.html#RegexFlags"><span class="Identifier">RegexFlags</span></a>, <a href="regex/common.html#RegexError"><span class="Identifier">RegexError</span></a> +</dl></div> + + </div> +</div> + + <div class="row"> + <div class="twelve-columns footer"> + <span class="nim-sprite"></span> + <br/> + <small style="color: var(--hint);">Made with Nim. Generated: 2024-01-06 00:35:17 UTC</small> + </div> + </div> + </div> +</div> + +</body> +</html> diff --git a/regex.idx b/regex.idx new file mode 100644 index 00000000..e25edbd4 --- /dev/null +++ b/regex.idx @@ -0,0 +1,78 @@ +reNonCapture regex.html#reNonCapture regex: reNonCapture +rex regex.html#rex,string regex: rex(s: string): RegexLit +re2 regex.html#re2,string,RegexFlags regex: re2(s: string; flags: RegexFlags = {}): Regex2 +re2 regex.html#re2,staticstring,staticRegexFlags regex: re2(s: static string; flags: static RegexFlags = {}): static[Regex2] +group regex.html#group,RegexMatch2,int regex: group(m: RegexMatch2; i: int): Slice[int] +group regex.html#group,RegexMatch2,string regex: group(m: RegexMatch2; s: string): Slice[int] +groupsCount regex.html#groupsCount,RegexMatch2 regex: groupsCount(m: RegexMatch2): int +groupNames regex.html#groupNames,RegexMatch2 regex: groupNames(m: RegexMatch2): seq[string] +match regex.html#match.m,string,RegexLit,untyped regex: match(text: string; regex: RegexLit; body: untyped): untyped +match regex.html#match,string,Regex2,RegexMatch2,int regex: match(s: string; pattern: Regex2; m: var RegexMatch2; start = 0): bool +match regex.html#match,string,Regex2 regex: match(s: string; pattern: Regex2): bool +findAll regex.html#findAll.i,string,Regex2,int regex: findAll(s: string; pattern: Regex2; start = 0): RegexMatch2 +findAll regex.html#findAll,string,Regex2,int regex: findAll(s: string; pattern: Regex2; start = 0): seq[RegexMatch2] +findAllBounds regex.html#findAllBounds.i,string,Regex2,int regex: findAllBounds(s: string; pattern: Regex2; start = 0): Slice[int] +findAllBounds regex.html#findAllBounds,string,Regex2,int regex: findAllBounds(s: string; pattern: Regex2; start = 0): seq[Slice[int]] +find regex.html#find,string,Regex2,RegexMatch2,int regex: find(s: string; pattern: Regex2; m: var RegexMatch2; start = 0): bool +contains regex.html#contains,string,Regex2 regex: contains(s: string; pattern: Regex2): bool +split regex.html#split.i,string,Regex2 regex: split(s: string; sep: Regex2): string +split regex.html#split,string,Regex2 regex: split(s: string; sep: Regex2): seq[string] +splitIncl regex.html#splitIncl,string,Regex2 regex: splitIncl(s: string; sep: Regex2): seq[string] +startsWith regex.html#startsWith,string,Regex2,int regex: startsWith(s: string; pattern: Regex2; start = 0): bool +endsWith regex.html#endsWith,string,Regex2 regex: endsWith(s: string; pattern: Regex2): bool +replace regex.html#replace,string,Regex2,string,int regex: replace(s: string; pattern: Regex2; by: string; limit = 0): string +replace regex.html#replace,string,Regex2,proc(RegexMatch2,string),int regex: replace(s: string; pattern: Regex2;\n by: proc (m: RegexMatch2; s: string): string; limit = 0): string +isInitialized regex.html#isInitialized,Regex2 regex: isInitialized(re: Regex2): bool +escapeRe regex.html#escapeRe,string regex: escapeRe(s: string): string +re regex.html#re,string regex: re(s: string): Regex +re regex.html#re,staticstring regex: re(s: static string): static[Regex] +toPattern regex.html#toPattern,string regex: toPattern(s: string): Regex +group regex.html#group.i,RegexMatch,int regex: group(m: RegexMatch; i: int): Slice[int] +group regex.html#group,RegexMatch,int regex: group(m: RegexMatch; i: int): seq[Slice[int]] +group regex.html#group,RegexMatch,int,string regex: group(m: RegexMatch; i: int; text: string): seq[string] +groupFirstCapture regex.html#groupFirstCapture,RegexMatch,int,string regex: groupFirstCapture(m: RegexMatch; i: int; text: string): string +groupLastCapture regex.html#groupLastCapture,RegexMatch,int,string regex: groupLastCapture(m: RegexMatch; i: int; text: string): string +group regex.html#group.i,RegexMatch,string regex: group(m: RegexMatch; s: string): Slice[int] +group regex.html#group,RegexMatch,string regex: group(m: RegexMatch; s: string): seq[Slice[int]] +group regex.html#group,RegexMatch,string,string regex: group(m: RegexMatch; groupName: string; text: string): seq[string] +groupFirstCapture regex.html#groupFirstCapture,RegexMatch,string,string regex: groupFirstCapture(m: RegexMatch; groupName: string; text: string): string +groupLastCapture regex.html#groupLastCapture,RegexMatch,string,string regex: groupLastCapture(m: RegexMatch; groupName: string; text: string): string +groupsCount regex.html#groupsCount,RegexMatch regex: groupsCount(m: RegexMatch): int +groupNames regex.html#groupNames,RegexMatch regex: groupNames(m: RegexMatch): seq[string] +match regex.html#match,string,Regex,RegexMatch,int regex: match(s: string; pattern: Regex; m: var RegexMatch; start = 0): bool +match regex.html#match,string,Regex regex: match(s: string; pattern: Regex): bool +findAll regex.html#findAll.i,string,Regex,int regex: findAll(s: string; pattern: Regex; start = 0): RegexMatch +findAll regex.html#findAll,string,Regex,int regex: findAll(s: string; pattern: Regex; start = 0): seq[RegexMatch] +findAllBounds regex.html#findAllBounds.i,string,Regex,int regex: findAllBounds(s: string; pattern: Regex; start = 0): Slice[int] +findAllBounds regex.html#findAllBounds,string,Regex,int regex: findAllBounds(s: string; pattern: Regex; start = 0): seq[Slice[int]] +findAndCaptureAll regex.html#findAndCaptureAll,string,Regex regex: findAndCaptureAll(s: string; pattern: Regex): seq[string] +contains regex.html#contains,string,Regex regex: contains(s: string; pattern: Regex): bool +find regex.html#find,string,Regex,RegexMatch,int regex: find(s: string; pattern: Regex; m: var RegexMatch; start = 0): bool +split regex.html#split.i,string,Regex regex: split(s: string; sep: Regex): string +split regex.html#split,string,Regex regex: split(s: string; sep: Regex): seq[string] +splitIncl regex.html#splitIncl,string,Regex regex: splitIncl(s: string; sep: Regex): seq[string] +startsWith regex.html#startsWith,string,Regex,int regex: startsWith(s: string; pattern: Regex; start = 0): bool +endsWith regex.html#endsWith,string,Regex regex: endsWith(s: string; pattern: Regex): bool +replace regex.html#replace,string,Regex,string,int regex: replace(s: string; pattern: Regex; by: string; limit = 0): string +replace regex.html#replace,string,Regex,proc(RegexMatch,string),int regex: replace(s: string; pattern: Regex; by: proc (m: RegexMatch; s: string): string;\n limit = 0): string +isInitialized regex.html#isInitialized,Regex regex: isInitialized(re: Regex): bool +Syntax regex.html#syntax Syntax +Matching one character regex.html#syntax-matching-one-character Matching one character +Character classes regex.html#syntax-character-classes Character classes +Composites regex.html#syntax-composites Composites +Repetitions regex.html#syntax-repetitions Repetitions +Empty matches regex.html#syntax-empty-matches Empty matches +Grouping and flags regex.html#syntax-grouping-and-flags Grouping and flags +Escape sequences regex.html#syntax-escape-sequences Escape sequences +Perl character classes (Unicode friendly) regex.html#syntax-perl-character-classes-unicode-friendly Perl character classes (Unicode friendly) +ASCII character classes regex.html#syntax-ascii-character-classes ASCII character classes +Lookaround Assertions regex.html#syntax-lookaround-assertions Lookaround Assertions +Examples regex.html#examples Examples +Match regex.html#examples-match Match +Captures regex.html#examples-captures Captures +Find regex.html#examples-find Find +Find All regex.html#examples-find-all Find All +Verbose Mode regex.html#examples-verbose-mode Verbose Mode +Match Macro regex.html#examples-match-macro Match Macro +Invalid UTF-8 input text regex.html#examples-invalid-utfminus8-input-text Invalid UTF-8 input text +Match arbitrary bytes regex.html#examples-match-arbitrary-bytes Match arbitrary bytes diff --git a/regex/.keep b/regex/.keep new file mode 100644 index 00000000..5396b838 --- /dev/null +++ b/regex/.keep @@ -0,0 +1 @@ +#keep \ No newline at end of file diff --git a/regex/common.html b/regex/common.html new file mode 100644 index 00000000..678823d0 --- /dev/null +++ b/regex/common.html @@ -0,0 +1,301 @@ +<?xml version="1.0" encoding="utf-8" ?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!-- This file is generated by Nim. --> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + +<meta name="viewport" content="width=device-width, initial-scale=1.0"> + +<!-- Favicon --> +<link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA=="/> +<link rel="icon" type="image/png" sizes="32x32" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QQQEwksSS9ZWwAAAk1JREFUWMPtll2ITVEUx39nn/O7Y5qR8f05wtCUUr6ZIS++8pEnkZInPImneaCQ5METNdOkeFBKUhMPRIkHKfEuUZSUlGlKPN2TrgfncpvmnntnmlEyq1Z7t89/rf9a6+y99oZxGZf/XeIq61EdtgKXgdXA0xrYAvBjOIF1AI9zvjcC74BSpndrJPkBWDScTF8Aa4E3wDlgHbASaANmVqlcCnwHvgDvgVfAJ+AikAAvgfVZwLnSVZHZaOuKoQi3ZOMi4NkYkpe1p4J7A8BpYAD49hfIy/oqG0+hLomiKP2L5L+1ubn5115S+3OAn4EnwBlgMzCjyt6ZAnQCJ4A7wOs88iRJHvw50HoujuPBoCKwHWiosy8MdfZnAdcHk8dxXFJ3VQbQlCTJvRBCGdRbD4M6uc5glpY3eAihpN5S5w12diSEcCCEcKUO4ljdr15T76ur1FDDLIQQ3qv71EdDOe3Kxj3leRXyk+pxdWnFWod6Wt2bY3de3aSuUHcPBVimHs7mK9WrmeOF6lR1o9qnzskh2ar2qm1qizpfXaPeVGdlmGN5pb09qMxz1Xb1kLqgzn1RyH7JUXW52lr5e/Kqi9qpto7V1atuUzfnARrV7jEib1T76gG2qxdGmXyiekkt1GswPTtek0aBfJp6YySGBfWg2tPQ0FAYgf1stUfdmdcjarbYJEniKIq6gY/Aw+zWHAC+p2labGpqiorFYgGYCEzN7oQdQClN07O1/EfDyGgC0ALMBdYAi4FyK+4H3gLPsxfR1zRNi+NP7nH5J+QntnXe5B5mpfQAAAAASUVORK5CYII="> + +<!-- Google fonts --> +<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/> +<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/> + +<!-- CSS --> +<title>src/regex/common</title> +<link rel="stylesheet" type="text/css" href="../nimdoc.out.css"> + +<script type="text/javascript" src="../dochack.js"></script> + +<script type="text/javascript"> +function main() { + var pragmaDots = document.getElementsByClassName("pragmadots"); + for (var i = 0; i < pragmaDots.length; i++) { + pragmaDots[i].onclick = function(event) { + // Hide tease + event.target.parentNode.style.display = "none"; + // Show actual + event.target.parentNode.nextElementSibling.style.display = "inline"; + } + } + + function switchTheme(e) { + if (e.target.checked) { + document.documentElement.setAttribute('data-theme', 'dark'); + localStorage.setItem('theme', 'dark'); + } else { + document.documentElement.setAttribute('data-theme', 'light'); + localStorage.setItem('theme', 'light'); + } + } + + const toggleSwitch = document.querySelector('.theme-switch input[type="checkbox"]'); + if (toggleSwitch !== null) { + toggleSwitch.addEventListener('change', switchTheme, false); + } + + var currentTheme = localStorage.getItem('theme'); + if (!currentTheme && window.matchMedia('(prefers-color-scheme: dark)').matches) { + currentTheme = 'dark'; + } + if (currentTheme) { + document.documentElement.setAttribute('data-theme', currentTheme); + + if (currentTheme === 'dark' && toggleSwitch !== null) { + toggleSwitch.checked = true; + } + } +} + +window.addEventListener('DOMContentLoaded', main); +</script> + +</head> +<body> +<div class="document" id="documentId"> + <div class="container"> + <h1 class="title">src/regex/common</h1> + <div class="row"> + <div class="three columns"> + <div class="theme-switch-wrapper"> + <label class="theme-switch" for="checkbox"> + <input type="checkbox" id="checkbox" /> + <div class="slider round"></div> + </label> + <em>Dark Mode</em> + </div> + <div id="global-links"> + <ul class="simple"> + <li> + <a href="../theindex.html">Index</a> + </li> + </ul> + </div> + <div id="searchInputDiv"> + Search: <input type="text" id="searchInput" + onkeyup="search()" /> + </div> + <div> + Group by: + <select onchange="groupBy(this.value)"> + <option value="section">Section</option> + <option value="type">Type</option> + </select> + </div> + <ul class="simple simple-toc" id="toc-list"> +<li> + <a class="reference reference-toplevel" href="#7" id="57">Types</a> + <ul class="simple simple-toc-section"> + <li><a class="reference" href="#RegexError" + title="RegexError = object of ValueError">RegexError</a></li> + + </ul> +</li> +<li> + <a class="reference reference-toplevel" href="#10" id="60">Consts</a> + <ul class="simple simple-toc-section"> + <li><a class="reference" href="#invalidRune" + title="invalidRune = -1'i32">invalidRune</a></li> + <li><a class="reference" href="#lineBreakRune" + title="lineBreakRune = 10'i32">lineBreakRune</a></li> + + </ul> +</li> +<li> + <a class="reference reference-toplevel" href="#12" id="62">Procs</a> + <ul class="simple simple-toc-section"> + <ul class="simple nested-toc-section">%% + <li><a class="reference" href="#%25%25%2Cstring%2CopenArray%5Bstring%5D" + title="`%%`(formatstr: string; a: openArray[string]): string">`%%`(formatstr: string; a: openArray[string]): string</a></li> + <li><a class="reference" href="#%25%25%2Cstring%2Cstring" + title="`%%`(formatstr: string; a: string): string">`%%`(formatstr: string; a: string): string</a></li> + + </ul> + <ul class="simple nested-toc-section"><= + <li><a class="reference" href="#%3C%3D%2CRune%2CRune" + title="`<=`(x, y: Rune): bool">`<=`(x, y: Rune): bool</a></li> + + </ul> + <ul class="simple nested-toc-section">bwRuneAt + <li><a class="reference" href="#bwRuneAt%2Cstring%2Cint" + title="bwRuneAt(s: string; n: int): Rune">bwRuneAt(s: string; n: int): Rune</a></li> + + </ul> + <ul class="simple nested-toc-section">cmp + <li><a class="reference" href="#cmp%2CRune%2CRune" + title="cmp(x, y: Rune): int">cmp(x, y: Rune): int</a></li> + + </ul> + <ul class="simple nested-toc-section">toRune + <li><a class="reference" href="#toRune%2Cstring" + title="toRune(s: string): Rune">toRune(s: string): Rune</a></li> + + </ul> + <ul class="simple nested-toc-section">verifyUtf8 + <li><a class="reference" href="#verifyUtf8%2Cstring" + title="verifyUtf8(s: string): int">verifyUtf8(s: string): int</a></li> + + </ul> + + </ul> +</li> +<li> + <a class="reference reference-toplevel" href="#18" id="68">Templates</a> + <ul class="simple simple-toc-section"> + <ul class="simple nested-toc-section">bwFastRuneAt + <li><a class="reference" href="#bwFastRuneAt.t%2Cstring%2Cint%2CRune" + title="bwFastRuneAt(s: string; n: var int; result: var Rune): untyped">bwFastRuneAt(s: string; n: var int; result: var Rune): untyped</a></li> + + </ul> + + </ul> +</li> + +</ul> + + </div> + + <div class="nine columns" id="content"> + <div id="tocRoot"></div> + + <p class="module-desc"></p> + <div class="section" id="7"> +<h1><a class="toc-backref" href="#7">Types</a></h1> +<dl class="item"> +<div id="RegexError"> +<dt><pre><a href="common.html#RegexError"><span class="Identifier">RegexError</span></a> <span class="Other">=</span> <span class="Keyword">object</span> <span class="Keyword">of</span> <span class="Identifier">ValueError</span></pre></dt> +<dd> + + + +</dd> +</div> + +</dl></div> +<div class="section" id="10"> +<h1><a class="toc-backref" href="#10">Consts</a></h1> +<dl class="item"> +<div id="invalidRune"> +<dt><pre><a href="common.html#invalidRune"><span class="Identifier">invalidRune</span></a> <span class="Other">=</span> <span class="DecNumber">-1'i32</span></pre></dt> +<dd> + + + +</dd> +</div> +<div id="lineBreakRune"> +<dt><pre><a href="common.html#lineBreakRune"><span class="Identifier">lineBreakRune</span></a> <span class="Other">=</span> <span class="DecNumber">10'i32</span></pre></dt> +<dd> + + + +</dd> +</div> + +</dl></div> +<div class="section" id="12"> +<h1><a class="toc-backref" href="#12">Procs</a></h1> +<dl class="item"> +<div id="%%,string,openArray[string]"> +<dt><pre><span class="Keyword">proc</span> <a href="#%25%25%2Cstring%2CopenArray%5Bstring%5D"><span class="Identifier">`%%`</span></a><span class="Other">(</span><span class="Identifier">formatstr</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">a</span><span class="Other">:</span> <span class="Identifier">openArray</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</span> {.<span class="Identifier">noSideEffect</span><span class="Other">,</span> + <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + +same as <tt class="docutils literal"><span class="pre">"$#" % ["foo"]</span></tt> but returns empty string on error + +</dd> +</div> +<div id="%%,string,string"> +<dt><pre><span class="Keyword">proc</span> <a href="#%25%25%2Cstring%2Cstring"><span class="Identifier">`%%`</span></a><span class="Other">(</span><span class="Identifier">formatstr</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">a</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> +<div id="<=,Rune,Rune"> +<dt><pre><span class="Keyword">proc</span> <a href="#%3C%3D%2CRune%2CRune"><span class="Identifier">`<=`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <span class="Identifier">Rune</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">bool</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> +<div id="bwRuneAt,string,int"> +<dt><pre><span class="Keyword">func</span> <a href="#bwRuneAt%2Cstring%2Cint"><span class="Identifier">bwRuneAt</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">n</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Rune</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + +Take rune ending at <tt class="docutils literal"><span class="pre">n</span></tt> + +</dd> +</div> +<div id="cmp,Rune,Rune"> +<dt><pre><span class="Keyword">proc</span> <a href="#cmp%2CRune%2CRune"><span class="Identifier">cmp</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <span class="Identifier">Rune</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">int</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> +<div id="toRune,string"> +<dt><pre><span class="Keyword">proc</span> <a href="#toRune%2Cstring"><span class="Identifier">toRune</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Rune</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> +<div id="verifyUtf8,string"> +<dt><pre><span class="Keyword">func</span> <a href="#verifyUtf8%2Cstring"><span class="Identifier">verifyUtf8</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">int</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + +Return <tt class="docutils literal"><span class="pre"><span class="Operator">-</span><span class="DecNumber">1</span></span></tt> if <tt class="docutils literal"><span class="pre"><span class="Identifier">s</span></span></tt> is a valid utf-8 string. Otherwise, return the index of the first bad char. + +</dd> +</div> + +</dl></div> +<div class="section" id="18"> +<h1><a class="toc-backref" href="#18">Templates</a></h1> +<dl class="item"> +<div id="bwFastRuneAt.t,string,int,Rune"> +<dt><pre><span class="Keyword">template</span> <a href="#bwFastRuneAt.t%2Cstring%2Cint%2CRune"><span class="Identifier">bwFastRuneAt</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">n</span><span class="Other">:</span> <span class="Keyword">var</span> <span class="Identifier">int</span><span class="Other">;</span> <span class="Identifier">result</span><span class="Other">:</span> <span class="Keyword">var</span> <span class="Identifier">Rune</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">untyped</span></pre></dt> +<dd> + +Take rune ending at <tt class="docutils literal"><span class="pre">n</span></tt> + +</dd> +</div> + +</dl></div> + + </div> +</div> + + <div class="row"> + <div class="twelve-columns footer"> + <span class="nim-sprite"></span> + <br/> + <small style="color: var(--hint);">Made with Nim. Generated: 2024-01-06 00:35:00 UTC</small> + </div> + </div> + </div> +</div> + +</body> +</html> diff --git a/regex/common.idx b/regex/common.idx new file mode 100644 index 00000000..d14f207a --- /dev/null +++ b/regex/common.idx @@ -0,0 +1,11 @@ +RegexError regex/common.html#RegexError common: RegexError +invalidRune regex/common.html#invalidRune common: invalidRune +lineBreakRune regex/common.html#lineBreakRune common: lineBreakRune +toRune regex/common.html#toRune,string common: toRune(s: string): Rune +`<=` regex/common.html#<=,Rune,Rune common: `<=`(x, y: Rune): bool +cmp regex/common.html#cmp,Rune,Rune common: cmp(x, y: Rune): int +bwRuneAt regex/common.html#bwRuneAt,string,int common: bwRuneAt(s: string; n: int): Rune +bwFastRuneAt regex/common.html#bwFastRuneAt.t,string,int,Rune common: bwFastRuneAt(s: string; n: var int; result: var Rune): untyped +`%%` regex/common.html#%%,string,openArray[string] common: `%%`(formatstr: string; a: openArray[string]): string +`%%` regex/common.html#%%,string,string common: `%%`(formatstr: string; a: string): string +verifyUtf8 regex/common.html#verifyUtf8,string common: verifyUtf8(s: string): int diff --git a/regex/compiler.html b/regex/compiler.html new file mode 100644 index 00000000..c39eb775 --- /dev/null +++ b/regex/compiler.html @@ -0,0 +1,175 @@ +<?xml version="1.0" encoding="utf-8" ?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!-- This file is generated by Nim. --> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + +<meta name="viewport" content="width=device-width, initial-scale=1.0"> + +<!-- Favicon --> +<link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA=="/> +<link rel="icon" type="image/png" sizes="32x32" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QQQEwksSS9ZWwAAAk1JREFUWMPtll2ITVEUx39nn/O7Y5qR8f05wtCUUr6ZIS++8pEnkZInPImneaCQ5METNdOkeFBKUhMPRIkHKfEuUZSUlGlKPN2TrgfncpvmnntnmlEyq1Z7t89/rf9a6+y99oZxGZf/XeIq61EdtgKXgdXA0xrYAvBjOIF1AI9zvjcC74BSpndrJPkBWDScTF8Aa4E3wDlgHbASaANmVqlcCnwHvgDvgVfAJ+AikAAvgfVZwLnSVZHZaOuKoQi3ZOMi4NkYkpe1p4J7A8BpYAD49hfIy/oqG0+hLomiKP2L5L+1ubn5115S+3OAn4EnwBlgMzCjyt6ZAnQCJ4A7wOs88iRJHvw50HoujuPBoCKwHWiosy8MdfZnAdcHk8dxXFJ3VQbQlCTJvRBCGdRbD4M6uc5glpY3eAihpN5S5w12diSEcCCEcKUO4ljdr15T76ur1FDDLIQQ3qv71EdDOe3Kxj3leRXyk+pxdWnFWod6Wt2bY3de3aSuUHcPBVimHs7mK9WrmeOF6lR1o9qnzskh2ar2qm1qizpfXaPeVGdlmGN5pb09qMxz1Xb1kLqgzn1RyH7JUXW52lr5e/Kqi9qpto7V1atuUzfnARrV7jEib1T76gG2qxdGmXyiekkt1GswPTtek0aBfJp6YySGBfWg2tPQ0FAYgf1stUfdmdcjarbYJEniKIq6gY/Aw+zWHAC+p2labGpqiorFYgGYCEzN7oQdQClN07O1/EfDyGgC0ALMBdYAi4FyK+4H3gLPsxfR1zRNi+NP7nH5J+QntnXe5B5mpfQAAAAASUVORK5CYII="> + +<!-- Google fonts --> +<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/> +<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/> + +<!-- CSS --> +<title>src/regex/compiler</title> +<link rel="stylesheet" type="text/css" href="../nimdoc.out.css"> + +<script type="text/javascript" src="../dochack.js"></script> + +<script type="text/javascript"> +function main() { + var pragmaDots = document.getElementsByClassName("pragmadots"); + for (var i = 0; i < pragmaDots.length; i++) { + pragmaDots[i].onclick = function(event) { + // Hide tease + event.target.parentNode.style.display = "none"; + // Show actual + event.target.parentNode.nextElementSibling.style.display = "inline"; + } + } + + function switchTheme(e) { + if (e.target.checked) { + document.documentElement.setAttribute('data-theme', 'dark'); + localStorage.setItem('theme', 'dark'); + } else { + document.documentElement.setAttribute('data-theme', 'light'); + localStorage.setItem('theme', 'light'); + } + } + + const toggleSwitch = document.querySelector('.theme-switch input[type="checkbox"]'); + if (toggleSwitch !== null) { + toggleSwitch.addEventListener('change', switchTheme, false); + } + + var currentTheme = localStorage.getItem('theme'); + if (!currentTheme && window.matchMedia('(prefers-color-scheme: dark)').matches) { + currentTheme = 'dark'; + } + if (currentTheme) { + document.documentElement.setAttribute('data-theme', currentTheme); + + if (currentTheme === 'dark' && toggleSwitch !== null) { + toggleSwitch.checked = true; + } + } +} + +window.addEventListener('DOMContentLoaded', main); +</script> + +</head> +<body> +<div class="document" id="documentId"> + <div class="container"> + <h1 class="title">src/regex/compiler</h1> + <div class="row"> + <div class="three columns"> + <div class="theme-switch-wrapper"> + <label class="theme-switch" for="checkbox"> + <input type="checkbox" id="checkbox" /> + <div class="slider round"></div> + </label> + <em>Dark Mode</em> + </div> + <div id="global-links"> + <ul class="simple"> + <li> + <a href="../theindex.html">Index</a> + </li> + </ul> + </div> + <div id="searchInputDiv"> + Search: <input type="text" id="searchInput" + onkeyup="search()" /> + </div> + <div> + Group by: + <select onchange="groupBy(this.value)"> + <option value="section">Section</option> + <option value="type">Type</option> + </select> + </div> + <ul class="simple simple-toc" id="toc-list"> +<li> + <a class="reference reference-toplevel" href="#6" id="56">Imports</a> + <ul class="simple simple-toc-section"> + + </ul> +</li> +<li> + <a class="reference reference-toplevel" href="#12" id="62">Procs</a> + <ul class="simple simple-toc-section"> + <ul class="simple nested-toc-section">reCt + <li><a class="reference" href="#reCt%2Cstring%2CRegexFlags" + title="reCt(s: string; flags: RegexFlags = {}): Regex">reCt(s: string; flags: RegexFlags = {}): Regex</a></li> + + </ul> + <ul class="simple nested-toc-section">reImpl + <li><a class="reference" href="#reImpl%2Cstring%2CRegexFlags" + title="reImpl(s: string; flags: RegexFlags = {}): Regex">reImpl(s: string; flags: RegexFlags = {}): Regex</a></li> + + </ul> + + </ul> +</li> + +</ul> + + </div> + + <div class="nine columns" id="content"> + <div id="tocRoot"></div> + + <p class="module-desc"></p> + <div class="section" id="6"> +<h1><a class="toc-backref" href="#6">Imports</a></h1> +<dl class="item"> +<a class="reference external" href="common.html">common</a>, <a class="reference external" href="parser.html">parser</a>, <a class="reference external" href="exptransformation.html">exptransformation</a>, <a class="reference external" href="types.html">types</a>, <a class="reference external" href="nfatype.html">nfatype</a>, <a class="reference external" href="nfa.html">nfa</a>, <a class="reference external" href="litopt.html">litopt</a> +</dl></div> +<div class="section" id="12"> +<h1><a class="toc-backref" href="#12">Procs</a></h1> +<dl class="item"> +<div id="reCt,string,RegexFlags"> +<dt><pre><span class="Keyword">func</span> <a href="#reCt%2Cstring%2CRegexFlags"><span class="Identifier">reCt</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">flags</span><span class="Other">:</span> <a href="types.html#RegexFlags"><span class="Identifier">RegexFlags</span></a> <span class="Other">=</span> <span class="Other">{</span><span class="Other">}</span><span class="Other">)</span><span class="Other">:</span> <a href="nfatype.html#Regex"><span class="Identifier">Regex</span></a> {.<span class="Identifier">compileTime</span><span class="Other">,</span> + <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RegexError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> +<div id="reImpl,string,RegexFlags"> +<dt><pre><span class="Keyword">func</span> <a href="#reImpl%2Cstring%2CRegexFlags"><span class="Identifier">reImpl</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">flags</span><span class="Other">:</span> <a href="types.html#RegexFlags"><span class="Identifier">RegexFlags</span></a> <span class="Other">=</span> <span class="Other">{</span><span class="Other">}</span><span class="Other">)</span><span class="Other">:</span> <a href="nfatype.html#Regex"><span class="Identifier">Regex</span></a> {.<span class="Identifier">inline</span><span class="Other">,</span> + <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RegexError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> + +</dl></div> + + </div> +</div> + + <div class="row"> + <div class="twelve-columns footer"> + <span class="nim-sprite"></span> + <br/> + <small style="color: var(--hint);">Made with Nim. Generated: 2024-01-06 00:35:00 UTC</small> + </div> + </div> + </div> +</div> + +</body> +</html> diff --git a/regex/compiler.idx b/regex/compiler.idx new file mode 100644 index 00000000..d1675bb5 --- /dev/null +++ b/regex/compiler.idx @@ -0,0 +1,2 @@ +reImpl regex/compiler.html#reImpl,string,RegexFlags compiler: reImpl(s: string; flags: RegexFlags = {}): Regex +reCt regex/compiler.html#reCt,string,RegexFlags compiler: reCt(s: string; flags: RegexFlags = {}): Regex diff --git a/regex/dotgraph.html b/regex/dotgraph.html new file mode 100644 index 00000000..e657bd4b --- /dev/null +++ b/regex/dotgraph.html @@ -0,0 +1,183 @@ +<?xml version="1.0" encoding="utf-8" ?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!-- This file is generated by Nim. --> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + +<meta name="viewport" content="width=device-width, initial-scale=1.0"> + +<!-- Favicon --> +<link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA=="/> +<link rel="icon" type="image/png" sizes="32x32" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QQQEwksSS9ZWwAAAk1JREFUWMPtll2ITVEUx39nn/O7Y5qR8f05wtCUUr6ZIS++8pEnkZInPImneaCQ5METNdOkeFBKUhMPRIkHKfEuUZSUlGlKPN2TrgfncpvmnntnmlEyq1Z7t89/rf9a6+y99oZxGZf/XeIq61EdtgKXgdXA0xrYAvBjOIF1AI9zvjcC74BSpndrJPkBWDScTF8Aa4E3wDlgHbASaANmVqlcCnwHvgDvgVfAJ+AikAAvgfVZwLnSVZHZaOuKoQi3ZOMi4NkYkpe1p4J7A8BpYAD49hfIy/oqG0+hLomiKP2L5L+1ubn5115S+3OAn4EnwBlgMzCjyt6ZAnQCJ4A7wOs88iRJHvw50HoujuPBoCKwHWiosy8MdfZnAdcHk8dxXFJ3VQbQlCTJvRBCGdRbD4M6uc5glpY3eAihpN5S5w12diSEcCCEcKUO4ljdr15T76ur1FDDLIQQ3qv71EdDOe3Kxj3leRXyk+pxdWnFWod6Wt2bY3de3aSuUHcPBVimHs7mK9WrmeOF6lR1o9qnzskh2ar2qm1qizpfXaPeVGdlmGN5pb09qMxz1Xb1kLqgzn1RyH7JUXW52lr5e/Kqi9qpto7V1atuUzfnARrV7jEib1T76gG2qxdGmXyiekkt1GswPTtek0aBfJp6YySGBfWg2tPQ0FAYgf1stUfdmdcjarbYJEniKIq6gY/Aw+zWHAC+p2labGpqiorFYgGYCEzN7oQdQClN07O1/EfDyGgC0ALMBdYAi4FyK+4H3gLPsxfR1zRNi+NP7nH5J+QntnXe5B5mpfQAAAAASUVORK5CYII="> + +<!-- Google fonts --> +<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/> +<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/> + +<!-- CSS --> +<title>src/regex/dotgraph</title> +<link rel="stylesheet" type="text/css" href="../nimdoc.out.css"> + +<script type="text/javascript" src="../dochack.js"></script> + +<script type="text/javascript"> +function main() { + var pragmaDots = document.getElementsByClassName("pragmadots"); + for (var i = 0; i < pragmaDots.length; i++) { + pragmaDots[i].onclick = function(event) { + // Hide tease + event.target.parentNode.style.display = "none"; + // Show actual + event.target.parentNode.nextElementSibling.style.display = "inline"; + } + } + + function switchTheme(e) { + if (e.target.checked) { + document.documentElement.setAttribute('data-theme', 'dark'); + localStorage.setItem('theme', 'dark'); + } else { + document.documentElement.setAttribute('data-theme', 'light'); + localStorage.setItem('theme', 'light'); + } + } + + const toggleSwitch = document.querySelector('.theme-switch input[type="checkbox"]'); + if (toggleSwitch !== null) { + toggleSwitch.addEventListener('change', switchTheme, false); + } + + var currentTheme = localStorage.getItem('theme'); + if (!currentTheme && window.matchMedia('(prefers-color-scheme: dark)').matches) { + currentTheme = 'dark'; + } + if (currentTheme) { + document.documentElement.setAttribute('data-theme', currentTheme); + + if (currentTheme === 'dark' && toggleSwitch !== null) { + toggleSwitch.checked = true; + } + } +} + +window.addEventListener('DOMContentLoaded', main); +</script> + +</head> +<body> +<div class="document" id="documentId"> + <div class="container"> + <h1 class="title">src/regex/dotgraph</h1> + <div class="row"> + <div class="three columns"> + <div class="theme-switch-wrapper"> + <label class="theme-switch" for="checkbox"> + <input type="checkbox" id="checkbox" /> + <div class="slider round"></div> + </label> + <em>Dark Mode</em> + </div> + <div id="global-links"> + <ul class="simple"> + <li> + <a href="../theindex.html">Index</a> + </li> + </ul> + </div> + <div id="searchInputDiv"> + Search: <input type="text" id="searchInput" + onkeyup="search()" /> + </div> + <div> + Group by: + <select onchange="groupBy(this.value)"> + <option value="section">Section</option> + <option value="type">Type</option> + </select> + </div> + <ul class="simple simple-toc" id="toc-list"> +<li> + <a class="reference reference-toplevel" href="#6" id="56">Imports</a> + <ul class="simple simple-toc-section"> + + </ul> +</li> +<li> + <a class="reference reference-toplevel" href="#12" id="62">Procs</a> + <ul class="simple simple-toc-section"> + <ul class="simple nested-toc-section">graph + <li><a class="reference" href="#graph%2CNfa" + title="graph(nfa: Nfa): string">graph(nfa: Nfa): string</a></li> + <li><a class="reference" href="#graph%2CRegex" + title="graph(regex: Regex): string">graph(regex: Regex): string</a></li> + + </ul> + <ul class="simple nested-toc-section">graphToFile + <li><a class="reference" href="#graphToFile%2CRegex%2Cstring" + title="graphToFile(regex: Regex; dir: string)">graphToFile(regex: Regex; dir: string)</a></li> + + </ul> + + </ul> +</li> + +</ul> + + </div> + + <div class="nine columns" id="content"> + <div id="tocRoot"></div> + + <p class="module-desc"></p> + <div class="section" id="6"> +<h1><a class="toc-backref" href="#6">Imports</a></h1> +<dl class="item"> +<a class="reference external" href="nfatype.html">nfatype</a>, <a class="reference external" href="types.html">types</a> +</dl></div> +<div class="section" id="12"> +<h1><a class="toc-backref" href="#12">Procs</a></h1> +<dl class="item"> +<div id="graph,Nfa"> +<dt><pre><span class="Keyword">func</span> <a href="#graph%2CNfa"><span class="Identifier">graph</span></a><span class="Other">(</span><span class="Identifier">nfa</span><span class="Other">:</span> <a href="types.html#Nfa"><span class="Identifier">Nfa</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> +<div id="graph,Regex"> +<dt><pre><span class="Keyword">func</span> <a href="#graph%2CRegex"><span class="Identifier">graph</span></a><span class="Other">(</span><span class="Identifier">regex</span><span class="Other">:</span> <a href="nfatype.html#Regex"><span class="Identifier">Regex</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> +<div id="graphToFile,Regex,string"> +<dt><pre><span class="Keyword">func</span> <a href="#graphToFile%2CRegex%2Cstring"><span class="Identifier">graphToFile</span></a><span class="Other">(</span><span class="Identifier">regex</span><span class="Other">:</span> <a href="nfatype.html#Regex"><span class="Identifier">Regex</span></a><span class="Other">;</span> <span class="Identifier">dir</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">WriteIOEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> + +</dl></div> + + </div> +</div> + + <div class="row"> + <div class="twelve-columns footer"> + <span class="nim-sprite"></span> + <br/> + <small style="color: var(--hint);">Made with Nim. Generated: 2024-01-06 00:35:01 UTC</small> + </div> + </div> + </div> +</div> + +</body> +</html> diff --git a/regex/dotgraph.idx b/regex/dotgraph.idx new file mode 100644 index 00000000..72f49b1a --- /dev/null +++ b/regex/dotgraph.idx @@ -0,0 +1,3 @@ +graph regex/dotgraph.html#graph,Nfa dotgraph: graph(nfa: Nfa): string +graph regex/dotgraph.html#graph,Regex dotgraph: graph(regex: Regex): string +graphToFile regex/dotgraph.html#graphToFile,Regex,string dotgraph: graphToFile(regex: Regex; dir: string) diff --git a/regex/exptransformation.html b/regex/exptransformation.html new file mode 100644 index 00000000..eb3319a1 --- /dev/null +++ b/regex/exptransformation.html @@ -0,0 +1,201 @@ +<?xml version="1.0" encoding="utf-8" ?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!-- This file is generated by Nim. --> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + +<meta name="viewport" content="width=device-width, initial-scale=1.0"> + +<!-- Favicon --> +<link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA=="/> +<link rel="icon" type="image/png" sizes="32x32" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QQQEwksSS9ZWwAAAk1JREFUWMPtll2ITVEUx39nn/O7Y5qR8f05wtCUUr6ZIS++8pEnkZInPImneaCQ5METNdOkeFBKUhMPRIkHKfEuUZSUlGlKPN2TrgfncpvmnntnmlEyq1Z7t89/rf9a6+y99oZxGZf/XeIq61EdtgKXgdXA0xrYAvBjOIF1AI9zvjcC74BSpndrJPkBWDScTF8Aa4E3wDlgHbASaANmVqlcCnwHvgDvgVfAJ+AikAAvgfVZwLnSVZHZaOuKoQi3ZOMi4NkYkpe1p4J7A8BpYAD49hfIy/oqG0+hLomiKP2L5L+1ubn5115S+3OAn4EnwBlgMzCjyt6ZAnQCJ4A7wOs88iRJHvw50HoujuPBoCKwHWiosy8MdfZnAdcHk8dxXFJ3VQbQlCTJvRBCGdRbD4M6uc5glpY3eAihpN5S5w12diSEcCCEcKUO4ljdr15T76ur1FDDLIQQ3qv71EdDOe3Kxj3leRXyk+pxdWnFWod6Wt2bY3de3aSuUHcPBVimHs7mK9WrmeOF6lR1o9qnzskh2ar2qm1qizpfXaPeVGdlmGN5pb09qMxz1Xb1kLqgzn1RyH7JUXW52lr5e/Kqi9qpto7V1atuUzfnARrV7jEib1T76gG2qxdGmXyiekkt1GswPTtek0aBfJp6YySGBfWg2tPQ0FAYgf1stUfdmdcjarbYJEniKIq6gY/Aw+zWHAC+p2labGpqiorFYgGYCEzN7oQdQClN07O1/EfDyGgC0ALMBdYAi4FyK+4H3gLPsxfR1zRNi+NP7nH5J+QntnXe5B5mpfQAAAAASUVORK5CYII="> + +<!-- Google fonts --> +<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/> +<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/> + +<!-- CSS --> +<title>src/regex/exptransformation</title> +<link rel="stylesheet" type="text/css" href="../nimdoc.out.css"> + +<script type="text/javascript" src="../dochack.js"></script> + +<script type="text/javascript"> +function main() { + var pragmaDots = document.getElementsByClassName("pragmadots"); + for (var i = 0; i < pragmaDots.length; i++) { + pragmaDots[i].onclick = function(event) { + // Hide tease + event.target.parentNode.style.display = "none"; + // Show actual + event.target.parentNode.nextElementSibling.style.display = "inline"; + } + } + + function switchTheme(e) { + if (e.target.checked) { + document.documentElement.setAttribute('data-theme', 'dark'); + localStorage.setItem('theme', 'dark'); + } else { + document.documentElement.setAttribute('data-theme', 'light'); + localStorage.setItem('theme', 'light'); + } + } + + const toggleSwitch = document.querySelector('.theme-switch input[type="checkbox"]'); + if (toggleSwitch !== null) { + toggleSwitch.addEventListener('change', switchTheme, false); + } + + var currentTheme = localStorage.getItem('theme'); + if (!currentTheme && window.matchMedia('(prefers-color-scheme: dark)').matches) { + currentTheme = 'dark'; + } + if (currentTheme) { + document.documentElement.setAttribute('data-theme', currentTheme); + + if (currentTheme === 'dark' && toggleSwitch !== null) { + toggleSwitch.checked = true; + } + } +} + +window.addEventListener('DOMContentLoaded', main); +</script> + +</head> +<body> +<div class="document" id="documentId"> + <div class="container"> + <h1 class="title">src/regex/exptransformation</h1> + <div class="row"> + <div class="three columns"> + <div class="theme-switch-wrapper"> + <label class="theme-switch" for="checkbox"> + <input type="checkbox" id="checkbox" /> + <div class="slider round"></div> + </label> + <em>Dark Mode</em> + </div> + <div id="global-links"> + <ul class="simple"> + <li> + <a href="../theindex.html">Index</a> + </li> + </ul> + </div> + <div id="searchInputDiv"> + Search: <input type="text" id="searchInput" + onkeyup="search()" /> + </div> + <div> + Group by: + <select onchange="groupBy(this.value)"> + <option value="section">Section</option> + <option value="type">Type</option> + </select> + </div> + <ul class="simple simple-toc" id="toc-list"> +<li> + <a class="reference reference-toplevel" href="#6" id="56">Imports</a> + <ul class="simple simple-toc-section"> + + </ul> +</li> +<li> + <a class="reference reference-toplevel" href="#7" id="57">Types</a> + <ul class="simple simple-toc-section"> + <li><a class="reference" href="#GroupsCapture" + title="GroupsCapture = object + count*: int16 + names*: OrderedTable[string, int16]">GroupsCapture</a></li> + + </ul> +</li> +<li> + <a class="reference reference-toplevel" href="#12" id="62">Procs</a> + <ul class="simple simple-toc-section"> + <ul class="simple nested-toc-section">toAtoms + <li><a class="reference" href="#toAtoms%2CExp%2CGroupsCapture%2CRegexFlags" + title="toAtoms(exp: Exp; groups: var GroupsCapture; flags: RegexFlags = {}): AtomsExp">toAtoms(exp: Exp; groups: var GroupsCapture; flags: RegexFlags = {}): AtomsExp</a></li> + + </ul> + <ul class="simple nested-toc-section">transformExp + <li><a class="reference" href="#transformExp%2CExp%2CGroupsCapture%2CRegexFlags" + title="transformExp(exp: Exp; groups: var GroupsCapture; flags: RegexFlags = {}): RpnExp">transformExp(exp: Exp; groups: var GroupsCapture; flags: RegexFlags = {}): RpnExp</a></li> + + </ul> + + </ul> +</li> + +</ul> + + </div> + + <div class="nine columns" id="content"> + <div id="tocRoot"></div> + + <p class="module-desc"></p> + <div class="section" id="6"> +<h1><a class="toc-backref" href="#6">Imports</a></h1> +<dl class="item"> +<a class="reference external" href="exptype.html">exptype</a>, <a class="reference external" href="types.html">types</a>, <a class="reference external" href="common.html">common</a>, <a class="reference external" href="scanner.html">scanner</a> +</dl></div> +<div class="section" id="7"> +<h1><a class="toc-backref" href="#7">Types</a></h1> +<dl class="item"> +<div id="GroupsCapture"> +<dt><pre><a href="exptransformation.html#GroupsCapture"><span class="Identifier">GroupsCapture</span></a> <span class="Other">=</span> <span class="Keyword">object</span> + <span class="Identifier">count</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">int16</span> + <span class="Identifier">names</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">OrderedTable</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">,</span> <span class="Identifier">int16</span><span class="Other">]</span> +</pre></dt> +<dd> + + + +</dd> +</div> + +</dl></div> +<div class="section" id="12"> +<h1><a class="toc-backref" href="#12">Procs</a></h1> +<dl class="item"> +<div id="toAtoms,Exp,GroupsCapture,RegexFlags"> +<dt><pre><span class="Keyword">func</span> <a href="#toAtoms%2CExp%2CGroupsCapture%2CRegexFlags"><span class="Identifier">toAtoms</span></a><span class="Other">(</span><span class="Identifier">exp</span><span class="Other">:</span> <a href="exptype.html#Exp"><span class="Identifier">Exp</span></a><span class="Other">;</span> <span class="Identifier">groups</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="exptransformation.html#GroupsCapture"><span class="Identifier">GroupsCapture</span></a><span class="Other">;</span> <span class="Identifier">flags</span><span class="Other">:</span> <a href="types.html#RegexFlags"><span class="Identifier">RegexFlags</span></a> <span class="Other">=</span> <span class="Other">{</span><span class="Other">}</span><span class="Other">)</span><span class="Other">:</span> <a href="exptype.html#AtomsExp"><span class="Identifier">AtomsExp</span></a> {. + <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RegexError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> +<div id="transformExp,Exp,GroupsCapture,RegexFlags"> +<dt><pre><span class="Keyword">func</span> <a href="#transformExp%2CExp%2CGroupsCapture%2CRegexFlags"><span class="Identifier">transformExp</span></a><span class="Other">(</span><span class="Identifier">exp</span><span class="Other">:</span> <a href="exptype.html#Exp"><span class="Identifier">Exp</span></a><span class="Other">;</span> <span class="Identifier">groups</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="exptransformation.html#GroupsCapture"><span class="Identifier">GroupsCapture</span></a><span class="Other">;</span> <span class="Identifier">flags</span><span class="Other">:</span> <a href="types.html#RegexFlags"><span class="Identifier">RegexFlags</span></a> <span class="Other">=</span> <span class="Other">{</span><span class="Other">}</span><span class="Other">)</span><span class="Other">:</span> <a href="types.html#RpnExp"><span class="Identifier">RpnExp</span></a> {. + <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RegexError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> + +</dl></div> + + </div> +</div> + + <div class="row"> + <div class="twelve-columns footer"> + <span class="nim-sprite"></span> + <br/> + <small style="color: var(--hint);">Made with Nim. Generated: 2024-01-06 00:35:00 UTC</small> + </div> + </div> + </div> +</div> + +</body> +</html> diff --git a/regex/exptransformation.idx b/regex/exptransformation.idx new file mode 100644 index 00000000..4355703c --- /dev/null +++ b/regex/exptransformation.idx @@ -0,0 +1,3 @@ +GroupsCapture regex/exptransformation.html#GroupsCapture exptransformation: GroupsCapture +toAtoms regex/exptransformation.html#toAtoms,Exp,GroupsCapture,RegexFlags exptransformation: toAtoms(exp: Exp; groups: var GroupsCapture; flags: RegexFlags = {}): AtomsExp +transformExp regex/exptransformation.html#transformExp,Exp,GroupsCapture,RegexFlags exptransformation: transformExp(exp: Exp; groups: var GroupsCapture; flags: RegexFlags = {}): RpnExp diff --git a/regex/exptype.html b/regex/exptype.html new file mode 100644 index 00000000..bfb243dd --- /dev/null +++ b/regex/exptype.html @@ -0,0 +1,173 @@ +<?xml version="1.0" encoding="utf-8" ?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!-- This file is generated by Nim. --> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + +<meta name="viewport" content="width=device-width, initial-scale=1.0"> + +<!-- Favicon --> +<link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA=="/> +<link rel="icon" type="image/png" sizes="32x32" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QQQEwksSS9ZWwAAAk1JREFUWMPtll2ITVEUx39nn/O7Y5qR8f05wtCUUr6ZIS++8pEnkZInPImneaCQ5METNdOkeFBKUhMPRIkHKfEuUZSUlGlKPN2TrgfncpvmnntnmlEyq1Z7t89/rf9a6+y99oZxGZf/XeIq61EdtgKXgdXA0xrYAvBjOIF1AI9zvjcC74BSpndrJPkBWDScTF8Aa4E3wDlgHbASaANmVqlcCnwHvgDvgVfAJ+AikAAvgfVZwLnSVZHZaOuKoQi3ZOMi4NkYkpe1p4J7A8BpYAD49hfIy/oqG0+hLomiKP2L5L+1ubn5115S+3OAn4EnwBlgMzCjyt6ZAnQCJ4A7wOs88iRJHvw50HoujuPBoCKwHWiosy8MdfZnAdcHk8dxXFJ3VQbQlCTJvRBCGdRbD4M6uc5glpY3eAihpN5S5w12diSEcCCEcKUO4ljdr15T76ur1FDDLIQQ3qv71EdDOe3Kxj3leRXyk+pxdWnFWod6Wt2bY3de3aSuUHcPBVimHs7mK9WrmeOF6lR1o9qnzskh2ar2qm1qizpfXaPeVGdlmGN5pb09qMxz1Xb1kLqgzn1RyH7JUXW52lr5e/Kqi9qpto7V1atuUzfnARrV7jEib1T76gG2qxdGmXyiekkt1GswPTtek0aBfJp6YySGBfWg2tPQ0FAYgf1stUfdmdcjarbYJEniKIq6gY/Aw+zWHAC+p2labGpqiorFYgGYCEzN7oQdQClN07O1/EfDyGgC0ALMBdYAi4FyK+4H3gLPsxfR1zRNi+NP7nH5J+QntnXe5B5mpfQAAAAASUVORK5CYII="> + +<!-- Google fonts --> +<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/> +<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/> + +<!-- CSS --> +<title>src/regex/exptype</title> +<link rel="stylesheet" type="text/css" href="../nimdoc.out.css"> + +<script type="text/javascript" src="../dochack.js"></script> + +<script type="text/javascript"> +function main() { + var pragmaDots = document.getElementsByClassName("pragmadots"); + for (var i = 0; i < pragmaDots.length; i++) { + pragmaDots[i].onclick = function(event) { + // Hide tease + event.target.parentNode.style.display = "none"; + // Show actual + event.target.parentNode.nextElementSibling.style.display = "inline"; + } + } + + function switchTheme(e) { + if (e.target.checked) { + document.documentElement.setAttribute('data-theme', 'dark'); + localStorage.setItem('theme', 'dark'); + } else { + document.documentElement.setAttribute('data-theme', 'light'); + localStorage.setItem('theme', 'light'); + } + } + + const toggleSwitch = document.querySelector('.theme-switch input[type="checkbox"]'); + if (toggleSwitch !== null) { + toggleSwitch.addEventListener('change', switchTheme, false); + } + + var currentTheme = localStorage.getItem('theme'); + if (!currentTheme && window.matchMedia('(prefers-color-scheme: dark)').matches) { + currentTheme = 'dark'; + } + if (currentTheme) { + document.documentElement.setAttribute('data-theme', currentTheme); + + if (currentTheme === 'dark' && toggleSwitch !== null) { + toggleSwitch.checked = true; + } + } +} + +window.addEventListener('DOMContentLoaded', main); +</script> + +</head> +<body> +<div class="document" id="documentId"> + <div class="container"> + <h1 class="title">src/regex/exptype</h1> + <div class="row"> + <div class="three columns"> + <div class="theme-switch-wrapper"> + <label class="theme-switch" for="checkbox"> + <input type="checkbox" id="checkbox" /> + <div class="slider round"></div> + </label> + <em>Dark Mode</em> + </div> + <div id="global-links"> + <ul class="simple"> + <li> + <a href="../theindex.html">Index</a> + </li> + </ul> + </div> + <div id="searchInputDiv"> + Search: <input type="text" id="searchInput" + onkeyup="search()" /> + </div> + <div> + Group by: + <select onchange="groupBy(this.value)"> + <option value="section">Section</option> + <option value="type">Type</option> + </select> + </div> + <ul class="simple simple-toc" id="toc-list"> +<li> + <a class="reference reference-toplevel" href="#6" id="56">Imports</a> + <ul class="simple simple-toc-section"> + + </ul> +</li> +<li> + <a class="reference reference-toplevel" href="#7" id="57">Types</a> + <ul class="simple simple-toc-section"> + <li><a class="reference" href="#AtomsExp" + title="AtomsExp = object + s*: seq[Node]">AtomsExp</a></li> + <li><a class="reference" href="#Exp" + title="Exp = object + s*: seq[Node]">Exp</a></li> + + </ul> +</li> + +</ul> + + </div> + + <div class="nine columns" id="content"> + <div id="tocRoot"></div> + + <p class="module-desc"></p> + <div class="section" id="6"> +<h1><a class="toc-backref" href="#6">Imports</a></h1> +<dl class="item"> +<a class="reference external" href="types.html">types</a> +</dl></div> +<div class="section" id="7"> +<h1><a class="toc-backref" href="#7">Types</a></h1> +<dl class="item"> +<div id="AtomsExp"> +<dt><pre><a href="exptype.html#AtomsExp"><span class="Identifier">AtomsExp</span></a> <span class="Other">=</span> <span class="Keyword">object</span> + <span class="Identifier">s</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="types.html#Node"><span class="Identifier">Node</span></a><span class="Other">]</span> +</pre></dt> +<dd> + + + +</dd> +</div> +<div id="Exp"> +<dt><pre><a href="exptype.html#Exp"><span class="Identifier">Exp</span></a> <span class="Other">=</span> <span class="Keyword">object</span> + <span class="Identifier">s</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="types.html#Node"><span class="Identifier">Node</span></a><span class="Other">]</span> +</pre></dt> +<dd> + + + +</dd> +</div> + +</dl></div> + + </div> +</div> + + <div class="row"> + <div class="twelve-columns footer"> + <span class="nim-sprite"></span> + <br/> + <small style="color: var(--hint);">Made with Nim. Generated: 2024-01-06 00:35:00 UTC</small> + </div> + </div> + </div> +</div> + +</body> +</html> diff --git a/regex/exptype.idx b/regex/exptype.idx new file mode 100644 index 00000000..da31e1d0 --- /dev/null +++ b/regex/exptype.idx @@ -0,0 +1,2 @@ +Exp regex/exptype.html#Exp exptype: Exp +AtomsExp regex/exptype.html#AtomsExp exptype: AtomsExp diff --git a/regex/litopt.html b/regex/litopt.html new file mode 100644 index 00000000..c9713f10 --- /dev/null +++ b/regex/litopt.html @@ -0,0 +1,204 @@ +<?xml version="1.0" encoding="utf-8" ?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!-- This file is generated by Nim. --> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + +<meta name="viewport" content="width=device-width, initial-scale=1.0"> + +<!-- Favicon --> +<link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA=="/> +<link rel="icon" type="image/png" sizes="32x32" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QQQEwksSS9ZWwAAAk1JREFUWMPtll2ITVEUx39nn/O7Y5qR8f05wtCUUr6ZIS++8pEnkZInPImneaCQ5METNdOkeFBKUhMPRIkHKfEuUZSUlGlKPN2TrgfncpvmnntnmlEyq1Z7t89/rf9a6+y99oZxGZf/XeIq61EdtgKXgdXA0xrYAvBjOIF1AI9zvjcC74BSpndrJPkBWDScTF8Aa4E3wDlgHbASaANmVqlcCnwHvgDvgVfAJ+AikAAvgfVZwLnSVZHZaOuKoQi3ZOMi4NkYkpe1p4J7A8BpYAD49hfIy/oqG0+hLomiKP2L5L+1ubn5115S+3OAn4EnwBlgMzCjyt6ZAnQCJ4A7wOs88iRJHvw50HoujuPBoCKwHWiosy8MdfZnAdcHk8dxXFJ3VQbQlCTJvRBCGdRbD4M6uc5glpY3eAihpN5S5w12diSEcCCEcKUO4ljdr15T76ur1FDDLIQQ3qv71EdDOe3Kxj3leRXyk+pxdWnFWod6Wt2bY3de3aSuUHcPBVimHs7mK9WrmeOF6lR1o9qnzskh2ar2qm1qizpfXaPeVGdlmGN5pb09qMxz1Xb1kLqgzn1RyH7JUXW52lr5e/Kqi9qpto7V1atuUzfnARrV7jEib1T76gG2qxdGmXyiekkt1GswPTtek0aBfJp6YySGBfWg2tPQ0FAYgf1stUfdmdcjarbYJEniKIq6gY/Aw+zWHAC+p2labGpqiorFYgGYCEzN7oQdQClN07O1/EfDyGgC0ALMBdYAi4FyK+4H3gLPsxfR1zRNi+NP7nH5J+QntnXe5B5mpfQAAAAASUVORK5CYII="> + +<!-- Google fonts --> +<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/> +<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/> + +<!-- CSS --> +<title>src/regex/litopt</title> +<link rel="stylesheet" type="text/css" href="../nimdoc.out.css"> + +<script type="text/javascript" src="../dochack.js"></script> + +<script type="text/javascript"> +function main() { + var pragmaDots = document.getElementsByClassName("pragmadots"); + for (var i = 0; i < pragmaDots.length; i++) { + pragmaDots[i].onclick = function(event) { + // Hide tease + event.target.parentNode.style.display = "none"; + // Show actual + event.target.parentNode.nextElementSibling.style.display = "inline"; + } + } + + function switchTheme(e) { + if (e.target.checked) { + document.documentElement.setAttribute('data-theme', 'dark'); + localStorage.setItem('theme', 'dark'); + } else { + document.documentElement.setAttribute('data-theme', 'light'); + localStorage.setItem('theme', 'light'); + } + } + + const toggleSwitch = document.querySelector('.theme-switch input[type="checkbox"]'); + if (toggleSwitch !== null) { + toggleSwitch.addEventListener('change', switchTheme, false); + } + + var currentTheme = localStorage.getItem('theme'); + if (!currentTheme && window.matchMedia('(prefers-color-scheme: dark)').matches) { + currentTheme = 'dark'; + } + if (currentTheme) { + document.documentElement.setAttribute('data-theme', currentTheme); + + if (currentTheme === 'dark' && toggleSwitch !== null) { + toggleSwitch.checked = true; + } + } +} + +window.addEventListener('DOMContentLoaded', main); +</script> + +</head> +<body> +<div class="document" id="documentId"> + <div class="container"> + <h1 class="title">src/regex/litopt</h1> + <div class="row"> + <div class="three columns"> + <div class="theme-switch-wrapper"> + <label class="theme-switch" for="checkbox"> + <input type="checkbox" id="checkbox" /> + <div class="slider round"></div> + </label> + <em>Dark Mode</em> + </div> + <div id="global-links"> + <ul class="simple"> + <li> + <a href="../theindex.html">Index</a> + </li> + </ul> + </div> + <div id="searchInputDiv"> + Search: <input type="text" id="searchInput" + onkeyup="search()" /> + </div> + <div> + Group by: + <select onchange="groupBy(this.value)"> + <option value="section">Section</option> + <option value="type">Type</option> + </select> + </div> + <ul class="simple simple-toc" id="toc-list"> +<li> + <a class="reference reference-toplevel" href="#6" id="56">Imports</a> + <ul class="simple simple-toc-section"> + + </ul> +</li> +<li> + <a class="reference reference-toplevel" href="#7" id="57">Types</a> + <ul class="simple simple-toc-section"> + <li><a class="reference" href="#LitOpt" + title="LitOpt = object + lit*: Rune + lits*: string + bytelits*: string + nfa*: Nfa">LitOpt</a></li> + + </ul> +</li> +<li> + <a class="reference reference-toplevel" href="#12" id="62">Procs</a> + <ul class="simple simple-toc-section"> + <ul class="simple nested-toc-section">canOpt + <li><a class="reference" href="#canOpt%2CLitOpt" + title="canOpt(litOpt: LitOpt): bool">canOpt(litOpt: LitOpt): bool</a></li> + + </ul> + <ul class="simple nested-toc-section">litopt3 + <li><a class="reference" href="#litopt3%2CRpnExp%2CRegexFlags" + title="litopt3(exp: RpnExp; flags: RegexFlags = {}): LitOpt">litopt3(exp: RpnExp; flags: RegexFlags = {}): LitOpt</a></li> + + </ul> + + </ul> +</li> + +</ul> + + </div> + + <div class="nine columns" id="content"> + <div id="tocRoot"></div> + + <p class="module-desc">Literals optimization. This is about optimizing the find operation by quickly searching Regular Expression literals within the input string. See issue #59.</p> + <div class="section" id="6"> +<h1><a class="toc-backref" href="#6">Imports</a></h1> +<dl class="item"> +<a class="reference external" href="types.html">types</a>, <a class="reference external" href="nodematch.html">nodematch</a>, <a class="reference external" href="nfa.html">nfa</a> +</dl></div> +<div class="section" id="7"> +<h1><a class="toc-backref" href="#7">Types</a></h1> +<dl class="item"> +<div id="LitOpt"> +<dt><pre><a href="litopt.html#LitOpt"><span class="Identifier">LitOpt</span></a> <span class="Other">=</span> <span class="Keyword">object</span> + <span class="Identifier">lit</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">Rune</span> + <span class="Identifier">lits</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">string</span> + <span class="Identifier">bytelits</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">string</span> + <span class="Identifier">nfa</span><span class="Operator">*</span><span class="Other">:</span> <a href="types.html#Nfa"><span class="Identifier">Nfa</span></a> +</pre></dt> +<dd> + + + +</dd> +</div> + +</dl></div> +<div class="section" id="12"> +<h1><a class="toc-backref" href="#12">Procs</a></h1> +<dl class="item"> +<div id="canOpt,LitOpt"> +<dt><pre><span class="Keyword">func</span> <a href="#canOpt%2CLitOpt"><span class="Identifier">canOpt</span></a><span class="Other">(</span><span class="Identifier">litOpt</span><span class="Other">:</span> <a href="litopt.html#LitOpt"><span class="Identifier">LitOpt</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">bool</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> +<div id="litopt3,RpnExp,RegexFlags"> +<dt><pre><span class="Keyword">func</span> <a href="#litopt3%2CRpnExp%2CRegexFlags"><span class="Identifier">litopt3</span></a><span class="Other">(</span><span class="Identifier">exp</span><span class="Other">:</span> <a href="types.html#RpnExp"><span class="Identifier">RpnExp</span></a><span class="Other">;</span> <span class="Identifier">flags</span><span class="Other">:</span> <a href="types.html#RegexFlags"><span class="Identifier">RegexFlags</span></a> <span class="Other">=</span> <span class="Other">{</span><span class="Other">}</span><span class="Other">)</span><span class="Other">:</span> <a href="litopt.html#LitOpt"><span class="Identifier">LitOpt</span></a> {. + <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RegexError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> + +</dl></div> + + </div> +</div> + + <div class="row"> + <div class="twelve-columns footer"> + <span class="nim-sprite"></span> + <br/> + <small style="color: var(--hint);">Made with Nim. Generated: 2024-01-06 00:35:00 UTC</small> + </div> + </div> + </div> +</div> + +</body> +</html> diff --git a/regex/litopt.idx b/regex/litopt.idx new file mode 100644 index 00000000..7b0164ff --- /dev/null +++ b/regex/litopt.idx @@ -0,0 +1,3 @@ +LitOpt regex/litopt.html#LitOpt litopt: LitOpt +canOpt regex/litopt.html#canOpt,LitOpt litopt: canOpt(litOpt: LitOpt): bool +litopt3 regex/litopt.html#litopt3,RpnExp,RegexFlags litopt: litopt3(exp: RpnExp; flags: RegexFlags = {}): LitOpt diff --git a/regex/nfa.html b/regex/nfa.html new file mode 100644 index 00000000..45e702e2 --- /dev/null +++ b/regex/nfa.html @@ -0,0 +1,199 @@ +<?xml version="1.0" encoding="utf-8" ?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!-- This file is generated by Nim. --> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + +<meta name="viewport" content="width=device-width, initial-scale=1.0"> + +<!-- Favicon --> +<link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA=="/> +<link rel="icon" type="image/png" sizes="32x32" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QQQEwksSS9ZWwAAAk1JREFUWMPtll2ITVEUx39nn/O7Y5qR8f05wtCUUr6ZIS++8pEnkZInPImneaCQ5METNdOkeFBKUhMPRIkHKfEuUZSUlGlKPN2TrgfncpvmnntnmlEyq1Z7t89/rf9a6+y99oZxGZf/XeIq61EdtgKXgdXA0xrYAvBjOIF1AI9zvjcC74BSpndrJPkBWDScTF8Aa4E3wDlgHbASaANmVqlcCnwHvgDvgVfAJ+AikAAvgfVZwLnSVZHZaOuKoQi3ZOMi4NkYkpe1p4J7A8BpYAD49hfIy/oqG0+hLomiKP2L5L+1ubn5115S+3OAn4EnwBlgMzCjyt6ZAnQCJ4A7wOs88iRJHvw50HoujuPBoCKwHWiosy8MdfZnAdcHk8dxXFJ3VQbQlCTJvRBCGdRbD4M6uc5glpY3eAihpN5S5w12diSEcCCEcKUO4ljdr15T76ur1FDDLIQQ3qv71EdDOe3Kxj3leRXyk+pxdWnFWod6Wt2bY3de3aSuUHcPBVimHs7mK9WrmeOF6lR1o9qnzskh2ar2qm1qizpfXaPeVGdlmGN5pb09qMxz1Xb1kLqgzn1RyH7JUXW52lr5e/Kqi9qpto7V1atuUzfnARrV7jEib1T76gG2qxdGmXyiekkt1GswPTtek0aBfJp6YySGBfWg2tPQ0FAYgf1stUfdmdcjarbYJEniKIq6gY/Aw+zWHAC+p2labGpqiorFYgGYCEzN7oQdQClN07O1/EfDyGgC0ALMBdYAi4FyK+4H3gLPsxfR1zRNi+NP7nH5J+QntnXe5B5mpfQAAAAASUVORK5CYII="> + +<!-- Google fonts --> +<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/> +<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/> + +<!-- CSS --> +<title>src/regex/nfa</title> +<link rel="stylesheet" type="text/css" href="../nimdoc.out.css"> + +<script type="text/javascript" src="../dochack.js"></script> + +<script type="text/javascript"> +function main() { + var pragmaDots = document.getElementsByClassName("pragmadots"); + for (var i = 0; i < pragmaDots.length; i++) { + pragmaDots[i].onclick = function(event) { + // Hide tease + event.target.parentNode.style.display = "none"; + // Show actual + event.target.parentNode.nextElementSibling.style.display = "inline"; + } + } + + function switchTheme(e) { + if (e.target.checked) { + document.documentElement.setAttribute('data-theme', 'dark'); + localStorage.setItem('theme', 'dark'); + } else { + document.documentElement.setAttribute('data-theme', 'light'); + localStorage.setItem('theme', 'light'); + } + } + + const toggleSwitch = document.querySelector('.theme-switch input[type="checkbox"]'); + if (toggleSwitch !== null) { + toggleSwitch.addEventListener('change', switchTheme, false); + } + + var currentTheme = localStorage.getItem('theme'); + if (!currentTheme && window.matchMedia('(prefers-color-scheme: dark)').matches) { + currentTheme = 'dark'; + } + if (currentTheme) { + document.documentElement.setAttribute('data-theme', currentTheme); + + if (currentTheme === 'dark' && toggleSwitch !== null) { + toggleSwitch.checked = true; + } + } +} + +window.addEventListener('DOMContentLoaded', main); +</script> + +</head> +<body> +<div class="document" id="documentId"> + <div class="container"> + <h1 class="title">src/regex/nfa</h1> + <div class="row"> + <div class="three columns"> + <div class="theme-switch-wrapper"> + <label class="theme-switch" for="checkbox"> + <input type="checkbox" id="checkbox" /> + <div class="slider round"></div> + </label> + <em>Dark Mode</em> + </div> + <div id="global-links"> + <ul class="simple"> + <li> + <a href="../theindex.html">Index</a> + </li> + </ul> + </div> + <div id="searchInputDiv"> + Search: <input type="text" id="searchInput" + onkeyup="search()" /> + </div> + <div> + Group by: + <select onchange="groupBy(this.value)"> + <option value="section">Section</option> + <option value="type">Type</option> + </select> + </div> + <ul class="simple simple-toc" id="toc-list"> +<li> + <a class="reference reference-toplevel" href="#6" id="56">Imports</a> + <ul class="simple simple-toc-section"> + + </ul> +</li> +<li> + <a class="reference reference-toplevel" href="#12" id="62">Procs</a> + <ul class="simple simple-toc-section"> + <ul class="simple nested-toc-section">eNfa + <li><a class="reference" href="#eNfa%2CRpnExp" + title="eNfa(exp: RpnExp): Enfa">eNfa(exp: RpnExp): Enfa</a></li> + + </ul> + <ul class="simple nested-toc-section">eRemoval + <li><a class="reference" href="#eRemoval%2CEnfa" + title="eRemoval(eNfa: Enfa): Nfa">eRemoval(eNfa: Enfa): Nfa</a></li> + + </ul> + <ul class="simple nested-toc-section">nfa2 + <li><a class="reference" href="#nfa2%2CRpnExp" + title="nfa2(exp: RpnExp): Nfa">nfa2(exp: RpnExp): Nfa</a></li> + + </ul> + <ul class="simple nested-toc-section">subExps + <li><a class="reference" href="#subExps%2CRpnExp" + title="subExps(exp: RpnExp): RpnExp">subExps(exp: RpnExp): RpnExp</a></li> + + </ul> + + </ul> +</li> + +</ul> + + </div> + + <div class="nine columns" id="content"> + <div id="tocRoot"></div> + + <p class="module-desc"></p> + <div class="section" id="6"> +<h1><a class="toc-backref" href="#6">Imports</a></h1> +<dl class="item"> +<a class="reference external" href="types.html">types</a>, <a class="reference external" href="common.html">common</a> +</dl></div> +<div class="section" id="12"> +<h1><a class="toc-backref" href="#12">Procs</a></h1> +<dl class="item"> +<div id="eNfa,RpnExp"> +<dt><pre><span class="Keyword">func</span> <a href="#eNfa%2CRpnExp"><span class="Identifier">eNfa</span></a><span class="Other">(</span><span class="Identifier">exp</span><span class="Other">:</span> <a href="types.html#RpnExp"><span class="Identifier">RpnExp</span></a><span class="Other">)</span><span class="Other">:</span> <a href="types.html#Enfa"><span class="Identifier">Enfa</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><a href="common.html#RegexError"><span class="Identifier">RegexError</span></a><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + +Thompson's construction + +</dd> +</div> +<div id="eRemoval,Enfa"> +<dt><pre><span class="Keyword">func</span> <a href="#eRemoval%2CEnfa"><span class="Identifier">eRemoval</span></a><span class="Other">(</span><span class="Identifier">eNfa</span><span class="Other">:</span> <a href="types.html#Enfa"><span class="Identifier">Enfa</span></a><span class="Other">)</span><span class="Other">:</span> <a href="types.html#Nfa"><span class="Identifier">Nfa</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + +Remove e-transitions and return remaining state transtions and submatches, and zero matches. Transitions are added in matching order (BFS), which may help matching performance + +</dd> +</div> +<div id="nfa2,RpnExp"> +<dt><pre><span class="Keyword">func</span> <a href="#nfa2%2CRpnExp"><span class="Identifier">nfa2</span></a><span class="Other">(</span><span class="Identifier">exp</span><span class="Other">:</span> <a href="types.html#RpnExp"><span class="Identifier">RpnExp</span></a><span class="Other">)</span><span class="Other">:</span> <a href="types.html#Nfa"><span class="Identifier">Nfa</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><a href="common.html#RegexError"><span class="Identifier">RegexError</span></a><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> +<div id="subExps,RpnExp"> +<dt><pre><span class="Keyword">func</span> <a href="#subExps%2CRpnExp"><span class="Identifier">subExps</span></a><span class="Other">(</span><span class="Identifier">exp</span><span class="Other">:</span> <a href="types.html#RpnExp"><span class="Identifier">RpnExp</span></a><span class="Other">)</span><span class="Other">:</span> <a href="types.html#RpnExp"><span class="Identifier">RpnExp</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RegexError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> + +</dl></div> + + </div> +</div> + + <div class="row"> + <div class="twelve-columns footer"> + <span class="nim-sprite"></span> + <br/> + <small style="color: var(--hint);">Made with Nim. Generated: 2024-01-06 00:35:00 UTC</small> + </div> + </div> + </div> +</div> + +</body> +</html> diff --git a/regex/nfa.idx b/regex/nfa.idx new file mode 100644 index 00000000..e9f2c568 --- /dev/null +++ b/regex/nfa.idx @@ -0,0 +1,4 @@ +eNfa regex/nfa.html#eNfa,RpnExp nfa: eNfa(exp: RpnExp): Enfa +eRemoval regex/nfa.html#eRemoval,Enfa nfa: eRemoval(eNfa: Enfa): Nfa +subExps regex/nfa.html#subExps,RpnExp nfa: subExps(exp: RpnExp): RpnExp +nfa2 regex/nfa.html#nfa2,RpnExp nfa: nfa2(exp: RpnExp): Nfa diff --git a/regex/nfafindall.html b/regex/nfafindall.html new file mode 100644 index 00000000..762e1425 --- /dev/null +++ b/regex/nfafindall.html @@ -0,0 +1,274 @@ +<?xml version="1.0" encoding="utf-8" ?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!-- This file is generated by Nim. --> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + +<meta name="viewport" content="width=device-width, initial-scale=1.0"> + +<!-- Favicon --> +<link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA=="/> +<link rel="icon" type="image/png" sizes="32x32" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QQQEwksSS9ZWwAAAk1JREFUWMPtll2ITVEUx39nn/O7Y5qR8f05wtCUUr6ZIS++8pEnkZInPImneaCQ5METNdOkeFBKUhMPRIkHKfEuUZSUlGlKPN2TrgfncpvmnntnmlEyq1Z7t89/rf9a6+y99oZxGZf/XeIq61EdtgKXgdXA0xrYAvBjOIF1AI9zvjcC74BSpndrJPkBWDScTF8Aa4E3wDlgHbASaANmVqlcCnwHvgDvgVfAJ+AikAAvgfVZwLnSVZHZaOuKoQi3ZOMi4NkYkpe1p4J7A8BpYAD49hfIy/oqG0+hLomiKP2L5L+1ubn5115S+3OAn4EnwBlgMzCjyt6ZAnQCJ4A7wOs88iRJHvw50HoujuPBoCKwHWiosy8MdfZnAdcHk8dxXFJ3VQbQlCTJvRBCGdRbD4M6uc5glpY3eAihpN5S5w12diSEcCCEcKUO4ljdr15T76ur1FDDLIQQ3qv71EdDOe3Kxj3leRXyk+pxdWnFWod6Wt2bY3de3aSuUHcPBVimHs7mK9WrmeOF6lR1o9qnzskh2ar2qm1qizpfXaPeVGdlmGN5pb09qMxz1Xb1kLqgzn1RyH7JUXW52lr5e/Kqi9qpto7V1atuUzfnARrV7jEib1T76gG2qxdGmXyiekkt1GswPTtek0aBfJp6YySGBfWg2tPQ0FAYgf1stUfdmdcjarbYJEniKIq6gY/Aw+zWHAC+p2labGpqiorFYgGYCEzN7oQdQClN07O1/EfDyGgC0ALMBdYAi4FyK+4H3gLPsxfR1zRNi+NP7nH5J+QntnXe5B5mpfQAAAAASUVORK5CYII="> + +<!-- Google fonts --> +<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/> +<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/> + +<!-- CSS --> +<title>src/regex/nfafindall</title> +<link rel="stylesheet" type="text/css" href="../nimdoc.out.css"> + +<script type="text/javascript" src="../dochack.js"></script> + +<script type="text/javascript"> +function main() { + var pragmaDots = document.getElementsByClassName("pragmadots"); + for (var i = 0; i < pragmaDots.length; i++) { + pragmaDots[i].onclick = function(event) { + // Hide tease + event.target.parentNode.style.display = "none"; + // Show actual + event.target.parentNode.nextElementSibling.style.display = "inline"; + } + } + + function switchTheme(e) { + if (e.target.checked) { + document.documentElement.setAttribute('data-theme', 'dark'); + localStorage.setItem('theme', 'dark'); + } else { + document.documentElement.setAttribute('data-theme', 'light'); + localStorage.setItem('theme', 'light'); + } + } + + const toggleSwitch = document.querySelector('.theme-switch input[type="checkbox"]'); + if (toggleSwitch !== null) { + toggleSwitch.addEventListener('change', switchTheme, false); + } + + var currentTheme = localStorage.getItem('theme'); + if (!currentTheme && window.matchMedia('(prefers-color-scheme: dark)').matches) { + currentTheme = 'dark'; + } + if (currentTheme) { + document.documentElement.setAttribute('data-theme', currentTheme); + + if (currentTheme === 'dark' && toggleSwitch !== null) { + toggleSwitch.checked = true; + } + } +} + +window.addEventListener('DOMContentLoaded', main); +</script> + +</head> +<body> +<div class="document" id="documentId"> + <div class="container"> + <h1 class="title">src/regex/nfafindall</h1> + <div class="row"> + <div class="three columns"> + <div class="theme-switch-wrapper"> + <label class="theme-switch" for="checkbox"> + <input type="checkbox" id="checkbox" /> + <div class="slider round"></div> + </label> + <em>Dark Mode</em> + </div> + <div id="global-links"> + <ul class="simple"> + <li> + <a href="../theindex.html">Index</a> + </li> + </ul> + </div> + <div id="searchInputDiv"> + Search: <input type="text" id="searchInput" + onkeyup="search()" /> + </div> + <div> + Group by: + <select onchange="groupBy(this.value)"> + <option value="section">Section</option> + <option value="type">Type</option> + </select> + </div> + <ul class="simple simple-toc" id="toc-list"> +<li> + <a class="reference reference-toplevel" href="#6" id="56">Imports</a> + <ul class="simple simple-toc-section"> + + </ul> +</li> +<li> + <a class="reference reference-toplevel" href="#7" id="57">Types</a> + <ul class="simple simple-toc-section"> + <li><a class="reference" href="#RegexMatches" + title="RegexMatches = object + a, b: Submatches + m: Matches + c: Capts + look: Lookaround">RegexMatches</a></li> + + </ul> +</li> +<li> + <a class="reference reference-toplevel" href="#12" id="62">Procs</a> + <ul class="simple simple-toc-section"> + <ul class="simple nested-toc-section">dummyMatch + <li><a class="reference" href="#dummyMatch%2CRegexMatches%2Cint" + title="dummyMatch(ms: var RegexMatches; i: int)">dummyMatch(ms: var RegexMatches; i: int)</a></li> + + </ul> + <ul class="simple nested-toc-section">fillMatchImpl + <li><a class="reference" href="#fillMatchImpl%2CRegexMatch%2CMatchItemIdx%2CRegexMatches%2CRegex" + title="fillMatchImpl(m: var RegexMatch; mi: MatchItemIdx; ms: RegexMatches; + regex: Regex)">fillMatchImpl(m: var RegexMatch; mi: MatchItemIdx; ms: RegexMatches; + regex: Regex)</a></li> + + </ul> + <ul class="simple nested-toc-section">findSomeImpl + <li><a class="reference" href="#findSomeImpl%2Cstring%2CRegex%2CRegexMatches%2CNatural%2Cset%5BMatchFlag%5D" + title="findSomeImpl(text: string; regex: Regex; ms: var RegexMatches; + start: Natural = 0; flags: set[MatchFlag] = {}): int">findSomeImpl(text: string; regex: Regex; ms: var RegexMatches; + start: Natural = 0; flags: set[MatchFlag] = {}): int</a></li> + + </ul> + <ul class="simple nested-toc-section">findSomeOptImpl + <li><a class="reference" href="#findSomeOptImpl%2Cstring%2CRegex%2CRegexMatches%2CNatural" + title="findSomeOptImpl(text: string; regex: Regex; ms: var RegexMatches; start: Natural): int">findSomeOptImpl(text: string; regex: Regex; ms: var RegexMatches; start: Natural): int</a></li> + + </ul> + + </ul> +</li> +<li> + <a class="reference reference-toplevel" href="#15" id="65">Iterators</a> + <ul class="simple simple-toc-section"> + <ul class="simple nested-toc-section">bounds + <li><a class="reference" href="#bounds.i%2CRegexMatches" + title="bounds(ms: RegexMatches): Slice[int]">bounds(ms: RegexMatches): Slice[int]</a></li> + + </ul> + <ul class="simple nested-toc-section">items + <li><a class="reference" href="#items.i%2CRegexMatches" + title="items(ms: RegexMatches): MatchItemIdx">items(ms: RegexMatches): MatchItemIdx</a></li> + + </ul> + + </ul> +</li> + +</ul> + + </div> + + <div class="nine columns" id="content"> + <div id="tocRoot"></div> + + <p class="module-desc">DEPRECATED</p> + <div class="section" id="6"> +<h1><a class="toc-backref" href="#6">Imports</a></h1> +<dl class="item"> +<a class="reference external" href="common.html">common</a>, <a class="reference external" href="nodematch.html">nodematch</a>, <a class="reference external" href="types.html">types</a>, <a class="reference external" href="nfatype.html">nfatype</a>, <a class="reference external" href="nfamatch.html">nfamatch</a> +</dl></div> +<div class="section" id="7"> +<h1><a class="toc-backref" href="#7">Types</a></h1> +<dl class="item"> +<div id="RegexMatches"> +<dt><pre><a href="nfafindall.html#RegexMatches"><span class="Identifier">RegexMatches</span></a> <span class="Other">=</span> <span class="Keyword">object</span> + <span class="Identifier">a</span><span class="Other">,</span> <span class="Identifier">b</span><span class="Other">:</span> <a href="nfatype.html#Submatches"><span class="Identifier">Submatches</span></a> + <span class="Identifier">m</span><span class="Other">:</span> <span class="Identifier">Matches</span> + <span class="Identifier">c</span><span class="Other">:</span> <a href="nfatype.html#Capts"><span class="Identifier">Capts</span></a> + <span class="Identifier">look</span><span class="Other">:</span> <a href="nfamatch.html#Lookaround"><span class="Identifier">Lookaround</span></a> +</pre></dt> +<dd> + + + +</dd> +</div> + +</dl></div> +<div class="section" id="12"> +<h1><a class="toc-backref" href="#12">Procs</a></h1> +<dl class="item"> +<div id="dummyMatch,RegexMatches,int"> +<dt><pre><span class="Keyword">func</span> <a href="#dummyMatch%2CRegexMatches%2Cint"><span class="Identifier">dummyMatch</span></a><span class="Other">(</span><span class="Identifier">ms</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="nfafindall.html#RegexMatches"><span class="Identifier">RegexMatches</span></a><span class="Other">;</span> <span class="Identifier">i</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + +hack to support <tt class="docutils literal"><span class="pre"><span class="Identifier">split</span></span></tt> last value. we need to add the end boundary if it has not matched the end (no match implies this too) + +</dd> +</div> +<div id="fillMatchImpl,RegexMatch,MatchItemIdx,RegexMatches,Regex"> +<dt><pre><span class="Keyword">func</span> <a href="#fillMatchImpl%2CRegexMatch%2CMatchItemIdx%2CRegexMatches%2CRegex"><span class="Identifier">fillMatchImpl</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="nfatype.html#RegexMatch"><span class="Identifier">RegexMatch</span></a><span class="Other">;</span> <span class="Identifier">mi</span><span class="Other">:</span> <span class="Identifier">MatchItemIdx</span><span class="Other">;</span> <span class="Identifier">ms</span><span class="Other">:</span> <a href="nfafindall.html#RegexMatches"><span class="Identifier">RegexMatches</span></a><span class="Other">;</span> + <span class="Identifier">regex</span><span class="Other">:</span> <a href="nfatype.html#Regex"><span class="Identifier">Regex</span></a><span class="Other">)</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> +<div id="findSomeImpl,string,Regex,RegexMatches,Natural,set[MatchFlag]"> +<dt><pre><span class="Keyword">func</span> <a href="#findSomeImpl%2Cstring%2CRegex%2CRegexMatches%2CNatural%2Cset%5BMatchFlag%5D"><span class="Identifier">findSomeImpl</span></a><span class="Other">(</span><span class="Identifier">text</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">regex</span><span class="Other">:</span> <a href="nfatype.html#Regex"><span class="Identifier">Regex</span></a><span class="Other">;</span> <span class="Identifier">ms</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="nfafindall.html#RegexMatches"><span class="Identifier">RegexMatches</span></a><span class="Other">;</span> + <span class="Identifier">start</span><span class="Other">:</span> <span class="Identifier">Natural</span> <span class="Other">=</span> <span class="DecNumber">0</span><span class="Other">;</span> <span class="Identifier">flags</span><span class="Other">:</span> <span class="Identifier">set</span><span class="Other">[</span><a href="nfatype.html#MatchFlag"><span class="Identifier">MatchFlag</span></a><span class="Other">]</span> <span class="Other">=</span> <span class="Other">{</span><span class="Other">}</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">int</span> {. + <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> +<div id="findSomeOptImpl,string,Regex,RegexMatches,Natural"> +<dt><pre><span class="Keyword">func</span> <a href="#findSomeOptImpl%2Cstring%2CRegex%2CRegexMatches%2CNatural"><span class="Identifier">findSomeOptImpl</span></a><span class="Other">(</span><span class="Identifier">text</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">regex</span><span class="Other">:</span> <a href="nfatype.html#Regex"><span class="Identifier">Regex</span></a><span class="Other">;</span> <span class="Identifier">ms</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="nfafindall.html#RegexMatches"><span class="Identifier">RegexMatches</span></a><span class="Other">;</span> + <span class="Identifier">start</span><span class="Other">:</span> <span class="Identifier">Natural</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">int</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> + +</dl></div> +<div class="section" id="15"> +<h1><a class="toc-backref" href="#15">Iterators</a></h1> +<dl class="item"> +<div id="bounds.i,RegexMatches"> +<dt><pre><span class="Keyword">iterator</span> <a href="#bounds.i%2CRegexMatches"><span class="Identifier">bounds</span></a><span class="Other">(</span><span class="Identifier">ms</span><span class="Other">:</span> <a href="nfafindall.html#RegexMatches"><span class="Identifier">RegexMatches</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Slice</span><span class="Other">[</span><span class="Identifier">int</span><span class="Other">]</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> +<div id="items.i,RegexMatches"> +<dt><pre><span class="Keyword">iterator</span> <a href="#items.i%2CRegexMatches"><span class="Identifier">items</span></a><span class="Other">(</span><span class="Identifier">ms</span><span class="Other">:</span> <a href="nfafindall.html#RegexMatches"><span class="Identifier">RegexMatches</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">MatchItemIdx</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> + +</dl></div> + + </div> +</div> + + <div class="row"> + <div class="twelve-columns footer"> + <span class="nim-sprite"></span> + <br/> + <small style="color: var(--hint);">Made with Nim. Generated: 2024-01-06 00:35:00 UTC</small> + </div> + </div> + </div> +</div> + +</body> +</html> diff --git a/regex/nfafindall.idx b/regex/nfafindall.idx new file mode 100644 index 00000000..3400374c --- /dev/null +++ b/regex/nfafindall.idx @@ -0,0 +1,7 @@ +RegexMatches regex/nfafindall.html#RegexMatches nfafindall: RegexMatches +bounds regex/nfafindall.html#bounds.i,RegexMatches nfafindall: bounds(ms: RegexMatches): Slice[int] +items regex/nfafindall.html#items.i,RegexMatches nfafindall: items(ms: RegexMatches): MatchItemIdx +fillMatchImpl regex/nfafindall.html#fillMatchImpl,RegexMatch,MatchItemIdx,RegexMatches,Regex nfafindall: fillMatchImpl(m: var RegexMatch; mi: MatchItemIdx; ms: RegexMatches;\n regex: Regex) +dummyMatch regex/nfafindall.html#dummyMatch,RegexMatches,int nfafindall: dummyMatch(ms: var RegexMatches; i: int) +findSomeImpl regex/nfafindall.html#findSomeImpl,string,Regex,RegexMatches,Natural,set[MatchFlag] nfafindall: findSomeImpl(text: string; regex: Regex; ms: var RegexMatches;\n start: Natural = 0; flags: set[MatchFlag] = {}): int +findSomeOptImpl regex/nfafindall.html#findSomeOptImpl,string,Regex,RegexMatches,Natural nfafindall: findSomeOptImpl(text: string; regex: Regex; ms: var RegexMatches; start: Natural): int diff --git a/regex/nfafindall2.html b/regex/nfafindall2.html new file mode 100644 index 00000000..61fb7e6f --- /dev/null +++ b/regex/nfafindall2.html @@ -0,0 +1,276 @@ +<?xml version="1.0" encoding="utf-8" ?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!-- This file is generated by Nim. --> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + +<meta name="viewport" content="width=device-width, initial-scale=1.0"> + +<!-- Favicon --> +<link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA=="/> +<link rel="icon" type="image/png" sizes="32x32" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QQQEwksSS9ZWwAAAk1JREFUWMPtll2ITVEUx39nn/O7Y5qR8f05wtCUUr6ZIS++8pEnkZInPImneaCQ5METNdOkeFBKUhMPRIkHKfEuUZSUlGlKPN2TrgfncpvmnntnmlEyq1Z7t89/rf9a6+y99oZxGZf/XeIq61EdtgKXgdXA0xrYAvBjOIF1AI9zvjcC74BSpndrJPkBWDScTF8Aa4E3wDlgHbASaANmVqlcCnwHvgDvgVfAJ+AikAAvgfVZwLnSVZHZaOuKoQi3ZOMi4NkYkpe1p4J7A8BpYAD49hfIy/oqG0+hLomiKP2L5L+1ubn5115S+3OAn4EnwBlgMzCjyt6ZAnQCJ4A7wOs88iRJHvw50HoujuPBoCKwHWiosy8MdfZnAdcHk8dxXFJ3VQbQlCTJvRBCGdRbD4M6uc5glpY3eAihpN5S5w12diSEcCCEcKUO4ljdr15T76ur1FDDLIQQ3qv71EdDOe3Kxj3leRXyk+pxdWnFWod6Wt2bY3de3aSuUHcPBVimHs7mK9WrmeOF6lR1o9qnzskh2ar2qm1qizpfXaPeVGdlmGN5pb09qMxz1Xb1kLqgzn1RyH7JUXW52lr5e/Kqi9qpto7V1atuUzfnARrV7jEib1T76gG2qxdGmXyiekkt1GswPTtek0aBfJp6YySGBfWg2tPQ0FAYgf1stUfdmdcjarbYJEniKIq6gY/Aw+zWHAC+p2labGpqiorFYgGYCEzN7oQdQClN07O1/EfDyGgC0ALMBdYAi4FyK+4H3gLPsxfR1zRNi+NP7nH5J+QntnXe5B5mpfQAAAAASUVORK5CYII="> + +<!-- Google fonts --> +<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/> +<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/> + +<!-- CSS --> +<title>src/regex/nfafindall2</title> +<link rel="stylesheet" type="text/css" href="../nimdoc.out.css"> + +<script type="text/javascript" src="../dochack.js"></script> + +<script type="text/javascript"> +function main() { + var pragmaDots = document.getElementsByClassName("pragmadots"); + for (var i = 0; i < pragmaDots.length; i++) { + pragmaDots[i].onclick = function(event) { + // Hide tease + event.target.parentNode.style.display = "none"; + // Show actual + event.target.parentNode.nextElementSibling.style.display = "inline"; + } + } + + function switchTheme(e) { + if (e.target.checked) { + document.documentElement.setAttribute('data-theme', 'dark'); + localStorage.setItem('theme', 'dark'); + } else { + document.documentElement.setAttribute('data-theme', 'light'); + localStorage.setItem('theme', 'light'); + } + } + + const toggleSwitch = document.querySelector('.theme-switch input[type="checkbox"]'); + if (toggleSwitch !== null) { + toggleSwitch.addEventListener('change', switchTheme, false); + } + + var currentTheme = localStorage.getItem('theme'); + if (!currentTheme && window.matchMedia('(prefers-color-scheme: dark)').matches) { + currentTheme = 'dark'; + } + if (currentTheme) { + document.documentElement.setAttribute('data-theme', currentTheme); + + if (currentTheme === 'dark' && toggleSwitch !== null) { + toggleSwitch.checked = true; + } + } +} + +window.addEventListener('DOMContentLoaded', main); +</script> + +</head> +<body> +<div class="document" id="documentId"> + <div class="container"> + <h1 class="title">src/regex/nfafindall2</h1> + <div class="row"> + <div class="three columns"> + <div class="theme-switch-wrapper"> + <label class="theme-switch" for="checkbox"> + <input type="checkbox" id="checkbox" /> + <div class="slider round"></div> + </label> + <em>Dark Mode</em> + </div> + <div id="global-links"> + <ul class="simple"> + <li> + <a href="../theindex.html">Index</a> + </li> + </ul> + </div> + <div id="searchInputDiv"> + Search: <input type="text" id="searchInput" + onkeyup="search()" /> + </div> + <div> + Group by: + <select onchange="groupBy(this.value)"> + <option value="section">Section</option> + <option value="type">Type</option> + </select> + </div> + <ul class="simple simple-toc" id="toc-list"> +<li> + <a class="reference reference-toplevel" href="#6" id="56">Imports</a> + <ul class="simple simple-toc-section"> + + </ul> +</li> +<li> + <a class="reference reference-toplevel" href="#7" id="57">Types</a> + <ul class="simple simple-toc-section"> + <li><a class="reference" href="#RegexMatches2" + title="RegexMatches2 = object + a, b: Submatches + m: Matches + c: Capts3 + look: Lookaround">RegexMatches2</a></li> + + </ul> +</li> +<li> + <a class="reference reference-toplevel" href="#12" id="62">Procs</a> + <ul class="simple simple-toc-section"> + <ul class="simple nested-toc-section">dummyMatch + <li><a class="reference" href="#dummyMatch%2CRegexMatches2%2Cint" + title="dummyMatch(ms: var RegexMatches2; i: int)">dummyMatch(ms: var RegexMatches2; i: int)</a></li> + + </ul> + <ul class="simple nested-toc-section">fillMatchImpl + <li><a class="reference" href="#fillMatchImpl%2CRegexMatch2%2CMatchItemIdx%2CRegexMatches2%2CRegex" + title="fillMatchImpl(m: var RegexMatch2; mi: MatchItemIdx; ms: RegexMatches2; + regex: Regex)">fillMatchImpl(m: var RegexMatch2; mi: MatchItemIdx; ms: RegexMatches2; + regex: Regex)</a></li> + + </ul> + <ul class="simple nested-toc-section">findSomeImpl + <li><a class="reference" href="#findSomeImpl%2Cstring%2CRegex%2CRegexMatches2%2CNatural%2CMatchFlags" + title="findSomeImpl(text: string; regex: Regex; ms: var RegexMatches2; + start: Natural = 0; flags: MatchFlags = {}): int">findSomeImpl(text: string; regex: Regex; ms: var RegexMatches2; + start: Natural = 0; flags: MatchFlags = {}): int</a></li> + + </ul> + <ul class="simple nested-toc-section">findSomeOptImpl + <li><a class="reference" href="#findSomeOptImpl%2Cstring%2CRegex%2CRegexMatches2%2CNatural" + title="findSomeOptImpl(text: string; regex: Regex; ms: var RegexMatches2; + start: Natural): int">findSomeOptImpl(text: string; regex: Regex; ms: var RegexMatches2; + start: Natural): int</a></li> + + </ul> + + </ul> +</li> +<li> + <a class="reference reference-toplevel" href="#15" id="65">Iterators</a> + <ul class="simple simple-toc-section"> + <ul class="simple nested-toc-section">bounds + <li><a class="reference" href="#bounds.i%2CRegexMatches2" + title="bounds(ms: RegexMatches2): Slice[int]">bounds(ms: RegexMatches2): Slice[int]</a></li> + + </ul> + <ul class="simple nested-toc-section">items + <li><a class="reference" href="#items.i%2CRegexMatches2" + title="items(ms: RegexMatches2): MatchItemIdx">items(ms: RegexMatches2): MatchItemIdx</a></li> + + </ul> + + </ul> +</li> + +</ul> + + </div> + + <div class="nine columns" id="content"> + <div id="tocRoot"></div> + + <p class="module-desc">Linear time NFA findAll</p> + <div class="section" id="6"> +<h1><a class="toc-backref" href="#6">Imports</a></h1> +<dl class="item"> +<a class="reference external" href="common.html">common</a>, <a class="reference external" href="nodematch.html">nodematch</a>, <a class="reference external" href="types.html">types</a>, <a class="reference external" href="nfatype.html">nfatype</a>, <a class="reference external" href="nfamatch2.html">nfamatch2</a> +</dl></div> +<div class="section" id="7"> +<h1><a class="toc-backref" href="#7">Types</a></h1> +<dl class="item"> +<div id="RegexMatches2"> +<dt><pre><a href="nfafindall2.html#RegexMatches2"><span class="Identifier">RegexMatches2</span></a> <span class="Other">=</span> <span class="Keyword">object</span> + <span class="Identifier">a</span><span class="Other">,</span> <span class="Identifier">b</span><span class="Other">:</span> <a href="nfatype.html#Submatches"><span class="Identifier">Submatches</span></a> + <span class="Identifier">m</span><span class="Other">:</span> <span class="Identifier">Matches</span> + <span class="Identifier">c</span><span class="Other">:</span> <a href="nfatype.html#Capts3"><span class="Identifier">Capts3</span></a> + <span class="Identifier">look</span><span class="Other">:</span> <a href="nfamatch2.html#Lookaround"><span class="Identifier">Lookaround</span></a> +</pre></dt> +<dd> + + + +</dd> +</div> + +</dl></div> +<div class="section" id="12"> +<h1><a class="toc-backref" href="#12">Procs</a></h1> +<dl class="item"> +<div id="dummyMatch,RegexMatches2,int"> +<dt><pre><span class="Keyword">func</span> <a href="#dummyMatch%2CRegexMatches2%2Cint"><span class="Identifier">dummyMatch</span></a><span class="Other">(</span><span class="Identifier">ms</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="nfafindall2.html#RegexMatches2"><span class="Identifier">RegexMatches2</span></a><span class="Other">;</span> <span class="Identifier">i</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + +hack to support <tt class="docutils literal"><span class="pre"><span class="Identifier">split</span></span></tt> last value. we need to add the end boundary if it has not matched the end (no match implies this too) + +</dd> +</div> +<div id="fillMatchImpl,RegexMatch2,MatchItemIdx,RegexMatches2,Regex"> +<dt><pre><span class="Keyword">func</span> <a href="#fillMatchImpl%2CRegexMatch2%2CMatchItemIdx%2CRegexMatches2%2CRegex"><span class="Identifier">fillMatchImpl</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="nfatype.html#RegexMatch2"><span class="Identifier">RegexMatch2</span></a><span class="Other">;</span> <span class="Identifier">mi</span><span class="Other">:</span> <span class="Identifier">MatchItemIdx</span><span class="Other">;</span> <span class="Identifier">ms</span><span class="Other">:</span> <a href="nfafindall2.html#RegexMatches2"><span class="Identifier">RegexMatches2</span></a><span class="Other">;</span> + <span class="Identifier">regex</span><span class="Other">:</span> <a href="nfatype.html#Regex"><span class="Identifier">Regex</span></a><span class="Other">)</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> +<div id="findSomeImpl,string,Regex,RegexMatches2,Natural,MatchFlags"> +<dt><pre><span class="Keyword">func</span> <a href="#findSomeImpl%2Cstring%2CRegex%2CRegexMatches2%2CNatural%2CMatchFlags"><span class="Identifier">findSomeImpl</span></a><span class="Other">(</span><span class="Identifier">text</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">regex</span><span class="Other">:</span> <a href="nfatype.html#Regex"><span class="Identifier">Regex</span></a><span class="Other">;</span> <span class="Identifier">ms</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="nfafindall2.html#RegexMatches2"><span class="Identifier">RegexMatches2</span></a><span class="Other">;</span> + <span class="Identifier">start</span><span class="Other">:</span> <span class="Identifier">Natural</span> <span class="Other">=</span> <span class="DecNumber">0</span><span class="Other">;</span> <span class="Identifier">flags</span><span class="Other">:</span> <a href="nfatype.html#MatchFlags"><span class="Identifier">MatchFlags</span></a> <span class="Other">=</span> <span class="Other">{</span><span class="Other">}</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">int</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> + <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> +<div id="findSomeOptImpl,string,Regex,RegexMatches2,Natural"> +<dt><pre><span class="Keyword">func</span> <a href="#findSomeOptImpl%2Cstring%2CRegex%2CRegexMatches2%2CNatural"><span class="Identifier">findSomeOptImpl</span></a><span class="Other">(</span><span class="Identifier">text</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">regex</span><span class="Other">:</span> <a href="nfatype.html#Regex"><span class="Identifier">Regex</span></a><span class="Other">;</span> <span class="Identifier">ms</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="nfafindall2.html#RegexMatches2"><span class="Identifier">RegexMatches2</span></a><span class="Other">;</span> + <span class="Identifier">start</span><span class="Other">:</span> <span class="Identifier">Natural</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">int</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> + +</dl></div> +<div class="section" id="15"> +<h1><a class="toc-backref" href="#15">Iterators</a></h1> +<dl class="item"> +<div id="bounds.i,RegexMatches2"> +<dt><pre><span class="Keyword">iterator</span> <a href="#bounds.i%2CRegexMatches2"><span class="Identifier">bounds</span></a><span class="Other">(</span><span class="Identifier">ms</span><span class="Other">:</span> <a href="nfafindall2.html#RegexMatches2"><span class="Identifier">RegexMatches2</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Slice</span><span class="Other">[</span><span class="Identifier">int</span><span class="Other">]</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> +<div id="items.i,RegexMatches2"> +<dt><pre><span class="Keyword">iterator</span> <a href="#items.i%2CRegexMatches2"><span class="Identifier">items</span></a><span class="Other">(</span><span class="Identifier">ms</span><span class="Other">:</span> <a href="nfafindall2.html#RegexMatches2"><span class="Identifier">RegexMatches2</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">MatchItemIdx</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> + +</dl></div> + + </div> +</div> + + <div class="row"> + <div class="twelve-columns footer"> + <span class="nim-sprite"></span> + <br/> + <small style="color: var(--hint);">Made with Nim. Generated: 2024-01-06 00:35:00 UTC</small> + </div> + </div> + </div> +</div> + +</body> +</html> diff --git a/regex/nfafindall2.idx b/regex/nfafindall2.idx new file mode 100644 index 00000000..c6a9f174 --- /dev/null +++ b/regex/nfafindall2.idx @@ -0,0 +1,7 @@ +RegexMatches2 regex/nfafindall2.html#RegexMatches2 nfafindall2: RegexMatches2 +bounds regex/nfafindall2.html#bounds.i,RegexMatches2 nfafindall2: bounds(ms: RegexMatches2): Slice[int] +items regex/nfafindall2.html#items.i,RegexMatches2 nfafindall2: items(ms: RegexMatches2): MatchItemIdx +fillMatchImpl regex/nfafindall2.html#fillMatchImpl,RegexMatch2,MatchItemIdx,RegexMatches2,Regex nfafindall2: fillMatchImpl(m: var RegexMatch2; mi: MatchItemIdx; ms: RegexMatches2;\n regex: Regex) +dummyMatch regex/nfafindall2.html#dummyMatch,RegexMatches2,int nfafindall2: dummyMatch(ms: var RegexMatches2; i: int) +findSomeImpl regex/nfafindall2.html#findSomeImpl,string,Regex,RegexMatches2,Natural,MatchFlags nfafindall2: findSomeImpl(text: string; regex: Regex; ms: var RegexMatches2;\n start: Natural = 0; flags: MatchFlags = {}): int +findSomeOptImpl regex/nfafindall2.html#findSomeOptImpl,string,Regex,RegexMatches2,Natural nfafindall2: findSomeOptImpl(text: string; regex: Regex; ms: var RegexMatches2;\n start: Natural): int diff --git a/regex/nfamacro.html b/regex/nfamacro.html new file mode 100644 index 00000000..576c080a --- /dev/null +++ b/regex/nfamacro.html @@ -0,0 +1,161 @@ +<?xml version="1.0" encoding="utf-8" ?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!-- This file is generated by Nim. --> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + +<meta name="viewport" content="width=device-width, initial-scale=1.0"> + +<!-- Favicon --> +<link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA=="/> +<link rel="icon" type="image/png" sizes="32x32" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QQQEwksSS9ZWwAAAk1JREFUWMPtll2ITVEUx39nn/O7Y5qR8f05wtCUUr6ZIS++8pEnkZInPImneaCQ5METNdOkeFBKUhMPRIkHKfEuUZSUlGlKPN2TrgfncpvmnntnmlEyq1Z7t89/rf9a6+y99oZxGZf/XeIq61EdtgKXgdXA0xrYAvBjOIF1AI9zvjcC74BSpndrJPkBWDScTF8Aa4E3wDlgHbASaANmVqlcCnwHvgDvgVfAJ+AikAAvgfVZwLnSVZHZaOuKoQi3ZOMi4NkYkpe1p4J7A8BpYAD49hfIy/oqG0+hLomiKP2L5L+1ubn5115S+3OAn4EnwBlgMzCjyt6ZAnQCJ4A7wOs88iRJHvw50HoujuPBoCKwHWiosy8MdfZnAdcHk8dxXFJ3VQbQlCTJvRBCGdRbD4M6uc5glpY3eAihpN5S5w12diSEcCCEcKUO4ljdr15T76ur1FDDLIQQ3qv71EdDOe3Kxj3leRXyk+pxdWnFWod6Wt2bY3de3aSuUHcPBVimHs7mK9WrmeOF6lR1o9qnzskh2ar2qm1qizpfXaPeVGdlmGN5pb09qMxz1Xb1kLqgzn1RyH7JUXW52lr5e/Kqi9qpto7V1atuUzfnARrV7jEib1T76gG2qxdGmXyiekkt1GswPTtek0aBfJp6YySGBfWg2tPQ0FAYgf1stUfdmdcjarbYJEniKIq6gY/Aw+zWHAC+p2labGpqiorFYgGYCEzN7oQdQClN07O1/EfDyGgC0ALMBdYAi4FyK+4H3gLPsxfR1zRNi+NP7nH5J+QntnXe5B5mpfQAAAAASUVORK5CYII="> + +<!-- Google fonts --> +<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/> +<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/> + +<!-- CSS --> +<title>src/regex/nfamacro</title> +<link rel="stylesheet" type="text/css" href="../nimdoc.out.css"> + +<script type="text/javascript" src="../dochack.js"></script> + +<script type="text/javascript"> +function main() { + var pragmaDots = document.getElementsByClassName("pragmadots"); + for (var i = 0; i < pragmaDots.length; i++) { + pragmaDots[i].onclick = function(event) { + // Hide tease + event.target.parentNode.style.display = "none"; + // Show actual + event.target.parentNode.nextElementSibling.style.display = "inline"; + } + } + + function switchTheme(e) { + if (e.target.checked) { + document.documentElement.setAttribute('data-theme', 'dark'); + localStorage.setItem('theme', 'dark'); + } else { + document.documentElement.setAttribute('data-theme', 'light'); + localStorage.setItem('theme', 'light'); + } + } + + const toggleSwitch = document.querySelector('.theme-switch input[type="checkbox"]'); + if (toggleSwitch !== null) { + toggleSwitch.addEventListener('change', switchTheme, false); + } + + var currentTheme = localStorage.getItem('theme'); + if (!currentTheme && window.matchMedia('(prefers-color-scheme: dark)').matches) { + currentTheme = 'dark'; + } + if (currentTheme) { + document.documentElement.setAttribute('data-theme', currentTheme); + + if (currentTheme === 'dark' && toggleSwitch !== null) { + toggleSwitch.checked = true; + } + } +} + +window.addEventListener('DOMContentLoaded', main); +</script> + +</head> +<body> +<div class="document" id="documentId"> + <div class="container"> + <h1 class="title">src/regex/nfamacro</h1> + <div class="row"> + <div class="three columns"> + <div class="theme-switch-wrapper"> + <label class="theme-switch" for="checkbox"> + <input type="checkbox" id="checkbox" /> + <div class="slider round"></div> + </label> + <em>Dark Mode</em> + </div> + <div id="global-links"> + <ul class="simple"> + <li> + <a href="../theindex.html">Index</a> + </li> + </ul> + </div> + <div id="searchInputDiv"> + Search: <input type="text" id="searchInput" + onkeyup="search()" /> + </div> + <div> + Group by: + <select onchange="groupBy(this.value)"> + <option value="section">Section</option> + <option value="type">Type</option> + </select> + </div> + <ul class="simple simple-toc" id="toc-list"> +<li> + <a class="reference reference-toplevel" href="#6" id="56">Imports</a> + <ul class="simple simple-toc-section"> + + </ul> +</li> +<li> + <a class="reference reference-toplevel" href="#12" id="62">Procs</a> + <ul class="simple simple-toc-section"> + <ul class="simple nested-toc-section">matchImpl + <li><a class="reference" href="#matchImpl%2CNimNode%2CNimNode%2CNimNode" + title="matchImpl(text, expLit, body: NimNode): NimNode">matchImpl(text, expLit, body: NimNode): NimNode</a></li> + + </ul> + + </ul> +</li> + +</ul> + + </div> + + <div class="nine columns" id="content"> + <div id="tocRoot"></div> + + <p class="module-desc">NFA matcher for static regexes</p> + <div class="section" id="6"> +<h1><a class="toc-backref" href="#6">Imports</a></h1> +<dl class="item"> +<a class="reference external" href="common.html">common</a>, <a class="reference external" href="types.html">types</a>, <a class="reference external" href="nfatype.html">nfatype</a>, <a class="reference external" href="compiler.html">compiler</a> +</dl></div> +<div class="section" id="12"> +<h1><a class="toc-backref" href="#12">Procs</a></h1> +<dl class="item"> +<div id="matchImpl,NimNode,NimNode,NimNode"> +<dt><pre><span class="Keyword">proc</span> <a href="#matchImpl%2CNimNode%2CNimNode%2CNimNode"><span class="Identifier">matchImpl</span></a><span class="Other">(</span><span class="Identifier">text</span><span class="Other">,</span> <span class="Identifier">expLit</span><span class="Other">,</span> <span class="Identifier">body</span><span class="Other">:</span> <span class="Identifier">NimNode</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">NimNode</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RegexError</span><span class="Other">]</span><span class="Other">,</span> + <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> + +</dl></div> + + </div> +</div> + + <div class="row"> + <div class="twelve-columns footer"> + <span class="nim-sprite"></span> + <br/> + <small style="color: var(--hint);">Made with Nim. Generated: 2024-01-06 00:35:00 UTC</small> + </div> + </div> + </div> +</div> + +</body> +</html> diff --git a/regex/nfamacro.idx b/regex/nfamacro.idx new file mode 100644 index 00000000..228212eb --- /dev/null +++ b/regex/nfamacro.idx @@ -0,0 +1 @@ +matchImpl regex/nfamacro.html#matchImpl,NimNode,NimNode,NimNode nfamacro: matchImpl(text, expLit, body: NimNode): NimNode diff --git a/regex/nfamatch.html b/regex/nfamatch.html new file mode 100644 index 00000000..617bcb8e --- /dev/null +++ b/regex/nfamatch.html @@ -0,0 +1,257 @@ +<?xml version="1.0" encoding="utf-8" ?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!-- This file is generated by Nim. --> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + +<meta name="viewport" content="width=device-width, initial-scale=1.0"> + +<!-- Favicon --> +<link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA=="/> +<link rel="icon" type="image/png" sizes="32x32" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QQQEwksSS9ZWwAAAk1JREFUWMPtll2ITVEUx39nn/O7Y5qR8f05wtCUUr6ZIS++8pEnkZInPImneaCQ5METNdOkeFBKUhMPRIkHKfEuUZSUlGlKPN2TrgfncpvmnntnmlEyq1Z7t89/rf9a6+y99oZxGZf/XeIq61EdtgKXgdXA0xrYAvBjOIF1AI9zvjcC74BSpndrJPkBWDScTF8Aa4E3wDlgHbASaANmVqlcCnwHvgDvgVfAJ+AikAAvgfVZwLnSVZHZaOuKoQi3ZOMi4NkYkpe1p4J7A8BpYAD49hfIy/oqG0+hLomiKP2L5L+1ubn5115S+3OAn4EnwBlgMzCjyt6ZAnQCJ4A7wOs88iRJHvw50HoujuPBoCKwHWiosy8MdfZnAdcHk8dxXFJ3VQbQlCTJvRBCGdRbD4M6uc5glpY3eAihpN5S5w12diSEcCCEcKUO4ljdr15T76ur1FDDLIQQ3qv71EdDOe3Kxj3leRXyk+pxdWnFWod6Wt2bY3de3aSuUHcPBVimHs7mK9WrmeOF6lR1o9qnzskh2ar2qm1qizpfXaPeVGdlmGN5pb09qMxz1Xb1kLqgzn1RyH7JUXW52lr5e/Kqi9qpto7V1atuUzfnARrV7jEib1T76gG2qxdGmXyiekkt1GswPTtek0aBfJp6YySGBfWg2tPQ0FAYgf1stUfdmdcjarbYJEniKIq6gY/Aw+zWHAC+p2labGpqiorFYgGYCEzN7oQdQClN07O1/EfDyGgC0ALMBdYAi4FyK+4H3gLPsxfR1zRNi+NP7nH5J+QntnXe5B5mpfQAAAAASUVORK5CYII="> + +<!-- Google fonts --> +<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/> +<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/> + +<!-- CSS --> +<title>src/regex/nfamatch</title> +<link rel="stylesheet" type="text/css" href="../nimdoc.out.css"> + +<script type="text/javascript" src="../dochack.js"></script> + +<script type="text/javascript"> +function main() { + var pragmaDots = document.getElementsByClassName("pragmadots"); + for (var i = 0; i < pragmaDots.length; i++) { + pragmaDots[i].onclick = function(event) { + // Hide tease + event.target.parentNode.style.display = "none"; + // Show actual + event.target.parentNode.nextElementSibling.style.display = "inline"; + } + } + + function switchTheme(e) { + if (e.target.checked) { + document.documentElement.setAttribute('data-theme', 'dark'); + localStorage.setItem('theme', 'dark'); + } else { + document.documentElement.setAttribute('data-theme', 'light'); + localStorage.setItem('theme', 'light'); + } + } + + const toggleSwitch = document.querySelector('.theme-switch input[type="checkbox"]'); + if (toggleSwitch !== null) { + toggleSwitch.addEventListener('change', switchTheme, false); + } + + var currentTheme = localStorage.getItem('theme'); + if (!currentTheme && window.matchMedia('(prefers-color-scheme: dark)').matches) { + currentTheme = 'dark'; + } + if (currentTheme) { + document.documentElement.setAttribute('data-theme', currentTheme); + + if (currentTheme === 'dark' && toggleSwitch !== null) { + toggleSwitch.checked = true; + } + } +} + +window.addEventListener('DOMContentLoaded', main); +</script> + +</head> +<body> +<div class="document" id="documentId"> + <div class="container"> + <h1 class="title">src/regex/nfamatch</h1> + <div class="row"> + <div class="three columns"> + <div class="theme-switch-wrapper"> + <label class="theme-switch" for="checkbox"> + <input type="checkbox" id="checkbox" /> + <div class="slider round"></div> + </label> + <em>Dark Mode</em> + </div> + <div id="global-links"> + <ul class="simple"> + <li> + <a href="../theindex.html">Index</a> + </li> + </ul> + </div> + <div id="searchInputDiv"> + Search: <input type="text" id="searchInput" + onkeyup="search()" /> + </div> + <div> + Group by: + <select onchange="groupBy(this.value)"> + <option value="section">Section</option> + <option value="type">Type</option> + </select> + </div> + <ul class="simple simple-toc" id="toc-list"> +<li> + <a class="reference reference-toplevel" href="#6" id="56">Imports</a> + <ul class="simple simple-toc-section"> + + </ul> +</li> +<li> + <a class="reference reference-toplevel" href="#7" id="57">Types</a> + <ul class="simple simple-toc-section"> + <li><a class="reference" href="#Lookaround" + title="Lookaround = object + ahead*: AheadSig + behind*: BehindSig + smL*: SmLookaround">Lookaround</a></li> + + </ul> +</li> +<li> + <a class="reference reference-toplevel" href="#12" id="62">Procs</a> + <ul class="simple simple-toc-section"> + <ul class="simple nested-toc-section">matchImpl + <li><a class="reference" href="#matchImpl%2Cstring%2CRegex%2CRegexMatch%2Cint" + title="matchImpl(text: string; regex: Regex; m: var RegexMatch; start = 0): bool">matchImpl(text: string; regex: Regex; m: var RegexMatch; start = 0): bool</a></li> + + </ul> + <ul class="simple nested-toc-section">reversedMatchImpl + <li><a class="reference" href="#reversedMatchImpl%2CSubmatches%2CSubmatches%2Cstring%2CNfa%2CLookaround%2Cint%2Cint" + title="reversedMatchImpl(smA, smB: var Submatches; text: string; nfa: Nfa; + look: var Lookaround; start, limit: int): int">reversedMatchImpl(smA, smB: var Submatches; text: string; nfa: Nfa; + look: var Lookaround; start, limit: int): int</a></li> + + </ul> + <ul class="simple nested-toc-section">startsWithImpl + <li><a class="reference" href="#startsWithImpl%2Cstring%2CRegex%2Cint" + title="startsWithImpl(text: string; regex: Regex; start: int): bool">startsWithImpl(text: string; regex: Regex; start: int): bool</a></li> + + </ul> + + </ul> +</li> +<li> + <a class="reference reference-toplevel" href="#18" id="68">Templates</a> + <ul class="simple simple-toc-section"> + <ul class="simple nested-toc-section">initLook + <li><a class="reference" href="#initLook.t" + title="initLook(): Lookaround">initLook(): Lookaround</a></li> + + </ul> + <ul class="simple nested-toc-section">lookAroundTpl + <li><a class="reference" href="#lookAroundTpl.t" + title="lookAroundTpl(): untyped">lookAroundTpl(): untyped</a></li> + + </ul> + + </ul> +</li> + +</ul> + + </div> + + <div class="nine columns" id="content"> + <div id="tocRoot"></div> + + <p class="module-desc">DEPRECATED</p> + <div class="section" id="6"> +<h1><a class="toc-backref" href="#6">Imports</a></h1> +<dl class="item"> +<a class="reference external" href="common.html">common</a>, <a class="reference external" href="nodematch.html">nodematch</a>, <a class="reference external" href="types.html">types</a>, <a class="reference external" href="nfatype.html">nfatype</a> +</dl></div> +<div class="section" id="7"> +<h1><a class="toc-backref" href="#7">Types</a></h1> +<dl class="item"> +<div id="Lookaround"> +<dt><pre><a href="nfamatch.html#Lookaround"><span class="Identifier">Lookaround</span></a> <span class="Other">=</span> <span class="Keyword">object</span> + <span class="Identifier">ahead</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">AheadSig</span> + <span class="Identifier">behind</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">BehindSig</span> + <span class="Identifier">smL</span><span class="Operator">*</span><span class="Other">:</span> <a href="nfatype.html#SmLookaround"><span class="Identifier">SmLookaround</span></a> +</pre></dt> +<dd> + + + +</dd> +</div> + +</dl></div> +<div class="section" id="12"> +<h1><a class="toc-backref" href="#12">Procs</a></h1> +<dl class="item"> +<div id="matchImpl,string,Regex,RegexMatch,int"> +<dt><pre><span class="Keyword">func</span> <a href="#matchImpl%2Cstring%2CRegex%2CRegexMatch%2Cint"><span class="Identifier">matchImpl</span></a><span class="Other">(</span><span class="Identifier">text</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">regex</span><span class="Other">:</span> <a href="nfatype.html#Regex"><span class="Identifier">Regex</span></a><span class="Other">;</span> <span class="Identifier">m</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="nfatype.html#RegexMatch"><span class="Identifier">RegexMatch</span></a><span class="Other">;</span> <span class="Identifier">start</span> <span class="Other">=</span> <span class="DecNumber">0</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">bool</span> {. + <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> +<div id="reversedMatchImpl,Submatches,Submatches,string,Nfa,Lookaround,int,int"> +<dt><pre><span class="Keyword">func</span> <a href="#reversedMatchImpl%2CSubmatches%2CSubmatches%2Cstring%2CNfa%2CLookaround%2Cint%2Cint"><span class="Identifier">reversedMatchImpl</span></a><span class="Other">(</span><span class="Identifier">smA</span><span class="Other">,</span> <span class="Identifier">smB</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="nfatype.html#Submatches"><span class="Identifier">Submatches</span></a><span class="Other">;</span> <span class="Identifier">text</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">nfa</span><span class="Other">:</span> <a href="types.html#Nfa"><span class="Identifier">Nfa</span></a><span class="Other">;</span> + <span class="Identifier">look</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="nfamatch.html#Lookaround"><span class="Identifier">Lookaround</span></a><span class="Other">;</span> <span class="Identifier">start</span><span class="Other">,</span> <span class="Identifier">limit</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">int</span> {. + <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> +<div id="startsWithImpl,string,Regex,int"> +<dt><pre><span class="Keyword">func</span> <a href="#startsWithImpl%2Cstring%2CRegex%2Cint"><span class="Identifier">startsWithImpl</span></a><span class="Other">(</span><span class="Identifier">text</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">regex</span><span class="Other">:</span> <a href="nfatype.html#Regex"><span class="Identifier">Regex</span></a><span class="Other">;</span> <span class="Identifier">start</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">bool</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> + <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> + +</dl></div> +<div class="section" id="18"> +<h1><a class="toc-backref" href="#18">Templates</a></h1> +<dl class="item"> +<div id="initLook.t"> +<dt><pre><span class="Keyword">template</span> <a href="#initLook.t"><span class="Identifier">initLook</span></a><span class="Other">(</span><span class="Other">)</span><span class="Other">:</span> <a href="nfamatch.html#Lookaround"><span class="Identifier">Lookaround</span></a></pre></dt> +<dd> + + + +</dd> +</div> +<div id="lookAroundTpl.t"> +<dt><pre><span class="Keyword">template</span> <a href="#lookAroundTpl.t"><span class="Identifier">lookAroundTpl</span></a><span class="Other">(</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">untyped</span> {.<span class="Identifier">dirty</span>.}</pre></dt> +<dd> + + + +</dd> +</div> + +</dl></div> + + </div> +</div> + + <div class="row"> + <div class="twelve-columns footer"> + <span class="nim-sprite"></span> + <br/> + <small style="color: var(--hint);">Made with Nim. Generated: 2024-01-06 00:35:00 UTC</small> + </div> + </div> + </div> +</div> + +</body> +</html> diff --git a/regex/nfamatch.idx b/regex/nfamatch.idx new file mode 100644 index 00000000..0b876313 --- /dev/null +++ b/regex/nfamatch.idx @@ -0,0 +1,6 @@ +Lookaround regex/nfamatch.html#Lookaround nfamatch: Lookaround +lookAroundTpl regex/nfamatch.html#lookAroundTpl.t nfamatch: lookAroundTpl(): untyped +reversedMatchImpl regex/nfamatch.html#reversedMatchImpl,Submatches,Submatches,string,Nfa,Lookaround,int,int nfamatch: reversedMatchImpl(smA, smB: var Submatches; text: string; nfa: Nfa;\n look: var Lookaround; start, limit: int): int +initLook regex/nfamatch.html#initLook.t nfamatch: initLook(): Lookaround +matchImpl regex/nfamatch.html#matchImpl,string,Regex,RegexMatch,int nfamatch: matchImpl(text: string; regex: Regex; m: var RegexMatch; start = 0): bool +startsWithImpl regex/nfamatch.html#startsWithImpl,string,Regex,int nfamatch: startsWithImpl(text: string; regex: Regex; start: int): bool diff --git a/regex/nfamatch2.html b/regex/nfamatch2.html new file mode 100644 index 00000000..7ea49acc --- /dev/null +++ b/regex/nfamatch2.html @@ -0,0 +1,262 @@ +<?xml version="1.0" encoding="utf-8" ?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!-- This file is generated by Nim. --> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + +<meta name="viewport" content="width=device-width, initial-scale=1.0"> + +<!-- Favicon --> +<link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA=="/> +<link rel="icon" type="image/png" sizes="32x32" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QQQEwksSS9ZWwAAAk1JREFUWMPtll2ITVEUx39nn/O7Y5qR8f05wtCUUr6ZIS++8pEnkZInPImneaCQ5METNdOkeFBKUhMPRIkHKfEuUZSUlGlKPN2TrgfncpvmnntnmlEyq1Z7t89/rf9a6+y99oZxGZf/XeIq61EdtgKXgdXA0xrYAvBjOIF1AI9zvjcC74BSpndrJPkBWDScTF8Aa4E3wDlgHbASaANmVqlcCnwHvgDvgVfAJ+AikAAvgfVZwLnSVZHZaOuKoQi3ZOMi4NkYkpe1p4J7A8BpYAD49hfIy/oqG0+hLomiKP2L5L+1ubn5115S+3OAn4EnwBlgMzCjyt6ZAnQCJ4A7wOs88iRJHvw50HoujuPBoCKwHWiosy8MdfZnAdcHk8dxXFJ3VQbQlCTJvRBCGdRbD4M6uc5glpY3eAihpN5S5w12diSEcCCEcKUO4ljdr15T76ur1FDDLIQQ3qv71EdDOe3Kxj3leRXyk+pxdWnFWod6Wt2bY3de3aSuUHcPBVimHs7mK9WrmeOF6lR1o9qnzskh2ar2qm1qizpfXaPeVGdlmGN5pb09qMxz1Xb1kLqgzn1RyH7JUXW52lr5e/Kqi9qpto7V1atuUzfnARrV7jEib1T76gG2qxdGmXyiekkt1GswPTtek0aBfJp6YySGBfWg2tPQ0FAYgf1stUfdmdcjarbYJEniKIq6gY/Aw+zWHAC+p2labGpqiorFYgGYCEzN7oQdQClN07O1/EfDyGgC0ALMBdYAi4FyK+4H3gLPsxfR1zRNi+NP7nH5J+QntnXe5B5mpfQAAAAASUVORK5CYII="> + +<!-- Google fonts --> +<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/> +<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/> + +<!-- CSS --> +<title>src/regex/nfamatch2</title> +<link rel="stylesheet" type="text/css" href="../nimdoc.out.css"> + +<script type="text/javascript" src="../dochack.js"></script> + +<script type="text/javascript"> +function main() { + var pragmaDots = document.getElementsByClassName("pragmadots"); + for (var i = 0; i < pragmaDots.length; i++) { + pragmaDots[i].onclick = function(event) { + // Hide tease + event.target.parentNode.style.display = "none"; + // Show actual + event.target.parentNode.nextElementSibling.style.display = "inline"; + } + } + + function switchTheme(e) { + if (e.target.checked) { + document.documentElement.setAttribute('data-theme', 'dark'); + localStorage.setItem('theme', 'dark'); + } else { + document.documentElement.setAttribute('data-theme', 'light'); + localStorage.setItem('theme', 'light'); + } + } + + const toggleSwitch = document.querySelector('.theme-switch input[type="checkbox"]'); + if (toggleSwitch !== null) { + toggleSwitch.addEventListener('change', switchTheme, false); + } + + var currentTheme = localStorage.getItem('theme'); + if (!currentTheme && window.matchMedia('(prefers-color-scheme: dark)').matches) { + currentTheme = 'dark'; + } + if (currentTheme) { + document.documentElement.setAttribute('data-theme', currentTheme); + + if (currentTheme === 'dark' && toggleSwitch !== null) { + toggleSwitch.checked = true; + } + } +} + +window.addEventListener('DOMContentLoaded', main); +</script> + +</head> +<body> +<div class="document" id="documentId"> + <div class="container"> + <h1 class="title">src/regex/nfamatch2</h1> + <div class="row"> + <div class="three columns"> + <div class="theme-switch-wrapper"> + <label class="theme-switch" for="checkbox"> + <input type="checkbox" id="checkbox" /> + <div class="slider round"></div> + </label> + <em>Dark Mode</em> + </div> + <div id="global-links"> + <ul class="simple"> + <li> + <a href="../theindex.html">Index</a> + </li> + </ul> + </div> + <div id="searchInputDiv"> + Search: <input type="text" id="searchInput" + onkeyup="search()" /> + </div> + <div> + Group by: + <select onchange="groupBy(this.value)"> + <option value="section">Section</option> + <option value="type">Type</option> + </select> + </div> + <ul class="simple simple-toc" id="toc-list"> +<li> + <a class="reference reference-toplevel" href="#6" id="56">Imports</a> + <ul class="simple simple-toc-section"> + + </ul> +</li> +<li> + <a class="reference reference-toplevel" href="#7" id="57">Types</a> + <ul class="simple simple-toc-section"> + <li><a class="reference" href="#Lookaround" + title="Lookaround = object + ahead*: AheadSig + behind*: BehindSig + smL*: SmLookaround">Lookaround</a></li> + + </ul> +</li> +<li> + <a class="reference reference-toplevel" href="#12" id="62">Procs</a> + <ul class="simple simple-toc-section"> + <ul class="simple nested-toc-section">matchImpl + <li><a class="reference" href="#matchImpl%2Cstring%2CRegex%2CRegexMatch2%2Cint%2CMatchFlags" + title="matchImpl(text: string; regex: Regex; m: var RegexMatch2; start = 0; + flags: MatchFlags = {}): bool">matchImpl(text: string; regex: Regex; m: var RegexMatch2; start = 0; + flags: MatchFlags = {}): bool</a></li> + + </ul> + <ul class="simple nested-toc-section">reversedMatchImpl + <li><a class="reference" href="#reversedMatchImpl%2CSubmatches%2CSubmatches%2Cstring%2CNfa%2CLookaround%2Cint%2Cint%2Cint%2CMatchFlags" + title="reversedMatchImpl(smA, smB: var Submatches; text: string; nfa: Nfa; + look: var Lookaround; groupsLen: int; start, limit: int; + flags: MatchFlags = {}): int">reversedMatchImpl(smA, smB: var Submatches; text: string; nfa: Nfa; + look: var Lookaround; groupsLen: int; start, limit: int; + flags: MatchFlags = {}): int</a></li> + + </ul> + <ul class="simple nested-toc-section">startsWithImpl2 + <li><a class="reference" href="#startsWithImpl2%2Cstring%2CRegex%2Cint" + title="startsWithImpl2(text: string; regex: Regex; start: int): bool">startsWithImpl2(text: string; regex: Regex; start: int): bool</a></li> + + </ul> + + </ul> +</li> +<li> + <a class="reference reference-toplevel" href="#18" id="68">Templates</a> + <ul class="simple simple-toc-section"> + <ul class="simple nested-toc-section">initLook + <li><a class="reference" href="#initLook.t" + title="initLook(): Lookaround">initLook(): Lookaround</a></li> + + </ul> + <ul class="simple nested-toc-section">lookAroundTpl + <li><a class="reference" href="#lookAroundTpl.t" + title="lookAroundTpl(): untyped">lookAroundTpl(): untyped</a></li> + + </ul> + + </ul> +</li> + +</ul> + + </div> + + <div class="nine columns" id="content"> + <div id="tocRoot"></div> + + <p class="module-desc">NFA matcher for non-static regexes</p> + <div class="section" id="6"> +<h1><a class="toc-backref" href="#6">Imports</a></h1> +<dl class="item"> +<a class="reference external" href="common.html">common</a>, <a class="reference external" href="nodematch.html">nodematch</a>, <a class="reference external" href="types.html">types</a>, <a class="reference external" href="nfatype.html">nfatype</a> +</dl></div> +<div class="section" id="7"> +<h1><a class="toc-backref" href="#7">Types</a></h1> +<dl class="item"> +<div id="Lookaround"> +<dt><pre><a href="nfamatch2.html#Lookaround"><span class="Identifier">Lookaround</span></a> <span class="Other">=</span> <span class="Keyword">object</span> + <span class="Identifier">ahead</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">AheadSig</span> + <span class="Identifier">behind</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">BehindSig</span> + <span class="Identifier">smL</span><span class="Operator">*</span><span class="Other">:</span> <a href="nfatype.html#SmLookaround"><span class="Identifier">SmLookaround</span></a> +</pre></dt> +<dd> + + + +</dd> +</div> + +</dl></div> +<div class="section" id="12"> +<h1><a class="toc-backref" href="#12">Procs</a></h1> +<dl class="item"> +<div id="matchImpl,string,Regex,RegexMatch2,int,MatchFlags"> +<dt><pre><span class="Keyword">func</span> <a href="#matchImpl%2Cstring%2CRegex%2CRegexMatch2%2Cint%2CMatchFlags"><span class="Identifier">matchImpl</span></a><span class="Other">(</span><span class="Identifier">text</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">regex</span><span class="Other">:</span> <a href="nfatype.html#Regex"><span class="Identifier">Regex</span></a><span class="Other">;</span> <span class="Identifier">m</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="nfatype.html#RegexMatch2"><span class="Identifier">RegexMatch2</span></a><span class="Other">;</span> <span class="Identifier">start</span> <span class="Other">=</span> <span class="DecNumber">0</span><span class="Other">;</span> + <span class="Identifier">flags</span><span class="Other">:</span> <a href="nfatype.html#MatchFlags"><span class="Identifier">MatchFlags</span></a> <span class="Other">=</span> <span class="Other">{</span><span class="Other">}</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">bool</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> +<div id="reversedMatchImpl,Submatches,Submatches,string,Nfa,Lookaround,int,int,int,MatchFlags"> +<dt><pre><span class="Keyword">func</span> <a href="#reversedMatchImpl%2CSubmatches%2CSubmatches%2Cstring%2CNfa%2CLookaround%2Cint%2Cint%2Cint%2CMatchFlags"><span class="Identifier">reversedMatchImpl</span></a><span class="Other">(</span><span class="Identifier">smA</span><span class="Other">,</span> <span class="Identifier">smB</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="nfatype.html#Submatches"><span class="Identifier">Submatches</span></a><span class="Other">;</span> <span class="Identifier">text</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">nfa</span><span class="Other">:</span> <a href="types.html#Nfa"><span class="Identifier">Nfa</span></a><span class="Other">;</span> + <span class="Identifier">look</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="nfamatch2.html#Lookaround"><span class="Identifier">Lookaround</span></a><span class="Other">;</span> <span class="Identifier">groupsLen</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">;</span> <span class="Identifier">start</span><span class="Other">,</span> <span class="Identifier">limit</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">;</span> + <span class="Identifier">flags</span><span class="Other">:</span> <a href="nfatype.html#MatchFlags"><span class="Identifier">MatchFlags</span></a> <span class="Other">=</span> <span class="Other">{</span><span class="Other">}</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">int</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> + <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> +<div id="startsWithImpl2,string,Regex,int"> +<dt><pre><span class="Keyword">func</span> <a href="#startsWithImpl2%2Cstring%2CRegex%2Cint"><span class="Identifier">startsWithImpl2</span></a><span class="Other">(</span><span class="Identifier">text</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">regex</span><span class="Other">:</span> <a href="nfatype.html#Regex"><span class="Identifier">Regex</span></a><span class="Other">;</span> <span class="Identifier">start</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">bool</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> + <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> + +</dl></div> +<div class="section" id="18"> +<h1><a class="toc-backref" href="#18">Templates</a></h1> +<dl class="item"> +<div id="initLook.t"> +<dt><pre><span class="Keyword">template</span> <a href="#initLook.t"><span class="Identifier">initLook</span></a><span class="Other">(</span><span class="Other">)</span><span class="Other">:</span> <a href="nfamatch2.html#Lookaround"><span class="Identifier">Lookaround</span></a></pre></dt> +<dd> + + + +</dd> +</div> +<div id="lookAroundTpl.t"> +<dt><pre><span class="Keyword">template</span> <a href="#lookAroundTpl.t"><span class="Identifier">lookAroundTpl</span></a><span class="Other">(</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">untyped</span> {.<span class="Identifier">dirty</span>.}</pre></dt> +<dd> + + + +</dd> +</div> + +</dl></div> + + </div> +</div> + + <div class="row"> + <div class="twelve-columns footer"> + <span class="nim-sprite"></span> + <br/> + <small style="color: var(--hint);">Made with Nim. Generated: 2024-01-06 00:35:00 UTC</small> + </div> + </div> + </div> +</div> + +</body> +</html> diff --git a/regex/nfamatch2.idx b/regex/nfamatch2.idx new file mode 100644 index 00000000..0c658087 --- /dev/null +++ b/regex/nfamatch2.idx @@ -0,0 +1,6 @@ +Lookaround regex/nfamatch2.html#Lookaround nfamatch2: Lookaround +lookAroundTpl regex/nfamatch2.html#lookAroundTpl.t nfamatch2: lookAroundTpl(): untyped +reversedMatchImpl regex/nfamatch2.html#reversedMatchImpl,Submatches,Submatches,string,Nfa,Lookaround,int,int,int,MatchFlags nfamatch2: reversedMatchImpl(smA, smB: var Submatches; text: string; nfa: Nfa;\n look: var Lookaround; groupsLen: int; start, limit: int;\n flags: MatchFlags = {}): int +initLook regex/nfamatch2.html#initLook.t nfamatch2: initLook(): Lookaround +matchImpl regex/nfamatch2.html#matchImpl,string,Regex,RegexMatch2,int,MatchFlags nfamatch2: matchImpl(text: string; regex: Regex; m: var RegexMatch2; start = 0;\n flags: MatchFlags = {}): bool +startsWithImpl2 regex/nfamatch2.html#startsWithImpl2,string,Regex,int nfamatch2: startsWithImpl2(text: string; regex: Regex; start: int): bool diff --git a/regex/nfatype.html b/regex/nfatype.html new file mode 100644 index 00000000..5d21bf28 --- /dev/null +++ b/regex/nfatype.html @@ -0,0 +1,875 @@ +<?xml version="1.0" encoding="utf-8" ?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!-- This file is generated by Nim. --> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + +<meta name="viewport" content="width=device-width, initial-scale=1.0"> + +<!-- Favicon --> +<link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA=="/> +<link rel="icon" type="image/png" sizes="32x32" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QQQEwksSS9ZWwAAAk1JREFUWMPtll2ITVEUx39nn/O7Y5qR8f05wtCUUr6ZIS++8pEnkZInPImneaCQ5METNdOkeFBKUhMPRIkHKfEuUZSUlGlKPN2TrgfncpvmnntnmlEyq1Z7t89/rf9a6+y99oZxGZf/XeIq61EdtgKXgdXA0xrYAvBjOIF1AI9zvjcC74BSpndrJPkBWDScTF8Aa4E3wDlgHbASaANmVqlcCnwHvgDvgVfAJ+AikAAvgfVZwLnSVZHZaOuKoQi3ZOMi4NkYkpe1p4J7A8BpYAD49hfIy/oqG0+hLomiKP2L5L+1ubn5115S+3OAn4EnwBlgMzCjyt6ZAnQCJ4A7wOs88iRJHvw50HoujuPBoCKwHWiosy8MdfZnAdcHk8dxXFJ3VQbQlCTJvRBCGdRbD4M6uc5glpY3eAihpN5S5w12diSEcCCEcKUO4ljdr15T76ur1FDDLIQQ3qv71EdDOe3Kxj3leRXyk+pxdWnFWod6Wt2bY3de3aSuUHcPBVimHs7mK9WrmeOF6lR1o9qnzskh2ar2qm1qizpfXaPeVGdlmGN5pb09qMxz1Xb1kLqgzn1RyH7JUXW52lr5e/Kqi9qpto7V1atuUzfnARrV7jEib1T76gG2qxdGmXyiekkt1GswPTtek0aBfJp6YySGBfWg2tPQ0FAYgf1stUfdmdcjarbYJEniKIq6gY/Aw+zWHAC+p2labGpqiorFYgGYCEzN7oQdQClN07O1/EfDyGgC0ALMBdYAi4FyK+4H3gLPsxfR1zRNi+NP7nH5J+QntnXe5B5mpfQAAAAASUVORK5CYII="> + +<!-- Google fonts --> +<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/> +<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/> + +<!-- CSS --> +<title>src/regex/nfatype</title> +<link rel="stylesheet" type="text/css" href="../nimdoc.out.css"> + +<script type="text/javascript" src="../dochack.js"></script> + +<script type="text/javascript"> +function main() { + var pragmaDots = document.getElementsByClassName("pragmadots"); + for (var i = 0; i < pragmaDots.length; i++) { + pragmaDots[i].onclick = function(event) { + // Hide tease + event.target.parentNode.style.display = "none"; + // Show actual + event.target.parentNode.nextElementSibling.style.display = "inline"; + } + } + + function switchTheme(e) { + if (e.target.checked) { + document.documentElement.setAttribute('data-theme', 'dark'); + localStorage.setItem('theme', 'dark'); + } else { + document.documentElement.setAttribute('data-theme', 'light'); + localStorage.setItem('theme', 'light'); + } + } + + const toggleSwitch = document.querySelector('.theme-switch input[type="checkbox"]'); + if (toggleSwitch !== null) { + toggleSwitch.addEventListener('change', switchTheme, false); + } + + var currentTheme = localStorage.getItem('theme'); + if (!currentTheme && window.matchMedia('(prefers-color-scheme: dark)').matches) { + currentTheme = 'dark'; + } + if (currentTheme) { + document.documentElement.setAttribute('data-theme', currentTheme); + + if (currentTheme === 'dark' && toggleSwitch !== null) { + toggleSwitch.checked = true; + } + } +} + +window.addEventListener('DOMContentLoaded', main); +</script> + +</head> +<body> +<div class="document" id="documentId"> + <div class="container"> + <h1 class="title">src/regex/nfatype</h1> + <div class="row"> + <div class="three columns"> + <div class="theme-switch-wrapper"> + <label class="theme-switch" for="checkbox"> + <input type="checkbox" id="checkbox" /> + <div class="slider round"></div> + </label> + <em>Dark Mode</em> + </div> + <div id="global-links"> + <ul class="simple"> + <li> + <a href="../theindex.html">Index</a> + </li> + </ul> + </div> + <div id="searchInputDiv"> + Search: <input type="text" id="searchInput" + onkeyup="search()" /> + </div> + <div> + Group by: + <select onchange="groupBy(this.value)"> + <option value="section">Section</option> + <option value="type">Type</option> + </select> + </div> + <ul class="simple simple-toc" id="toc-list"> +<li> + <a class="reference reference-toplevel" href="#6" id="56">Imports</a> + <ul class="simple simple-toc-section"> + + </ul> +</li> +<li> + <a class="reference reference-toplevel" href="#7" id="57">Types</a> + <ul class="simple simple-toc-section"> + <li><a class="reference" href="#Bounds" + title="Bounds = Slice[int]">Bounds</a></li> + <li><a class="reference" href="#CaptIdx" + title="CaptIdx = int32">CaptIdx</a></li> + <li><a class="reference" href="#CaptNode" + title="CaptNode = object + parent*: CaptIdx + bound*: int + idx*: int16">CaptNode</a></li> + <li><a class="reference" href="#Capts" + title="Capts = seq[CaptNode]">Capts</a></li> + <li><a class="reference" href="#Capts3" + title="Capts3 = object + s: seq[Slice[int]] + groupsLen: Natural + blockSize: Natural + blockSizeL2: Natural + states: seq[CaptState] + free: seq[int16] + freezeId: CaptState">Capts3</a></li> + <li><a class="reference" href="#CaptState" + title="CaptState = uint8">CaptState</a></li> + <li><a class="reference" href="#Captures" + title="Captures = seq[seq[Slice[int]]]">Captures</a></li> + <li><a class="reference" href="#MatchFlag" + title="MatchFlag = enum + mfShortestMatch, mfNoCaptures, mfFindMatch, mfFindMatchOpt, mfAnchored, + mfBwMatch, mfReverseCapts, mfBytesInput">MatchFlag</a></li> + <li><a class="reference" href="#MatchFlags" + title="MatchFlags = set[MatchFlag]">MatchFlags</a></li> + <li><a class="reference" href="#NodeIdx" + title="NodeIdx = int16">NodeIdx</a></li> + <li><a class="reference" href="#PState" + title="PState = tuple[ni: NodeIdx, ci: CaptIdx, bounds: Bounds]">PState</a></li> + <li><a class="reference" href="#Regex" + title="Regex = object + nfa*: Nfa + groupsCount*: int16 + namedGroups*: OrderedTable[string, int16] + flags*: RegexFlags + litOpt*: LitOpt">Regex</a></li> + <li><a class="reference" href="#Regex2" + title="Regex2 = distinct Regex">Regex2</a></li> + <li><a class="reference" href="#RegexLit" + title="RegexLit = distinct string">RegexLit</a></li> + <li><a class="reference" href="#RegexMatch" + title="RegexMatch = object + captures*: Captures + namedGroups*: OrderedTable[string, int16] + boundaries*: Slice[int]">RegexMatch</a></li> + <li><a class="reference" href="#RegexMatch2" + title="RegexMatch2 = object + captures*: seq[Slice[int]] + namedGroups*: OrderedTable[string, int16] + boundaries*: Slice[int]">RegexMatch2</a></li> + <li><a class="reference" href="#SmLookaround" + title="SmLookaround = object + s: seq[SmLookaroundItem] + i: int">SmLookaround</a></li> + <li><a class="reference" href="#SmLookaroundItem" + title="SmLookaroundItem = object + a, b: Submatches">SmLookaroundItem</a></li> + <li><a class="reference" href="#Submatches" + title="Submatches = ref object + sx: seq[PState] + ss: seq[int16] + si: int16">Submatches</a></li> + + </ul> +</li> +<li> + <a class="reference reference-toplevel" href="#10" id="60">Consts</a> + <ul class="simple simple-toc-section"> + <li><a class="reference" href="#nonCapture" + title="nonCapture = (a: -1, b: -2)">nonCapture</a></li> + + </ul> +</li> +<li> + <a class="reference reference-toplevel" href="#12" id="62">Procs</a> + <ul class="simple simple-toc-section"> + <ul class="simple nested-toc-section">[] + <li><a class="reference" href="#%5B%5D%2CCapts3%2CNatural%2CNatural" + title="`[]`(capts: Capts3; i, j: Natural): Slice[int]">`[]`(capts: Capts3; i, j: Natural): Slice[int]</a></li> + <li><a class="reference" href="#%5B%5D%2CCapts3%2CNatural%2CNatural_2" + title="`[]`(capts: var Capts3; i, j: Natural): var Slice[int]">`[]`(capts: var Capts3; i, j: Natural): var Slice[int]</a></li> + <li><a class="reference" href="#%5B%5D%2CSubmatches%2Cint" + title="`[]`(sm: Submatches; i: int): PState">`[]`(sm: Submatches; i: int): PState</a></li> + + </ul> + <ul class="simple nested-toc-section">add + <li><a class="reference" href="#add%2CSubmatches%2CPState" + title="add(sm: var Submatches; item: PState)">add(sm: var Submatches; item: PState)</a></li> + + </ul> + <ul class="simple nested-toc-section">cap + <li><a class="reference" href="#cap%2CSubmatches" + title="cap(sm: Submatches): int">cap(sm: Submatches): int</a></li> + + </ul> + <ul class="simple nested-toc-section">clear + <li><a class="reference" href="#clear%2CCapts3" + title="clear(capts: var Capts3)">clear(capts: var Capts3)</a></li> + <li><a class="reference" href="#clear%2CRegexMatch" + title="clear(m: var RegexMatch)">clear(m: var RegexMatch)</a></li> + <li><a class="reference" href="#clear%2CRegexMatch2" + title="clear(m: var RegexMatch2)">clear(m: var RegexMatch2)</a></li> + <li><a class="reference" href="#clear%2CSubmatches" + title="clear(sm: var Submatches)">clear(sm: var Submatches)</a></li> + + </ul> + <ul class="simple nested-toc-section">constructSubmatches + <li><a class="reference" href="#constructSubmatches%2CCaptures%2CCapts%2Cint%2Cint" + title="constructSubmatches(captures: var Captures; capts: Capts; capt, size: int)">constructSubmatches(captures: var Captures; capts: Capts; capt, size: int)</a></li> + + </ul> + <ul class="simple nested-toc-section">diverge + <li><a class="reference" href="#diverge%2CCapts3%2CCaptIdx" + title="diverge(capts: var Capts3; captIdx: CaptIdx): CaptIdx">diverge(capts: var Capts3; captIdx: CaptIdx): CaptIdx</a></li> + + </ul> + <ul class="simple nested-toc-section">freeze + <li><a class="reference" href="#freeze%2CCapts3" + title="freeze(capts: var Capts3): CaptState">freeze(capts: var Capts3): CaptState</a></li> + + </ul> + <ul class="simple nested-toc-section">grow + <li><a class="reference" href="#grow%2CSmLookaround" + title="grow(sm: var SmLookaround)">grow(sm: var SmLookaround)</a></li> + + </ul> + <ul class="simple nested-toc-section">hasState + <li><a class="reference" href="#hasState%2CSubmatches%2Cint16" + title="hasState(sm: Submatches; n: int16): bool">hasState(sm: Submatches; n: int16): bool</a></li> + + </ul> + <ul class="simple nested-toc-section">initCapts3 + <li><a class="reference" href="#initCapts3%2Cint" + title="initCapts3(groupsLen: int): Capts3">initCapts3(groupsLen: int): Capts3</a></li> + + </ul> + <ul class="simple nested-toc-section">keepAlive + <li><a class="reference" href="#keepAlive%2CCapts3%2CCaptIdx" + title="keepAlive(capts: var Capts3; captIdx: CaptIdx)">keepAlive(capts: var Capts3; captIdx: CaptIdx)</a></li> + + </ul> + <ul class="simple nested-toc-section">len + <li><a class="reference" href="#len%2CSubmatches" + title="len(sm: Submatches): int">len(sm: Submatches): int</a></li> + + </ul> + <ul class="simple nested-toc-section">newSubmatches + <li><a class="reference" href="#newSubmatches%2Cint" + title="newSubmatches(size: int): Submatches">newSubmatches(size: int): Submatches</a></li> + + </ul> + <ul class="simple nested-toc-section">notRecyclable + <li><a class="reference" href="#notRecyclable%2CCapts3%2CCaptIdx" + title="notRecyclable(capts: var Capts3; captIdx: CaptIdx)">notRecyclable(capts: var Capts3; captIdx: CaptIdx)</a></li> + + </ul> + <ul class="simple nested-toc-section">recyclable + <li><a class="reference" href="#recyclable%2CCapts3%2CCaptIdx" + title="recyclable(capts: var Capts3; captIdx: CaptIdx)">recyclable(capts: var Capts3; captIdx: CaptIdx)</a></li> + + </ul> + <ul class="simple nested-toc-section">recycle + <li><a class="reference" href="#recycle%2CCapts3" + title="recycle(capts: var Capts3)">recycle(capts: var Capts3)</a></li> + + </ul> + <ul class="simple nested-toc-section">removeLast + <li><a class="reference" href="#removeLast%2CSmLookaround" + title="removeLast(sm: var SmLookaround)">removeLast(sm: var SmLookaround)</a></li> + + </ul> + <ul class="simple nested-toc-section">reverse + <li><a class="reference" href="#reverse%2CCapts%2Cint32%2Cint32" + title="reverse(capts: var Capts; a, b: int32): int32">reverse(capts: var Capts; a, b: int32): int32</a></li> + + </ul> + <ul class="simple nested-toc-section">setLen + <li><a class="reference" href="#setLen%2CSmLookaroundItem%2Cint" + title="setLen(item: var SmLookaroundItem; size: int)">setLen(item: var SmLookaroundItem; size: int)</a></li> + <li><a class="reference" href="#setLen%2CSubmatches%2Cint" + title="setLen(sm: var Submatches; size: int)">setLen(sm: var Submatches; size: int)</a></li> + + </ul> + <ul class="simple nested-toc-section">toMatchFlags + <li><a class="reference" href="#toMatchFlags%2CRegexFlags" + title="toMatchFlags(f: RegexFlags): MatchFlags">toMatchFlags(f: RegexFlags): MatchFlags</a></li> + + </ul> + <ul class="simple nested-toc-section">unfreeze + <li><a class="reference" href="#unfreeze%2CCapts3%2CCaptState" + title="unfreeze(capts: var Capts3; freezeId: CaptState)">unfreeze(capts: var Capts3; freezeId: CaptState)</a></li> + + </ul> + + </ul> +</li> +<li> + <a class="reference reference-toplevel" href="#15" id="65">Iterators</a> + <ul class="simple simple-toc-section"> + <ul class="simple nested-toc-section">items + <li><a class="reference" href="#items.i%2CSubmatches" + title="items(sm: Submatches): PState">items(sm: Submatches): PState</a></li> + + </ul> + + </ul> +</li> +<li> + <a class="reference reference-toplevel" href="#18" id="68">Templates</a> + <ul class="simple simple-toc-section"> + <ul class="simple nested-toc-section">last + <li><a class="reference" href="#last.t%2CSmLookaround" + title="last(sm: var SmLookaround): untyped">last(sm: var SmLookaround): untyped</a></li> + + </ul> + <ul class="simple nested-toc-section">lastA + <li><a class="reference" href="#lastA.t%2CSmLookaround" + title="lastA(sm: var SmLookaround): untyped">lastA(sm: var SmLookaround): untyped</a></li> + + </ul> + <ul class="simple nested-toc-section">lastB + <li><a class="reference" href="#lastB.t%2CSmLookaround" + title="lastB(sm: var SmLookaround): untyped">lastB(sm: var SmLookaround): untyped</a></li> + + </ul> + <ul class="simple nested-toc-section">toRegex + <li><a class="reference" href="#toRegex.t" + title="toRegex(r): untyped">toRegex(r): untyped</a></li> + + </ul> + <ul class="simple nested-toc-section">toRegex2 + <li><a class="reference" href="#toRegex2.t" + title="toRegex2(r): untyped">toRegex2(r): untyped</a></li> + + </ul> + + </ul> +</li> + +</ul> + + </div> + + <div class="nine columns" id="content"> + <div id="tocRoot"></div> + + <p class="module-desc">Types used by the NFA</p> + <div class="section" id="6"> +<h1><a class="toc-backref" href="#6">Imports</a></h1> +<dl class="item"> +<a class="reference external" href="types.html">types</a>, <a class="reference external" href="litopt.html">litopt</a> +</dl></div> +<div class="section" id="7"> +<h1><a class="toc-backref" href="#7">Types</a></h1> +<dl class="item"> +<div id="Bounds"> +<dt><pre><a href="nfatype.html#Bounds"><span class="Identifier">Bounds</span></a> <span class="Other">=</span> <span class="Identifier">Slice</span><span class="Other">[</span><span class="Identifier">int</span><span class="Other">]</span></pre></dt> +<dd> + + + +</dd> +</div> +<div id="CaptIdx"> +<dt><pre><a href="nfatype.html#CaptIdx"><span class="Identifier">CaptIdx</span></a> <span class="Other">=</span> <span class="Identifier">int32</span></pre></dt> +<dd> + + + +</dd> +</div> +<div id="CaptNode"> +<dt><pre><a href="nfatype.html#CaptNode"><span class="Identifier">CaptNode</span></a> <span class="Other">=</span> <span class="Keyword">object</span> + <span class="Identifier">parent</span><span class="Operator">*</span><span class="Other">:</span> <a href="nfatype.html#CaptIdx"><span class="Identifier">CaptIdx</span></a> + <span class="Identifier">bound</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">int</span> + <span class="Identifier">idx</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">int16</span> +</pre></dt> +<dd> + + + +</dd> +</div> +<div id="Capts"> +<dt><pre><a href="nfatype.html#Capts"><span class="Identifier">Capts</span></a> <span class="Other">=</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="nfatype.html#CaptNode"><span class="Identifier">CaptNode</span></a><span class="Other">]</span></pre></dt> +<dd> + + + +</dd> +</div> +<div id="Capts3"> +<dt><pre><a href="nfatype.html#Capts3"><span class="Identifier">Capts3</span></a> <span class="Other">=</span> <span class="Keyword">object</span> + <span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">Slice</span><span class="Other">[</span><span class="Identifier">int</span><span class="Other">]</span><span class="Other">]</span> + <span class="Identifier">groupsLen</span><span class="Other">:</span> <span class="Identifier">Natural</span> + <span class="Identifier">blockSize</span><span class="Other">:</span> <span class="Identifier">Natural</span> + <span class="Identifier">blockSizeL2</span><span class="Other">:</span> <span class="Identifier">Natural</span> + <span class="Identifier">states</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="nfatype.html#CaptState"><span class="Identifier">CaptState</span></a><span class="Other">]</span> + <span class="Identifier">free</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">int16</span><span class="Other">]</span> + <span class="Identifier">freezeId</span><span class="Other">:</span> <a href="nfatype.html#CaptState"><span class="Identifier">CaptState</span></a> +</pre></dt> +<dd> + +Seq of captures divided into blocks of power of 2 len. One block per parallel state. A seq/set to keep track of used blocks. A seq of free blocks for reusing + +</dd> +</div> +<div id="CaptState"> +<dt><pre><a href="nfatype.html#CaptState"><span class="Identifier">CaptState</span></a> <span class="Other">=</span> <span class="Identifier">uint8</span></pre></dt> +<dd> + + + +</dd> +</div> +<div id="Captures"> +<dt><pre><a href="nfatype.html#Captures"><span class="Identifier">Captures</span></a> <span class="Other">=</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">Slice</span><span class="Other">[</span><span class="Identifier">int</span><span class="Other">]</span><span class="Other">]</span><span class="Other">]</span></pre></dt> +<dd> + + + +</dd> +</div> +<div id="MatchFlag"> +<dt><pre><a href="nfatype.html#MatchFlag"><span class="Identifier">MatchFlag</span></a> <span class="Other">=</span> <span class="Keyword">enum</span> + <span class="Identifier">mfShortestMatch</span><span class="Other">,</span> <span class="Identifier">mfNoCaptures</span><span class="Other">,</span> <span class="Identifier">mfFindMatch</span><span class="Other">,</span> <span class="Identifier">mfFindMatchOpt</span><span class="Other">,</span> <span class="Identifier">mfAnchored</span><span class="Other">,</span> + <span class="Identifier">mfBwMatch</span><span class="Other">,</span> <span class="Identifier">mfReverseCapts</span><span class="Other">,</span> <span class="Identifier">mfBytesInput</span></pre></dt> +<dd> + + + +</dd> +</div> +<div id="MatchFlags"> +<dt><pre><a href="nfatype.html#MatchFlags"><span class="Identifier">MatchFlags</span></a> <span class="Other">=</span> <span class="Identifier">set</span><span class="Other">[</span><a href="nfatype.html#MatchFlag"><span class="Identifier">MatchFlag</span></a><span class="Other">]</span></pre></dt> +<dd> + + + +</dd> +</div> +<div id="NodeIdx"> +<dt><pre><a href="nfatype.html#NodeIdx"><span class="Identifier">NodeIdx</span></a> <span class="Other">=</span> <span class="Identifier">int16</span></pre></dt> +<dd> + + + +</dd> +</div> +<div id="PState"> +<dt><pre><a href="nfatype.html#PState"><span class="Identifier">PState</span></a> <span class="Other">=</span> <span class="Keyword">tuple</span><span class="Other">[</span><span class="Identifier">ni</span><span class="Other">:</span> <a href="nfatype.html#NodeIdx"><span class="Identifier">NodeIdx</span></a><span class="Other">,</span> <span class="Identifier">ci</span><span class="Other">:</span> <a href="nfatype.html#CaptIdx"><span class="Identifier">CaptIdx</span></a><span class="Other">,</span> <span class="Identifier">bounds</span><span class="Other">:</span> <a href="nfatype.html#Bounds"><span class="Identifier">Bounds</span></a><span class="Other">]</span></pre></dt> +<dd> + + + +</dd> +</div> +<div id="Regex"> +<dt><pre><a href="nfatype.html#Regex"><span class="Identifier">Regex</span></a> <span class="Other">=</span> <span class="Keyword">object</span> + <span class="Identifier">nfa</span><span class="Operator">*</span><span class="Other">:</span> <a href="types.html#Nfa"><span class="Identifier">Nfa</span></a> + <span class="Identifier">groupsCount</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">int16</span> + <span class="Identifier">namedGroups</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">OrderedTable</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">,</span> <span class="Identifier">int16</span><span class="Other">]</span> + <span class="Identifier">flags</span><span class="Operator">*</span><span class="Other">:</span> <a href="types.html#RegexFlags"><span class="Identifier">RegexFlags</span></a> + <span class="Identifier">litOpt</span><span class="Operator">*</span><span class="Other">:</span> <a href="litopt.html#LitOpt"><span class="Identifier">LitOpt</span></a> +</pre></dt> +<dd> + +deprecated + +</dd> +</div> +<div id="Regex2"> +<dt><pre><a href="nfatype.html#Regex2"><span class="Identifier">Regex2</span></a> <span class="Other">=</span> <span class="Keyword">distinct</span> <a href="nfatype.html#Regex"><span class="Identifier">Regex</span></a></pre></dt> +<dd> + +a compiled regular expression + +</dd> +</div> +<div id="RegexLit"> +<dt><pre><a href="nfatype.html#RegexLit"><span class="Identifier">RegexLit</span></a> <span class="Other">=</span> <span class="Keyword">distinct</span> <span class="Identifier">string</span></pre></dt> +<dd> + +raw regex literal string + +</dd> +</div> +<div id="RegexMatch"> +<dt><pre><a href="nfatype.html#RegexMatch"><span class="Identifier">RegexMatch</span></a> <span class="Other">=</span> <span class="Keyword">object</span> + <span class="Identifier">captures</span><span class="Operator">*</span><span class="Other">:</span> <a href="nfatype.html#Captures"><span class="Identifier">Captures</span></a> + <span class="Identifier">namedGroups</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">OrderedTable</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">,</span> <span class="Identifier">int16</span><span class="Other">]</span> + <span class="Identifier">boundaries</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">Slice</span><span class="Other">[</span><span class="Identifier">int</span><span class="Other">]</span> +</pre></dt> +<dd> + +deprecated + +</dd> +</div> +<div id="RegexMatch2"> +<dt><pre><a href="nfatype.html#RegexMatch2"><span class="Identifier">RegexMatch2</span></a> <span class="Other">=</span> <span class="Keyword">object</span> + <span class="Identifier">captures</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">Slice</span><span class="Other">[</span><span class="Identifier">int</span><span class="Other">]</span><span class="Other">]</span> + <span class="Identifier">namedGroups</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">OrderedTable</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">,</span> <span class="Identifier">int16</span><span class="Other">]</span> + <span class="Identifier">boundaries</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">Slice</span><span class="Other">[</span><span class="Identifier">int</span><span class="Other">]</span> +</pre></dt> +<dd> + +result from matching operations + +</dd> +</div> +<div id="SmLookaround"> +<dt><pre><a href="nfatype.html#SmLookaround"><span class="Identifier">SmLookaround</span></a> <span class="Other">=</span> <span class="Keyword">object</span> + <span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="nfatype.html#SmLookaroundItem"><span class="Identifier">SmLookaroundItem</span></a><span class="Other">]</span> + <span class="Identifier">i</span><span class="Other">:</span> <span class="Identifier">int</span> +</pre></dt> +<dd> + + + +</dd> +</div> +<div id="SmLookaroundItem"> +<dt><pre><a href="nfatype.html#SmLookaroundItem"><span class="Identifier">SmLookaroundItem</span></a> <span class="Other">=</span> <span class="Keyword">object</span> + <span class="Identifier">a</span><span class="Other">,</span> <span class="Identifier">b</span><span class="Other">:</span> <a href="nfatype.html#Submatches"><span class="Identifier">Submatches</span></a> +</pre></dt> +<dd> + + + +</dd> +</div> +<div id="Submatches"> +<dt><pre><a href="nfatype.html#Submatches"><span class="Identifier">Submatches</span></a> <span class="Other">=</span> <span class="Keyword">ref</span> <span class="Keyword">object</span> + <span class="Identifier">sx</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="nfatype.html#PState"><span class="Identifier">PState</span></a><span class="Other">]</span> + <span class="Identifier">ss</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">int16</span><span class="Other">]</span> + <span class="Identifier">si</span><span class="Other">:</span> <span class="Identifier">int16</span> +</pre></dt> +<dd> + +Parallel states would be a better name. This is a sparse set + +</dd> +</div> + +</dl></div> +<div class="section" id="10"> +<h1><a class="toc-backref" href="#10">Consts</a></h1> +<dl class="item"> +<div id="nonCapture"> +<dt><pre><a href="nfatype.html#nonCapture"><span class="Identifier">nonCapture</span></a> <span class="Other">=</span> <span class="Other">(</span><span class="Identifier">a</span><span class="Other">:</span> <span class="DecNumber">-1</span><span class="Other">,</span> <span class="Identifier">b</span><span class="Other">:</span> <span class="DecNumber">-2</span><span class="Other">)</span></pre></dt> +<dd> + + + +</dd> +</div> + +</dl></div> +<div class="section" id="12"> +<h1><a class="toc-backref" href="#12">Procs</a></h1> +<dl class="item"> +<div id="[],Capts3,Natural,Natural"> +<dt><pre><span class="Keyword">func</span> <a href="#%5B%5D%2CCapts3%2CNatural%2CNatural"><span class="Identifier">`[]`</span></a><span class="Other">(</span><span class="Identifier">capts</span><span class="Other">:</span> <a href="nfatype.html#Capts3"><span class="Identifier">Capts3</span></a><span class="Other">;</span> <span class="Identifier">i</span><span class="Other">,</span> <span class="Identifier">j</span><span class="Other">:</span> <span class="Identifier">Natural</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Slice</span><span class="Other">[</span><span class="Identifier">int</span><span class="Other">]</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> + <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> +<div id="[],Capts3,Natural,Natural_2"> +<dt><pre><span class="Keyword">func</span> <a href="#%5B%5D%2CCapts3%2CNatural%2CNatural_2"><span class="Identifier">`[]`</span></a><span class="Other">(</span><span class="Identifier">capts</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="nfatype.html#Capts3"><span class="Identifier">Capts3</span></a><span class="Other">;</span> <span class="Identifier">i</span><span class="Other">,</span> <span class="Identifier">j</span><span class="Other">:</span> <span class="Identifier">Natural</span><span class="Other">)</span><span class="Other">:</span> <span class="Keyword">var</span> <span class="Identifier">Slice</span><span class="Other">[</span><span class="Identifier">int</span><span class="Other">]</span> {.<span class="Identifier">inline</span><span class="Other">,</span> + <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> +<div id="[],Submatches,int"> +<dt><pre><span class="Keyword">func</span> <a href="#%5B%5D%2CSubmatches%2Cint"><span class="Identifier">`[]`</span></a><span class="Other">(</span><span class="Identifier">sm</span><span class="Other">:</span> <a href="nfatype.html#Submatches"><span class="Identifier">Submatches</span></a><span class="Other">;</span> <span class="Identifier">i</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <a href="nfatype.html#PState"><span class="Identifier">PState</span></a> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> +<div id="add,Submatches,PState"> +<dt><pre><span class="Keyword">func</span> <a href="#add%2CSubmatches%2CPState"><span class="Identifier">add</span></a><span class="Other">(</span><span class="Identifier">sm</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="nfatype.html#Submatches"><span class="Identifier">Submatches</span></a><span class="Other">;</span> <span class="Identifier">item</span><span class="Other">:</span> <a href="nfatype.html#PState"><span class="Identifier">PState</span></a><span class="Other">)</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> +<div id="cap,Submatches"> +<dt><pre><span class="Keyword">func</span> <a href="#cap%2CSubmatches"><span class="Identifier">cap</span></a><span class="Other">(</span><span class="Identifier">sm</span><span class="Other">:</span> <a href="nfatype.html#Submatches"><span class="Identifier">Submatches</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">int</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> +<div id="clear,Capts3"> +<dt><pre><span class="Keyword">func</span> <a href="#clear%2CCapts3"><span class="Identifier">clear</span></a><span class="Other">(</span><span class="Identifier">capts</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="nfatype.html#Capts3"><span class="Identifier">Capts3</span></a><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> +<div id="clear,RegexMatch"> +<dt><pre><span class="Keyword">func</span> <a href="#clear%2CRegexMatch"><span class="Identifier">clear</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="nfatype.html#RegexMatch"><span class="Identifier">RegexMatch</span></a><span class="Other">)</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> +<div id="clear,RegexMatch2"> +<dt><pre><span class="Keyword">func</span> <a href="#clear%2CRegexMatch2"><span class="Identifier">clear</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="nfatype.html#RegexMatch2"><span class="Identifier">RegexMatch2</span></a><span class="Other">)</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> +<div id="clear,Submatches"> +<dt><pre><span class="Keyword">func</span> <a href="#clear%2CSubmatches"><span class="Identifier">clear</span></a><span class="Other">(</span><span class="Identifier">sm</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="nfatype.html#Submatches"><span class="Identifier">Submatches</span></a><span class="Other">)</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> +<div id="constructSubmatches,Captures,Capts,int,int"> +<dt><pre><span class="Keyword">func</span> <a href="#constructSubmatches%2CCaptures%2CCapts%2Cint%2Cint"><span class="Identifier">constructSubmatches</span></a><span class="Other">(</span><span class="Identifier">captures</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="nfatype.html#Captures"><span class="Identifier">Captures</span></a><span class="Other">;</span> <span class="Identifier">capts</span><span class="Other">:</span> <a href="nfatype.html#Capts"><span class="Identifier">Capts</span></a><span class="Other">;</span> <span class="Identifier">capt</span><span class="Other">,</span> <span class="Identifier">size</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span> {. + <span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> +<div id="diverge,Capts3,CaptIdx"> +<dt><pre><span class="Keyword">func</span> <a href="#diverge%2CCapts3%2CCaptIdx"><span class="Identifier">diverge</span></a><span class="Other">(</span><span class="Identifier">capts</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="nfatype.html#Capts3"><span class="Identifier">Capts3</span></a><span class="Other">;</span> <span class="Identifier">captIdx</span><span class="Other">:</span> <a href="nfatype.html#CaptIdx"><span class="Identifier">CaptIdx</span></a><span class="Other">)</span><span class="Other">:</span> <a href="nfatype.html#CaptIdx"><span class="Identifier">CaptIdx</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> + <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> +<div id="freeze,Capts3"> +<dt><pre><span class="Keyword">func</span> <a href="#freeze%2CCapts3"><span class="Identifier">freeze</span></a><span class="Other">(</span><span class="Identifier">capts</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="nfatype.html#Capts3"><span class="Identifier">Capts3</span></a><span class="Other">)</span><span class="Other">:</span> <a href="nfatype.html#CaptState"><span class="Identifier">CaptState</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + +Freeze all in use capts. Return freezeId + +</dd> +</div> +<div id="grow,SmLookaround"> +<dt><pre><span class="Keyword">func</span> <a href="#grow%2CSmLookaround"><span class="Identifier">grow</span></a><span class="Other">(</span><span class="Identifier">sm</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="nfatype.html#SmLookaround"><span class="Identifier">SmLookaround</span></a><span class="Other">)</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> +<div id="hasState,Submatches,int16"> +<dt><pre><span class="Keyword">func</span> <a href="#hasState%2CSubmatches%2Cint16"><span class="Identifier">hasState</span></a><span class="Other">(</span><span class="Identifier">sm</span><span class="Other">:</span> <a href="nfatype.html#Submatches"><span class="Identifier">Submatches</span></a><span class="Other">;</span> <span class="Identifier">n</span><span class="Other">:</span> <span class="Identifier">int16</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">bool</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> +<div id="initCapts3,int"> +<dt><pre><span class="Keyword">func</span> <a href="#initCapts3%2Cint"><span class="Identifier">initCapts3</span></a><span class="Other">(</span><span class="Identifier">groupsLen</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <a href="nfatype.html#Capts3"><span class="Identifier">Capts3</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> +<div id="keepAlive,Capts3,CaptIdx"> +<dt><pre><span class="Keyword">func</span> <a href="#keepAlive%2CCapts3%2CCaptIdx"><span class="Identifier">keepAlive</span></a><span class="Other">(</span><span class="Identifier">capts</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="nfatype.html#Capts3"><span class="Identifier">Capts3</span></a><span class="Other">;</span> <span class="Identifier">captIdx</span><span class="Other">:</span> <a href="nfatype.html#CaptIdx"><span class="Identifier">CaptIdx</span></a><span class="Other">)</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> + <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> +<div id="len,Submatches"> +<dt><pre><span class="Keyword">func</span> <a href="#len%2CSubmatches"><span class="Identifier">len</span></a><span class="Other">(</span><span class="Identifier">sm</span><span class="Other">:</span> <a href="nfatype.html#Submatches"><span class="Identifier">Submatches</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">int</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> +<div id="newSubmatches,int"> +<dt><pre><span class="Keyword">func</span> <a href="#newSubmatches%2Cint"><span class="Identifier">newSubmatches</span></a><span class="Other">(</span><span class="Identifier">size</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <a href="nfatype.html#Submatches"><span class="Identifier">Submatches</span></a> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> +<div id="notRecyclable,Capts3,CaptIdx"> +<dt><pre><span class="Keyword">func</span> <a href="#notRecyclable%2CCapts3%2CCaptIdx"><span class="Identifier">notRecyclable</span></a><span class="Other">(</span><span class="Identifier">capts</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="nfatype.html#Capts3"><span class="Identifier">Capts3</span></a><span class="Other">;</span> <span class="Identifier">captIdx</span><span class="Other">:</span> <a href="nfatype.html#CaptIdx"><span class="Identifier">CaptIdx</span></a><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> +<div id="recyclable,Capts3,CaptIdx"> +<dt><pre><span class="Keyword">func</span> <a href="#recyclable%2CCapts3%2CCaptIdx"><span class="Identifier">recyclable</span></a><span class="Other">(</span><span class="Identifier">capts</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="nfatype.html#Capts3"><span class="Identifier">Capts3</span></a><span class="Other">;</span> <span class="Identifier">captIdx</span><span class="Other">:</span> <a href="nfatype.html#CaptIdx"><span class="Identifier">CaptIdx</span></a><span class="Other">)</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> + <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> +<div id="recycle,Capts3"> +<dt><pre><span class="Keyword">func</span> <a href="#recycle%2CCapts3"><span class="Identifier">recycle</span></a><span class="Other">(</span><span class="Identifier">capts</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="nfatype.html#Capts3"><span class="Identifier">Capts3</span></a><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + +Free recyclable entries Set initial/keepAlive entries to recyclable + +</dd> +</div> +<div id="removeLast,SmLookaround"> +<dt><pre><span class="Keyword">func</span> <a href="#removeLast%2CSmLookaround"><span class="Identifier">removeLast</span></a><span class="Other">(</span><span class="Identifier">sm</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="nfatype.html#SmLookaround"><span class="Identifier">SmLookaround</span></a><span class="Other">)</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> +<div id="reverse,Capts,int32,int32"> +<dt><pre><span class="Keyword">func</span> <a href="#reverse%2CCapts%2Cint32%2Cint32"><span class="Identifier">reverse</span></a><span class="Other">(</span><span class="Identifier">capts</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="nfatype.html#Capts"><span class="Identifier">Capts</span></a><span class="Other">;</span> <span class="Identifier">a</span><span class="Other">,</span> <span class="Identifier">b</span><span class="Other">:</span> <span class="Identifier">int32</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">int32</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + +reverse capture indices from a to b; return head + +</dd> +</div> +<div id="setLen,SmLookaroundItem,int"> +<dt><pre><span class="Keyword">func</span> <a href="#setLen%2CSmLookaroundItem%2Cint"><span class="Identifier">setLen</span></a><span class="Other">(</span><span class="Identifier">item</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="nfatype.html#SmLookaroundItem"><span class="Identifier">SmLookaroundItem</span></a><span class="Other">;</span> <span class="Identifier">size</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> + <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> +<div id="setLen,Submatches,int"> +<dt><pre><span class="Keyword">func</span> <a href="#setLen%2CSubmatches%2Cint"><span class="Identifier">setLen</span></a><span class="Other">(</span><span class="Identifier">sm</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="nfatype.html#Submatches"><span class="Identifier">Submatches</span></a><span class="Other">;</span> <span class="Identifier">size</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> +<div id="toMatchFlags,RegexFlags"> +<dt><pre><span class="Keyword">func</span> <a href="#toMatchFlags%2CRegexFlags"><span class="Identifier">toMatchFlags</span></a><span class="Other">(</span><span class="Identifier">f</span><span class="Other">:</span> <a href="types.html#RegexFlags"><span class="Identifier">RegexFlags</span></a><span class="Other">)</span><span class="Other">:</span> <a href="nfatype.html#MatchFlags"><span class="Identifier">MatchFlags</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> +<div id="unfreeze,Capts3,CaptState"> +<dt><pre><span class="Keyword">func</span> <a href="#unfreeze%2CCapts3%2CCaptState"><span class="Identifier">unfreeze</span></a><span class="Other">(</span><span class="Identifier">capts</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="nfatype.html#Capts3"><span class="Identifier">Capts3</span></a><span class="Other">;</span> <span class="Identifier">freezeId</span><span class="Other">:</span> <a href="nfatype.html#CaptState"><span class="Identifier">CaptState</span></a><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> + +</dl></div> +<div class="section" id="15"> +<h1><a class="toc-backref" href="#15">Iterators</a></h1> +<dl class="item"> +<div id="items.i,Submatches"> +<dt><pre><span class="Keyword">iterator</span> <a href="#items.i%2CSubmatches"><span class="Identifier">items</span></a><span class="Other">(</span><span class="Identifier">sm</span><span class="Other">:</span> <a href="nfatype.html#Submatches"><span class="Identifier">Submatches</span></a><span class="Other">)</span><span class="Other">:</span> <a href="nfatype.html#PState"><span class="Identifier">PState</span></a> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> + +</dl></div> +<div class="section" id="18"> +<h1><a class="toc-backref" href="#18">Templates</a></h1> +<dl class="item"> +<div id="last.t,SmLookaround"> +<dt><pre><span class="Keyword">template</span> <a href="#last.t%2CSmLookaround"><span class="Identifier">last</span></a><span class="Other">(</span><span class="Identifier">sm</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="nfatype.html#SmLookaround"><span class="Identifier">SmLookaround</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">untyped</span></pre></dt> +<dd> + + + +</dd> +</div> +<div id="lastA.t,SmLookaround"> +<dt><pre><span class="Keyword">template</span> <a href="#lastA.t%2CSmLookaround"><span class="Identifier">lastA</span></a><span class="Other">(</span><span class="Identifier">sm</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="nfatype.html#SmLookaround"><span class="Identifier">SmLookaround</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">untyped</span></pre></dt> +<dd> + + + +</dd> +</div> +<div id="lastB.t,SmLookaround"> +<dt><pre><span class="Keyword">template</span> <a href="#lastB.t%2CSmLookaround"><span class="Identifier">lastB</span></a><span class="Other">(</span><span class="Identifier">sm</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="nfatype.html#SmLookaround"><span class="Identifier">SmLookaround</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">untyped</span></pre></dt> +<dd> + + + +</dd> +</div> +<div id="toRegex.t"> +<dt><pre><span class="Keyword">template</span> <a href="#toRegex.t"><span class="Identifier">toRegex</span></a><span class="Other">(</span><span class="Identifier">r</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">untyped</span></pre></dt> +<dd> + + + +</dd> +</div> +<div id="toRegex2.t"> +<dt><pre><span class="Keyword">template</span> <a href="#toRegex2.t"><span class="Identifier">toRegex2</span></a><span class="Other">(</span><span class="Identifier">r</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">untyped</span></pre></dt> +<dd> + + + +</dd> +</div> + +</dl></div> + + </div> +</div> + + <div class="row"> + <div class="twelve-columns footer"> + <span class="nim-sprite"></span> + <br/> + <small style="color: var(--hint);">Made with Nim. Generated: 2024-01-06 00:35:00 UTC</small> + </div> + </div> + </div> +</div> + +</body> +</html> diff --git a/regex/nfatype.idx b/regex/nfatype.idx new file mode 100644 index 00000000..bb7aee25 --- /dev/null +++ b/regex/nfatype.idx @@ -0,0 +1,61 @@ +nonCapture regex/nfatype.html#nonCapture nfatype: nonCapture +CaptState regex/nfatype.html#CaptState nfatype: CaptState +CaptIdx regex/nfatype.html#CaptIdx nfatype: CaptIdx +Capts3 regex/nfatype.html#Capts3 nfatype: Capts3 +`[]` regex/nfatype.html#[],Capts3,Natural,Natural nfatype: `[]`(capts: Capts3; i, j: Natural): Slice[int] +`[]` regex/nfatype.html#[],Capts3,Natural,Natural_2 nfatype: `[]`(capts: var Capts3; i, j: Natural): var Slice[int] +initCapts3 regex/nfatype.html#initCapts3,int nfatype: initCapts3(groupsLen: int): Capts3 +keepAlive regex/nfatype.html#keepAlive,Capts3,CaptIdx nfatype: keepAlive(capts: var Capts3; captIdx: CaptIdx) +freeze regex/nfatype.html#freeze,Capts3 nfatype: freeze(capts: var Capts3): CaptState +unfreeze regex/nfatype.html#unfreeze,Capts3,CaptState nfatype: unfreeze(capts: var Capts3; freezeId: CaptState) +diverge regex/nfatype.html#diverge,Capts3,CaptIdx nfatype: diverge(capts: var Capts3; captIdx: CaptIdx): CaptIdx +recycle regex/nfatype.html#recycle,Capts3 nfatype: recycle(capts: var Capts3) +notRecyclable regex/nfatype.html#notRecyclable,Capts3,CaptIdx nfatype: notRecyclable(capts: var Capts3; captIdx: CaptIdx) +recyclable regex/nfatype.html#recyclable,Capts3,CaptIdx nfatype: recyclable(capts: var Capts3; captIdx: CaptIdx) +clear regex/nfatype.html#clear,Capts3 nfatype: clear(capts: var Capts3) +CaptNode regex/nfatype.html#CaptNode nfatype: CaptNode +Capts regex/nfatype.html#Capts nfatype: Capts +Captures regex/nfatype.html#Captures nfatype: Captures +constructSubmatches regex/nfatype.html#constructSubmatches,Captures,Capts,int,int nfatype: constructSubmatches(captures: var Captures; capts: Capts; capt, size: int) +reverse regex/nfatype.html#reverse,Capts,int32,int32 nfatype: reverse(capts: var Capts; a, b: int32): int32 +mfShortestMatch regex/nfatype.html#mfShortestMatch MatchFlag.mfShortestMatch +mfNoCaptures regex/nfatype.html#mfNoCaptures MatchFlag.mfNoCaptures +mfFindMatch regex/nfatype.html#mfFindMatch MatchFlag.mfFindMatch +mfFindMatchOpt regex/nfatype.html#mfFindMatchOpt MatchFlag.mfFindMatchOpt +mfAnchored regex/nfatype.html#mfAnchored MatchFlag.mfAnchored +mfBwMatch regex/nfatype.html#mfBwMatch MatchFlag.mfBwMatch +mfReverseCapts regex/nfatype.html#mfReverseCapts MatchFlag.mfReverseCapts +mfBytesInput regex/nfatype.html#mfBytesInput MatchFlag.mfBytesInput +MatchFlag regex/nfatype.html#MatchFlag nfatype: MatchFlag +MatchFlags regex/nfatype.html#MatchFlags nfatype: MatchFlags +toMatchFlags regex/nfatype.html#toMatchFlags,RegexFlags nfatype: toMatchFlags(f: RegexFlags): MatchFlags +RegexLit regex/nfatype.html#RegexLit nfatype: RegexLit +Regex regex/nfatype.html#Regex nfatype: Regex +RegexMatch regex/nfatype.html#RegexMatch nfatype: RegexMatch +RegexMatch2 regex/nfatype.html#RegexMatch2 nfatype: RegexMatch2 +Regex2 regex/nfatype.html#Regex2 nfatype: Regex2 +toRegex2 regex/nfatype.html#toRegex2.t nfatype: toRegex2(r): untyped +toRegex regex/nfatype.html#toRegex.t nfatype: toRegex(r): untyped +clear regex/nfatype.html#clear,RegexMatch nfatype: clear(m: var RegexMatch) +clear regex/nfatype.html#clear,RegexMatch2 nfatype: clear(m: var RegexMatch2) +NodeIdx regex/nfatype.html#NodeIdx nfatype: NodeIdx +Bounds regex/nfatype.html#Bounds nfatype: Bounds +PState regex/nfatype.html#PState nfatype: PState +Submatches regex/nfatype.html#Submatches nfatype: Submatches +newSubmatches regex/nfatype.html#newSubmatches,int nfatype: newSubmatches(size: int): Submatches +`[]` regex/nfatype.html#[],Submatches,int nfatype: `[]`(sm: Submatches; i: int): PState +hasState regex/nfatype.html#hasState,Submatches,int16 nfatype: hasState(sm: Submatches; n: int16): bool +add regex/nfatype.html#add,Submatches,PState nfatype: add(sm: var Submatches; item: PState) +len regex/nfatype.html#len,Submatches nfatype: len(sm: Submatches): int +clear regex/nfatype.html#clear,Submatches nfatype: clear(sm: var Submatches) +items regex/nfatype.html#items.i,Submatches nfatype: items(sm: Submatches): PState +cap regex/nfatype.html#cap,Submatches nfatype: cap(sm: Submatches): int +setLen regex/nfatype.html#setLen,Submatches,int nfatype: setLen(sm: var Submatches; size: int) +SmLookaroundItem regex/nfatype.html#SmLookaroundItem nfatype: SmLookaroundItem +SmLookaround regex/nfatype.html#SmLookaround nfatype: SmLookaround +setLen regex/nfatype.html#setLen,SmLookaroundItem,int nfatype: setLen(item: var SmLookaroundItem; size: int) +last regex/nfatype.html#last.t,SmLookaround nfatype: last(sm: var SmLookaround): untyped +lastA regex/nfatype.html#lastA.t,SmLookaround nfatype: lastA(sm: var SmLookaround): untyped +lastB regex/nfatype.html#lastB.t,SmLookaround nfatype: lastB(sm: var SmLookaround): untyped +grow regex/nfatype.html#grow,SmLookaround nfatype: grow(sm: var SmLookaround) +removeLast regex/nfatype.html#removeLast,SmLookaround nfatype: removeLast(sm: var SmLookaround) diff --git a/regex/nodematch.html b/regex/nodematch.html new file mode 100644 index 00000000..277bfdd8 --- /dev/null +++ b/regex/nodematch.html @@ -0,0 +1,183 @@ +<?xml version="1.0" encoding="utf-8" ?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!-- This file is generated by Nim. --> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + +<meta name="viewport" content="width=device-width, initial-scale=1.0"> + +<!-- Favicon --> +<link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA=="/> +<link rel="icon" type="image/png" sizes="32x32" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QQQEwksSS9ZWwAAAk1JREFUWMPtll2ITVEUx39nn/O7Y5qR8f05wtCUUr6ZIS++8pEnkZInPImneaCQ5METNdOkeFBKUhMPRIkHKfEuUZSUlGlKPN2TrgfncpvmnntnmlEyq1Z7t89/rf9a6+y99oZxGZf/XeIq61EdtgKXgdXA0xrYAvBjOIF1AI9zvjcC74BSpndrJPkBWDScTF8Aa4E3wDlgHbASaANmVqlcCnwHvgDvgVfAJ+AikAAvgfVZwLnSVZHZaOuKoQi3ZOMi4NkYkpe1p4J7A8BpYAD49hfIy/oqG0+hLomiKP2L5L+1ubn5115S+3OAn4EnwBlgMzCjyt6ZAnQCJ4A7wOs88iRJHvw50HoujuPBoCKwHWiosy8MdfZnAdcHk8dxXFJ3VQbQlCTJvRBCGdRbD4M6uc5glpY3eAihpN5S5w12diSEcCCEcKUO4ljdr15T76ur1FDDLIQQ3qv71EdDOe3Kxj3leRXyk+pxdWnFWod6Wt2bY3de3aSuUHcPBVimHs7mK9WrmeOF6lR1o9qnzskh2ar2qm1qizpfXaPeVGdlmGN5pb09qMxz1Xb1kLqgzn1RyH7JUXW52lr5e/Kqi9qpto7V1atuUzfnARrV7jEib1T76gG2qxdGmXyiekkt1GswPTtek0aBfJp6YySGBfWg2tPQ0FAYgf1stUfdmdcjarbYJEniKIq6gY/Aw+zWHAC+p2labGpqiorFYgGYCEzN7oQdQClN07O1/EfDyGgC0ALMBdYAi4FyK+4H3gLPsxfR1zRNi+NP7nH5J+QntnXe5B5mpfQAAAAASUVORK5CYII="> + +<!-- Google fonts --> +<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/> +<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/> + +<!-- CSS --> +<title>src/regex/nodematch</title> +<link rel="stylesheet" type="text/css" href="../nimdoc.out.css"> + +<script type="text/javascript" src="../dochack.js"></script> + +<script type="text/javascript"> +function main() { + var pragmaDots = document.getElementsByClassName("pragmadots"); + for (var i = 0; i < pragmaDots.length; i++) { + pragmaDots[i].onclick = function(event) { + // Hide tease + event.target.parentNode.style.display = "none"; + // Show actual + event.target.parentNode.nextElementSibling.style.display = "inline"; + } + } + + function switchTheme(e) { + if (e.target.checked) { + document.documentElement.setAttribute('data-theme', 'dark'); + localStorage.setItem('theme', 'dark'); + } else { + document.documentElement.setAttribute('data-theme', 'light'); + localStorage.setItem('theme', 'light'); + } + } + + const toggleSwitch = document.querySelector('.theme-switch input[type="checkbox"]'); + if (toggleSwitch !== null) { + toggleSwitch.addEventListener('change', switchTheme, false); + } + + var currentTheme = localStorage.getItem('theme'); + if (!currentTheme && window.matchMedia('(prefers-color-scheme: dark)').matches) { + currentTheme = 'dark'; + } + if (currentTheme) { + document.documentElement.setAttribute('data-theme', currentTheme); + + if (currentTheme === 'dark' && toggleSwitch !== null) { + toggleSwitch.checked = true; + } + } +} + +window.addEventListener('DOMContentLoaded', main); +</script> + +</head> +<body> +<div class="document" id="documentId"> + <div class="container"> + <h1 class="title">src/regex/nodematch</h1> + <div class="row"> + <div class="three columns"> + <div class="theme-switch-wrapper"> + <label class="theme-switch" for="checkbox"> + <input type="checkbox" id="checkbox" /> + <div class="slider round"></div> + </label> + <em>Dark Mode</em> + </div> + <div id="global-links"> + <ul class="simple"> + <li> + <a href="../theindex.html">Index</a> + </li> + </ul> + </div> + <div id="searchInputDiv"> + Search: <input type="text" id="searchInput" + onkeyup="search()" /> + </div> + <div> + Group by: + <select onchange="groupBy(this.value)"> + <option value="section">Section</option> + <option value="type">Type</option> + </select> + </div> + <ul class="simple simple-toc" id="toc-list"> +<li> + <a class="reference reference-toplevel" href="#6" id="56">Imports</a> + <ul class="simple simple-toc-section"> + + </ul> +</li> +<li> + <a class="reference reference-toplevel" href="#12" id="62">Procs</a> + <ul class="simple simple-toc-section"> + <ul class="simple nested-toc-section">match + <li><a class="reference" href="#match%2CNode%2CRune" + title="match(n: Node; r: Rune): bool">match(n: Node; r: Rune): bool</a></li> + <li><a class="reference" href="#match%2CNode%2CRune%2CRune" + title="match(n: Node; r: Rune; nxt: Rune): bool">match(n: Node; r: Rune; nxt: Rune): bool</a></li> + + </ul> + <ul class="simple nested-toc-section">swapCase + <li><a class="reference" href="#swapCase%2CRune" + title="swapCase(r: Rune): Rune">swapCase(r: Rune): Rune</a></li> + + </ul> + + </ul> +</li> + +</ul> + + </div> + + <div class="nine columns" id="content"> + <div id="tocRoot"></div> + + <p class="module-desc"></p> + <div class="section" id="6"> +<h1><a class="toc-backref" href="#6">Imports</a></h1> +<dl class="item"> +<a class="reference external" href="types.html">types</a>, <a class="reference external" href="common.html">common</a> +</dl></div> +<div class="section" id="12"> +<h1><a class="toc-backref" href="#12">Procs</a></h1> +<dl class="item"> +<div id="match,Node,Rune"> +<dt><pre><span class="Keyword">func</span> <a href="#match%2CNode%2CRune"><span class="Identifier">match</span></a><span class="Other">(</span><span class="Identifier">n</span><span class="Other">:</span> <a href="types.html#Node"><span class="Identifier">Node</span></a><span class="Other">;</span> <span class="Identifier">r</span><span class="Other">:</span> <span class="Identifier">Rune</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">bool</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + +match for <tt class="docutils literal"><span class="pre">Node</span></tt> of matchable kind. Return whether the node matches the current character or not + +</dd> +</div> +<div id="match,Node,Rune,Rune"> +<dt><pre><span class="Keyword">func</span> <a href="#match%2CNode%2CRune%2CRune"><span class="Identifier">match</span></a><span class="Other">(</span><span class="Identifier">n</span><span class="Other">:</span> <a href="types.html#Node"><span class="Identifier">Node</span></a><span class="Other">;</span> <span class="Identifier">r</span><span class="Other">:</span> <span class="Identifier">Rune</span><span class="Other">;</span> <span class="Identifier">nxt</span><span class="Other">:</span> <span class="Identifier">Rune</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">bool</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + +match for <tt class="docutils literal"><span class="pre">Node</span></tt> of assertion kind. Return whether the node matches the current characters or not + +</dd> +</div> +<div id="swapCase,Rune"> +<dt><pre><span class="Keyword">func</span> <a href="#swapCase%2CRune"><span class="Identifier">swapCase</span></a><span class="Other">(</span><span class="Identifier">r</span><span class="Other">:</span> <span class="Identifier">Rune</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Rune</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> + +</dl></div> + + </div> +</div> + + <div class="row"> + <div class="twelve-columns footer"> + <span class="nim-sprite"></span> + <br/> + <small style="color: var(--hint);">Made with Nim. Generated: 2024-01-06 00:35:00 UTC</small> + </div> + </div> + </div> +</div> + +</body> +</html> diff --git a/regex/nodematch.idx b/regex/nodematch.idx new file mode 100644 index 00000000..4304fe47 --- /dev/null +++ b/regex/nodematch.idx @@ -0,0 +1,3 @@ +match regex/nodematch.html#match,Node,Rune,Rune nodematch: match(n: Node; r: Rune; nxt: Rune): bool +swapCase regex/nodematch.html#swapCase,Rune nodematch: swapCase(r: Rune): Rune +match regex/nodematch.html#match,Node,Rune nodematch: match(n: Node; r: Rune): bool diff --git a/regex/parser.html b/regex/parser.html new file mode 100644 index 00000000..60295e4d --- /dev/null +++ b/regex/parser.html @@ -0,0 +1,161 @@ +<?xml version="1.0" encoding="utf-8" ?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!-- This file is generated by Nim. --> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + +<meta name="viewport" content="width=device-width, initial-scale=1.0"> + +<!-- Favicon --> +<link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA=="/> +<link rel="icon" type="image/png" sizes="32x32" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QQQEwksSS9ZWwAAAk1JREFUWMPtll2ITVEUx39nn/O7Y5qR8f05wtCUUr6ZIS++8pEnkZInPImneaCQ5METNdOkeFBKUhMPRIkHKfEuUZSUlGlKPN2TrgfncpvmnntnmlEyq1Z7t89/rf9a6+y99oZxGZf/XeIq61EdtgKXgdXA0xrYAvBjOIF1AI9zvjcC74BSpndrJPkBWDScTF8Aa4E3wDlgHbASaANmVqlcCnwHvgDvgVfAJ+AikAAvgfVZwLnSVZHZaOuKoQi3ZOMi4NkYkpe1p4J7A8BpYAD49hfIy/oqG0+hLomiKP2L5L+1ubn5115S+3OAn4EnwBlgMzCjyt6ZAnQCJ4A7wOs88iRJHvw50HoujuPBoCKwHWiosy8MdfZnAdcHk8dxXFJ3VQbQlCTJvRBCGdRbD4M6uc5glpY3eAihpN5S5w12diSEcCCEcKUO4ljdr15T76ur1FDDLIQQ3qv71EdDOe3Kxj3leRXyk+pxdWnFWod6Wt2bY3de3aSuUHcPBVimHs7mK9WrmeOF6lR1o9qnzskh2ar2qm1qizpfXaPeVGdlmGN5pb09qMxz1Xb1kLqgzn1RyH7JUXW52lr5e/Kqi9qpto7V1atuUzfnARrV7jEib1T76gG2qxdGmXyiekkt1GswPTtek0aBfJp6YySGBfWg2tPQ0FAYgf1stUfdmdcjarbYJEniKIq6gY/Aw+zWHAC+p2labGpqiorFYgGYCEzN7oQdQClN07O1/EfDyGgC0ALMBdYAi4FyK+4H3gLPsxfR1zRNi+NP7nH5J+QntnXe5B5mpfQAAAAASUVORK5CYII="> + +<!-- Google fonts --> +<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/> +<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/> + +<!-- CSS --> +<title>src/regex/parser</title> +<link rel="stylesheet" type="text/css" href="../nimdoc.out.css"> + +<script type="text/javascript" src="../dochack.js"></script> + +<script type="text/javascript"> +function main() { + var pragmaDots = document.getElementsByClassName("pragmadots"); + for (var i = 0; i < pragmaDots.length; i++) { + pragmaDots[i].onclick = function(event) { + // Hide tease + event.target.parentNode.style.display = "none"; + // Show actual + event.target.parentNode.nextElementSibling.style.display = "inline"; + } + } + + function switchTheme(e) { + if (e.target.checked) { + document.documentElement.setAttribute('data-theme', 'dark'); + localStorage.setItem('theme', 'dark'); + } else { + document.documentElement.setAttribute('data-theme', 'light'); + localStorage.setItem('theme', 'light'); + } + } + + const toggleSwitch = document.querySelector('.theme-switch input[type="checkbox"]'); + if (toggleSwitch !== null) { + toggleSwitch.addEventListener('change', switchTheme, false); + } + + var currentTheme = localStorage.getItem('theme'); + if (!currentTheme && window.matchMedia('(prefers-color-scheme: dark)').matches) { + currentTheme = 'dark'; + } + if (currentTheme) { + document.documentElement.setAttribute('data-theme', currentTheme); + + if (currentTheme === 'dark' && toggleSwitch !== null) { + toggleSwitch.checked = true; + } + } +} + +window.addEventListener('DOMContentLoaded', main); +</script> + +</head> +<body> +<div class="document" id="documentId"> + <div class="container"> + <h1 class="title">src/regex/parser</h1> + <div class="row"> + <div class="three columns"> + <div class="theme-switch-wrapper"> + <label class="theme-switch" for="checkbox"> + <input type="checkbox" id="checkbox" /> + <div class="slider round"></div> + </label> + <em>Dark Mode</em> + </div> + <div id="global-links"> + <ul class="simple"> + <li> + <a href="../theindex.html">Index</a> + </li> + </ul> + </div> + <div id="searchInputDiv"> + Search: <input type="text" id="searchInput" + onkeyup="search()" /> + </div> + <div> + Group by: + <select onchange="groupBy(this.value)"> + <option value="section">Section</option> + <option value="type">Type</option> + </select> + </div> + <ul class="simple simple-toc" id="toc-list"> +<li> + <a class="reference reference-toplevel" href="#6" id="56">Imports</a> + <ul class="simple simple-toc-section"> + + </ul> +</li> +<li> + <a class="reference reference-toplevel" href="#12" id="62">Procs</a> + <ul class="simple simple-toc-section"> + <ul class="simple nested-toc-section">parse + <li><a class="reference" href="#parse%2Cstring%2CRegexFlags" + title="parse(expression: string; flags: RegexFlags = {}): Exp">parse(expression: string; flags: RegexFlags = {}): Exp</a></li> + + </ul> + + </ul> +</li> + +</ul> + + </div> + + <div class="nine columns" id="content"> + <div id="tocRoot"></div> + + <p class="module-desc"></p> + <div class="section" id="6"> +<h1><a class="toc-backref" href="#6">Imports</a></h1> +<dl class="item"> +<a class="reference external" href="exptype.html">exptype</a>, <a class="reference external" href="types.html">types</a>, <a class="reference external" href="common.html">common</a>, <a class="reference external" href="scanner.html">scanner</a> +</dl></div> +<div class="section" id="12"> +<h1><a class="toc-backref" href="#12">Procs</a></h1> +<dl class="item"> +<div id="parse,string,RegexFlags"> +<dt><pre><span class="Keyword">func</span> <a href="#parse%2Cstring%2CRegexFlags"><span class="Identifier">parse</span></a><span class="Other">(</span><span class="Identifier">expression</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">flags</span><span class="Other">:</span> <a href="types.html#RegexFlags"><span class="Identifier">RegexFlags</span></a> <span class="Other">=</span> <span class="Other">{</span><span class="Other">}</span><span class="Other">)</span><span class="Other">:</span> <a href="exptype.html#Exp"><span class="Identifier">Exp</span></a> {. + <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RegexError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + +convert a <tt class="docutils literal"><span class="pre">string</span></tt> regex expression into a <tt class="docutils literal"><span class="pre">Node</span></tt> expression + +</dd> +</div> + +</dl></div> + + </div> +</div> + + <div class="row"> + <div class="twelve-columns footer"> + <span class="nim-sprite"></span> + <br/> + <small style="color: var(--hint);">Made with Nim. Generated: 2024-01-06 00:35:00 UTC</small> + </div> + </div> + </div> +</div> + +</body> +</html> diff --git a/regex/parser.idx b/regex/parser.idx new file mode 100644 index 00000000..2dd897fa --- /dev/null +++ b/regex/parser.idx @@ -0,0 +1 @@ +parse regex/parser.html#parse,string,RegexFlags parser: parse(expression: string; flags: RegexFlags = {}): Exp diff --git a/regex/scanner.html b/regex/scanner.html new file mode 100644 index 00000000..c2be7540 --- /dev/null +++ b/regex/scanner.html @@ -0,0 +1,359 @@ +<?xml version="1.0" encoding="utf-8" ?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!-- This file is generated by Nim. --> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + +<meta name="viewport" content="width=device-width, initial-scale=1.0"> + +<!-- Favicon --> +<link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA=="/> +<link rel="icon" type="image/png" sizes="32x32" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QQQEwksSS9ZWwAAAk1JREFUWMPtll2ITVEUx39nn/O7Y5qR8f05wtCUUr6ZIS++8pEnkZInPImneaCQ5METNdOkeFBKUhMPRIkHKfEuUZSUlGlKPN2TrgfncpvmnntnmlEyq1Z7t89/rf9a6+y99oZxGZf/XeIq61EdtgKXgdXA0xrYAvBjOIF1AI9zvjcC74BSpndrJPkBWDScTF8Aa4E3wDlgHbASaANmVqlcCnwHvgDvgVfAJ+AikAAvgfVZwLnSVZHZaOuKoQi3ZOMi4NkYkpe1p4J7A8BpYAD49hfIy/oqG0+hLomiKP2L5L+1ubn5115S+3OAn4EnwBlgMzCjyt6ZAnQCJ4A7wOs88iRJHvw50HoujuPBoCKwHWiosy8MdfZnAdcHk8dxXFJ3VQbQlCTJvRBCGdRbD4M6uc5glpY3eAihpN5S5w12diSEcCCEcKUO4ljdr15T76ur1FDDLIQQ3qv71EdDOe3Kxj3leRXyk+pxdWnFWod6Wt2bY3de3aSuUHcPBVimHs7mK9WrmeOF6lR1o9qnzskh2ar2qm1qizpfXaPeVGdlmGN5pb09qMxz1Xb1kLqgzn1RyH7JUXW52lr5e/Kqi9qpto7V1atuUzfnARrV7jEib1T76gG2qxdGmXyiekkt1GswPTtek0aBfJp6YySGBfWg2tPQ0FAYgf1stUfdmdcjarbYJEniKIq6gY/Aw+zWHAC+p2labGpqiorFYgGYCEzN7oQdQClN07O1/EfDyGgC0ALMBdYAi4FyK+4H3gLPsxfR1zRNi+NP7nH5J+QntnXe5B5mpfQAAAAASUVORK5CYII="> + +<!-- Google fonts --> +<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/> +<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/> + +<!-- CSS --> +<title>src/regex/scanner</title> +<link rel="stylesheet" type="text/css" href="../nimdoc.out.css"> + +<script type="text/javascript" src="../dochack.js"></script> + +<script type="text/javascript"> +function main() { + var pragmaDots = document.getElementsByClassName("pragmadots"); + for (var i = 0; i < pragmaDots.length; i++) { + pragmaDots[i].onclick = function(event) { + // Hide tease + event.target.parentNode.style.display = "none"; + // Show actual + event.target.parentNode.nextElementSibling.style.display = "inline"; + } + } + + function switchTheme(e) { + if (e.target.checked) { + document.documentElement.setAttribute('data-theme', 'dark'); + localStorage.setItem('theme', 'dark'); + } else { + document.documentElement.setAttribute('data-theme', 'light'); + localStorage.setItem('theme', 'light'); + } + } + + const toggleSwitch = document.querySelector('.theme-switch input[type="checkbox"]'); + if (toggleSwitch !== null) { + toggleSwitch.addEventListener('change', switchTheme, false); + } + + var currentTheme = localStorage.getItem('theme'); + if (!currentTheme && window.matchMedia('(prefers-color-scheme: dark)').matches) { + currentTheme = 'dark'; + } + if (currentTheme) { + document.documentElement.setAttribute('data-theme', currentTheme); + + if (currentTheme === 'dark' && toggleSwitch !== null) { + toggleSwitch.checked = true; + } + } +} + +window.addEventListener('DOMContentLoaded', main); +</script> + +</head> +<body> +<div class="document" id="documentId"> + <div class="container"> + <h1 class="title">src/regex/scanner</h1> + <div class="row"> + <div class="three columns"> + <div class="theme-switch-wrapper"> + <label class="theme-switch" for="checkbox"> + <input type="checkbox" id="checkbox" /> + <div class="slider round"></div> + </label> + <em>Dark Mode</em> + </div> + <div id="global-links"> + <ul class="simple"> + <li> + <a href="../theindex.html">Index</a> + </li> + </ul> + </div> + <div id="searchInputDiv"> + Search: <input type="text" id="searchInput" + onkeyup="search()" /> + </div> + <div> + Group by: + <select onchange="groupBy(this.value)"> + <option value="section">Section</option> + <option value="type">Type</option> + </select> + </div> + <ul class="simple simple-toc" id="toc-list"> +<li> + <a class="reference reference-toplevel" href="#6" id="56">Imports</a> + <ul class="simple simple-toc-section"> + + </ul> +</li> +<li> + <a class="reference reference-toplevel" href="#7" id="57">Types</a> + <ul class="simple simple-toc-section"> + <li><a class="reference" href="#Scanner" + title="Scanner[T] = ref object + raw*: string + s*: seq[T] + pos*: int">Scanner</a></li> + + </ul> +</li> +<li> + <a class="reference reference-toplevel" href="#12" id="62">Procs</a> + <ul class="simple simple-toc-section"> + <ul class="simple nested-toc-section">curr + <li><a class="reference" href="#curr%2CScanner%5BT%5D" + title="curr[T](sc: Scanner[T]): T">curr[T](sc: Scanner[T]): T</a></li> + + </ul> + <ul class="simple nested-toc-section">find + <li><a class="reference" href="#find%2CScanner%5BRune%5D%2CRune" + title="find(sc: Scanner[Rune]; r: Rune): int">find(sc: Scanner[Rune]; r: Rune): int</a></li> + + </ul> + <ul class="simple nested-toc-section">finished + <li><a class="reference" href="#finished%2CScanner%5BT%5D" + title="finished[T](sc: Scanner[T]): bool">finished[T](sc: Scanner[T]): bool</a></li> + + </ul> + <ul class="simple nested-toc-section">newScanner + <li><a class="reference" href="#newScanner%2Cseq%5BT%5D" + title="newScanner[T](s: seq[T]): Scanner[T]">newScanner[T](s: seq[T]): Scanner[T]</a></li> + + </ul> + <ul class="simple nested-toc-section">next + <li><a class="reference" href="#next%2CScanner%5BT%5D" + title="next[T](sc: Scanner[T]): T">next[T](sc: Scanner[T]): T</a></li> + + </ul> + <ul class="simple nested-toc-section">peek + <li><a class="reference" href="#peek%2CScanner%5BNode%5D" + title="peek(sc: Scanner[Node]): Node">peek(sc: Scanner[Node]): Node</a></li> + <li><a class="reference" href="#peek%2CScanner%5BRune%5D" + title="peek(sc: Scanner[Rune]): Rune">peek(sc: Scanner[Rune]): Rune</a></li> + <li><a class="reference" href="#peek%2CScanner%5BRune%5D%2Cint" + title="peek(sc: Scanner[Rune]; n: int): Rune">peek(sc: Scanner[Rune]; n: int): Rune</a></li> + + </ul> + <ul class="simple nested-toc-section">prev + <li><a class="reference" href="#prev%2CScanner%5BT%5D" + title="prev[T](sc: Scanner[T]): T">prev[T](sc: Scanner[T]): T</a></li> + + </ul> + <ul class="simple nested-toc-section">scan + <li><a class="reference" href="#scan%2Cstring" + title="scan(raw: string; bytesMode = false): Scanner[Rune]">scan(raw: string; bytesMode = false): Scanner[Rune]</a></li> + <li><a class="reference" href="#scan%2Cseq%5BT%5D" + title="scan[T](s: seq[T]): Scanner[T]">scan[T](s: seq[T]): Scanner[T]</a></li> + + </ul> + + </ul> +</li> +<li> + <a class="reference reference-toplevel" href="#15" id="65">Iterators</a> + <ul class="simple simple-toc-section"> + <ul class="simple nested-toc-section">items + <li><a class="reference" href="#items.i%2CScanner%5BT%5D" + title="items[T](sc: Scanner[T]): T">items[T](sc: Scanner[T]): T</a></li> + + </ul> + <ul class="simple nested-toc-section">mitems + <li><a class="reference" href="#mitems.i%2CScanner%5BT%5D" + title="mitems[T](sc: var Scanner[T]): var T">mitems[T](sc: var Scanner[T]): var T</a></li> + + </ul> + <ul class="simple nested-toc-section">peek + <li><a class="reference" href="#peek.i%2CScanner%5BT%5D" + title="peek[T](sc: Scanner[T]): (T, T)">peek[T](sc: Scanner[T]): (T, T)</a></li> + + </ul> + + </ul> +</li> + +</ul> + + </div> + + <div class="nine columns" id="content"> + <div id="tocRoot"></div> + + <p class="module-desc"></p> + <div class="section" id="6"> +<h1><a class="toc-backref" href="#6">Imports</a></h1> +<dl class="item"> +<a class="reference external" href="types.html">types</a>, <a class="reference external" href="common.html">common</a> +</dl></div> +<div class="section" id="7"> +<h1><a class="toc-backref" href="#7">Types</a></h1> +<dl class="item"> +<div id="Scanner"> +<dt><pre><a href="scanner.html#Scanner"><span class="Identifier">Scanner</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span> <span class="Other">=</span> <span class="Keyword">ref</span> <span class="Keyword">object</span> + <span class="Identifier">raw</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">string</span> + <span class="Identifier">s</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span> + <span class="Identifier">pos</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">int</span> +</pre></dt> +<dd> + +A scanner is a common construct for reading data + +</dd> +</div> + +</dl></div> +<div class="section" id="12"> +<h1><a class="toc-backref" href="#12">Procs</a></h1> +<dl class="item"> +<div id="curr,Scanner[T]"> +<dt><pre><span class="Keyword">func</span> <a href="#curr%2CScanner%5BT%5D"><span class="Identifier">curr</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">sc</span><span class="Other">:</span> <a href="scanner.html#Scanner"><span class="Identifier">Scanner</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">T</span></pre></dt> +<dd> + + + +</dd> +</div> +<div id="find,Scanner[Rune],Rune"> +<dt><pre><span class="Keyword">func</span> <a href="#find%2CScanner%5BRune%5D%2CRune"><span class="Identifier">find</span></a><span class="Other">(</span><span class="Identifier">sc</span><span class="Other">:</span> <a href="scanner.html#Scanner"><span class="Identifier">Scanner</span></a><span class="Other">[</span><span class="Identifier">Rune</span><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">r</span><span class="Other">:</span> <span class="Identifier">Rune</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">int</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + +return number of consumed chars. The scanner's position is not moved. <tt class="docutils literal"><span class="pre">-1</span></tt> is returned when char is not found + +</dd> +</div> +<div id="finished,Scanner[T]"> +<dt><pre><span class="Keyword">func</span> <a href="#finished%2CScanner%5BT%5D"><span class="Identifier">finished</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">sc</span><span class="Other">:</span> <a href="scanner.html#Scanner"><span class="Identifier">Scanner</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">bool</span></pre></dt> +<dd> + + + +</dd> +</div> +<div id="newScanner,seq[T]"> +<dt><pre><span class="Keyword">proc</span> <a href="#newScanner%2Cseq%5BT%5D"><span class="Identifier">newScanner</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="scanner.html#Scanner"><span class="Identifier">Scanner</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span></pre></dt> +<dd> + + + +</dd> +</div> +<div id="next,Scanner[T]"> +<dt><pre><span class="Keyword">func</span> <a href="#next%2CScanner%5BT%5D"><span class="Identifier">next</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">sc</span><span class="Other">:</span> <a href="scanner.html#Scanner"><span class="Identifier">Scanner</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">T</span></pre></dt> +<dd> + +return current item and consume it + +</dd> +</div> +<div id="peek,Scanner[Node]"> +<dt><pre><span class="Keyword">func</span> <a href="#peek%2CScanner%5BNode%5D"><span class="Identifier">peek</span></a><span class="Other">(</span><span class="Identifier">sc</span><span class="Other">:</span> <a href="scanner.html#Scanner"><span class="Identifier">Scanner</span></a><span class="Other">[</span><a href="types.html#Node"><span class="Identifier">Node</span></a><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="types.html#Node"><span class="Identifier">Node</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> +<div id="peek,Scanner[Rune]"> +<dt><pre><span class="Keyword">func</span> <a href="#peek%2CScanner%5BRune%5D"><span class="Identifier">peek</span></a><span class="Other">(</span><span class="Identifier">sc</span><span class="Other">:</span> <a href="scanner.html#Scanner"><span class="Identifier">Scanner</span></a><span class="Other">[</span><span class="Identifier">Rune</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Rune</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> +<div id="peek,Scanner[Rune],int"> +<dt><pre><span class="Keyword">func</span> <a href="#peek%2CScanner%5BRune%5D%2Cint"><span class="Identifier">peek</span></a><span class="Other">(</span><span class="Identifier">sc</span><span class="Other">:</span> <a href="scanner.html#Scanner"><span class="Identifier">Scanner</span></a><span class="Other">[</span><span class="Identifier">Rune</span><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">n</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Rune</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> +<div id="prev,Scanner[T]"> +<dt><pre><span class="Keyword">func</span> <a href="#prev%2CScanner%5BT%5D"><span class="Identifier">prev</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">sc</span><span class="Other">:</span> <a href="scanner.html#Scanner"><span class="Identifier">Scanner</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">T</span></pre></dt> +<dd> + + + +</dd> +</div> +<div id="scan,string"> +<dt><pre><span class="Keyword">proc</span> <a href="#scan%2Cstring"><span class="Identifier">scan</span></a><span class="Other">(</span><span class="Identifier">raw</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">bytesMode</span> <span class="Other">=</span> <span class="Identifier">false</span><span class="Other">)</span><span class="Other">:</span> <a href="scanner.html#Scanner"><span class="Identifier">Scanner</span></a><span class="Other">[</span><span class="Identifier">Rune</span><span class="Other">]</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> +<div id="scan,seq[T]"> +<dt><pre><span class="Keyword">proc</span> <a href="#scan%2Cseq%5BT%5D"><span class="Identifier">scan</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="scanner.html#Scanner"><span class="Identifier">Scanner</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span></pre></dt> +<dd> + + + +</dd> +</div> + +</dl></div> +<div class="section" id="15"> +<h1><a class="toc-backref" href="#15">Iterators</a></h1> +<dl class="item"> +<div id="items.i,Scanner[T]"> +<dt><pre><span class="Keyword">iterator</span> <a href="#items.i%2CScanner%5BT%5D"><span class="Identifier">items</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">sc</span><span class="Other">:</span> <a href="scanner.html#Scanner"><span class="Identifier">Scanner</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">T</span></pre></dt> +<dd> + +the yielded item gets consumed + +</dd> +</div> +<div id="mitems.i,Scanner[T]"> +<dt><pre><span class="Keyword">iterator</span> <a href="#mitems.i%2CScanner%5BT%5D"><span class="Identifier">mitems</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">sc</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="scanner.html#Scanner"><span class="Identifier">Scanner</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <span class="Keyword">var</span> <span class="Identifier">T</span></pre></dt> +<dd> + +the yielded item gets consumed + +</dd> +</div> +<div id="peek.i,Scanner[T]"> +<dt><pre><span class="Keyword">iterator</span> <a href="#peek.i%2CScanner%5BT%5D"><span class="Identifier">peek</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">sc</span><span class="Other">:</span> <a href="scanner.html#Scanner"><span class="Identifier">Scanner</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <span class="Other">(</span><span class="Identifier">T</span><span class="Other">,</span> <span class="Identifier">T</span><span class="Other">)</span></pre></dt> +<dd> + + + +</dd> +</div> + +</dl></div> + + </div> +</div> + + <div class="row"> + <div class="twelve-columns footer"> + <span class="nim-sprite"></span> + <br/> + <small style="color: var(--hint);">Made with Nim. Generated: 2024-01-06 00:35:00 UTC</small> + </div> + </div> + </div> +</div> + +</body> +</html> diff --git a/regex/scanner.idx b/regex/scanner.idx new file mode 100644 index 00000000..f91ab43f --- /dev/null +++ b/regex/scanner.idx @@ -0,0 +1,15 @@ +Scanner regex/scanner.html#Scanner scanner: Scanner +newScanner regex/scanner.html#newScanner,seq[T] scanner: newScanner[T](s: seq[T]): Scanner[T] +scan regex/scanner.html#scan,seq[T] scanner: scan[T](s: seq[T]): Scanner[T] +scan regex/scanner.html#scan,string scanner: scan(raw: string; bytesMode = false): Scanner[Rune] +items regex/scanner.html#items.i,Scanner[T] scanner: items[T](sc: Scanner[T]): T +mitems regex/scanner.html#mitems.i,Scanner[T] scanner: mitems[T](sc: var Scanner[T]): var T +finished regex/scanner.html#finished,Scanner[T] scanner: finished[T](sc: Scanner[T]): bool +prev regex/scanner.html#prev,Scanner[T] scanner: prev[T](sc: Scanner[T]): T +curr regex/scanner.html#curr,Scanner[T] scanner: curr[T](sc: Scanner[T]): T +next regex/scanner.html#next,Scanner[T] scanner: next[T](sc: Scanner[T]): T +peek regex/scanner.html#peek,Scanner[Rune] scanner: peek(sc: Scanner[Rune]): Rune +peek regex/scanner.html#peek,Scanner[Node] scanner: peek(sc: Scanner[Node]): Node +peek regex/scanner.html#peek.i,Scanner[T] scanner: peek[T](sc: Scanner[T]): (T, T) +peek regex/scanner.html#peek,Scanner[Rune],int scanner: peek(sc: Scanner[Rune]; n: int): Rune +find regex/scanner.html#find,Scanner[Rune],Rune scanner: find(sc: Scanner[Rune]; r: Rune): int diff --git a/regex/types.html b/regex/types.html new file mode 100644 index 00000000..8f0efd39 --- /dev/null +++ b/regex/types.html @@ -0,0 +1,614 @@ +<?xml version="1.0" encoding="utf-8" ?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!-- This file is generated by Nim. --> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + +<meta name="viewport" content="width=device-width, initial-scale=1.0"> + +<!-- Favicon --> +<link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA=="/> +<link rel="icon" type="image/png" sizes="32x32" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QQQEwksSS9ZWwAAAk1JREFUWMPtll2ITVEUx39nn/O7Y5qR8f05wtCUUr6ZIS++8pEnkZInPImneaCQ5METNdOkeFBKUhMPRIkHKfEuUZSUlGlKPN2TrgfncpvmnntnmlEyq1Z7t89/rf9a6+y99oZxGZf/XeIq61EdtgKXgdXA0xrYAvBjOIF1AI9zvjcC74BSpndrJPkBWDScTF8Aa4E3wDlgHbASaANmVqlcCnwHvgDvgVfAJ+AikAAvgfVZwLnSVZHZaOuKoQi3ZOMi4NkYkpe1p4J7A8BpYAD49hfIy/oqG0+hLomiKP2L5L+1ubn5115S+3OAn4EnwBlgMzCjyt6ZAnQCJ4A7wOs88iRJHvw50HoujuPBoCKwHWiosy8MdfZnAdcHk8dxXFJ3VQbQlCTJvRBCGdRbD4M6uc5glpY3eAihpN5S5w12diSEcCCEcKUO4ljdr15T76ur1FDDLIQQ3qv71EdDOe3Kxj3leRXyk+pxdWnFWod6Wt2bY3de3aSuUHcPBVimHs7mK9WrmeOF6lR1o9qnzskh2ar2qm1qizpfXaPeVGdlmGN5pb09qMxz1Xb1kLqgzn1RyH7JUXW52lr5e/Kqi9qpto7V1atuUzfnARrV7jEib1T76gG2qxdGmXyiekkt1GswPTtek0aBfJp6YySGBfWg2tPQ0FAYgf1stUfdmdcjarbYJEniKIq6gY/Aw+zWHAC+p2labGpqiorFYgGYCEzN7oQdQClN07O1/EfDyGgC0ALMBdYAi4FyK+4H3gLPsxfR1zRNi+NP7nH5J+QntnXe5B5mpfQAAAAASUVORK5CYII="> + +<!-- Google fonts --> +<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/> +<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/> + +<!-- CSS --> +<title>src/regex/types</title> +<link rel="stylesheet" type="text/css" href="../nimdoc.out.css"> + +<script type="text/javascript" src="../dochack.js"></script> + +<script type="text/javascript"> +function main() { + var pragmaDots = document.getElementsByClassName("pragmadots"); + for (var i = 0; i < pragmaDots.length; i++) { + pragmaDots[i].onclick = function(event) { + // Hide tease + event.target.parentNode.style.display = "none"; + // Show actual + event.target.parentNode.nextElementSibling.style.display = "inline"; + } + } + + function switchTheme(e) { + if (e.target.checked) { + document.documentElement.setAttribute('data-theme', 'dark'); + localStorage.setItem('theme', 'dark'); + } else { + document.documentElement.setAttribute('data-theme', 'light'); + localStorage.setItem('theme', 'light'); + } + } + + const toggleSwitch = document.querySelector('.theme-switch input[type="checkbox"]'); + if (toggleSwitch !== null) { + toggleSwitch.addEventListener('change', switchTheme, false); + } + + var currentTheme = localStorage.getItem('theme'); + if (!currentTheme && window.matchMedia('(prefers-color-scheme: dark)').matches) { + currentTheme = 'dark'; + } + if (currentTheme) { + document.documentElement.setAttribute('data-theme', currentTheme); + + if (currentTheme === 'dark' && toggleSwitch !== null) { + toggleSwitch.checked = true; + } + } +} + +window.addEventListener('DOMContentLoaded', main); +</script> + +</head> +<body> +<div class="document" id="documentId"> + <div class="container"> + <h1 class="title">src/regex/types</h1> + <div class="row"> + <div class="three columns"> + <div class="theme-switch-wrapper"> + <label class="theme-switch" for="checkbox"> + <input type="checkbox" id="checkbox" /> + <div class="slider round"></div> + </label> + <em>Dark Mode</em> + </div> + <div id="global-links"> + <ul class="simple"> + <li> + <a href="../theindex.html">Index</a> + </li> + </ul> + </div> + <div id="searchInputDiv"> + Search: <input type="text" id="searchInput" + onkeyup="search()" /> + </div> + <div> + Group by: + <select onchange="groupBy(this.value)"> + <option value="section">Section</option> + <option value="type">Type</option> + </select> + </div> + <ul class="simple simple-toc" id="toc-list"> +<li> + <a class="reference reference-toplevel" href="#6" id="56">Imports</a> + <ul class="simple simple-toc-section"> + + </ul> +</li> +<li> + <a class="reference reference-toplevel" href="#7" id="57">Types</a> + <ul class="simple simple-toc-section"> + <li><a class="reference" href="#Enfa" + title="Enfa = object + s*: seq[Node]">Enfa</a></li> + <li><a class="reference" href="#Flag" + title="Flag = enum + flagCaseInsensitive, flagNotCaseInsensitive, flagMultiLine, flagNotMultiLine, + flagAnyMatchNewLine, flagNotAnyMatchNewLine, flagUnGreedy, flagNotUnGreedy, + flagUnicode, flagNotUnicode, flagVerbose, flagNotVerbose">Flag</a></li> + <li><a class="reference" href="#Nfa" + title="Nfa = object + s*: seq[Node]">Nfa</a></li> + <li><a class="reference" href="#Node" + title="Node = object + kind*: NodeKind + cp*: Rune + next*: seq[int16] + isGreedy*: bool + uid*: NodeUid + idx*: int16 + isCapturing*: bool + name*: string + flags*: seq[Flag] + min*, max*: int16 + cps*: HashSet[Rune] + ranges*: seq[Slice[Rune]] + shorthands*: seq[Node] + cc*: UnicodeCategorySet + subExp*: SubExp">Node</a></li> + <li><a class="reference" href="#NodeKind" + title="NodeKind = enum + reChar, reCharCi, reJoiner, reGroupStart, reGroupEnd, reFlags, reOr, + reZeroOrMore, reOneOrMore, reZeroOrOne, reRepRange, reStartSym, reEndSym, + reStartSymML, reEndSymML, reStart, reEnd, reWordBoundary, reNotWordBoundary, + reWord, reDigit, reWhiteSpace, reUCC, reNotAlphaNum, reNotDigit, + reNotWhiteSpace, reNotUCC, reAny, reAnyNl, reWordBoundaryAscii, + reNotWordBoundaryAscii, reWordAscii, reDigitAscii, reWhiteSpaceAscii, + reNotAlphaNumAscii, reNotDigitAscii, reNotWhiteSpaceAscii, reInSet, reNotSet, + reLookahead, reLookbehind, reNotLookahead, reNotLookbehind, reSkip, reEoe">NodeKind</a></li> + <li><a class="reference" href="#NodeUid" + title="NodeUid = int16">NodeUid</a></li> + <li><a class="reference" href="#RegexFlag" + title="RegexFlag = enum + regexArbitraryBytes">RegexFlag</a></li> + <li><a class="reference" href="#RegexFlags" + title="RegexFlags = set[RegexFlag]">RegexFlags</a></li> + <li><a class="reference" href="#RpnExp" + title="RpnExp = object + s*: seq[Node]">RpnExp</a></li> + <li><a class="reference" href="#SubExp" + title="SubExp = object + nfa*: Nfa + rpn*: RpnExp + reverseCapts*: bool">SubExp</a></li> + + </ul> +</li> +<li> + <a class="reference reference-toplevel" href="#10" id="60">Consts</a> + <ul class="simple simple-toc-section"> + <li><a class="reference" href="#assertionKind" + title="assertionKind = {reStartSym, reEndSym, reStartSymML, reEndSymML, reStart, reEnd, + reWordBoundary, reNotWordBoundary, reWordBoundaryAscii, + reNotWordBoundaryAscii, reLookahead, reLookbehind, + reNotLookahead, reNotLookbehind}">assertionKind</a></li> + <li><a class="reference" href="#groupKind" + title="groupKind = {reGroupStart, reGroupEnd}">groupKind</a></li> + <li><a class="reference" href="#groupStartKind" + title="groupStartKind = {reGroupStart, reLookahead..reNotLookbehind}">groupStartKind</a></li> + <li><a class="reference" href="#lookaheadKind" + title="lookaheadKind = {reLookahead, reNotLookahead}">lookaheadKind</a></li> + <li><a class="reference" href="#lookaroundKind" + title="lookaroundKind = {reLookahead, reLookbehind, reNotLookahead, reNotLookbehind}">lookaroundKind</a></li> + <li><a class="reference" href="#lookbehindKind" + title="lookbehindKind = {reLookbehind, reNotLookbehind}">lookbehindKind</a></li> + <li><a class="reference" href="#matchableKind" + title="matchableKind = {reChar, reCharCi, reWord, reDigit, reWhiteSpace, reUCC, + reNotAlphaNum, reNotDigit, reNotWhiteSpace, reNotUCC, reAny, + reAnyNl, reInSet, reNotSet, reWordAscii, reDigitAscii, + reWhiteSpaceAscii, reNotAlphaNumAscii, reNotDigitAscii, + reNotWhiteSpaceAscii}">matchableKind</a></li> + <li><a class="reference" href="#opKind" + title="opKind = {reJoiner, reOr, reZeroOrMore, reOneOrMore, reZeroOrOne, reRepRange}">opKind</a></li> + <li><a class="reference" href="#repetitionKind" + title="repetitionKind = {reZeroOrMore, reOneOrMore, reRepRange}">repetitionKind</a></li> + <li><a class="reference" href="#shorthandKind" + title="shorthandKind = {reWord, reDigit, reWhiteSpace, reUCC, reNotAlphaNum, + reNotDigit, reNotWhiteSpace, reNotUCC, reWordAscii, + reDigitAscii, reWhiteSpaceAscii, reNotAlphaNumAscii, + reNotDigitAscii, reNotWhiteSpaceAscii}">shorthandKind</a></li> + + </ul> +</li> +<li> + <a class="reference reference-toplevel" href="#12" id="62">Procs</a> + <ul class="simple simple-toc-section"> + <ul class="simple nested-toc-section">$ + <li><a class="reference" href="#%24%2CNode" + title="`$`(n: Node): string">`$`(n: Node): string</a></li> + + </ul> + <ul class="simple nested-toc-section">initEoeNode + <li><a class="reference" href="#initEoeNode" + title="initEoeNode(): Node">initEoeNode(): Node</a></li> + + </ul> + <ul class="simple nested-toc-section">initGroupStart + <li><a class="reference" href="#initGroupStart%2Cstring%2Cseq%5BFlag%5D" + title="initGroupStart(name: string = ""; flags: seq[Flag] = @[]; isCapturing = true): Node">initGroupStart(name: string = ""; flags: seq[Flag] = @[]; isCapturing = true): Node</a></li> + + </ul> + <ul class="simple nested-toc-section">initJoinerNode + <li><a class="reference" href="#initJoinerNode" + title="initJoinerNode(): Node">initJoinerNode(): Node</a></li> + + </ul> + <ul class="simple nested-toc-section">initNotSetNode + <li><a class="reference" href="#initNotSetNode" + title="initNotSetNode(): Node">initNotSetNode(): Node</a></li> + + </ul> + <ul class="simple nested-toc-section">initSetNode + <li><a class="reference" href="#initSetNode" + title="initSetNode(): Node">initSetNode(): Node</a></li> + + </ul> + <ul class="simple nested-toc-section">initSkipNode + <li><a class="reference" href="#initSkipNode" + title="initSkipNode(): Node">initSkipNode(): Node</a></li> + <li><a class="reference" href="#initSkipNode%2CopenArray%5Bint16%5D" + title="initSkipNode(next: openArray[int16]): Node">initSkipNode(next: openArray[int16]): Node</a></li> + + </ul> + <ul class="simple nested-toc-section">isEmpty + <li><a class="reference" href="#isEmpty%2CNode" + title="isEmpty(n: Node): bool">isEmpty(n: Node): bool</a></li> + + </ul> + <ul class="simple nested-toc-section">isEpsilonTransition + <li><a class="reference" href="#isEpsilonTransition%2CNode" + title="isEpsilonTransition(n: Node): bool">isEpsilonTransition(n: Node): bool</a></li> + + </ul> + <ul class="simple nested-toc-section">toCharNode + <li><a class="reference" href="#toCharNode%2CRune" + title="toCharNode(r: Rune): Node">toCharNode(r: Rune): Node</a></li> + + </ul> + <ul class="simple nested-toc-section">toString + <li><a class="reference" href="#toString%2Cseq%5BNode%5D" + title="toString(n: seq[Node]): string">toString(n: seq[Node]): string</a></li> + + </ul> + + </ul> +</li> + +</ul> + + </div> + + <div class="nine columns" id="content"> + <div id="tocRoot"></div> + + <p class="module-desc"></p> + <div class="section" id="6"> +<h1><a class="toc-backref" href="#6">Imports</a></h1> +<dl class="item"> +<a class="reference external" href="common.html">common</a> +</dl></div> +<div class="section" id="7"> +<h1><a class="toc-backref" href="#7">Types</a></h1> +<dl class="item"> +<div id="Enfa"> +<dt><pre><a href="types.html#Enfa"><span class="Identifier">Enfa</span></a> <span class="Other">=</span> <span class="Keyword">object</span> + <span class="Identifier">s</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="types.html#Node"><span class="Identifier">Node</span></a><span class="Other">]</span> +</pre></dt> +<dd> + + + +</dd> +</div> +<div id="Flag"> +<dt><pre><a href="types.html#Flag"><span class="Identifier">Flag</span></a> <span class="Other">=</span> <span class="Keyword">enum</span> + <span class="Identifier">flagCaseInsensitive</span><span class="Other">,</span> <span class="Identifier">flagNotCaseInsensitive</span><span class="Other">,</span> <span class="Identifier">flagMultiLine</span><span class="Other">,</span> <span class="Identifier">flagNotMultiLine</span><span class="Other">,</span> + <span class="Identifier">flagAnyMatchNewLine</span><span class="Other">,</span> <span class="Identifier">flagNotAnyMatchNewLine</span><span class="Other">,</span> <span class="Identifier">flagUnGreedy</span><span class="Other">,</span> <span class="Identifier">flagNotUnGreedy</span><span class="Other">,</span> + <span class="Identifier">flagUnicode</span><span class="Other">,</span> <span class="Identifier">flagNotUnicode</span><span class="Other">,</span> <span class="Identifier">flagVerbose</span><span class="Other">,</span> <span class="Identifier">flagNotVerbose</span></pre></dt> +<dd> + + + +</dd> +</div> +<div id="Nfa"> +<dt><pre><a href="types.html#Nfa"><span class="Identifier">Nfa</span></a> <span class="Other">=</span> <span class="Keyword">object</span> + <span class="Identifier">s</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="types.html#Node"><span class="Identifier">Node</span></a><span class="Other">]</span> +</pre></dt> +<dd> + + + +</dd> +</div> +<div id="Node"> +<dt><pre><a href="types.html#Node"><span class="Identifier">Node</span></a> <span class="Other">=</span> <span class="Keyword">object</span> + <span class="Identifier">kind</span><span class="Operator">*</span><span class="Other">:</span> <a href="types.html#NodeKind"><span class="Identifier">NodeKind</span></a> + <span class="Identifier">cp</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">Rune</span> + <span class="Identifier">next</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">int16</span><span class="Other">]</span> + <span class="Identifier">isGreedy</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">bool</span> + <span class="Identifier">uid</span><span class="Operator">*</span><span class="Other">:</span> <a href="types.html#NodeUid"><span class="Identifier">NodeUid</span></a> + <span class="Identifier">idx</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">int16</span> + <span class="Identifier">isCapturing</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">bool</span> + <span class="Identifier">name</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">string</span> + <span class="Identifier">flags</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="types.html#Flag"><span class="Identifier">Flag</span></a><span class="Other">]</span> + <span class="Identifier">min</span><span class="Operator">*</span><span class="Other">,</span> <span class="Identifier">max</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">int16</span> + <span class="Identifier">cps</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">HashSet</span><span class="Other">[</span><span class="Identifier">Rune</span><span class="Other">]</span> + <span class="Identifier">ranges</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">Slice</span><span class="Other">[</span><span class="Identifier">Rune</span><span class="Other">]</span><span class="Other">]</span> + <span class="Identifier">shorthands</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="types.html#Node"><span class="Identifier">Node</span></a><span class="Other">]</span> + <span class="Identifier">cc</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">UnicodeCategorySet</span> + <span class="Identifier">subExp</span><span class="Operator">*</span><span class="Other">:</span> <a href="types.html#SubExp"><span class="Identifier">SubExp</span></a> +</pre></dt> +<dd> + + + +</dd> +</div> +<div id="NodeKind"> +<dt><pre><a href="types.html#NodeKind"><span class="Identifier">NodeKind</span></a> <span class="Other">=</span> <span class="Keyword">enum</span> + <span class="Identifier">reChar</span><span class="Other">,</span> <span class="Identifier">reCharCi</span><span class="Other">,</span> <span class="Identifier">reJoiner</span><span class="Other">,</span> <span class="Identifier">reGroupStart</span><span class="Other">,</span> <span class="Identifier">reGroupEnd</span><span class="Other">,</span> <span class="Identifier">reFlags</span><span class="Other">,</span> <span class="Identifier">reOr</span><span class="Other">,</span> + <span class="Identifier">reZeroOrMore</span><span class="Other">,</span> <span class="Identifier">reOneOrMore</span><span class="Other">,</span> <span class="Identifier">reZeroOrOne</span><span class="Other">,</span> <span class="Identifier">reRepRange</span><span class="Other">,</span> <span class="Identifier">reStartSym</span><span class="Other">,</span> <span class="Identifier">reEndSym</span><span class="Other">,</span> + <span class="Identifier">reStartSymML</span><span class="Other">,</span> <span class="Identifier">reEndSymML</span><span class="Other">,</span> <span class="Identifier">reStart</span><span class="Other">,</span> <span class="Identifier">reEnd</span><span class="Other">,</span> <span class="Identifier">reWordBoundary</span><span class="Other">,</span> <span class="Identifier">reNotWordBoundary</span><span class="Other">,</span> + <span class="Identifier">reWord</span><span class="Other">,</span> <span class="Identifier">reDigit</span><span class="Other">,</span> <span class="Identifier">reWhiteSpace</span><span class="Other">,</span> <span class="Identifier">reUCC</span><span class="Other">,</span> <span class="Identifier">reNotAlphaNum</span><span class="Other">,</span> <span class="Identifier">reNotDigit</span><span class="Other">,</span> + <span class="Identifier">reNotWhiteSpace</span><span class="Other">,</span> <span class="Identifier">reNotUCC</span><span class="Other">,</span> <span class="Identifier">reAny</span><span class="Other">,</span> <span class="Identifier">reAnyNl</span><span class="Other">,</span> <span class="Identifier">reWordBoundaryAscii</span><span class="Other">,</span> + <span class="Identifier">reNotWordBoundaryAscii</span><span class="Other">,</span> <span class="Identifier">reWordAscii</span><span class="Other">,</span> <span class="Identifier">reDigitAscii</span><span class="Other">,</span> <span class="Identifier">reWhiteSpaceAscii</span><span class="Other">,</span> + <span class="Identifier">reNotAlphaNumAscii</span><span class="Other">,</span> <span class="Identifier">reNotDigitAscii</span><span class="Other">,</span> <span class="Identifier">reNotWhiteSpaceAscii</span><span class="Other">,</span> <span class="Identifier">reInSet</span><span class="Other">,</span> <span class="Identifier">reNotSet</span><span class="Other">,</span> + <span class="Identifier">reLookahead</span><span class="Other">,</span> <span class="Identifier">reLookbehind</span><span class="Other">,</span> <span class="Identifier">reNotLookahead</span><span class="Other">,</span> <span class="Identifier">reNotLookbehind</span><span class="Other">,</span> <span class="Identifier">reSkip</span><span class="Other">,</span> <span class="Identifier">reEoe</span></pre></dt> +<dd> + + + +</dd> +</div> +<div id="NodeUid"> +<dt><pre><a href="types.html#NodeUid"><span class="Identifier">NodeUid</span></a> <span class="Other">=</span> <span class="Identifier">int16</span></pre></dt> +<dd> + + + +</dd> +</div> +<div id="RegexFlag"> +<dt><pre><a href="types.html#RegexFlag"><span class="Identifier">RegexFlag</span></a> <span class="Other">=</span> <span class="Keyword">enum</span> + <span class="Identifier">regexArbitraryBytes</span></pre></dt> +<dd> + + + +</dd> +</div> +<div id="RegexFlags"> +<dt><pre><a href="types.html#RegexFlags"><span class="Identifier">RegexFlags</span></a> <span class="Other">=</span> <span class="Identifier">set</span><span class="Other">[</span><a href="types.html#RegexFlag"><span class="Identifier">RegexFlag</span></a><span class="Other">]</span></pre></dt> +<dd> + + + +</dd> +</div> +<div id="RpnExp"> +<dt><pre><a href="types.html#RpnExp"><span class="Identifier">RpnExp</span></a> <span class="Other">=</span> <span class="Keyword">object</span> + <span class="Identifier">s</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="types.html#Node"><span class="Identifier">Node</span></a><span class="Other">]</span> +</pre></dt> +<dd> + + + +</dd> +</div> +<div id="SubExp"> +<dt><pre><a href="types.html#SubExp"><span class="Identifier">SubExp</span></a> <span class="Other">=</span> <span class="Keyword">object</span> + <span class="Identifier">nfa</span><span class="Operator">*</span><span class="Other">:</span> <a href="types.html#Nfa"><span class="Identifier">Nfa</span></a> + <span class="Identifier">rpn</span><span class="Operator">*</span><span class="Other">:</span> <a href="types.html#RpnExp"><span class="Identifier">RpnExp</span></a> + <span class="Identifier">reverseCapts</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">bool</span> +</pre></dt> +<dd> + + + +</dd> +</div> + +</dl></div> +<div class="section" id="10"> +<h1><a class="toc-backref" href="#10">Consts</a></h1> +<dl class="item"> +<div id="assertionKind"> +<dt><pre><a href="types.html#assertionKind"><span class="Identifier">assertionKind</span></a> <span class="Other">=</span> <span class="Other">{</span><span class="DecNumber">reStartSym</span><span class="Other">,</span> <span class="DecNumber">reEndSym</span><span class="Other">,</span> <span class="DecNumber">reStartSymML</span><span class="Other">,</span> <span class="DecNumber">reEndSymML</span><span class="Other">,</span> <span class="DecNumber">reStart</span><span class="Other">,</span> <span class="DecNumber">reEnd</span><span class="Other">,</span> + <span class="DecNumber">reWordBoundary</span><span class="Other">,</span> <span class="DecNumber">reNotWordBoundary</span><span class="Other">,</span> <span class="DecNumber">reWordBoundaryAscii</span><span class="Other">,</span> + <span class="DecNumber">reNotWordBoundaryAscii</span><span class="Other">,</span> <span class="DecNumber">reLookahead</span><span class="Other">,</span> <span class="DecNumber">reLookbehind</span><span class="Other">,</span> + <span class="DecNumber">reNotLookahead</span><span class="Other">,</span> <span class="DecNumber">reNotLookbehind</span><span class="Other">}</span></pre></dt> +<dd> + + + +</dd> +</div> +<div id="groupKind"> +<dt><pre><a href="types.html#groupKind"><span class="Identifier">groupKind</span></a> <span class="Other">=</span> <span class="Other">{</span><span class="DecNumber">reGroupStart</span><span class="Other">,</span> <span class="DecNumber">reGroupEnd</span><span class="Other">}</span></pre></dt> +<dd> + + + +</dd> +</div> +<div id="groupStartKind"> +<dt><pre><a href="types.html#groupStartKind"><span class="Identifier">groupStartKind</span></a> <span class="Other">=</span> <span class="Other">{</span><span class="DecNumber">reGroupStart</span><span class="Other">,</span> <span class="DecNumber">reLookahead</span><span class="Other">..</span><span class="DecNumber">reNotLookbehind</span><span class="Other">}</span></pre></dt> +<dd> + + + +</dd> +</div> +<div id="lookaheadKind"> +<dt><pre><a href="types.html#lookaheadKind"><span class="Identifier">lookaheadKind</span></a> <span class="Other">=</span> <span class="Other">{</span><span class="DecNumber">reLookahead</span><span class="Other">,</span> <span class="DecNumber">reNotLookahead</span><span class="Other">}</span></pre></dt> +<dd> + + + +</dd> +</div> +<div id="lookaroundKind"> +<dt><pre><a href="types.html#lookaroundKind"><span class="Identifier">lookaroundKind</span></a> <span class="Other">=</span> <span class="Other">{</span><span class="DecNumber">reLookahead</span><span class="Other">,</span> <span class="DecNumber">reLookbehind</span><span class="Other">,</span> <span class="DecNumber">reNotLookahead</span><span class="Other">,</span> <span class="DecNumber">reNotLookbehind</span><span class="Other">}</span></pre></dt> +<dd> + + + +</dd> +</div> +<div id="lookbehindKind"> +<dt><pre><a href="types.html#lookbehindKind"><span class="Identifier">lookbehindKind</span></a> <span class="Other">=</span> <span class="Other">{</span><span class="DecNumber">reLookbehind</span><span class="Other">,</span> <span class="DecNumber">reNotLookbehind</span><span class="Other">}</span></pre></dt> +<dd> + + + +</dd> +</div> +<div id="matchableKind"> +<dt><pre><a href="types.html#matchableKind"><span class="Identifier">matchableKind</span></a> <span class="Other">=</span> <span class="Other">{</span><span class="DecNumber">reChar</span><span class="Other">,</span> <span class="DecNumber">reCharCi</span><span class="Other">,</span> <span class="DecNumber">reWord</span><span class="Other">,</span> <span class="DecNumber">reDigit</span><span class="Other">,</span> <span class="DecNumber">reWhiteSpace</span><span class="Other">,</span> <span class="DecNumber">reUCC</span><span class="Other">,</span> + <span class="DecNumber">reNotAlphaNum</span><span class="Other">,</span> <span class="DecNumber">reNotDigit</span><span class="Other">,</span> <span class="DecNumber">reNotWhiteSpace</span><span class="Other">,</span> <span class="DecNumber">reNotUCC</span><span class="Other">,</span> <span class="DecNumber">reAny</span><span class="Other">,</span> + <span class="DecNumber">reAnyNl</span><span class="Other">,</span> <span class="DecNumber">reInSet</span><span class="Other">,</span> <span class="DecNumber">reNotSet</span><span class="Other">,</span> <span class="DecNumber">reWordAscii</span><span class="Other">,</span> <span class="DecNumber">reDigitAscii</span><span class="Other">,</span> + <span class="DecNumber">reWhiteSpaceAscii</span><span class="Other">,</span> <span class="DecNumber">reNotAlphaNumAscii</span><span class="Other">,</span> <span class="DecNumber">reNotDigitAscii</span><span class="Other">,</span> + <span class="DecNumber">reNotWhiteSpaceAscii</span><span class="Other">}</span></pre></dt> +<dd> + + + +</dd> +</div> +<div id="opKind"> +<dt><pre><a href="types.html#opKind"><span class="Identifier">opKind</span></a> <span class="Other">=</span> <span class="Other">{</span><span class="DecNumber">reJoiner</span><span class="Other">,</span> <span class="DecNumber">reOr</span><span class="Other">,</span> <span class="DecNumber">reZeroOrMore</span><span class="Other">,</span> <span class="DecNumber">reOneOrMore</span><span class="Other">,</span> <span class="DecNumber">reZeroOrOne</span><span class="Other">,</span> <span class="DecNumber">reRepRange</span><span class="Other">}</span></pre></dt> +<dd> + + + +</dd> +</div> +<div id="repetitionKind"> +<dt><pre><a href="types.html#repetitionKind"><span class="Identifier">repetitionKind</span></a> <span class="Other">=</span> <span class="Other">{</span><span class="DecNumber">reZeroOrMore</span><span class="Other">,</span> <span class="DecNumber">reOneOrMore</span><span class="Other">,</span> <span class="DecNumber">reRepRange</span><span class="Other">}</span></pre></dt> +<dd> + + + +</dd> +</div> +<div id="shorthandKind"> +<dt><pre><a href="types.html#shorthandKind"><span class="Identifier">shorthandKind</span></a> <span class="Other">=</span> <span class="Other">{</span><span class="DecNumber">reWord</span><span class="Other">,</span> <span class="DecNumber">reDigit</span><span class="Other">,</span> <span class="DecNumber">reWhiteSpace</span><span class="Other">,</span> <span class="DecNumber">reUCC</span><span class="Other">,</span> <span class="DecNumber">reNotAlphaNum</span><span class="Other">,</span> + <span class="DecNumber">reNotDigit</span><span class="Other">,</span> <span class="DecNumber">reNotWhiteSpace</span><span class="Other">,</span> <span class="DecNumber">reNotUCC</span><span class="Other">,</span> <span class="DecNumber">reWordAscii</span><span class="Other">,</span> + <span class="DecNumber">reDigitAscii</span><span class="Other">,</span> <span class="DecNumber">reWhiteSpaceAscii</span><span class="Other">,</span> <span class="DecNumber">reNotAlphaNumAscii</span><span class="Other">,</span> + <span class="DecNumber">reNotDigitAscii</span><span class="Other">,</span> <span class="DecNumber">reNotWhiteSpaceAscii</span><span class="Other">}</span></pre></dt> +<dd> + + + +</dd> +</div> + +</dl></div> +<div class="section" id="12"> +<h1><a class="toc-backref" href="#12">Procs</a></h1> +<dl class="item"> +<div id="$,Node"> +<dt><pre><span class="Keyword">func</span> <a href="#%24%2CNode"><span class="Identifier">`$`</span></a><span class="Other">(</span><span class="Identifier">n</span><span class="Other">:</span> <a href="types.html#Node"><span class="Identifier">Node</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + +return the string representation of a <tt class="docutils literal"><span class="pre"><span class="Identifier">Node</span></span></tt>. The string is always equivalent to the original expression but not necessarily equal + +</dd> +</div> +<div id="initEoeNode"> +<dt><pre><span class="Keyword">func</span> <a href="#initEoeNode"><span class="Identifier">initEoeNode</span></a><span class="Other">(</span><span class="Other">)</span><span class="Other">:</span> <a href="types.html#Node"><span class="Identifier">Node</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + +return the end-of-expression <tt class="docutils literal"><span class="pre">Node</span></tt>. This is a dummy node that marks a match as successful + +</dd> +</div> +<div id="initGroupStart,string,seq[Flag]"> +<dt><pre><span class="Keyword">func</span> <a href="#initGroupStart%2Cstring%2Cseq%5BFlag%5D"><span class="Identifier">initGroupStart</span></a><span class="Other">(</span><span class="Identifier">name</span><span class="Other">:</span> <span class="Identifier">string</span> <span class="Other">=</span> <span class="StringLit">""</span><span class="Other">;</span> <span class="Identifier">flags</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="types.html#Flag"><span class="Identifier">Flag</span></a><span class="Other">]</span> <span class="Other">=</span> <span class="Operator">@</span><span class="Other">[</span><span class="Other">]</span><span class="Other">;</span> + <span class="Identifier">isCapturing</span> <span class="Other">=</span> <span class="Identifier">true</span><span class="Other">)</span><span class="Other">:</span> <a href="types.html#Node"><span class="Identifier">Node</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + +return a <tt class="docutils literal"><span class="pre">reGroupStart</span></tt> node + +</dd> +</div> +<div id="initJoinerNode"> +<dt><pre><span class="Keyword">func</span> <a href="#initJoinerNode"><span class="Identifier">initJoinerNode</span></a><span class="Other">(</span><span class="Other">)</span><span class="Other">:</span> <a href="types.html#Node"><span class="Identifier">Node</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + +return a <tt class="docutils literal"><span class="pre">Node</span></tt> of <tt class="docutils literal"><span class="pre">reJoiner</span></tt> kind. Joiners are temporary nodes, they serve to generate the NFA but they are never part of it + +</dd> +</div> +<div id="initNotSetNode"> +<dt><pre><span class="Keyword">func</span> <a href="#initNotSetNode"><span class="Identifier">initNotSetNode</span></a><span class="Other">(</span><span class="Other">)</span><span class="Other">:</span> <a href="types.html#Node"><span class="Identifier">Node</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + +return a negated set <tt class="docutils literal"><span class="pre">Node</span></tt>, parsed from an expression such as <tt class="docutils literal"><span class="pre">[^a-z]</span></tt> + +</dd> +</div> +<div id="initSetNode"> +<dt><pre><span class="Keyword">func</span> <a href="#initSetNode"><span class="Identifier">initSetNode</span></a><span class="Other">(</span><span class="Other">)</span><span class="Other">:</span> <a href="types.html#Node"><span class="Identifier">Node</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + +return a set <tt class="docutils literal"><span class="pre">Node</span></tt>, parsed from an expression such as <tt class="docutils literal"><span class="pre">[a-z]</span></tt> + +</dd> +</div> +<div id="initSkipNode"> +<dt><pre><span class="Keyword">func</span> <a href="#initSkipNode"><span class="Identifier">initSkipNode</span></a><span class="Other">(</span><span class="Other">)</span><span class="Other">:</span> <a href="types.html#Node"><span class="Identifier">Node</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> +<div id="initSkipNode,openArray[int16]"> +<dt><pre><span class="Keyword">func</span> <a href="#initSkipNode%2CopenArray%5Bint16%5D"><span class="Identifier">initSkipNode</span></a><span class="Other">(</span><span class="Identifier">next</span><span class="Other">:</span> <span class="Identifier">openArray</span><span class="Other">[</span><span class="Identifier">int16</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="types.html#Node"><span class="Identifier">Node</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + +Return a dummy node that should be skipped while traversing the NFA + +</dd> +</div> +<div id="isEmpty,Node"> +<dt><pre><span class="Keyword">func</span> <a href="#isEmpty%2CNode"><span class="Identifier">isEmpty</span></a><span class="Other">(</span><span class="Identifier">n</span><span class="Other">:</span> <a href="types.html#Node"><span class="Identifier">Node</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">bool</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + +check if a set <tt class="docutils literal"><span class="pre">Node</span></tt> is empty + +</dd> +</div> +<div id="isEpsilonTransition,Node"> +<dt><pre><span class="Keyword">func</span> <a href="#isEpsilonTransition%2CNode"><span class="Identifier">isEpsilonTransition</span></a><span class="Other">(</span><span class="Identifier">n</span><span class="Other">:</span> <a href="types.html#Node"><span class="Identifier">Node</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">bool</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> +<div id="toCharNode,Rune"> +<dt><pre><span class="Keyword">func</span> <a href="#toCharNode%2CRune"><span class="Identifier">toCharNode</span></a><span class="Other">(</span><span class="Identifier">r</span><span class="Other">:</span> <span class="Identifier">Rune</span><span class="Other">)</span><span class="Other">:</span> <a href="types.html#Node"><span class="Identifier">Node</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + +return a <tt class="docutils literal"><span class="pre">Node</span></tt> that is meant to be matched against text characters + +</dd> +</div> +<div id="toString,seq[Node]"> +<dt><pre><span class="Keyword">func</span> <a href="#toString%2Cseq%5BNode%5D"><span class="Identifier">toString</span></a><span class="Other">(</span><span class="Identifier">n</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="types.html#Node"><span class="Identifier">Node</span></a><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> + +</dl></div> + + </div> +</div> + + <div class="row"> + <div class="twelve-columns footer"> + <span class="nim-sprite"></span> + <br/> + <small style="color: var(--hint);">Made with Nim. Generated: 2024-01-06 00:35:00 UTC</small> + </div> + </div> + </div> +</div> + +</body> +</html> diff --git a/regex/types.idx b/regex/types.idx new file mode 100644 index 00000000..3454509c --- /dev/null +++ b/regex/types.idx @@ -0,0 +1,90 @@ +regexArbitraryBytes regex/types.html#regexArbitraryBytes RegexFlag.regexArbitraryBytes +RegexFlag regex/types.html#RegexFlag types: RegexFlag +RegexFlags regex/types.html#RegexFlags types: RegexFlags +RpnExp regex/types.html#RpnExp types: RpnExp +Enfa regex/types.html#Enfa types: Enfa +Nfa regex/types.html#Nfa types: Nfa +flagCaseInsensitive regex/types.html#flagCaseInsensitive Flag.flagCaseInsensitive +flagNotCaseInsensitive regex/types.html#flagNotCaseInsensitive Flag.flagNotCaseInsensitive +flagMultiLine regex/types.html#flagMultiLine Flag.flagMultiLine +flagNotMultiLine regex/types.html#flagNotMultiLine Flag.flagNotMultiLine +flagAnyMatchNewLine regex/types.html#flagAnyMatchNewLine Flag.flagAnyMatchNewLine +flagNotAnyMatchNewLine regex/types.html#flagNotAnyMatchNewLine Flag.flagNotAnyMatchNewLine +flagUnGreedy regex/types.html#flagUnGreedy Flag.flagUnGreedy +flagNotUnGreedy regex/types.html#flagNotUnGreedy Flag.flagNotUnGreedy +flagUnicode regex/types.html#flagUnicode Flag.flagUnicode +flagNotUnicode regex/types.html#flagNotUnicode Flag.flagNotUnicode +flagVerbose regex/types.html#flagVerbose Flag.flagVerbose +flagNotVerbose regex/types.html#flagNotVerbose Flag.flagNotVerbose +Flag regex/types.html#Flag types: Flag +reChar regex/types.html#reChar NodeKind.reChar +reCharCi regex/types.html#reCharCi NodeKind.reCharCi +reJoiner regex/types.html#reJoiner NodeKind.reJoiner +reGroupStart regex/types.html#reGroupStart NodeKind.reGroupStart +reGroupEnd regex/types.html#reGroupEnd NodeKind.reGroupEnd +reFlags regex/types.html#reFlags NodeKind.reFlags +reOr regex/types.html#reOr NodeKind.reOr +reZeroOrMore regex/types.html#reZeroOrMore NodeKind.reZeroOrMore +reOneOrMore regex/types.html#reOneOrMore NodeKind.reOneOrMore +reZeroOrOne regex/types.html#reZeroOrOne NodeKind.reZeroOrOne +reRepRange regex/types.html#reRepRange NodeKind.reRepRange +reStartSym regex/types.html#reStartSym NodeKind.reStartSym +reEndSym regex/types.html#reEndSym NodeKind.reEndSym +reStartSymML regex/types.html#reStartSymML NodeKind.reStartSymML +reEndSymML regex/types.html#reEndSymML NodeKind.reEndSymML +reStart regex/types.html#reStart NodeKind.reStart +reEnd regex/types.html#reEnd NodeKind.reEnd +reWordBoundary regex/types.html#reWordBoundary NodeKind.reWordBoundary +reNotWordBoundary regex/types.html#reNotWordBoundary NodeKind.reNotWordBoundary +reWord regex/types.html#reWord NodeKind.reWord +reDigit regex/types.html#reDigit NodeKind.reDigit +reWhiteSpace regex/types.html#reWhiteSpace NodeKind.reWhiteSpace +reUCC regex/types.html#reUCC NodeKind.reUCC +reNotAlphaNum regex/types.html#reNotAlphaNum NodeKind.reNotAlphaNum +reNotDigit regex/types.html#reNotDigit NodeKind.reNotDigit +reNotWhiteSpace regex/types.html#reNotWhiteSpace NodeKind.reNotWhiteSpace +reNotUCC regex/types.html#reNotUCC NodeKind.reNotUCC +reAny regex/types.html#reAny NodeKind.reAny +reAnyNl regex/types.html#reAnyNl NodeKind.reAnyNl +reWordBoundaryAscii regex/types.html#reWordBoundaryAscii NodeKind.reWordBoundaryAscii +reNotWordBoundaryAscii regex/types.html#reNotWordBoundaryAscii NodeKind.reNotWordBoundaryAscii +reWordAscii regex/types.html#reWordAscii NodeKind.reWordAscii +reDigitAscii regex/types.html#reDigitAscii NodeKind.reDigitAscii +reWhiteSpaceAscii regex/types.html#reWhiteSpaceAscii NodeKind.reWhiteSpaceAscii +reNotAlphaNumAscii regex/types.html#reNotAlphaNumAscii NodeKind.reNotAlphaNumAscii +reNotDigitAscii regex/types.html#reNotDigitAscii NodeKind.reNotDigitAscii +reNotWhiteSpaceAscii regex/types.html#reNotWhiteSpaceAscii NodeKind.reNotWhiteSpaceAscii +reInSet regex/types.html#reInSet NodeKind.reInSet +reNotSet regex/types.html#reNotSet NodeKind.reNotSet +reLookahead regex/types.html#reLookahead NodeKind.reLookahead +reLookbehind regex/types.html#reLookbehind NodeKind.reLookbehind +reNotLookahead regex/types.html#reNotLookahead NodeKind.reNotLookahead +reNotLookbehind regex/types.html#reNotLookbehind NodeKind.reNotLookbehind +reSkip regex/types.html#reSkip NodeKind.reSkip +reEoe regex/types.html#reEoe NodeKind.reEoe +NodeKind regex/types.html#NodeKind types: NodeKind +NodeUid regex/types.html#NodeUid types: NodeUid +Node regex/types.html#Node types: Node +SubExp regex/types.html#SubExp types: SubExp +toCharNode regex/types.html#toCharNode,Rune types: toCharNode(r: Rune): Node +initJoinerNode regex/types.html#initJoinerNode types: initJoinerNode(): Node +initEoeNode regex/types.html#initEoeNode types: initEoeNode(): Node +initSetNode regex/types.html#initSetNode types: initSetNode(): Node +initNotSetNode regex/types.html#initNotSetNode types: initNotSetNode(): Node +initGroupStart regex/types.html#initGroupStart,string,seq[Flag] types: initGroupStart(name: string = ""; flags: seq[Flag] = @[]; isCapturing = true): Node +initSkipNode regex/types.html#initSkipNode types: initSkipNode(): Node +initSkipNode regex/types.html#initSkipNode,openArray[int16] types: initSkipNode(next: openArray[int16]): Node +isEmpty regex/types.html#isEmpty,Node types: isEmpty(n: Node): bool +opKind regex/types.html#opKind types: opKind +assertionKind regex/types.html#assertionKind types: assertionKind +lookaroundKind regex/types.html#lookaroundKind types: lookaroundKind +lookaheadKind regex/types.html#lookaheadKind types: lookaheadKind +lookbehindKind regex/types.html#lookbehindKind types: lookbehindKind +shorthandKind regex/types.html#shorthandKind types: shorthandKind +matchableKind regex/types.html#matchableKind types: matchableKind +repetitionKind regex/types.html#repetitionKind types: repetitionKind +groupKind regex/types.html#groupKind types: groupKind +groupStartKind regex/types.html#groupStartKind types: groupStartKind +isEpsilonTransition regex/types.html#isEpsilonTransition,Node types: isEpsilonTransition(n: Node): bool +`$` regex/types.html#$,Node types: `$`(n: Node): string +toString regex/types.html#toString,seq[Node] types: toString(n: seq[Node]): string diff --git a/theindex.html b/theindex.html new file mode 100644 index 00000000..1d4cf543 --- /dev/null +++ b/theindex.html @@ -0,0 +1,1110 @@ +<?xml version="1.0" encoding="utf-8" ?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!-- This file is generated by Nim. --> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + +<meta name="viewport" content="width=device-width, initial-scale=1.0"> + +<!-- Favicon --> +<link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA=="/> +<link rel="icon" type="image/png" sizes="32x32" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QQQEwksSS9ZWwAAAk1JREFUWMPtll2ITVEUx39nn/O7Y5qR8f05wtCUUr6ZIS++8pEnkZInPImneaCQ5METNdOkeFBKUhMPRIkHKfEuUZSUlGlKPN2TrgfncpvmnntnmlEyq1Z7t89/rf9a6+y99oZxGZf/XeIq61EdtgKXgdXA0xrYAvBjOIF1AI9zvjcC74BSpndrJPkBWDScTF8Aa4E3wDlgHbASaANmVqlcCnwHvgDvgVfAJ+AikAAvgfVZwLnSVZHZaOuKoQi3ZOMi4NkYkpe1p4J7A8BpYAD49hfIy/oqG0+hLomiKP2L5L+1ubn5115S+3OAn4EnwBlgMzCjyt6ZAnQCJ4A7wOs88iRJHvw50HoujuPBoCKwHWiosy8MdfZnAdcHk8dxXFJ3VQbQlCTJvRBCGdRbD4M6uc5glpY3eAihpN5S5w12diSEcCCEcKUO4ljdr15T76ur1FDDLIQQ3qv71EdDOe3Kxj3leRXyk+pxdWnFWod6Wt2bY3de3aSuUHcPBVimHs7mK9WrmeOF6lR1o9qnzskh2ar2qm1qizpfXaPeVGdlmGN5pb09qMxz1Xb1kLqgzn1RyH7JUXW52lr5e/Kqi9qpto7V1atuUzfnARrV7jEib1T76gG2qxdGmXyiekkt1GswPTtek0aBfJp6YySGBfWg2tPQ0FAYgf1stUfdmdcjarbYJEniKIq6gY/Aw+zWHAC+p2labGpqiorFYgGYCEzN7oQdQClN07O1/EfDyGgC0ALMBdYAi4FyK+4H3gLPsxfR1zRNi+NP7nH5J+QntnXe5B5mpfQAAAAASUVORK5CYII="> + +<!-- Google fonts --> +<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/> +<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/> + +<!-- CSS --> +<title>Index</title> +<link rel="stylesheet" type="text/css" href="nimdoc.out.css"> + +<script type="text/javascript" src="dochack.js"></script> + +<script type="text/javascript"> +function main() { + var pragmaDots = document.getElementsByClassName("pragmadots"); + for (var i = 0; i < pragmaDots.length; i++) { + pragmaDots[i].onclick = function(event) { + // Hide tease + event.target.parentNode.style.display = "none"; + // Show actual + event.target.parentNode.nextElementSibling.style.display = "inline"; + } + } + + function switchTheme(e) { + if (e.target.checked) { + document.documentElement.setAttribute('data-theme', 'dark'); + localStorage.setItem('theme', 'dark'); + } else { + document.documentElement.setAttribute('data-theme', 'light'); + localStorage.setItem('theme', 'light'); + } + } + + const toggleSwitch = document.querySelector('.theme-switch input[type="checkbox"]'); + if (toggleSwitch !== null) { + toggleSwitch.addEventListener('change', switchTheme, false); + } + + var currentTheme = localStorage.getItem('theme'); + if (!currentTheme && window.matchMedia('(prefers-color-scheme: dark)').matches) { + currentTheme = 'dark'; + } + if (currentTheme) { + document.documentElement.setAttribute('data-theme', currentTheme); + + if (currentTheme === 'dark' && toggleSwitch !== null) { + toggleSwitch.checked = true; + } + } +} + +window.addEventListener('DOMContentLoaded', main); +</script> + +</head> +<body> +<div class="document" id="documentId"> + <div class="container"> + <h1 class="title">Index</h1> + Modules: <a href="regex.html">regex</a>, <a href="regex/common.html">regex/common</a>, <a href="regex/compiler.html">regex/compiler</a>, <a href="regex/dotgraph.html">regex/dotgraph</a>, <a href="regex/exptransformation.html">regex/exptransformation</a>, <a href="regex/exptype.html">regex/exptype</a>, <a href="regex/litopt.html">regex/litopt</a>, <a href="regex/nfa.html">regex/nfa</a>, <a href="regex/nfafindall.html">regex/nfafindall</a>, <a href="regex/nfafindall2.html">regex/nfafindall2</a>, <a href="regex/nfamacro.html">regex/nfamacro</a>, <a href="regex/nfamatch.html">regex/nfamatch</a>, <a href="regex/nfamatch2.html">regex/nfamatch2</a>, <a href="regex/nfatype.html">regex/nfatype</a>, <a href="regex/nodematch.html">regex/nodematch</a>, <a href="regex/parser.html">regex/parser</a>, <a href="regex/scanner.html">regex/scanner</a>, <a href="regex/types.html">regex/types</a>.<br/><p /><h2>API symbols</h2> +<dl><dt><a name="%60%24%60" href="#%60%24%60"><span>`$`:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="types: `$`(n: Node): string" href="regex/types.html#%24%2CNode">types: `$`(n: Node): string</a></li> + </ul></dd> +<dt><a name="%60%25%25%60" href="#%60%25%25%60"><span>`%%`:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="common: `%%`(formatstr: string; a: openArray[string]): string" href="regex/common.html#%25%25%2Cstring%2CopenArray%5Bstring%5D">common: `%%`(formatstr: string; a: openArray[string]): string</a></li> + <li><a class="reference external" + data-doc-search-tag="common: `%%`(formatstr: string; a: string): string" href="regex/common.html#%25%25%2Cstring%2Cstring">common: `%%`(formatstr: string; a: string): string</a></li> + </ul></dd> +<dt><a name="%60%26lt%3B%3D%60" href="#%60%26lt%3B%3D%60"><span>`<=`:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="common: `<=`(x, y: Rune): bool" href="regex/common.html#%3C%3D%2CRune%2CRune">common: `<=`(x, y: Rune): bool</a></li> + </ul></dd> +<dt><a name="%60%5B%5D%60" href="#%60%5B%5D%60"><span>`[]`:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="nfatype: `[]`(capts: Capts3; i, j: Natural): Slice[int]" href="regex/nfatype.html#%5B%5D%2CCapts3%2CNatural%2CNatural">nfatype: `[]`(capts: Capts3; i, j: Natural): Slice[int]</a></li> + <li><a class="reference external" + data-doc-search-tag="nfatype: `[]`(capts: var Capts3; i, j: Natural): var Slice[int]" href="regex/nfatype.html#%5B%5D%2CCapts3%2CNatural%2CNatural_2">nfatype: `[]`(capts: var Capts3; i, j: Natural): var Slice[int]</a></li> + <li><a class="reference external" + data-doc-search-tag="nfatype: `[]`(sm: Submatches; i: int): PState" href="regex/nfatype.html#%5B%5D%2CSubmatches%2Cint">nfatype: `[]`(sm: Submatches; i: int): PState</a></li> + </ul></dd> +<dt><a name="add" href="#add"><span>add:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="nfatype: add(sm: var Submatches; item: PState)" href="regex/nfatype.html#add%2CSubmatches%2CPState">nfatype: add(sm: var Submatches; item: PState)</a></li> + </ul></dd> +<dt><a name="assertionKind" href="#assertionKind"><span>assertionKind:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="types: assertionKind" href="regex/types.html#assertionKind">types: assertionKind</a></li> + </ul></dd> +<dt><a name="AtomsExp" href="#AtomsExp"><span>AtomsExp:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="exptype: AtomsExp" href="regex/exptype.html#AtomsExp">exptype: AtomsExp</a></li> + </ul></dd> +<dt><a name="bounds" href="#bounds"><span>bounds:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="nfafindall: bounds(ms: RegexMatches): Slice[int]" href="regex/nfafindall.html#bounds.i%2CRegexMatches">nfafindall: bounds(ms: RegexMatches): Slice[int]</a></li> + <li><a class="reference external" + data-doc-search-tag="nfafindall2: bounds(ms: RegexMatches2): Slice[int]" href="regex/nfafindall2.html#bounds.i%2CRegexMatches2">nfafindall2: bounds(ms: RegexMatches2): Slice[int]</a></li> + </ul></dd> +<dt><a name="Bounds" href="#Bounds"><span>Bounds:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="nfatype: Bounds" href="regex/nfatype.html#Bounds">nfatype: Bounds</a></li> + </ul></dd> +<dt><a name="bwFastRuneAt" href="#bwFastRuneAt"><span>bwFastRuneAt:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="common: bwFastRuneAt(s: string; n: var int; result: var Rune): untyped" href="regex/common.html#bwFastRuneAt.t%2Cstring%2Cint%2CRune">common: bwFastRuneAt(s: string; n: var int; result: var Rune): untyped</a></li> + </ul></dd> +<dt><a name="bwRuneAt" href="#bwRuneAt"><span>bwRuneAt:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="common: bwRuneAt(s: string; n: int): Rune" href="regex/common.html#bwRuneAt%2Cstring%2Cint">common: bwRuneAt(s: string; n: int): Rune</a></li> + </ul></dd> +<dt><a name="canOpt" href="#canOpt"><span>canOpt:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="litopt: canOpt(litOpt: LitOpt): bool" href="regex/litopt.html#canOpt%2CLitOpt">litopt: canOpt(litOpt: LitOpt): bool</a></li> + </ul></dd> +<dt><a name="cap" href="#cap"><span>cap:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="nfatype: cap(sm: Submatches): int" href="regex/nfatype.html#cap%2CSubmatches">nfatype: cap(sm: Submatches): int</a></li> + </ul></dd> +<dt><a name="CaptIdx" href="#CaptIdx"><span>CaptIdx:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="nfatype: CaptIdx" href="regex/nfatype.html#CaptIdx">nfatype: CaptIdx</a></li> + </ul></dd> +<dt><a name="CaptNode" href="#CaptNode"><span>CaptNode:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="nfatype: CaptNode" href="regex/nfatype.html#CaptNode">nfatype: CaptNode</a></li> + </ul></dd> +<dt><a name="Capts" href="#Capts"><span>Capts:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="nfatype: Capts" href="regex/nfatype.html#Capts">nfatype: Capts</a></li> + </ul></dd> +<dt><a name="Capts3" href="#Capts3"><span>Capts3:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="nfatype: Capts3" href="regex/nfatype.html#Capts3">nfatype: Capts3</a></li> + </ul></dd> +<dt><a name="CaptState" href="#CaptState"><span>CaptState:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="nfatype: CaptState" href="regex/nfatype.html#CaptState">nfatype: CaptState</a></li> + </ul></dd> +<dt><a name="Captures" href="#Captures"><span>Captures:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="nfatype: Captures" href="regex/nfatype.html#Captures">nfatype: Captures</a></li> + </ul></dd> +<dt><a name="clear" href="#clear"><span>clear:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="nfatype: clear(capts: var Capts3)" href="regex/nfatype.html#clear%2CCapts3">nfatype: clear(capts: var Capts3)</a></li> + <li><a class="reference external" + data-doc-search-tag="nfatype: clear(m: var RegexMatch)" href="regex/nfatype.html#clear%2CRegexMatch">nfatype: clear(m: var RegexMatch)</a></li> + <li><a class="reference external" + data-doc-search-tag="nfatype: clear(m: var RegexMatch2)" href="regex/nfatype.html#clear%2CRegexMatch2">nfatype: clear(m: var RegexMatch2)</a></li> + <li><a class="reference external" + data-doc-search-tag="nfatype: clear(sm: var Submatches)" href="regex/nfatype.html#clear%2CSubmatches">nfatype: clear(sm: var Submatches)</a></li> + </ul></dd> +<dt><a name="cmp" href="#cmp"><span>cmp:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="common: cmp(x, y: Rune): int" href="regex/common.html#cmp%2CRune%2CRune">common: cmp(x, y: Rune): int</a></li> + </ul></dd> +<dt><a name="constructSubmatches" href="#constructSubmatches"><span>constructSubmatches:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="nfatype: constructSubmatches(captures: var Captures; capts: Capts; capt, size: int)" href="regex/nfatype.html#constructSubmatches%2CCaptures%2CCapts%2Cint%2Cint">nfatype: constructSubmatches(captures: var Captures; capts: Capts; capt, size: int)</a></li> + </ul></dd> +<dt><a name="contains" href="#contains"><span>contains:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="regex: contains(s: string; pattern: Regex): bool" href="regex.html#contains%2Cstring%2CRegex">regex: contains(s: string; pattern: Regex): bool</a></li> + <li><a class="reference external" + data-doc-search-tag="regex: contains(s: string; pattern: Regex2): bool" href="regex.html#contains%2Cstring%2CRegex2">regex: contains(s: string; pattern: Regex2): bool</a></li> + </ul></dd> +<dt><a name="curr" href="#curr"><span>curr:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="scanner: curr[T](sc: Scanner[T]): T" href="regex/scanner.html#curr%2CScanner%5BT%5D">scanner: curr[T](sc: Scanner[T]): T</a></li> + </ul></dd> +<dt><a name="diverge" href="#diverge"><span>diverge:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="nfatype: diverge(capts: var Capts3; captIdx: CaptIdx): CaptIdx" href="regex/nfatype.html#diverge%2CCapts3%2CCaptIdx">nfatype: diverge(capts: var Capts3; captIdx: CaptIdx): CaptIdx</a></li> + </ul></dd> +<dt><a name="dummyMatch" href="#dummyMatch"><span>dummyMatch:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="nfafindall: dummyMatch(ms: var RegexMatches; i: int)" href="regex/nfafindall.html#dummyMatch%2CRegexMatches%2Cint">nfafindall: dummyMatch(ms: var RegexMatches; i: int)</a></li> + <li><a class="reference external" + data-doc-search-tag="nfafindall2: dummyMatch(ms: var RegexMatches2; i: int)" href="regex/nfafindall2.html#dummyMatch%2CRegexMatches2%2Cint">nfafindall2: dummyMatch(ms: var RegexMatches2; i: int)</a></li> + </ul></dd> +<dt><a name="endsWith" href="#endsWith"><span>endsWith:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="regex: endsWith(s: string; pattern: Regex): bool" href="regex.html#endsWith%2Cstring%2CRegex">regex: endsWith(s: string; pattern: Regex): bool</a></li> + <li><a class="reference external" + data-doc-search-tag="regex: endsWith(s: string; pattern: Regex2): bool" href="regex.html#endsWith%2Cstring%2CRegex2">regex: endsWith(s: string; pattern: Regex2): bool</a></li> + </ul></dd> +<dt><a name="eNfa" href="#eNfa"><span>eNfa:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="nfa: eNfa(exp: RpnExp): Enfa" href="regex/nfa.html#eNfa%2CRpnExp">nfa: eNfa(exp: RpnExp): Enfa</a></li> + </ul></dd> +<dt><a name="Enfa" href="#Enfa"><span>Enfa:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="types: Enfa" href="regex/types.html#Enfa">types: Enfa</a></li> + </ul></dd> +<dt><a name="eRemoval" href="#eRemoval"><span>eRemoval:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="nfa: eRemoval(eNfa: Enfa): Nfa" href="regex/nfa.html#eRemoval%2CEnfa">nfa: eRemoval(eNfa: Enfa): Nfa</a></li> + </ul></dd> +<dt><a name="escapeRe" href="#escapeRe"><span>escapeRe:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="regex: escapeRe(s: string): string" href="regex.html#escapeRe%2Cstring">regex: escapeRe(s: string): string</a></li> + </ul></dd> +<dt><a name="Exp" href="#Exp"><span>Exp:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="exptype: Exp" href="regex/exptype.html#Exp">exptype: Exp</a></li> + </ul></dd> +<dt><a name="fillMatchImpl" href="#fillMatchImpl"><span>fillMatchImpl:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="nfafindall: fillMatchImpl(m: var RegexMatch; mi: MatchItemIdx; ms: RegexMatches; + regex: Regex)" href="regex/nfafindall.html#fillMatchImpl%2CRegexMatch%2CMatchItemIdx%2CRegexMatches%2CRegex">nfafindall: fillMatchImpl(m: var RegexMatch; mi: MatchItemIdx; ms: RegexMatches; + regex: Regex)</a></li> + <li><a class="reference external" + data-doc-search-tag="nfafindall2: fillMatchImpl(m: var RegexMatch2; mi: MatchItemIdx; ms: RegexMatches2; + regex: Regex)" href="regex/nfafindall2.html#fillMatchImpl%2CRegexMatch2%2CMatchItemIdx%2CRegexMatches2%2CRegex">nfafindall2: fillMatchImpl(m: var RegexMatch2; mi: MatchItemIdx; ms: RegexMatches2; + regex: Regex)</a></li> + </ul></dd> +<dt><a name="find" href="#find"><span>find:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="regex: find(s: string; pattern: Regex; m: var RegexMatch; start = 0): bool" href="regex.html#find%2Cstring%2CRegex%2CRegexMatch%2Cint">regex: find(s: string; pattern: Regex; m: var RegexMatch; start = 0): bool</a></li> + <li><a class="reference external" + data-doc-search-tag="regex: find(s: string; pattern: Regex2; m: var RegexMatch2; start = 0): bool" href="regex.html#find%2Cstring%2CRegex2%2CRegexMatch2%2Cint">regex: find(s: string; pattern: Regex2; m: var RegexMatch2; start = 0): bool</a></li> + <li><a class="reference external" + data-doc-search-tag="scanner: find(sc: Scanner[Rune]; r: Rune): int" href="regex/scanner.html#find%2CScanner%5BRune%5D%2CRune">scanner: find(sc: Scanner[Rune]; r: Rune): int</a></li> + </ul></dd> +<dt><a name="findAll" href="#findAll"><span>findAll:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="regex: findAll(s: string; pattern: Regex; start = 0): seq[RegexMatch]" href="regex.html#findAll%2Cstring%2CRegex%2Cint">regex: findAll(s: string; pattern: Regex; start = 0): seq[RegexMatch]</a></li> + <li><a class="reference external" + data-doc-search-tag="regex: findAll(s: string; pattern: Regex2; start = 0): seq[RegexMatch2]" href="regex.html#findAll%2Cstring%2CRegex2%2Cint">regex: findAll(s: string; pattern: Regex2; start = 0): seq[RegexMatch2]</a></li> + <li><a class="reference external" + data-doc-search-tag="regex: findAll(s: string; pattern: Regex; start = 0): RegexMatch" href="regex.html#findAll.i%2Cstring%2CRegex%2Cint">regex: findAll(s: string; pattern: Regex; start = 0): RegexMatch</a></li> + <li><a class="reference external" + data-doc-search-tag="regex: findAll(s: string; pattern: Regex2; start = 0): RegexMatch2" href="regex.html#findAll.i%2Cstring%2CRegex2%2Cint">regex: findAll(s: string; pattern: Regex2; start = 0): RegexMatch2</a></li> + </ul></dd> +<dt><a name="findAllBounds" href="#findAllBounds"><span>findAllBounds:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="regex: findAllBounds(s: string; pattern: Regex; start = 0): seq[Slice[int]]" href="regex.html#findAllBounds%2Cstring%2CRegex%2Cint">regex: findAllBounds(s: string; pattern: Regex; start = 0): seq[Slice[int]]</a></li> + <li><a class="reference external" + data-doc-search-tag="regex: findAllBounds(s: string; pattern: Regex2; start = 0): seq[Slice[int]]" href="regex.html#findAllBounds%2Cstring%2CRegex2%2Cint">regex: findAllBounds(s: string; pattern: Regex2; start = 0): seq[Slice[int]]</a></li> + <li><a class="reference external" + data-doc-search-tag="regex: findAllBounds(s: string; pattern: Regex; start = 0): Slice[int]" href="regex.html#findAllBounds.i%2Cstring%2CRegex%2Cint">regex: findAllBounds(s: string; pattern: Regex; start = 0): Slice[int]</a></li> + <li><a class="reference external" + data-doc-search-tag="regex: findAllBounds(s: string; pattern: Regex2; start = 0): Slice[int]" href="regex.html#findAllBounds.i%2Cstring%2CRegex2%2Cint">regex: findAllBounds(s: string; pattern: Regex2; start = 0): Slice[int]</a></li> + </ul></dd> +<dt><a name="findAndCaptureAll" href="#findAndCaptureAll"><span>findAndCaptureAll:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="regex: findAndCaptureAll(s: string; pattern: Regex): seq[string]" href="regex.html#findAndCaptureAll%2Cstring%2CRegex">regex: findAndCaptureAll(s: string; pattern: Regex): seq[string]</a></li> + </ul></dd> +<dt><a name="findSomeImpl" href="#findSomeImpl"><span>findSomeImpl:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="nfafindall: findSomeImpl(text: string; regex: Regex; ms: var RegexMatches; + start: Natural = 0; flags: set[MatchFlag] = {}): int" href="regex/nfafindall.html#findSomeImpl%2Cstring%2CRegex%2CRegexMatches%2CNatural%2Cset%5BMatchFlag%5D">nfafindall: findSomeImpl(text: string; regex: Regex; ms: var RegexMatches; + start: Natural = 0; flags: set[MatchFlag] = {}): int</a></li> + <li><a class="reference external" + data-doc-search-tag="nfafindall2: findSomeImpl(text: string; regex: Regex; ms: var RegexMatches2; + start: Natural = 0; flags: MatchFlags = {}): int" href="regex/nfafindall2.html#findSomeImpl%2Cstring%2CRegex%2CRegexMatches2%2CNatural%2CMatchFlags">nfafindall2: findSomeImpl(text: string; regex: Regex; ms: var RegexMatches2; + start: Natural = 0; flags: MatchFlags = {}): int</a></li> + </ul></dd> +<dt><a name="findSomeOptImpl" href="#findSomeOptImpl"><span>findSomeOptImpl:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="nfafindall: findSomeOptImpl(text: string; regex: Regex; ms: var RegexMatches; start: Natural): int" href="regex/nfafindall.html#findSomeOptImpl%2Cstring%2CRegex%2CRegexMatches%2CNatural">nfafindall: findSomeOptImpl(text: string; regex: Regex; ms: var RegexMatches; start: Natural): int</a></li> + <li><a class="reference external" + data-doc-search-tag="nfafindall2: findSomeOptImpl(text: string; regex: Regex; ms: var RegexMatches2; + start: Natural): int" href="regex/nfafindall2.html#findSomeOptImpl%2Cstring%2CRegex%2CRegexMatches2%2CNatural">nfafindall2: findSomeOptImpl(text: string; regex: Regex; ms: var RegexMatches2; + start: Natural): int</a></li> + </ul></dd> +<dt><a name="finished" href="#finished"><span>finished:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="scanner: finished[T](sc: Scanner[T]): bool" href="regex/scanner.html#finished%2CScanner%5BT%5D">scanner: finished[T](sc: Scanner[T]): bool</a></li> + </ul></dd> +<dt><a name="Flag" href="#Flag"><span>Flag:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="types: Flag" href="regex/types.html#Flag">types: Flag</a></li> + </ul></dd> +<dt><a name="flagAnyMatchNewLine" href="#flagAnyMatchNewLine"><span>flagAnyMatchNewLine:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="Flag.flagAnyMatchNewLine" href="regex/types.html#flagAnyMatchNewLine">Flag.flagAnyMatchNewLine</a></li> + </ul></dd> +<dt><a name="flagCaseInsensitive" href="#flagCaseInsensitive"><span>flagCaseInsensitive:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="Flag.flagCaseInsensitive" href="regex/types.html#flagCaseInsensitive">Flag.flagCaseInsensitive</a></li> + </ul></dd> +<dt><a name="flagMultiLine" href="#flagMultiLine"><span>flagMultiLine:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="Flag.flagMultiLine" href="regex/types.html#flagMultiLine">Flag.flagMultiLine</a></li> + </ul></dd> +<dt><a name="flagNotAnyMatchNewLine" href="#flagNotAnyMatchNewLine"><span>flagNotAnyMatchNewLine:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="Flag.flagNotAnyMatchNewLine" href="regex/types.html#flagNotAnyMatchNewLine">Flag.flagNotAnyMatchNewLine</a></li> + </ul></dd> +<dt><a name="flagNotCaseInsensitive" href="#flagNotCaseInsensitive"><span>flagNotCaseInsensitive:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="Flag.flagNotCaseInsensitive" href="regex/types.html#flagNotCaseInsensitive">Flag.flagNotCaseInsensitive</a></li> + </ul></dd> +<dt><a name="flagNotMultiLine" href="#flagNotMultiLine"><span>flagNotMultiLine:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="Flag.flagNotMultiLine" href="regex/types.html#flagNotMultiLine">Flag.flagNotMultiLine</a></li> + </ul></dd> +<dt><a name="flagNotUnGreedy" href="#flagNotUnGreedy"><span>flagNotUnGreedy:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="Flag.flagNotUnGreedy" href="regex/types.html#flagNotUnGreedy">Flag.flagNotUnGreedy</a></li> + </ul></dd> +<dt><a name="flagNotUnicode" href="#flagNotUnicode"><span>flagNotUnicode:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="Flag.flagNotUnicode" href="regex/types.html#flagNotUnicode">Flag.flagNotUnicode</a></li> + </ul></dd> +<dt><a name="flagNotVerbose" href="#flagNotVerbose"><span>flagNotVerbose:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="Flag.flagNotVerbose" href="regex/types.html#flagNotVerbose">Flag.flagNotVerbose</a></li> + </ul></dd> +<dt><a name="flagUnGreedy" href="#flagUnGreedy"><span>flagUnGreedy:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="Flag.flagUnGreedy" href="regex/types.html#flagUnGreedy">Flag.flagUnGreedy</a></li> + </ul></dd> +<dt><a name="flagUnicode" href="#flagUnicode"><span>flagUnicode:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="Flag.flagUnicode" href="regex/types.html#flagUnicode">Flag.flagUnicode</a></li> + </ul></dd> +<dt><a name="flagVerbose" href="#flagVerbose"><span>flagVerbose:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="Flag.flagVerbose" href="regex/types.html#flagVerbose">Flag.flagVerbose</a></li> + </ul></dd> +<dt><a name="freeze" href="#freeze"><span>freeze:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="nfatype: freeze(capts: var Capts3): CaptState" href="regex/nfatype.html#freeze%2CCapts3">nfatype: freeze(capts: var Capts3): CaptState</a></li> + </ul></dd> +<dt><a name="graph" href="#graph"><span>graph:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="dotgraph: graph(nfa: Nfa): string" href="regex/dotgraph.html#graph%2CNfa">dotgraph: graph(nfa: Nfa): string</a></li> + <li><a class="reference external" + data-doc-search-tag="dotgraph: graph(regex: Regex): string" href="regex/dotgraph.html#graph%2CRegex">dotgraph: graph(regex: Regex): string</a></li> + </ul></dd> +<dt><a name="graphToFile" href="#graphToFile"><span>graphToFile:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="dotgraph: graphToFile(regex: Regex; dir: string)" href="regex/dotgraph.html#graphToFile%2CRegex%2Cstring">dotgraph: graphToFile(regex: Regex; dir: string)</a></li> + </ul></dd> +<dt><a name="group" href="#group"><span>group:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="regex: group(m: RegexMatch; i: int): seq[Slice[int]]" href="regex.html#group%2CRegexMatch%2Cint">regex: group(m: RegexMatch; i: int): seq[Slice[int]]</a></li> + <li><a class="reference external" + data-doc-search-tag="regex: group(m: RegexMatch; i: int; text: string): seq[string]" href="regex.html#group%2CRegexMatch%2Cint%2Cstring">regex: group(m: RegexMatch; i: int; text: string): seq[string]</a></li> + <li><a class="reference external" + data-doc-search-tag="regex: group(m: RegexMatch; s: string): seq[Slice[int]]" href="regex.html#group%2CRegexMatch%2Cstring">regex: group(m: RegexMatch; s: string): seq[Slice[int]]</a></li> + <li><a class="reference external" + data-doc-search-tag="regex: group(m: RegexMatch; groupName: string; text: string): seq[string]" href="regex.html#group%2CRegexMatch%2Cstring%2Cstring">regex: group(m: RegexMatch; groupName: string; text: string): seq[string]</a></li> + <li><a class="reference external" + data-doc-search-tag="regex: group(m: RegexMatch2; i: int): Slice[int]" href="regex.html#group%2CRegexMatch2%2Cint">regex: group(m: RegexMatch2; i: int): Slice[int]</a></li> + <li><a class="reference external" + data-doc-search-tag="regex: group(m: RegexMatch2; s: string): Slice[int]" href="regex.html#group%2CRegexMatch2%2Cstring">regex: group(m: RegexMatch2; s: string): Slice[int]</a></li> + <li><a class="reference external" + data-doc-search-tag="regex: group(m: RegexMatch; i: int): Slice[int]" href="regex.html#group.i%2CRegexMatch%2Cint">regex: group(m: RegexMatch; i: int): Slice[int]</a></li> + <li><a class="reference external" + data-doc-search-tag="regex: group(m: RegexMatch; s: string): Slice[int]" href="regex.html#group.i%2CRegexMatch%2Cstring">regex: group(m: RegexMatch; s: string): Slice[int]</a></li> + </ul></dd> +<dt><a name="groupFirstCapture" href="#groupFirstCapture"><span>groupFirstCapture:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="regex: groupFirstCapture(m: RegexMatch; i: int; text: string): string" href="regex.html#groupFirstCapture%2CRegexMatch%2Cint%2Cstring">regex: groupFirstCapture(m: RegexMatch; i: int; text: string): string</a></li> + <li><a class="reference external" + data-doc-search-tag="regex: groupFirstCapture(m: RegexMatch; groupName: string; text: string): string" href="regex.html#groupFirstCapture%2CRegexMatch%2Cstring%2Cstring">regex: groupFirstCapture(m: RegexMatch; groupName: string; text: string): string</a></li> + </ul></dd> +<dt><a name="groupKind" href="#groupKind"><span>groupKind:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="types: groupKind" href="regex/types.html#groupKind">types: groupKind</a></li> + </ul></dd> +<dt><a name="groupLastCapture" href="#groupLastCapture"><span>groupLastCapture:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="regex: groupLastCapture(m: RegexMatch; i: int; text: string): string" href="regex.html#groupLastCapture%2CRegexMatch%2Cint%2Cstring">regex: groupLastCapture(m: RegexMatch; i: int; text: string): string</a></li> + <li><a class="reference external" + data-doc-search-tag="regex: groupLastCapture(m: RegexMatch; groupName: string; text: string): string" href="regex.html#groupLastCapture%2CRegexMatch%2Cstring%2Cstring">regex: groupLastCapture(m: RegexMatch; groupName: string; text: string): string</a></li> + </ul></dd> +<dt><a name="groupNames" href="#groupNames"><span>groupNames:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="regex: groupNames(m: RegexMatch): seq[string]" href="regex.html#groupNames%2CRegexMatch">regex: groupNames(m: RegexMatch): seq[string]</a></li> + <li><a class="reference external" + data-doc-search-tag="regex: groupNames(m: RegexMatch2): seq[string]" href="regex.html#groupNames%2CRegexMatch2">regex: groupNames(m: RegexMatch2): seq[string]</a></li> + </ul></dd> +<dt><a name="GroupsCapture" href="#GroupsCapture"><span>GroupsCapture:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="exptransformation: GroupsCapture" href="regex/exptransformation.html#GroupsCapture">exptransformation: GroupsCapture</a></li> + </ul></dd> +<dt><a name="groupsCount" href="#groupsCount"><span>groupsCount:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="regex: groupsCount(m: RegexMatch): int" href="regex.html#groupsCount%2CRegexMatch">regex: groupsCount(m: RegexMatch): int</a></li> + <li><a class="reference external" + data-doc-search-tag="regex: groupsCount(m: RegexMatch2): int" href="regex.html#groupsCount%2CRegexMatch2">regex: groupsCount(m: RegexMatch2): int</a></li> + </ul></dd> +<dt><a name="groupStartKind" href="#groupStartKind"><span>groupStartKind:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="types: groupStartKind" href="regex/types.html#groupStartKind">types: groupStartKind</a></li> + </ul></dd> +<dt><a name="grow" href="#grow"><span>grow:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="nfatype: grow(sm: var SmLookaround)" href="regex/nfatype.html#grow%2CSmLookaround">nfatype: grow(sm: var SmLookaround)</a></li> + </ul></dd> +<dt><a name="hasState" href="#hasState"><span>hasState:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="nfatype: hasState(sm: Submatches; n: int16): bool" href="regex/nfatype.html#hasState%2CSubmatches%2Cint16">nfatype: hasState(sm: Submatches; n: int16): bool</a></li> + </ul></dd> +<dt><a name="initCapts3" href="#initCapts3"><span>initCapts3:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="nfatype: initCapts3(groupsLen: int): Capts3" href="regex/nfatype.html#initCapts3%2Cint">nfatype: initCapts3(groupsLen: int): Capts3</a></li> + </ul></dd> +<dt><a name="initEoeNode" href="#initEoeNode"><span>initEoeNode:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="types: initEoeNode(): Node" href="regex/types.html#initEoeNode">types: initEoeNode(): Node</a></li> + </ul></dd> +<dt><a name="initGroupStart" href="#initGroupStart"><span>initGroupStart:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="types: initGroupStart(name: string = ""; flags: seq[Flag] = @[]; isCapturing = true): Node" href="regex/types.html#initGroupStart%2Cstring%2Cseq%5BFlag%5D">types: initGroupStart(name: string = ""; flags: seq[Flag] = @[]; isCapturing = true): Node</a></li> + </ul></dd> +<dt><a name="initJoinerNode" href="#initJoinerNode"><span>initJoinerNode:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="types: initJoinerNode(): Node" href="regex/types.html#initJoinerNode">types: initJoinerNode(): Node</a></li> + </ul></dd> +<dt><a name="initLook" href="#initLook"><span>initLook:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="nfamatch: initLook(): Lookaround" href="regex/nfamatch.html#initLook.t">nfamatch: initLook(): Lookaround</a></li> + <li><a class="reference external" + data-doc-search-tag="nfamatch2: initLook(): Lookaround" href="regex/nfamatch2.html#initLook.t">nfamatch2: initLook(): Lookaround</a></li> + </ul></dd> +<dt><a name="initNotSetNode" href="#initNotSetNode"><span>initNotSetNode:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="types: initNotSetNode(): Node" href="regex/types.html#initNotSetNode">types: initNotSetNode(): Node</a></li> + </ul></dd> +<dt><a name="initSetNode" href="#initSetNode"><span>initSetNode:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="types: initSetNode(): Node" href="regex/types.html#initSetNode">types: initSetNode(): Node</a></li> + </ul></dd> +<dt><a name="initSkipNode" href="#initSkipNode"><span>initSkipNode:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="types: initSkipNode(): Node" href="regex/types.html#initSkipNode">types: initSkipNode(): Node</a></li> + <li><a class="reference external" + data-doc-search-tag="types: initSkipNode(next: openArray[int16]): Node" href="regex/types.html#initSkipNode%2CopenArray%5Bint16%5D">types: initSkipNode(next: openArray[int16]): Node</a></li> + </ul></dd> +<dt><a name="invalidRune" href="#invalidRune"><span>invalidRune:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="common: invalidRune" href="regex/common.html#invalidRune">common: invalidRune</a></li> + </ul></dd> +<dt><a name="isEmpty" href="#isEmpty"><span>isEmpty:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="types: isEmpty(n: Node): bool" href="regex/types.html#isEmpty%2CNode">types: isEmpty(n: Node): bool</a></li> + </ul></dd> +<dt><a name="isEpsilonTransition" href="#isEpsilonTransition"><span>isEpsilonTransition:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="types: isEpsilonTransition(n: Node): bool" href="regex/types.html#isEpsilonTransition%2CNode">types: isEpsilonTransition(n: Node): bool</a></li> + </ul></dd> +<dt><a name="isInitialized" href="#isInitialized"><span>isInitialized:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="regex: isInitialized(re: Regex): bool" href="regex.html#isInitialized%2CRegex">regex: isInitialized(re: Regex): bool</a></li> + <li><a class="reference external" + data-doc-search-tag="regex: isInitialized(re: Regex2): bool" href="regex.html#isInitialized%2CRegex2">regex: isInitialized(re: Regex2): bool</a></li> + </ul></dd> +<dt><a name="items" href="#items"><span>items:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="nfafindall: items(ms: RegexMatches): MatchItemIdx" href="regex/nfafindall.html#items.i%2CRegexMatches">nfafindall: items(ms: RegexMatches): MatchItemIdx</a></li> + <li><a class="reference external" + data-doc-search-tag="nfafindall2: items(ms: RegexMatches2): MatchItemIdx" href="regex/nfafindall2.html#items.i%2CRegexMatches2">nfafindall2: items(ms: RegexMatches2): MatchItemIdx</a></li> + <li><a class="reference external" + data-doc-search-tag="nfatype: items(sm: Submatches): PState" href="regex/nfatype.html#items.i%2CSubmatches">nfatype: items(sm: Submatches): PState</a></li> + <li><a class="reference external" + data-doc-search-tag="scanner: items[T](sc: Scanner[T]): T" href="regex/scanner.html#items.i%2CScanner%5BT%5D">scanner: items[T](sc: Scanner[T]): T</a></li> + </ul></dd> +<dt><a name="keepAlive" href="#keepAlive"><span>keepAlive:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="nfatype: keepAlive(capts: var Capts3; captIdx: CaptIdx)" href="regex/nfatype.html#keepAlive%2CCapts3%2CCaptIdx">nfatype: keepAlive(capts: var Capts3; captIdx: CaptIdx)</a></li> + </ul></dd> +<dt><a name="last" href="#last"><span>last:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="nfatype: last(sm: var SmLookaround): untyped" href="regex/nfatype.html#last.t%2CSmLookaround">nfatype: last(sm: var SmLookaround): untyped</a></li> + </ul></dd> +<dt><a name="lastA" href="#lastA"><span>lastA:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="nfatype: lastA(sm: var SmLookaround): untyped" href="regex/nfatype.html#lastA.t%2CSmLookaround">nfatype: lastA(sm: var SmLookaround): untyped</a></li> + </ul></dd> +<dt><a name="lastB" href="#lastB"><span>lastB:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="nfatype: lastB(sm: var SmLookaround): untyped" href="regex/nfatype.html#lastB.t%2CSmLookaround">nfatype: lastB(sm: var SmLookaround): untyped</a></li> + </ul></dd> +<dt><a name="len" href="#len"><span>len:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="nfatype: len(sm: Submatches): int" href="regex/nfatype.html#len%2CSubmatches">nfatype: len(sm: Submatches): int</a></li> + </ul></dd> +<dt><a name="lineBreakRune" href="#lineBreakRune"><span>lineBreakRune:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="common: lineBreakRune" href="regex/common.html#lineBreakRune">common: lineBreakRune</a></li> + </ul></dd> +<dt><a name="LitOpt" href="#LitOpt"><span>LitOpt:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="litopt: LitOpt" href="regex/litopt.html#LitOpt">litopt: LitOpt</a></li> + </ul></dd> +<dt><a name="litopt3" href="#litopt3"><span>litopt3:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="litopt: litopt3(exp: RpnExp; flags: RegexFlags = {}): LitOpt" href="regex/litopt.html#litopt3%2CRpnExp%2CRegexFlags">litopt: litopt3(exp: RpnExp; flags: RegexFlags = {}): LitOpt</a></li> + </ul></dd> +<dt><a name="lookaheadKind" href="#lookaheadKind"><span>lookaheadKind:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="types: lookaheadKind" href="regex/types.html#lookaheadKind">types: lookaheadKind</a></li> + </ul></dd> +<dt><a name="Lookaround" href="#Lookaround"><span>Lookaround:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="nfamatch: Lookaround" href="regex/nfamatch.html#Lookaround">nfamatch: Lookaround</a></li> + <li><a class="reference external" + data-doc-search-tag="nfamatch2: Lookaround" href="regex/nfamatch2.html#Lookaround">nfamatch2: Lookaround</a></li> + </ul></dd> +<dt><a name="lookaroundKind" href="#lookaroundKind"><span>lookaroundKind:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="types: lookaroundKind" href="regex/types.html#lookaroundKind">types: lookaroundKind</a></li> + </ul></dd> +<dt><a name="lookAroundTpl" href="#lookAroundTpl"><span>lookAroundTpl:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="nfamatch: lookAroundTpl(): untyped" href="regex/nfamatch.html#lookAroundTpl.t">nfamatch: lookAroundTpl(): untyped</a></li> + <li><a class="reference external" + data-doc-search-tag="nfamatch2: lookAroundTpl(): untyped" href="regex/nfamatch2.html#lookAroundTpl.t">nfamatch2: lookAroundTpl(): untyped</a></li> + </ul></dd> +<dt><a name="lookbehindKind" href="#lookbehindKind"><span>lookbehindKind:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="types: lookbehindKind" href="regex/types.html#lookbehindKind">types: lookbehindKind</a></li> + </ul></dd> +<dt><a name="match" href="#match"><span>match:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="regex: match(s: string; pattern: Regex): bool" href="regex.html#match%2Cstring%2CRegex">regex: match(s: string; pattern: Regex): bool</a></li> + <li><a class="reference external" + data-doc-search-tag="regex: match(s: string; pattern: Regex; m: var RegexMatch; start = 0): bool" href="regex.html#match%2Cstring%2CRegex%2CRegexMatch%2Cint">regex: match(s: string; pattern: Regex; m: var RegexMatch; start = 0): bool</a></li> + <li><a class="reference external" + data-doc-search-tag="regex: match(s: string; pattern: Regex2): bool" href="regex.html#match%2Cstring%2CRegex2">regex: match(s: string; pattern: Regex2): bool</a></li> + <li><a class="reference external" + data-doc-search-tag="regex: match(s: string; pattern: Regex2; m: var RegexMatch2; start = 0): bool" href="regex.html#match%2Cstring%2CRegex2%2CRegexMatch2%2Cint">regex: match(s: string; pattern: Regex2; m: var RegexMatch2; start = 0): bool</a></li> + <li><a class="reference external" + data-doc-search-tag="regex: match(text: string; regex: RegexLit; body: untyped): untyped" href="regex.html#match.m%2Cstring%2CRegexLit%2Cuntyped">regex: match(text: string; regex: RegexLit; body: untyped): untyped</a></li> + <li><a class="reference external" + data-doc-search-tag="nodematch: match(n: Node; r: Rune): bool" href="regex/nodematch.html#match%2CNode%2CRune">nodematch: match(n: Node; r: Rune): bool</a></li> + <li><a class="reference external" + data-doc-search-tag="nodematch: match(n: Node; r: Rune; nxt: Rune): bool" href="regex/nodematch.html#match%2CNode%2CRune%2CRune">nodematch: match(n: Node; r: Rune; nxt: Rune): bool</a></li> + </ul></dd> +<dt><a name="matchableKind" href="#matchableKind"><span>matchableKind:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="types: matchableKind" href="regex/types.html#matchableKind">types: matchableKind</a></li> + </ul></dd> +<dt><a name="MatchFlag" href="#MatchFlag"><span>MatchFlag:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="nfatype: MatchFlag" href="regex/nfatype.html#MatchFlag">nfatype: MatchFlag</a></li> + </ul></dd> +<dt><a name="MatchFlags" href="#MatchFlags"><span>MatchFlags:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="nfatype: MatchFlags" href="regex/nfatype.html#MatchFlags">nfatype: MatchFlags</a></li> + </ul></dd> +<dt><a name="matchImpl" href="#matchImpl"><span>matchImpl:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="nfamacro: matchImpl(text, expLit, body: NimNode): NimNode" href="regex/nfamacro.html#matchImpl%2CNimNode%2CNimNode%2CNimNode">nfamacro: matchImpl(text, expLit, body: NimNode): NimNode</a></li> + <li><a class="reference external" + data-doc-search-tag="nfamatch: matchImpl(text: string; regex: Regex; m: var RegexMatch; start = 0): bool" href="regex/nfamatch.html#matchImpl%2Cstring%2CRegex%2CRegexMatch%2Cint">nfamatch: matchImpl(text: string; regex: Regex; m: var RegexMatch; start = 0): bool</a></li> + <li><a class="reference external" + data-doc-search-tag="nfamatch2: matchImpl(text: string; regex: Regex; m: var RegexMatch2; start = 0; + flags: MatchFlags = {}): bool" href="regex/nfamatch2.html#matchImpl%2Cstring%2CRegex%2CRegexMatch2%2Cint%2CMatchFlags">nfamatch2: matchImpl(text: string; regex: Regex; m: var RegexMatch2; start = 0; + flags: MatchFlags = {}): bool</a></li> + </ul></dd> +<dt><a name="mfAnchored" href="#mfAnchored"><span>mfAnchored:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="MatchFlag.mfAnchored" href="regex/nfatype.html#mfAnchored">MatchFlag.mfAnchored</a></li> + </ul></dd> +<dt><a name="mfBwMatch" href="#mfBwMatch"><span>mfBwMatch:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="MatchFlag.mfBwMatch" href="regex/nfatype.html#mfBwMatch">MatchFlag.mfBwMatch</a></li> + </ul></dd> +<dt><a name="mfBytesInput" href="#mfBytesInput"><span>mfBytesInput:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="MatchFlag.mfBytesInput" href="regex/nfatype.html#mfBytesInput">MatchFlag.mfBytesInput</a></li> + </ul></dd> +<dt><a name="mfFindMatch" href="#mfFindMatch"><span>mfFindMatch:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="MatchFlag.mfFindMatch" href="regex/nfatype.html#mfFindMatch">MatchFlag.mfFindMatch</a></li> + </ul></dd> +<dt><a name="mfFindMatchOpt" href="#mfFindMatchOpt"><span>mfFindMatchOpt:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="MatchFlag.mfFindMatchOpt" href="regex/nfatype.html#mfFindMatchOpt">MatchFlag.mfFindMatchOpt</a></li> + </ul></dd> +<dt><a name="mfNoCaptures" href="#mfNoCaptures"><span>mfNoCaptures:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="MatchFlag.mfNoCaptures" href="regex/nfatype.html#mfNoCaptures">MatchFlag.mfNoCaptures</a></li> + </ul></dd> +<dt><a name="mfReverseCapts" href="#mfReverseCapts"><span>mfReverseCapts:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="MatchFlag.mfReverseCapts" href="regex/nfatype.html#mfReverseCapts">MatchFlag.mfReverseCapts</a></li> + </ul></dd> +<dt><a name="mfShortestMatch" href="#mfShortestMatch"><span>mfShortestMatch:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="MatchFlag.mfShortestMatch" href="regex/nfatype.html#mfShortestMatch">MatchFlag.mfShortestMatch</a></li> + </ul></dd> +<dt><a name="mitems" href="#mitems"><span>mitems:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="scanner: mitems[T](sc: var Scanner[T]): var T" href="regex/scanner.html#mitems.i%2CScanner%5BT%5D">scanner: mitems[T](sc: var Scanner[T]): var T</a></li> + </ul></dd> +<dt><a name="newScanner" href="#newScanner"><span>newScanner:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="scanner: newScanner[T](s: seq[T]): Scanner[T]" href="regex/scanner.html#newScanner%2Cseq%5BT%5D">scanner: newScanner[T](s: seq[T]): Scanner[T]</a></li> + </ul></dd> +<dt><a name="newSubmatches" href="#newSubmatches"><span>newSubmatches:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="nfatype: newSubmatches(size: int): Submatches" href="regex/nfatype.html#newSubmatches%2Cint">nfatype: newSubmatches(size: int): Submatches</a></li> + </ul></dd> +<dt><a name="next" href="#next"><span>next:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="scanner: next[T](sc: Scanner[T]): T" href="regex/scanner.html#next%2CScanner%5BT%5D">scanner: next[T](sc: Scanner[T]): T</a></li> + </ul></dd> +<dt><a name="Nfa" href="#Nfa"><span>Nfa:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="types: Nfa" href="regex/types.html#Nfa">types: Nfa</a></li> + </ul></dd> +<dt><a name="nfa2" href="#nfa2"><span>nfa2:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="nfa: nfa2(exp: RpnExp): Nfa" href="regex/nfa.html#nfa2%2CRpnExp">nfa: nfa2(exp: RpnExp): Nfa</a></li> + </ul></dd> +<dt><a name="Node" href="#Node"><span>Node:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="types: Node" href="regex/types.html#Node">types: Node</a></li> + </ul></dd> +<dt><a name="NodeIdx" href="#NodeIdx"><span>NodeIdx:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="nfatype: NodeIdx" href="regex/nfatype.html#NodeIdx">nfatype: NodeIdx</a></li> + </ul></dd> +<dt><a name="NodeKind" href="#NodeKind"><span>NodeKind:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="types: NodeKind" href="regex/types.html#NodeKind">types: NodeKind</a></li> + </ul></dd> +<dt><a name="NodeUid" href="#NodeUid"><span>NodeUid:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="types: NodeUid" href="regex/types.html#NodeUid">types: NodeUid</a></li> + </ul></dd> +<dt><a name="nonCapture" href="#nonCapture"><span>nonCapture:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="nfatype: nonCapture" href="regex/nfatype.html#nonCapture">nfatype: nonCapture</a></li> + </ul></dd> +<dt><a name="notRecyclable" href="#notRecyclable"><span>notRecyclable:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="nfatype: notRecyclable(capts: var Capts3; captIdx: CaptIdx)" href="regex/nfatype.html#notRecyclable%2CCapts3%2CCaptIdx">nfatype: notRecyclable(capts: var Capts3; captIdx: CaptIdx)</a></li> + </ul></dd> +<dt><a name="opKind" href="#opKind"><span>opKind:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="types: opKind" href="regex/types.html#opKind">types: opKind</a></li> + </ul></dd> +<dt><a name="parse" href="#parse"><span>parse:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="parser: parse(expression: string; flags: RegexFlags = {}): Exp" href="regex/parser.html#parse%2Cstring%2CRegexFlags">parser: parse(expression: string; flags: RegexFlags = {}): Exp</a></li> + </ul></dd> +<dt><a name="peek" href="#peek"><span>peek:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="scanner: peek(sc: Scanner[Node]): Node" href="regex/scanner.html#peek%2CScanner%5BNode%5D">scanner: peek(sc: Scanner[Node]): Node</a></li> + <li><a class="reference external" + data-doc-search-tag="scanner: peek(sc: Scanner[Rune]): Rune" href="regex/scanner.html#peek%2CScanner%5BRune%5D">scanner: peek(sc: Scanner[Rune]): Rune</a></li> + <li><a class="reference external" + data-doc-search-tag="scanner: peek(sc: Scanner[Rune]; n: int): Rune" href="regex/scanner.html#peek%2CScanner%5BRune%5D%2Cint">scanner: peek(sc: Scanner[Rune]; n: int): Rune</a></li> + <li><a class="reference external" + data-doc-search-tag="scanner: peek[T](sc: Scanner[T]): (T, T)" href="regex/scanner.html#peek.i%2CScanner%5BT%5D">scanner: peek[T](sc: Scanner[T]): (T, T)</a></li> + </ul></dd> +<dt><a name="prev" href="#prev"><span>prev:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="scanner: prev[T](sc: Scanner[T]): T" href="regex/scanner.html#prev%2CScanner%5BT%5D">scanner: prev[T](sc: Scanner[T]): T</a></li> + </ul></dd> +<dt><a name="PState" href="#PState"><span>PState:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="nfatype: PState" href="regex/nfatype.html#PState">nfatype: PState</a></li> + </ul></dd> +<dt><a name="re" href="#re"><span>re:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="regex: re(s: static string): static[Regex]" href="regex.html#re%2Cstaticstring">regex: re(s: static string): static[Regex]</a></li> + <li><a class="reference external" + data-doc-search-tag="regex: re(s: string): Regex" href="regex.html#re%2Cstring">regex: re(s: string): Regex</a></li> + </ul></dd> +<dt><a name="re2" href="#re2"><span>re2:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="regex: re2(s: static string; flags: static RegexFlags = {}): static[Regex2]" href="regex.html#re2%2Cstaticstring%2CstaticRegexFlags">regex: re2(s: static string; flags: static RegexFlags = {}): static[Regex2]</a></li> + <li><a class="reference external" + data-doc-search-tag="regex: re2(s: string; flags: RegexFlags = {}): Regex2" href="regex.html#re2%2Cstring%2CRegexFlags">regex: re2(s: string; flags: RegexFlags = {}): Regex2</a></li> + </ul></dd> +<dt><a name="reAny" href="#reAny"><span>reAny:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="NodeKind.reAny" href="regex/types.html#reAny">NodeKind.reAny</a></li> + </ul></dd> +<dt><a name="reAnyNl" href="#reAnyNl"><span>reAnyNl:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="NodeKind.reAnyNl" href="regex/types.html#reAnyNl">NodeKind.reAnyNl</a></li> + </ul></dd> +<dt><a name="reChar" href="#reChar"><span>reChar:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="NodeKind.reChar" href="regex/types.html#reChar">NodeKind.reChar</a></li> + </ul></dd> +<dt><a name="reCharCi" href="#reCharCi"><span>reCharCi:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="NodeKind.reCharCi" href="regex/types.html#reCharCi">NodeKind.reCharCi</a></li> + </ul></dd> +<dt><a name="reCt" href="#reCt"><span>reCt:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="compiler: reCt(s: string; flags: RegexFlags = {}): Regex" href="regex/compiler.html#reCt%2Cstring%2CRegexFlags">compiler: reCt(s: string; flags: RegexFlags = {}): Regex</a></li> + </ul></dd> +<dt><a name="recyclable" href="#recyclable"><span>recyclable:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="nfatype: recyclable(capts: var Capts3; captIdx: CaptIdx)" href="regex/nfatype.html#recyclable%2CCapts3%2CCaptIdx">nfatype: recyclable(capts: var Capts3; captIdx: CaptIdx)</a></li> + </ul></dd> +<dt><a name="recycle" href="#recycle"><span>recycle:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="nfatype: recycle(capts: var Capts3)" href="regex/nfatype.html#recycle%2CCapts3">nfatype: recycle(capts: var Capts3)</a></li> + </ul></dd> +<dt><a name="reDigit" href="#reDigit"><span>reDigit:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="NodeKind.reDigit" href="regex/types.html#reDigit">NodeKind.reDigit</a></li> + </ul></dd> +<dt><a name="reDigitAscii" href="#reDigitAscii"><span>reDigitAscii:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="NodeKind.reDigitAscii" href="regex/types.html#reDigitAscii">NodeKind.reDigitAscii</a></li> + </ul></dd> +<dt><a name="reEnd" href="#reEnd"><span>reEnd:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="NodeKind.reEnd" href="regex/types.html#reEnd">NodeKind.reEnd</a></li> + </ul></dd> +<dt><a name="reEndSym" href="#reEndSym"><span>reEndSym:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="NodeKind.reEndSym" href="regex/types.html#reEndSym">NodeKind.reEndSym</a></li> + </ul></dd> +<dt><a name="reEndSymML" href="#reEndSymML"><span>reEndSymML:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="NodeKind.reEndSymML" href="regex/types.html#reEndSymML">NodeKind.reEndSymML</a></li> + </ul></dd> +<dt><a name="reEoe" href="#reEoe"><span>reEoe:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="NodeKind.reEoe" href="regex/types.html#reEoe">NodeKind.reEoe</a></li> + </ul></dd> +<dt><a name="reFlags" href="#reFlags"><span>reFlags:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="NodeKind.reFlags" href="regex/types.html#reFlags">NodeKind.reFlags</a></li> + </ul></dd> +<dt><a name="Regex" href="#Regex"><span>Regex:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="nfatype: Regex" href="regex/nfatype.html#Regex">nfatype: Regex</a></li> + </ul></dd> +<dt><a name="Regex2" href="#Regex2"><span>Regex2:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="nfatype: Regex2" href="regex/nfatype.html#Regex2">nfatype: Regex2</a></li> + </ul></dd> +<dt><a name="regexArbitraryBytes" href="#regexArbitraryBytes"><span>regexArbitraryBytes:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="RegexFlag.regexArbitraryBytes" href="regex/types.html#regexArbitraryBytes">RegexFlag.regexArbitraryBytes</a></li> + </ul></dd> +<dt><a name="RegexError" href="#RegexError"><span>RegexError:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="common: RegexError" href="regex/common.html#RegexError">common: RegexError</a></li> + </ul></dd> +<dt><a name="RegexFlag" href="#RegexFlag"><span>RegexFlag:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="types: RegexFlag" href="regex/types.html#RegexFlag">types: RegexFlag</a></li> + </ul></dd> +<dt><a name="RegexFlags" href="#RegexFlags"><span>RegexFlags:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="types: RegexFlags" href="regex/types.html#RegexFlags">types: RegexFlags</a></li> + </ul></dd> +<dt><a name="RegexLit" href="#RegexLit"><span>RegexLit:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="nfatype: RegexLit" href="regex/nfatype.html#RegexLit">nfatype: RegexLit</a></li> + </ul></dd> +<dt><a name="RegexMatch" href="#RegexMatch"><span>RegexMatch:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="nfatype: RegexMatch" href="regex/nfatype.html#RegexMatch">nfatype: RegexMatch</a></li> + </ul></dd> +<dt><a name="RegexMatch2" href="#RegexMatch2"><span>RegexMatch2:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="nfatype: RegexMatch2" href="regex/nfatype.html#RegexMatch2">nfatype: RegexMatch2</a></li> + </ul></dd> +<dt><a name="RegexMatches" href="#RegexMatches"><span>RegexMatches:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="nfafindall: RegexMatches" href="regex/nfafindall.html#RegexMatches">nfafindall: RegexMatches</a></li> + </ul></dd> +<dt><a name="RegexMatches2" href="#RegexMatches2"><span>RegexMatches2:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="nfafindall2: RegexMatches2" href="regex/nfafindall2.html#RegexMatches2">nfafindall2: RegexMatches2</a></li> + </ul></dd> +<dt><a name="reGroupEnd" href="#reGroupEnd"><span>reGroupEnd:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="NodeKind.reGroupEnd" href="regex/types.html#reGroupEnd">NodeKind.reGroupEnd</a></li> + </ul></dd> +<dt><a name="reGroupStart" href="#reGroupStart"><span>reGroupStart:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="NodeKind.reGroupStart" href="regex/types.html#reGroupStart">NodeKind.reGroupStart</a></li> + </ul></dd> +<dt><a name="reImpl" href="#reImpl"><span>reImpl:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="compiler: reImpl(s: string; flags: RegexFlags = {}): Regex" href="regex/compiler.html#reImpl%2Cstring%2CRegexFlags">compiler: reImpl(s: string; flags: RegexFlags = {}): Regex</a></li> + </ul></dd> +<dt><a name="reInSet" href="#reInSet"><span>reInSet:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="NodeKind.reInSet" href="regex/types.html#reInSet">NodeKind.reInSet</a></li> + </ul></dd> +<dt><a name="reJoiner" href="#reJoiner"><span>reJoiner:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="NodeKind.reJoiner" href="regex/types.html#reJoiner">NodeKind.reJoiner</a></li> + </ul></dd> +<dt><a name="reLookahead" href="#reLookahead"><span>reLookahead:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="NodeKind.reLookahead" href="regex/types.html#reLookahead">NodeKind.reLookahead</a></li> + </ul></dd> +<dt><a name="reLookbehind" href="#reLookbehind"><span>reLookbehind:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="NodeKind.reLookbehind" href="regex/types.html#reLookbehind">NodeKind.reLookbehind</a></li> + </ul></dd> +<dt><a name="removeLast" href="#removeLast"><span>removeLast:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="nfatype: removeLast(sm: var SmLookaround)" href="regex/nfatype.html#removeLast%2CSmLookaround">nfatype: removeLast(sm: var SmLookaround)</a></li> + </ul></dd> +<dt><a name="reNonCapture" href="#reNonCapture"><span>reNonCapture:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="regex: reNonCapture" href="regex.html#reNonCapture">regex: reNonCapture</a></li> + </ul></dd> +<dt><a name="reNotAlphaNum" href="#reNotAlphaNum"><span>reNotAlphaNum:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="NodeKind.reNotAlphaNum" href="regex/types.html#reNotAlphaNum">NodeKind.reNotAlphaNum</a></li> + </ul></dd> +<dt><a name="reNotAlphaNumAscii" href="#reNotAlphaNumAscii"><span>reNotAlphaNumAscii:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="NodeKind.reNotAlphaNumAscii" href="regex/types.html#reNotAlphaNumAscii">NodeKind.reNotAlphaNumAscii</a></li> + </ul></dd> +<dt><a name="reNotDigit" href="#reNotDigit"><span>reNotDigit:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="NodeKind.reNotDigit" href="regex/types.html#reNotDigit">NodeKind.reNotDigit</a></li> + </ul></dd> +<dt><a name="reNotDigitAscii" href="#reNotDigitAscii"><span>reNotDigitAscii:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="NodeKind.reNotDigitAscii" href="regex/types.html#reNotDigitAscii">NodeKind.reNotDigitAscii</a></li> + </ul></dd> +<dt><a name="reNotLookahead" href="#reNotLookahead"><span>reNotLookahead:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="NodeKind.reNotLookahead" href="regex/types.html#reNotLookahead">NodeKind.reNotLookahead</a></li> + </ul></dd> +<dt><a name="reNotLookbehind" href="#reNotLookbehind"><span>reNotLookbehind:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="NodeKind.reNotLookbehind" href="regex/types.html#reNotLookbehind">NodeKind.reNotLookbehind</a></li> + </ul></dd> +<dt><a name="reNotSet" href="#reNotSet"><span>reNotSet:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="NodeKind.reNotSet" href="regex/types.html#reNotSet">NodeKind.reNotSet</a></li> + </ul></dd> +<dt><a name="reNotUCC" href="#reNotUCC"><span>reNotUCC:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="NodeKind.reNotUCC" href="regex/types.html#reNotUCC">NodeKind.reNotUCC</a></li> + </ul></dd> +<dt><a name="reNotWhiteSpace" href="#reNotWhiteSpace"><span>reNotWhiteSpace:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="NodeKind.reNotWhiteSpace" href="regex/types.html#reNotWhiteSpace">NodeKind.reNotWhiteSpace</a></li> + </ul></dd> +<dt><a name="reNotWhiteSpaceAscii" href="#reNotWhiteSpaceAscii"><span>reNotWhiteSpaceAscii:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="NodeKind.reNotWhiteSpaceAscii" href="regex/types.html#reNotWhiteSpaceAscii">NodeKind.reNotWhiteSpaceAscii</a></li> + </ul></dd> +<dt><a name="reNotWordBoundary" href="#reNotWordBoundary"><span>reNotWordBoundary:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="NodeKind.reNotWordBoundary" href="regex/types.html#reNotWordBoundary">NodeKind.reNotWordBoundary</a></li> + </ul></dd> +<dt><a name="reNotWordBoundaryAscii" href="#reNotWordBoundaryAscii"><span>reNotWordBoundaryAscii:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="NodeKind.reNotWordBoundaryAscii" href="regex/types.html#reNotWordBoundaryAscii">NodeKind.reNotWordBoundaryAscii</a></li> + </ul></dd> +<dt><a name="reOneOrMore" href="#reOneOrMore"><span>reOneOrMore:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="NodeKind.reOneOrMore" href="regex/types.html#reOneOrMore">NodeKind.reOneOrMore</a></li> + </ul></dd> +<dt><a name="reOr" href="#reOr"><span>reOr:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="NodeKind.reOr" href="regex/types.html#reOr">NodeKind.reOr</a></li> + </ul></dd> +<dt><a name="repetitionKind" href="#repetitionKind"><span>repetitionKind:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="types: repetitionKind" href="regex/types.html#repetitionKind">types: repetitionKind</a></li> + </ul></dd> +<dt><a name="replace" href="#replace"><span>replace:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="regex: replace(s: string; pattern: Regex; by: proc (m: RegexMatch; s: string): string; + limit = 0): string" href="regex.html#replace%2Cstring%2CRegex%2Cproc%28RegexMatch%2Cstring%29%2Cint">regex: replace(s: string; pattern: Regex; by: proc (m: RegexMatch; s: string): string; + limit = 0): string</a></li> + <li><a class="reference external" + data-doc-search-tag="regex: replace(s: string; pattern: Regex; by: string; limit = 0): string" href="regex.html#replace%2Cstring%2CRegex%2Cstring%2Cint">regex: replace(s: string; pattern: Regex; by: string; limit = 0): string</a></li> + <li><a class="reference external" + data-doc-search-tag="regex: replace(s: string; pattern: Regex2; + by: proc (m: RegexMatch2; s: string): string; limit = 0): string" href="regex.html#replace%2Cstring%2CRegex2%2Cproc%28RegexMatch2%2Cstring%29%2Cint">regex: replace(s: string; pattern: Regex2; + by: proc (m: RegexMatch2; s: string): string; limit = 0): string</a></li> + <li><a class="reference external" + data-doc-search-tag="regex: replace(s: string; pattern: Regex2; by: string; limit = 0): string" href="regex.html#replace%2Cstring%2CRegex2%2Cstring%2Cint">regex: replace(s: string; pattern: Regex2; by: string; limit = 0): string</a></li> + </ul></dd> +<dt><a name="reRepRange" href="#reRepRange"><span>reRepRange:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="NodeKind.reRepRange" href="regex/types.html#reRepRange">NodeKind.reRepRange</a></li> + </ul></dd> +<dt><a name="reSkip" href="#reSkip"><span>reSkip:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="NodeKind.reSkip" href="regex/types.html#reSkip">NodeKind.reSkip</a></li> + </ul></dd> +<dt><a name="reStart" href="#reStart"><span>reStart:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="NodeKind.reStart" href="regex/types.html#reStart">NodeKind.reStart</a></li> + </ul></dd> +<dt><a name="reStartSym" href="#reStartSym"><span>reStartSym:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="NodeKind.reStartSym" href="regex/types.html#reStartSym">NodeKind.reStartSym</a></li> + </ul></dd> +<dt><a name="reStartSymML" href="#reStartSymML"><span>reStartSymML:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="NodeKind.reStartSymML" href="regex/types.html#reStartSymML">NodeKind.reStartSymML</a></li> + </ul></dd> +<dt><a name="reUCC" href="#reUCC"><span>reUCC:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="NodeKind.reUCC" href="regex/types.html#reUCC">NodeKind.reUCC</a></li> + </ul></dd> +<dt><a name="reverse" href="#reverse"><span>reverse:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="nfatype: reverse(capts: var Capts; a, b: int32): int32" href="regex/nfatype.html#reverse%2CCapts%2Cint32%2Cint32">nfatype: reverse(capts: var Capts; a, b: int32): int32</a></li> + </ul></dd> +<dt><a name="reversedMatchImpl" href="#reversedMatchImpl"><span>reversedMatchImpl:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="nfamatch: reversedMatchImpl(smA, smB: var Submatches; text: string; nfa: Nfa; + look: var Lookaround; start, limit: int): int" href="regex/nfamatch.html#reversedMatchImpl%2CSubmatches%2CSubmatches%2Cstring%2CNfa%2CLookaround%2Cint%2Cint">nfamatch: reversedMatchImpl(smA, smB: var Submatches; text: string; nfa: Nfa; + look: var Lookaround; start, limit: int): int</a></li> + <li><a class="reference external" + data-doc-search-tag="nfamatch2: reversedMatchImpl(smA, smB: var Submatches; text: string; nfa: Nfa; + look: var Lookaround; groupsLen: int; start, limit: int; + flags: MatchFlags = {}): int" href="regex/nfamatch2.html#reversedMatchImpl%2CSubmatches%2CSubmatches%2Cstring%2CNfa%2CLookaround%2Cint%2Cint%2Cint%2CMatchFlags">nfamatch2: reversedMatchImpl(smA, smB: var Submatches; text: string; nfa: Nfa; + look: var Lookaround; groupsLen: int; start, limit: int; + flags: MatchFlags = {}): int</a></li> + </ul></dd> +<dt><a name="reWhiteSpace" href="#reWhiteSpace"><span>reWhiteSpace:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="NodeKind.reWhiteSpace" href="regex/types.html#reWhiteSpace">NodeKind.reWhiteSpace</a></li> + </ul></dd> +<dt><a name="reWhiteSpaceAscii" href="#reWhiteSpaceAscii"><span>reWhiteSpaceAscii:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="NodeKind.reWhiteSpaceAscii" href="regex/types.html#reWhiteSpaceAscii">NodeKind.reWhiteSpaceAscii</a></li> + </ul></dd> +<dt><a name="reWord" href="#reWord"><span>reWord:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="NodeKind.reWord" href="regex/types.html#reWord">NodeKind.reWord</a></li> + </ul></dd> +<dt><a name="reWordAscii" href="#reWordAscii"><span>reWordAscii:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="NodeKind.reWordAscii" href="regex/types.html#reWordAscii">NodeKind.reWordAscii</a></li> + </ul></dd> +<dt><a name="reWordBoundary" href="#reWordBoundary"><span>reWordBoundary:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="NodeKind.reWordBoundary" href="regex/types.html#reWordBoundary">NodeKind.reWordBoundary</a></li> + </ul></dd> +<dt><a name="reWordBoundaryAscii" href="#reWordBoundaryAscii"><span>reWordBoundaryAscii:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="NodeKind.reWordBoundaryAscii" href="regex/types.html#reWordBoundaryAscii">NodeKind.reWordBoundaryAscii</a></li> + </ul></dd> +<dt><a name="rex" href="#rex"><span>rex:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="regex: rex(s: string): RegexLit" href="regex.html#rex%2Cstring">regex: rex(s: string): RegexLit</a></li> + </ul></dd> +<dt><a name="reZeroOrMore" href="#reZeroOrMore"><span>reZeroOrMore:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="NodeKind.reZeroOrMore" href="regex/types.html#reZeroOrMore">NodeKind.reZeroOrMore</a></li> + </ul></dd> +<dt><a name="reZeroOrOne" href="#reZeroOrOne"><span>reZeroOrOne:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="NodeKind.reZeroOrOne" href="regex/types.html#reZeroOrOne">NodeKind.reZeroOrOne</a></li> + </ul></dd> +<dt><a name="RpnExp" href="#RpnExp"><span>RpnExp:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="types: RpnExp" href="regex/types.html#RpnExp">types: RpnExp</a></li> + </ul></dd> +<dt><a name="scan" href="#scan"><span>scan:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="scanner: scan[T](s: seq[T]): Scanner[T]" href="regex/scanner.html#scan%2Cseq%5BT%5D">scanner: scan[T](s: seq[T]): Scanner[T]</a></li> + <li><a class="reference external" + data-doc-search-tag="scanner: scan(raw: string; bytesMode = false): Scanner[Rune]" href="regex/scanner.html#scan%2Cstring">scanner: scan(raw: string; bytesMode = false): Scanner[Rune]</a></li> + </ul></dd> +<dt><a name="Scanner" href="#Scanner"><span>Scanner:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="scanner: Scanner" href="regex/scanner.html#Scanner">scanner: Scanner</a></li> + </ul></dd> +<dt><a name="setLen" href="#setLen"><span>setLen:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="nfatype: setLen(item: var SmLookaroundItem; size: int)" href="regex/nfatype.html#setLen%2CSmLookaroundItem%2Cint">nfatype: setLen(item: var SmLookaroundItem; size: int)</a></li> + <li><a class="reference external" + data-doc-search-tag="nfatype: setLen(sm: var Submatches; size: int)" href="regex/nfatype.html#setLen%2CSubmatches%2Cint">nfatype: setLen(sm: var Submatches; size: int)</a></li> + </ul></dd> +<dt><a name="shorthandKind" href="#shorthandKind"><span>shorthandKind:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="types: shorthandKind" href="regex/types.html#shorthandKind">types: shorthandKind</a></li> + </ul></dd> +<dt><a name="SmLookaround" href="#SmLookaround"><span>SmLookaround:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="nfatype: SmLookaround" href="regex/nfatype.html#SmLookaround">nfatype: SmLookaround</a></li> + </ul></dd> +<dt><a name="SmLookaroundItem" href="#SmLookaroundItem"><span>SmLookaroundItem:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="nfatype: SmLookaroundItem" href="regex/nfatype.html#SmLookaroundItem">nfatype: SmLookaroundItem</a></li> + </ul></dd> +<dt><a name="split" href="#split"><span>split:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="regex: split(s: string; sep: Regex): seq[string]" href="regex.html#split%2Cstring%2CRegex">regex: split(s: string; sep: Regex): seq[string]</a></li> + <li><a class="reference external" + data-doc-search-tag="regex: split(s: string; sep: Regex2): seq[string]" href="regex.html#split%2Cstring%2CRegex2">regex: split(s: string; sep: Regex2): seq[string]</a></li> + <li><a class="reference external" + data-doc-search-tag="regex: split(s: string; sep: Regex): string" href="regex.html#split.i%2Cstring%2CRegex">regex: split(s: string; sep: Regex): string</a></li> + <li><a class="reference external" + data-doc-search-tag="regex: split(s: string; sep: Regex2): string" href="regex.html#split.i%2Cstring%2CRegex2">regex: split(s: string; sep: Regex2): string</a></li> + </ul></dd> +<dt><a name="splitIncl" href="#splitIncl"><span>splitIncl:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="regex: splitIncl(s: string; sep: Regex): seq[string]" href="regex.html#splitIncl%2Cstring%2CRegex">regex: splitIncl(s: string; sep: Regex): seq[string]</a></li> + <li><a class="reference external" + data-doc-search-tag="regex: splitIncl(s: string; sep: Regex2): seq[string]" href="regex.html#splitIncl%2Cstring%2CRegex2">regex: splitIncl(s: string; sep: Regex2): seq[string]</a></li> + </ul></dd> +<dt><a name="startsWith" href="#startsWith"><span>startsWith:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="regex: startsWith(s: string; pattern: Regex; start = 0): bool" href="regex.html#startsWith%2Cstring%2CRegex%2Cint">regex: startsWith(s: string; pattern: Regex; start = 0): bool</a></li> + <li><a class="reference external" + data-doc-search-tag="regex: startsWith(s: string; pattern: Regex2; start = 0): bool" href="regex.html#startsWith%2Cstring%2CRegex2%2Cint">regex: startsWith(s: string; pattern: Regex2; start = 0): bool</a></li> + </ul></dd> +<dt><a name="startsWithImpl" href="#startsWithImpl"><span>startsWithImpl:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="nfamatch: startsWithImpl(text: string; regex: Regex; start: int): bool" href="regex/nfamatch.html#startsWithImpl%2Cstring%2CRegex%2Cint">nfamatch: startsWithImpl(text: string; regex: Regex; start: int): bool</a></li> + </ul></dd> +<dt><a name="startsWithImpl2" href="#startsWithImpl2"><span>startsWithImpl2:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="nfamatch2: startsWithImpl2(text: string; regex: Regex; start: int): bool" href="regex/nfamatch2.html#startsWithImpl2%2Cstring%2CRegex%2Cint">nfamatch2: startsWithImpl2(text: string; regex: Regex; start: int): bool</a></li> + </ul></dd> +<dt><a name="SubExp" href="#SubExp"><span>SubExp:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="types: SubExp" href="regex/types.html#SubExp">types: SubExp</a></li> + </ul></dd> +<dt><a name="subExps" href="#subExps"><span>subExps:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="nfa: subExps(exp: RpnExp): RpnExp" href="regex/nfa.html#subExps%2CRpnExp">nfa: subExps(exp: RpnExp): RpnExp</a></li> + </ul></dd> +<dt><a name="Submatches" href="#Submatches"><span>Submatches:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="nfatype: Submatches" href="regex/nfatype.html#Submatches">nfatype: Submatches</a></li> + </ul></dd> +<dt><a name="swapCase" href="#swapCase"><span>swapCase:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="nodematch: swapCase(r: Rune): Rune" href="regex/nodematch.html#swapCase%2CRune">nodematch: swapCase(r: Rune): Rune</a></li> + </ul></dd> +<dt><a name="toAtoms" href="#toAtoms"><span>toAtoms:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="exptransformation: toAtoms(exp: Exp; groups: var GroupsCapture; flags: RegexFlags = {}): AtomsExp" href="regex/exptransformation.html#toAtoms%2CExp%2CGroupsCapture%2CRegexFlags">exptransformation: toAtoms(exp: Exp; groups: var GroupsCapture; flags: RegexFlags = {}): AtomsExp</a></li> + </ul></dd> +<dt><a name="toCharNode" href="#toCharNode"><span>toCharNode:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="types: toCharNode(r: Rune): Node" href="regex/types.html#toCharNode%2CRune">types: toCharNode(r: Rune): Node</a></li> + </ul></dd> +<dt><a name="toMatchFlags" href="#toMatchFlags"><span>toMatchFlags:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="nfatype: toMatchFlags(f: RegexFlags): MatchFlags" href="regex/nfatype.html#toMatchFlags%2CRegexFlags">nfatype: toMatchFlags(f: RegexFlags): MatchFlags</a></li> + </ul></dd> +<dt><a name="toPattern" href="#toPattern"><span>toPattern:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="regex: toPattern(s: string): Regex" href="regex.html#toPattern%2Cstring">regex: toPattern(s: string): Regex</a></li> + </ul></dd> +<dt><a name="toRegex" href="#toRegex"><span>toRegex:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="nfatype: toRegex(r): untyped" href="regex/nfatype.html#toRegex.t">nfatype: toRegex(r): untyped</a></li> + </ul></dd> +<dt><a name="toRegex2" href="#toRegex2"><span>toRegex2:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="nfatype: toRegex2(r): untyped" href="regex/nfatype.html#toRegex2.t">nfatype: toRegex2(r): untyped</a></li> + </ul></dd> +<dt><a name="toRune" href="#toRune"><span>toRune:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="common: toRune(s: string): Rune" href="regex/common.html#toRune%2Cstring">common: toRune(s: string): Rune</a></li> + </ul></dd> +<dt><a name="toString" href="#toString"><span>toString:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="types: toString(n: seq[Node]): string" href="regex/types.html#toString%2Cseq%5BNode%5D">types: toString(n: seq[Node]): string</a></li> + </ul></dd> +<dt><a name="transformExp" href="#transformExp"><span>transformExp:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="exptransformation: transformExp(exp: Exp; groups: var GroupsCapture; flags: RegexFlags = {}): RpnExp" href="regex/exptransformation.html#transformExp%2CExp%2CGroupsCapture%2CRegexFlags">exptransformation: transformExp(exp: Exp; groups: var GroupsCapture; flags: RegexFlags = {}): RpnExp</a></li> + </ul></dd> +<dt><a name="unfreeze" href="#unfreeze"><span>unfreeze:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="nfatype: unfreeze(capts: var Capts3; freezeId: CaptState)" href="regex/nfatype.html#unfreeze%2CCapts3%2CCaptState">nfatype: unfreeze(capts: var Capts3; freezeId: CaptState)</a></li> + </ul></dd> +<dt><a name="verifyUtf8" href="#verifyUtf8"><span>verifyUtf8:</span></a></dt><dd><ul class="simple"> +<li><a class="reference external" + data-doc-search-tag="common: verifyUtf8(s: string): int" href="regex/common.html#verifyUtf8%2Cstring">common: verifyUtf8(s: string): int</a></li> + </ul></dd> +</dl> + <div class="row"> + <div class="twelve-columns footer"> + <span class="nim-sprite"></span> + <br/> + <small style="color: var(--hint);">Made with Nim. Generated: 2024-01-06 00:35:17 UTC</small> + </div> + </div> + </div> +</div> + +</body> +</html> diff --git a/ugh/nimdoc.out.css b/ugh/nimdoc.out.css new file mode 100644 index 00000000..4abea9ce --- /dev/null +++ b/ugh/nimdoc.out.css @@ -0,0 +1,1016 @@ +/* +Stylesheet for use with Docutils/rst2html. + +See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to +customize this style sheet. + +Modified from Chad Skeeters' rst2html-style +https://bitbucket.org/cskeeters/rst2html-style/ + +Modified by Boyd Greenfield and narimiran +*/ + +:root { + --primary-background: #fff; + --secondary-background: ghostwhite; + --third-background: #e8e8e8; + --info-background: #50c050; + --warning-background: #c0a000; + --error-background: #e04040; + --border: #dde; + --text: #222; + --anchor: #07b; + --anchor-focus: #607c9f; + --input-focus: #1fa0eb; + --strong: #3c3c3c; + --hint: #9A9A9A; + --nim-sprite-base64: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAN4AAAA9CAYAAADCt9ebAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFFmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDggNzkuMTY0MDM2LCAyMDE5LzA4LzEzLTAxOjA2OjU3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjEuMCAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDE5LTEyLTAzVDAxOjAzOjQ4KzAxOjAwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAxOS0xMi0wM1QwMjoyODo0MSswMTowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAxOS0xMi0wM1QwMjoyODo0MSswMTowMCIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozMzM0ZjAxYS0yMDExLWE1NGQtOTVjNy1iOTgxMDFlMDFhMmEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MzMzNGYwMWEtMjAxMS1hNTRkLTk1YzctYjk4MTAxZTAxYTJhIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6MzMzNGYwMWEtMjAxMS1hNTRkLTk1YzctYjk4MTAxZTAxYTJhIj4gPHhtcE1NOkhpc3Rvcnk+IDxyZGY6U2VxPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY3JlYXRlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDozMzM0ZjAxYS0yMDExLWE1NGQtOTVjNy1iOTgxMDFlMDFhMmEiIHN0RXZ0OndoZW49IjIwMTktMTItMDNUMDE6MDM6NDgrMDE6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCAyMS4wIChXaW5kb3dzKSIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4PsixkAAAJ5klEQVR4nO2dfbBUZR3HP3vvxVD0zo0ACXxBuQMoQjJ1DfMl0NIhNcuSZqQhfGt6UWtK06xJexkrmywVRTQlHCIdtclC0zBJvYIvvEUgZpc3XyC7RVbKlQu1/fHdbc+uu2fPOfs85+y55/nMnBl2z+5zfnc5v/M8z+8119XVRYroAG4HfgvMT1YUR4MMAa4HLkhakCRoSVqAELwLeBY4C7gF+D6QS1QiR1ROAJ4Dzk9akKQwoXhtwL4GxvHjU8AKoNPz3leAu4HBFq+bAyZZHD9rDAK+BywDDklYlkQxoXhfAtYAEw2MVckQYBHwU6or99nA08BBFq49GngUeBIYaWH8rNEJdAOXA60Jy5I4jSreSOBKYDzwBPCJhiUqcSjwe2BWnc9NLnxuvMFrnwqsAqYBBwBfNzh2FpmNfs9jkhakWcg1aFxZiH5UL3cDnwf+Xue7BwFjgFHAOwuv24tyob3cO0LIshP4EbCn8Pq/wKvA9sLxMvCvOmPsA1yDZnHv/nEv2mM+F0IeR4m8z7lM7tMbUbzj0CxX7YfbAXwaWFJ4PRrNIu9FS9KJyEIZN68CG4DnkRJtLBw7gHHAYuDdNb77EDAjBhkHIk7xKoiqeK3IwjilzuceQJvoZjdQ/AMZaeoZiWYgBXSEwyleBW0Rv3cR9ZUO4LSI48fN2wN+bi5wJNBvUZaBSCaVy48oxpVhwDdMC5ISxpJRh6/DLGEUrxXt29YBQ+2IkwquR76ofZIWxJFegireNLSnm48skFmmDfmiVgJHJyuKI620ADOpbWEcDPwYOZKD7OmyxCTkXL+wzueOiEEWR8poQb60V4A7kLm/yFjgKeALuM1xLfYDbkX+zEGe98cAX0Oui6viF8vR7OS6urragW2UZr21wK+Aiwlu7XPoN3sYOAd4H6WH1SnA0qSEcjQnRT/e1bgnsw16kGPez4/lyCBF48oNwL+TFGSAsgCndI4qFBVvJ0owdZhjL3CnxfHzBo8+YBMyol0CHBijrKbHS/LoA7Yio9sPgJNr/QHekLGR6MffL+KP4SjnHmQxtoXNmbQP+CHyV75hYDzTIWNpWkU8iR5mq71vVsZqXgtcFqNQ/wG2IOtfD8oi6AX+Ujj+isKz8sBrnu+1okyGdmD/wnEgcDClTIdRyJRvI1cvCMciq7At4rj5eoCPAusbHCfLigda/VyKgi+AtyreMGAzykGzQQ/wO+BxSlkCuy1dq8hw5OieUjimYT+x9bHCdWwS1823Ez1EXmhgjKwrXpHzkduuanbCtzGX+NkPPAj8GincNkPjNkIO5dadUjiOB95m+BonopQpm8R58/0JJbHWy2eshVM8sRvdbyurKV4Hmoka2WA/iwwLP6d+QmzSdKC92GzK/W9R+Q3woQbHCELcN991wJcjftcpXolngKm18vFmoVonYcgDv0Qz5pqGREuOTuA8lPYUZbndh0LJNpkUqgZx33xvomim7RG+6xSvnOm1gqQXoyiMoKxFs8VZpFfpQHvQK4HDUPnAsBa9bxGP0tUjF+IYCkxFew+/G3owdq20pgjzt3uPRscs/o43IaOhH2f4ZaAPRyZQP6vgbuCbyGext87F0sgIZFI/N8BnlwBnolovcWAjq/uzwM0+55cBJ0UYN84ZL+rfbnLMM4FfUDv7Z1XlCe8FetETbleNL7+CZrnvMjCVDuTOOA84Hf+96ga0PC8qXY50FQsuMg+41+d8p885R4n7gdt8zo+qvDkmUF4fZQXwEbS+99KDMhlWkw0eALqQglXyDDCdcovf+4lv5jPNXJ9zWc/FDMMdPudGVCreRlTWwVtWbynwYVQQCFSp61Q042WJLUjB1nneuw8tvXo97x1Lugvg+j1Mo9boySLVHtJFWqsthx5GlbSGeN5bigrHdqPl52Zj4qWLXvTQWY4KOX2ccgPMBLRcuy9+0YzhguXN4GuYq2Zc2R/NZg+hfYt3/9ZCepdQthmB4vIWIYOTbWyWzGt2Y0izG1fqjlltxnsdpbPMRMmd3lqTTumqMw7FZY5G5mSHw5dalreiRWYGWjbZ7gYUlFa0xOtIWA4vk1E6zWEoI+FvyYrjSAO1FG8DCmQGKd+DJFsGogWVVFiP/GWbga9Svg9NgtPQvnd04fUNCcriSBF+vqZ5nn9PQ+Xs4q401oI6EP0R+BkyXoAeAtcgBfwidnvkVaMVFTO6n1JoWTfqiONw1MVP8e6l3GVwOPJZXW5VItGGiuduAu5CZdOrMQJ1CHqpIFccS+LxaD/3Hcr7vF0Xw7UdAwQ/xduLGkJ6aUMhVAuwU006B3wM+ZLmozJ5QRhWkGs9yjKw1fhwDsq8eE/F+y+i1CeHIxD1wppupXrA5xyUOjQHMzU3cyjTeS2aaaN2Fzoc1bhch3xspuqBTkDulQVUz1q4mYEbNuewQD3FexGFS1VjOLoRHwOOinj9HAooXY2CSidHHKeSI5GFcRWNdSxqR7VH1iHHeTV24R+X53C8hSCBvPPqnD8B+AOygn6OYAm0ORSGthLl8B0d4DtRmIKsoMsJF1U/Hi1dt6DusIN8PrsIlUdwOAITpDFlC6q3MTbgmHm011qGepOvQSXPipyOCujW6rxqk0dRWYsVFe8PRSn5JxWOoEvdfOGzfnF5tnCRK+bGi33MoB1hL0U5d1H5J5oVD6A5mp8sQS6KSWh5e0jEcR4BPmhKqJA4xTM3XuxjBlW8DuRacDU3y0myNbNTPHPjxT5m0GTN15A/zVFiI+HKYzgc/ydMlrRfgmQWuYn0F91xJEQYxVuDnMcOrQAWJi2EI72ErQviwqLEQpQ+5XBEIqzi3YWLwF+BMiMcjshEqYR1Gdk1KmxBsaR9SQviSDdRFK8fxVU+YliWZmcbcq7vSFoQR/qJWvuxD0WgLDYoSzPzAqowtjVhORwDhEaKru4GPoliGgcyy4Hj0DLT4TBCo9WO88jQ8Bns97lLghvRTOfqqDiMYqrM+HyUYdBtaLykeRmlK12C9rQOh1FM1vd/HqUIzaT5e+LVoh/VxByHShs6HFaw0VjjHhTxP5d0LT+fRnu5q3HuAodlbHW02Q5cDByM+sw1642cRylCx6PeZiuTFScUFxK+f19QovaRS+t4tsasxhvABbZbSfUCV6CM7qtQl6Fm4E1U22UqcAYqvZ42fgJMxH6vdYc5nkBlSW6Pq4fbS6hb6jg0u9yGug7FyS5U1+UcVBbwbFSuMM1sQ1bXK4A9CcviqM0e9H80HdUxCpwIa4McygA/GfgAcCJqmGKKXUixupEv7nHsLc2agWNQ0d9OzC+PHNHIo1XeLCoe8kkqXiUtwKFoWXoEKqk3BpWLaC8cXsV8HT1J+tFTZKvn+DMqFZi1knvtyKg1O2lBHADcCVxEedNSAP4HJcsr0NNWHVUAAAAASUVORK5CYII="); + + --keyword: #5e8f60; + --identifier: #222; + --comment: #484a86; + --operator: #155da4; + --punctuation: black; + --other: black; + --escapeSequence: #c4891b; + --number: #252dbe; + --literal: #a4255b; + --program: #6060c0; + --option: #508000; + --raw-data: #a4255b; +} + +[data-theme="dark"] { + --primary-background: #171921; + --secondary-background: #1e202a; + --third-background: #2b2e3b; + --info-background: #008000; + --warning-background: #807000; + --error-background: #c03000; + --border: #0e1014; + --text: #fff; + --anchor: #8be9fd; + --anchor-focus: #8be9fd; + --input-focus: #8be9fd; + --strong: #bd93f9; + --hint: #7A7C85; + --nim-sprite-base64: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARMAAABMCAYAAABOBlMuAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFFmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDggNzkuMTY0MDM2LCAyMDE5LzA4LzEzLTAxOjA2OjU3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjEuMCAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDE5LTEyLTAzVDAxOjE4OjIyKzAxOjAwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAxOS0xMi0wM1QwMToyMDoxMCswMTowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAxOS0xMi0wM1QwMToyMDoxMCswMTowMCIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDplZGViMzU3MC1iNmZjLWQyNDQtYTExZi0yMjc5YmY4NDNhYTAiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6ZWRlYjM1NzAtYjZmYy1kMjQ0LWExMWYtMjI3OWJmODQzYWEwIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6ZWRlYjM1NzAtYjZmYy1kMjQ0LWExMWYtMjI3OWJmODQzYWEwIj4gPHhtcE1NOkhpc3Rvcnk+IDxyZGY6U2VxPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY3JlYXRlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDplZGViMzU3MC1iNmZjLWQyNDQtYTExZi0yMjc5YmY4NDNhYTAiIHN0RXZ0OndoZW49IjIwMTktMTItMDNUMDE6MTg6MjIrMDE6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCAyMS4wIChXaW5kb3dzKSIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4JZNR8AAAfG0lEQVR4nO2deViTZ7r/7yxkJaxJ2MK+GCBAMCwS1kgUFQSKK4XWWqsz1jpjp3b0tDP1V+eqU391fqfT/mpPPd20drTFDS0KFEVWJSGAEgLIZpAICBJACIRs549Rj1WILAkBfD/XlevySp68z/0S3+/7vPdzLyidTgcLkU2bd+z39/f/q1gshsrKSoJELFCa2iaEuU9K6kb+8uXxv54/fzE8L/eswNT2zCfQpjbAGKS8lPFKSEjIXiaTCSEhIeDj4xNnapsQ5j6rktZGp6UlfxIdzQVzCplmanvmG1hTG2BIAtlc26CgoDfT0tL2e3l5AQCAjY0NkMnk/a9s2k6rrKw8UV8n1JjYTIQ5RlAw14KzmL3xze1vfJyUuMJaq9UCFovFm9qu+YbBxcSPFUYkk8l2Q0NDsvo6ocrQx5+I8Ih4bz6f/0l8fHyKlZXV4/dRKBQwmcwwMpn8A4FAoPgHhH9bV1sxa488wZxoaycnJ/a9e/duCa5fkc3WvAiTI4Ib77p+XdqHG9anbfLy8gAAgLGxMdBpF+bjvzExqJj4scKI0dHRnwQHB++orq7+AgDeMuTxJ2Jl4rqU9PT0EwEBAUQCgTDuGAaDAampqYepVKpHUHDk325Ulw0a266YuFW+Gzdu/MDPz29jfn7+XgA4aOw5ESZP6kvpCXv3vnM8NiaSamVl+fj9BepGNDoGFRN7e/slcXFxO1xcXMDJyWnH7j//H/fi4uJdgutXmgw5z5O8smn7X9euXbvf29sbMBjMhONQKBRYWVlBbGzsbjMzM3JoOG+/sKKwy1h2rd/4elpGRsYuLy+vaDweD2w2Oy1h5ZrCvEunEaeeiVnMiabyl/F2/+X9P+8JDPQHHA5napMWBAYTk6DgSNuEhIS9DAYDAP7tq1i6dOkqOp3OWbNu0wens44emeoxA9lcWwKBYEMkEm2JRKIdHo+3QKFQWJ1Op8ZgMER3d/dVq1evTnFycpr0MSkUCsTExGzH4/Gk1LTME/39/TI0Go1FoVCg1WrVY2NjipGRkcGRkRH5dPwrEZHLXMPCwjJSUlIy3dzcfB+97+rqGhYSEpIOAIiYmBguN3zL77dt3uPh4W5qUxYUBhMTb2/vjeHh4cvR6P/dILK0tITIyEg7BweHr363/Z3Ampqaf1Zcu/zMKiVsyVJvMplsRyKR7IhEor2FhYUbhUJhJCYm2pFIJB6JRAIymQx4PB7QaDRoNBowMzMDJycnwOOn7icjEokQGxu7icFgbLp///7jFY1WqwWlUgkjIyOgUCgO7Ni5Rz48PCwfHh7uGRkZeaBQKOSjo6ODCoVCXlNVKn/6uCsT13FXrVr1emho6BYKhfLMnP7+/omrU9LPX8g+UThloxEMxqJFXjxESAyPQcSEExrLWLNmzW57e/txP/fw8ABHR8cdDAaDt3xF2ru9vb03sVgs0cbGxs/FxWVZUlISj0aj+dna2oKtrS1M5PcwJCgUCry8vODRrs84vPfoH6OjoyCXy6Gvr+/R6+CWrX9s7evrk/b19bWr1Wqli4sLZ8OGDe95eXmxUSjUuAd0cHDwjoqK2sYKXFIhvnldYYTTQpgU4/8+jyASCYDGoCd+ZkYYF8OICYezl8PhuOkbQyAQIDo62s/NzS2np6cHbGxsgEajAYFAAAwGA1gsFia6CE0NgUAABwcHsLe3B61WC2q1eo9WqwWNRgNKpRLUajUQiUSgUCh6zwGHwwGTydzo5+eXBQBnZu8MEJ5keHhYPqyYWMtHR0ZBpVIhYj9FUDONgOUvT12+du3avMDAQJjssdRqNWCxCyrEZdLodDoQi8Ulx44de628NL/V1Pa8iERE8l2dHB2CJvpcq9Nqbt1qKURWj1Njxld0ZGTkAW9v70kLCQC8sEIC8O/HKx8fn2gmk8kHgCk7pRFmzrWyAikASE1tx0Jj2uH0EZHL/N7YtuvT4OBgzmz4OBYSeDweIiMjt2S++vtMP1YYEmmJsCCY8mNOIJtr6+zsHBcZGXmIw+G4mZubG8m0hU9HRwcUFxe/KxQKTyDRsQjznSmJCS9+dVRERMTfQ0NDo2xtbfUGiSFMjtHRUaitrc3Jzc09kHvxVLmp7UFAmC6oZQkvrZLL5RJhReHtiQb5scKIXC7371FRUX90dnYGIpE4JR8Jgn40Gg20t7fXFxYWfnr9+vWjz8sdYi+Osh4vzgUBwZSgtu94V+fs7Hx7YGCgra6u7khLS0u2RCwYeTQgKmYFh8fj/f/g4OAldnZ2prR1wdPd3Q1CofBQSUnJkdLi3N8E93FCY6k+Pj48FxcXjlar1ZSWlh65VvYr4kREmDNg79+/D3FxcW5OTk5uXl5evNbW1tL0jK3ZXV1d1ykUintycvInoaGhdkj+gvGxs7MDPp+/m0AgWMQvS/lyeHhYTqPRPJycnIJSU1NZ3t7eW2g0Gly/fv2oWq1Gij0hzClQ/gHhpLS0tEM8Hm/7I8Ho7++HlpYWsLa2Bg8PDxOb+OKhUCigqakJ7t+/D25ubuDu7g4oFAp0Oh08ePAAvv7666TTWUdzTG0nAsKTYMU3ryuSU18+4+bmFrZo0SIOAICVlRUsXrx4zkakLnRIJBI8CgJ8MtdJp9NBZ2enqL29XWRC8xAQxgUNAHD+3L8KGhoaCp78ABES04JCoX4jJAAAAwMDUFtbe96YpRMQEKbL41DU5ubmko6Ojj2PSgggzD36+/vrb9y4cX425zzw93/8EBjon2is44+NjSkePBjqGRwc7G5v7xBV19w8U5B/3qgrr9+/uWtXUuKKD/TZ9MXh/066/OuFmunO8dGBQ98HBbGSp/t9U6LRaDXK0dHBoeFhuVzeL22/0yFqamopufjLqRJ933ssJi0tLSXV1dWHGAzGbuObOzs8ubqa71vZKpUKOjo6blwpOF8zm/Mu5cVkLlkSaswprAHAaVihgK7O7oSGxltvfXLon3nXK4RHT2cdN4pfKDCAlZyUuMJan02nTmczAaBmunPw4qI3cbnh0/36XICq0+lgcPABp7OrK629vUP5z8++LLh2XXD05L++yxrvC4/F5EZ12WBS8saLS5Ys2U2lUufUY45SqQSlUgkqlQrUavXj19jYGGg0GtBoNKDT6UCn05VotVq1TqfToFAojFar1eh0Og0Wi8XhcDgeGo1+/PhgZmYGOBwOsFgsmJmZ/eY1F+nt7YXa2trs2Z73wdCQBgCMHp1IJpHA09MdPD3dLRIS+OtKisvWvbP7vf2lZdePVFwzbHTwyMiI3hidkZFRUKvUYzOZ48HQkBIA5nWqBAqFAktLC7C0tADmIh88Pz4uMSyUk7hn776DV4tKPn/6d/lNxp1MJqsRCASf8vn8XdMpOjRTVCoVjI2NgUqlAq1WCyMjI9DX1wf379+Hvr6+/Q8ePOgdGRmRKxSKx0WLFAqFXKlUKnQ6nUar1arHq47mxwrD4/F4Eg6HI2GxWDwej7cgkUjWFAqFam5uTjU3N6eRyeQPLSwswNraGqysrIBAIDwWFywW+zja11Qi29LSclIikeSZZPJZBovBAI8XA8HBQR9kZZ3lR8cmvFZSlGe00p8IkwONRkNERBj4+i7a4+XpHv307/IbMakWlciXJbx0nMPh7Jqo0JGh0el0MDo6Cl1dXSCVSkEmk7177969W319fe1DQ0M9KpVKoVarlWq1WjndNhUPG3ApAWDcOxLTLwSDwWAOotFoDBaLxRMIBAsrKysne3t7Xzqd7k2n0/c4OzsDlUoFHA4364IyMDAATU1NxdWikhcq6tXKyhJezljPJZKI2eERS5cZeoWCMD2srCwhPX0tVzk2djiCG//GtfLLUoBxShB0dHTU3Lx580sLC4vtJBLJKMZoNBqQSqUglUqPdnR01PT09DT19/fLHjx40DM0NNQ72933GiSVGgB4JFQK+LfoSAGgnL04yppEIh2xtLS0t7GxcaFSqR7Ozs4fMRgMcHR0nJX8pJs3b54Ui8UXjT7RHIRMIkFK8irfwcEHPwQELUmqvYHUGJkLmJubw8YNa/i9vfffY/px3myQiDTPiEl9nVDDX576jaenZ7SnpyfLUJNrNBqQyWRw+/bt4x0dHTdkMlltV1dXw/XygjkdEv4wB0YOAK0AUM70C8HQ6fSzdDrdm0qlejg6OrLc3Ny2MBiMadWjfR4PHjyAmzdvZs/1v5MxoVAokJK8iicWS95k+nH+s0EiQhqpzQGoVFtYk5a87ba0XQAA34xbpagg/5zoT7s/OGNnZ8eaaYkBuVwOnZ2d5VKpVNTS0lLS2NhYWFVZ3Dujg5qQh6uY+ocvCAiKIPn4+Jz19PSMdnV15VCpVL6Dg4NBViw6nQ5EItHRpqamqzM+2DzHzo4O69amftLQeKsAZrDLgmBY/PyYsCIhfs+SiKUFE5Y8EwqFx11cXDihoaFTjjFAoVAwPDwMHR0dourq6jNCofDHhZqUVnvjmgIAcgAgJyg40mLRokX8kJCQjT4+PussLS1n1JPl7t27UFxcfHguB6mNjY2B7G4naNRTWyygUCjAYDGAx+PB0sICSCSi3vFYLBbCwjjA8vddBQtATKb7d3saBwc7IJPJBpsHjUGDGRYLJBIJLK0sAfucmyIGg4FFi3y8AwNZtycUk5KiS02vvf7WWQaDkejg4DApQwAeh3xDaWnpPoFAcPxFqnP6sEvgGf+A8Bx3d/cvIyIiNi1evHjT8wpNj8fAwACUlZW9P9dD5+/ckcFbf9gd2dcnn9LNAovF4inmZHtXNxdOdBR3+/JlS33pdP29wolEInA4weuiYxOy5vvuTkeHDHb+8c8xvb33Z3R9/N+Df+uIjYk02DwkEsna2trS1d/fNyGeF7uTyw1/7g3R3t4O2OxA/TVghULhcQqFQk1JSfmYSNR/5wD4d6EfgUBwvLS09IhUKhW9qAV5H9YjKQwJi6uvrKw8ERoamhkSEpKp7w7yJEqlEiQSyZmysrJv53qjdaVSCZdyTk+3qFMrAJRHRPLPN95qeifj5fU7mYt8JhyMRqMhMJDFdnF25gDAvBYTpXIMWlpay2fq/8m5mDcIABYGnEcGAGI/VlhBZWX1yZdSkz55OX0dV5+7w9bGGvz8mPrFpK62QskJjf2GTqd7x8bGbpnID4BCoUAmk0lLSkqOiESik2UleS/MakQflYKrXQDQxY1a3tTe3i6KiIjY5OXlxX7e9+rr6wsuXbr0t4ffn9OgMWjghMZQRcLp+8GulRVI/QPC37Wxtnal0ajJtjY2E451ZjiBra31vE9lR2PQQKFQaAAwo98Yi8Xq9fpPd56HO6rlvKWJv/PwcK+JilyCmajWMw6HAzs7+rMFpQOCIn6zHywSFvXm5eUdFAqFZ9Rq9bgHa2trq79w4cK+zz49cAARkmcpL81v/a/Dhz49d+7c3qqqqjyVSjXuOJ1OBxKJpDw3N/fA5V+zax6978cKw/sHhM/raMrnUVdboSy4fPWQSFSjd5yFBQWIRNKEd2IEw1J4JUd88WL+R51d3XrHWVDMnxUTa2tr1zXrNiUGsrmPf7DS4tymCxcu7Kuurs55+kKQSqVN586d23vs+8NHDXUCC5Wzp3/Iy8rKeruysvLM2Nhvo7VVKhXU1tYWnj17du/T7UOdnZ2D7OzsfGGB09raVi4S1RzXl0eFw+EAj8chYjKLVFffyOrq1C8mJBLpWTFRKBRyDofzC4vFWvXk+1ev/CLOzs7eKxAIslQqFeh0Oujp6enKzs7em/XTd7OayTqfKb56sT4rK+sPAoHg5KO/o0KhAKFQmHXy5MkdF3/5+TeZmctXpIXZ29v7zqVcKWNRX1epuXu3U/y8pEw0GmndOZt0dnXVDw0P6/W5oNHoZ30mQ0NDPb29vfvj4+Pf3rR5B/7od188XnEUXr4gDgmL+0NfX5/U19d3d3l5+YGfTnyDtLmcIhXXLsu4UcvfR6PRGGtra9eysrIjYrE45+kt4Fheou/69es/unnz5vm7d+/Wmsre2WRkZGTQ1DYg/JYGiUiTm1ugBAC9IfHPiEmDpFITE7fqJI/H27lmzZpDq5LWtz55t6wUXO3ihMYerK+vz2tpaUFaM0yT8tL81ujYle+TSCTrvEunBU9/voTLd92wYcPHVCqV39XVdXCu7+oYCp1O90Kc50Jk3I5+xVcv1jc3N5d4enpSMzIyvkpK3sh78nORsKg3++yPBS/q1q+hKCm61DSekERGJ3ikp6d/ERsbm1xVVXWwtbX1hRFtFAqFPMLMUyZsDyoQCI7LZDKIiIjwzczM/GpV0vro2TTsRSUqZoX3+vXrP1u9enXi0NAQiESirIdRtggIc5oJ40zq6uryGhoa8ry8vBJCQ0O9USjU94mrN7yWc+EnvaXb5gJMvxCMp6cnl0Kh2Le1tZVXXLs8L1LXefGrWRkZGZ/x+XyeUqkEkUh0vqenZ14HZyG8OEwoJjdrygd37NxTEBkZmWBtbQ3BwcEeKBTq+/UbX3/355Pfzlmn66qk9dGbN29+k8PhbCSRSNDZ2Snb9ae/HCkpKTksEhbN2QTD5NSX+Vu3bj0cHBzsjcFg4O7du1BWVvbNwxB9BIQ5j94I2Fu3bhXW19cDl8sFLBYLHA7Hg0wmf/e77e84ffXlPz6fLSMnQ2paZkJ4eHjmtm3b+B4eHvZkMhlQKBTY29s72dvbfxgUFJT8x7ffP1NRUfHjXErnZ/qFYKKjo7dt3rz5g8DAQPtH/XHa2tpqGhsbC55/BASEuYFeMblz505NTU3NgfDw8PcwGAygUCjw9fW1IJPJn/1130Hv0tLSI4WXL4hny9inYS+Osvbz80tgMpn8jIwMPovFch2vpoiDgwM4ODhwfH19OYsWLeJv3/Hu+cbGxquzXZz5aZYlvMRJT0/fFhkZue3JZmfd3d0gEolOIr4ShPmEXjFpkFRqXlrzSnFnZ+d7Tk5OjzNfXVxcICMjY6ezszNnVdL6vU8HWhmbgKAIkrOzMyc1NTXz0YU4maAuOp0OK1as4EVFRfGEQqHg1dfePHzr1q2rs71S8WOF4f38/BLS09M/iIyM5DxdxLq5uVlcVVU1bgVwBIS5il4xAQCQyWRigUBwJikpKe3JVGQcDgdLly7l2tranti0ecf7IpEoy9hbxX6sMDydTvdevXr1ltjY2F3u7u6AxT73FJ7B3Nwc4uLiwthsdphQKCzZkL7l0/r6+oKbNeVG90+EhMXZL1++fFtycvKHrq6uz4igUqmE5ubmEiTHCWG+8dwrUXD9imz9xtd/jIuLS7N5KpsTjUZDUFCQE4PB+F4oFGYmJW888Mv5k4UTHGpGxC9LYaenp78VEhKyxdHRESgUyoyOh0KhwNraGuLi4qIDAgKi6+rqyjekb/mHMSN6N6RvSdu+ffseNpsdZm09ftuW+vp6EIvFSB9hhHnHpG7rUqm0orW1tdXS0tLj6TIEaDQaaDQaxMfH811dXTl/3Xfw+JUrVz411J01cfWG6IiIiC07d+5McHNzs7ewMGyOFw6HAwcHB6BSqVx3d/fwz7/4rkAgEBwXCoUnHpZonDGrU9J5MTEx27du3Zrm4uKC0beaqq6u/ry+vj7XEPMiIMwmkxKTimuXZe/u+fCkp6fnexPdUfF4PPj7+1szGIydLi4unF1/+kvenTt3RG1tbRXTqfma8lIG39/fP/HVV19NZrFYHpMpzjQTzMzMwNPTE+Pp6Zng6emZ4Ofnl5CesfV8bW1tznQe3/wDwvFeXl7Rvr6+Ca+88kpaUFCQh74GXzqdDrq7u6GpqankRQmdR1hYTNrhUFVVlcXj8d6ysrKy0OfstLS0hPj4eC6Xy+U2NzeDRCI5/sa2XeX37t1rGhwc7BoYGJBN1P+FFbiE5OzszGaxWImvvvrqpoCAAKfp+ERmCpPJBCaTmcnhcDJLS0u/TE59+YxUKhXoi/lg+oVgrKysGJaWlna2trYeaWlpXDabvTMgIGDSfp2KiorzbW1tL0zoPMLCYtJX6uVfs2u++PKowMPDgz+ZIslEIhECAgKAxWJlajSazJ6eHmhra4PW1tZvtmz9o6Czs7O+r6+vfWxsbFir1WosLCzsV6xYkcnj8d7z9vaelmPV0Hh5eYGnp+f2mJiY7UVFRZ/HL0v5tru7+5ZGo1FisVg8Docj4fF4CxsbG1c+nx/m7e39sYeHB7i4uIC5ufmU6r4ODQ1BZWXlifkSrYuA8DRTumIrKytPent78728vCb9HRQKBVgsFhwcHIBOpwObzd4yNja2RaVSwdDQEHR1dcHo6CjQaDRwdXWdsWPV0KBQKPDw8AA7O7udERERO2tra2FgYACoVCo4OTkBjUYDMpkMeDz+8WuqaLVaaGxsbL19+/YzSX8ICPOFqYrJidDQ0AwvLy/e80c/CwaDARKJBI86BdJoNHB3dwe1Wj0nViL6IJPJwGQywdnZGZRKJRAIBDBUx8OBgQEoLS39BtkORpjPTJg1PB61N64pmpqarvb39xvUiLkuJE9CJpPBxsbGYEICANDZ2SlHgtQQ5jtTEhMAgLq6ulyJRFJvDGNeREZGRkAikRSUFuci2cEI85opi0l+7hmBWCzOeV6dToTJcfv27cHr168jxbgR5j1TFhMAgObm5hKZDNl0MAQtLS3Xzpw6hkS8Isx7piUmUqlUIBAIJuyjgzA5Ojs7QSKRINGuCAuCaYmJsKKw68qVK59KJJIu5HFneiiVSigqKjouEolOmtoWBARDMC0xAQC4+MvPJadOnXq3ra1N8yL0dDEkOp0OSktLy/Pz8w8+3d4CAWG+Mm0xAQA4fuy/jl+8ePGju3fvGsqeBY9Wq4XKysrWU6dOvX31yi8mKyyFgGBoZiQmAAD/79D+fadPn96PCMrz0el0UFVV1frtt9+mj9fiAgFhPjNjMQEAyMvLO3Ds2LE/tLS0INmuerh27Vr9999//xoiJAgLEYOEntbVVigB4PNNm3cMpqSkfMRms50McdyFgkqlgqKiovJTp069nZ97BhEShAWJQePYj373xdF1GzbLFQrFx6Ghob766ne8KNy7dw+KiopO5ubmfmTK4tsICMbG4EkxWT99d35l4rre/v7+D0NCQvh0Ot3QU8wL1Go1SKVSTX5+/sH8/PyDSP8bhIWOUTLsLuVklQcFR65pbGzcvnLlyvfc3NwsCASCMaaac+h0OhgaGoLq6uqaCxcu/OV01tGcTw7uM7VZCAhGx2jpug/vxAd58atzoqKitq1cuXKnvb29saabE+h0Oqiurpbm5eUdrK6uPlspuDrvY0hmO4YIhUIBGq1/X2CmNqFQKL3/79HomZ/z82xEowyy9zFr80zGDqPn/hdeviBmL47ad+fOnRsRERGbQkNDo62srIw97azT2dkJxcXFx0tKSo7Mdh8hY4LD4TDPH2U4MFjMc6tLmZmZzaj+Aw6H0/t9PB4PGCxmRudNJBL0ngeZTAI0Gj3jv+1szfM88Hic8cUEAKCmqlQOAN/ELU2qkEgkySwWK3HRokVcBoMxG9MbDZ1OB83NzdDU1FRQW1t7XiAQHJ+ovu18pbr6Rg6L5ZtoM0EhcUPT0tJW8tWRb0vQqIkvgKqqmhnVfrl2TfANXo+gjKlUio4OWc1M5sjOzjnQUH8rbqLPu3t6moaGhmfc+3q25tGHUqmECoEIUKbIrVkcEkONiIh4jcvlvu7s7OxLo9GmVe7QVCgUCujq6oKGhoaCioqKo9XV1WeM3YDMVPDik1gpyas+XrVyeaKXl8czjyANjbcgI/MNmkg49Q4ECPOH3NyC4RUr+M8IcHt7B1y9WlKRl3/5kElKnD1sfXEoJCzueEBAQGJYWFgGk8nk2djYAIFAgLm4pTw6Ogqjo6Mgl8vhxo0b50tLS4/U19fnLvS2FIWXfxEDQNLmLW9ueW1TxtchHDaQyWRTm4VgYkZHR6G+vhF+/NfP+y5e+vVjiVgwZpKVydOwF0dZW1lZOTGZTD6bzU4LCAiIptPp8HTDL1MwOjoKLS0tUFdXd1IsFudIpdKKgYGB7tloJTrX4MUnsVJTEj9etzY10dHRAQAAGm81wcsZW5CVyQInL69gNCGBjwcAGBx8ANnncypOnTr3H9nn/reD55wovvrQpyIHAHFUzIocGo3mQaPRfBwdHVlubm7bXF1dgcFgABqNNvruglwuh7t374JMJoOOjo7P79y5I+ru7m7q7e1tXQi7MzOh8PIv4pCw2DdaWtte37Au7aPIyCWAxWABjUbPif9HCMbjURtKiaQBfvr5zH9evlJ0uLQ4r/nJMXNiZTIRrMAlJAcHB18HBweWo6Mjy8rKajeJRAJLS0uwtLQECwsLoFAogMfjAYvFgpmZ2XNXMyqVCoaHh2FoaAiGh4cfvwYGBqCvrw+6u7vfvnfvXlNvb29rT09Pq0QsUM7S6c4rNqS/lrZ5U+YPRBKR9M7u9xwqBUUvtNAudH766XSLE8PR49ixE78/8tVnX403Zk7fUR46NUUAIPIPCMdTKJTdNjY2QKPRgE6nA51OB1tbWyCRSIDD4YBAIAAejwcCgfDYUajVakGlUoFarQadTvfY79HX1wf9/f0gl8tBLpfDvXv3HvXw+dxQPYYXMj+d+P7Mmzv+5OHr6/OJWq1GBHeB09TcUiKuq/coKS3/eqIx/wPkiIXC3w6YjAAAAABJRU5ErkJggg=="); + + --keyword: #ff79c6; + --identifier: #f8f8f2; + --comment: #6272a4; + --operator: #ff79c6; + --punctuation: #f8f8f2; + --other: #f8f8f2; + --escapeSequence: #bd93f9; + --number: #bd93f9; + --literal: #f1fa8c; + --program: #9090c0; + --option: #90b010; + --raw-data: #8be9fd; +} + +.theme-switch-wrapper { + display: flex; + align-items: center; +} + +.theme-switch-wrapper em { + margin-left: 10px; + font-size: 1rem; +} + +.theme-switch { + display: inline-block; + height: 22px; + position: relative; + width: 50px; +} + +.theme-switch input { + display: none; +} + +.slider { + background-color: #ccc; + bottom: 0; + cursor: pointer; + left: 0; + position: absolute; + right: 0; + top: 0; + transition: .4s; +} + +.slider:before { + background-color: #fff; + bottom: 4px; + content: ""; + height: 13px; + left: 4px; + position: absolute; + transition: .4s; + width: 13px; +} + +input:checked + .slider { + background-color: #66bb6a; +} + +input:checked + .slider:before { + transform: translateX(26px); +} + +.slider.round { + border-radius: 17px; +} + +.slider.round:before { + border-radius: 50%; +} + +html { + font-size: 100%; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; } + +body { + font-family: "Lato", "Helvetica Neue", "HelveticaNeue", Helvetica, Arial, sans-serif; + font-weight: 400; + font-size: 1.125em; + line-height: 1.5; + color: var(--text); + background-color: var(--primary-background); } + +/* Skeleton grid */ +.container { + position: relative; + width: 100%; + max-width: 1050px; + margin: 0 auto; + padding: 0; + box-sizing: border-box; } + +.column, +.columns { + width: 100%; + float: left; + box-sizing: border-box; + margin-left: 1%; +} + +.column:first-child, +.columns:first-child { + margin-left: 0; } + +.three.columns { + width: 22%; +} + +.nine.columns { + width: 77.0%; } + +.twelve.columns { + width: 100%; + margin-left: 0; } + +@media screen and (max-width: 860px) { + .three.columns { + display: none; + } + .nine.columns { + width: 98.0%; + } + body { + font-size: 1em; + line-height: 1.35; + } +} + +cite { + font-style: italic !important; } + + +/* Nim search input */ +div#searchInputDiv { + margin-bottom: 1em; +} +input#searchInput { + width: 80%; +} + +/* + * Some custom formatting for input forms. + * This also fixes input form colors on Firefox with a dark system theme on Linux. + */ +input { + -moz-appearance: none; + background-color: var(--secondary-background); + color: var(--text); + border: 1px solid var(--border); + font-family: "Lato", "Helvetica Neue", "HelveticaNeue", Helvetica, Arial, sans-serif; + font-size: 0.9em; + padding: 6px; +} + +input:focus { + border: 1px solid var(--input-focus); + box-shadow: 0 0 3px var(--input-focus); +} + +select { + -moz-appearance: none; + background-color: var(--secondary-background); + color: var(--text); + border: 1px solid var(--border); + font-family: "Lato", "Helvetica Neue", "HelveticaNeue", Helvetica, Arial, sans-serif; + font-size: 0.9em; + padding: 6px; +} + +select:focus { + border: 1px solid var(--input-focus); + box-shadow: 0 0 3px var(--input-focus); +} + +/* Docgen styles */ + +:target { + border: 2px solid #B5651D; + border-style: dotted; +} + +/* Links */ +a { + color: var(--anchor); + text-decoration: none; +} + +a span.Identifier { + text-decoration: underline; + text-decoration-color: #aab; +} + +a.reference-toplevel { + font-weight: bold; +} + +a.toc-backref { + text-decoration: none; + color: var(--text); } + +a.link-seesrc { + color: #607c9f; + font-size: 0.9em; + font-style: italic; } + +a:hover, +a:focus { + color: var(--anchor-focus); + text-decoration: underline; } + +a:hover span.Identifier { + color: var(--anchor); +} + + +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; } + +sup { + top: -0.5em; } + +sub { + bottom: -0.25em; } + +img { + width: auto; + height: auto; + max-width: 100%; + vertical-align: middle; + border: 0; + -ms-interpolation-mode: bicubic; } + +@media print { + * { + color: black !important; + text-shadow: none !important; + background: transparent !important; + box-shadow: none !important; } + + a, + a:visited { + text-decoration: underline; } + + a[href]:after { + content: " (" attr(href) ")"; } + + abbr[title]:after { + content: " (" attr(title) ")"; } + + .ir a:after, + a[href^="javascript:"]:after, + a[href^="#"]:after { + content: ""; } + + pre, + blockquote { + border: 1px solid #999; + page-break-inside: avoid; } + + thead { + display: table-header-group; } + + tr, + img { + page-break-inside: avoid; } + + img { + max-width: 100% !important; } + + @page { + margin: 0.5cm; } + + h1 { + page-break-before: always; } + + h1.title { + page-break-before: avoid; } + + p, + h2, + h3 { + orphans: 3; + widows: 3; } + + h2, + h3 { + page-break-after: avoid; } +} + + +p { + margin-top: 0.5em; + margin-bottom: 0.5em; +} + +small { + font-size: 85%; } + +strong { + font-weight: 600; + font-size: 0.95em; + color: var(--strong); +} + +em { + font-style: italic; } + +h1 { + font-size: 1.8em; + font-weight: 400; + padding-bottom: .25em; + border-bottom: 6px solid var(--third-background); + margin-top: 2.5em; + margin-bottom: 1em; + line-height: 1.2em; } + +h1.title { + padding-bottom: 1em; + border-bottom: 0px; + font-size: 2.5em; + text-align: center; + font-weight: 900; + margin-top: 0.75em; + margin-bottom: 0em; +} + +h2 { + font-size: 1.3em; + margin-top: 2em; } + +h2.subtitle { + margin-top: 0em; + text-align: center; } + +h3 { + font-size: 1.125em; + font-style: italic; + margin-top: 1.5em; } + +h4 { + font-size: 1.125em; + margin-top: 1em; } + +h5 { + font-size: 1.125em; + margin-top: 0.75em; } + +h6 { + font-size: 1.1em; } + + +ul, +ol { + padding: 0; + margin-top: 0.5em; + margin-left: 0.75em; } + +ul ul, +ul ol, +ol ol, +ol ul { + margin-bottom: 0; + margin-left: 1.25em; } + +ul.simple > li { + list-style-type: circle; +} + +ul.simple-boot li { + list-style-type: none; + margin-left: 0em; + margin-bottom: 0.5em; +} + +ol.simple > li, ul.simple > li { + margin-bottom: 0.2em; + margin-left: 0.4em } + +ul.simple.simple-toc > li { + margin-top: 1em; +} + +ul.simple-toc { + list-style: none; + font-size: 0.9em; + margin-left: -0.3em; + margin-top: 1em; } + +ul.simple-toc > li { + list-style-type: none; +} + +ul.simple-toc-section { + list-style-type: circle; + margin-left: 0.8em; + color: #6c9aae; } + +ul.nested-toc-section { + list-style-type: circle; + margin-left: -0.75em; + color: var(--text); +} + +ul.nested-toc-section > li { + margin-left: 1.25em; +} + + +ol.arabic { + list-style: decimal; } + +ol.loweralpha { + list-style: lower-alpha; } + +ol.upperalpha { + list-style: upper-alpha; } + +ol.lowerroman { + list-style: lower-roman; } + +ol.upperroman { + list-style: upper-roman; } + +ul.auto-toc { + list-style-type: none; } + + +dl { + margin-bottom: 1.5em; } + +dt { + margin-bottom: -0.5em; + margin-left: 0.0em; } + +dd { + margin-left: 2.0em; + margin-bottom: 3.0em; + margin-top: 0.5em; } + + +hr { + margin: 2em 0; + border: 0; + border-top: 1px solid #aaa; } + +hr.footnote { + width: 25%; + border-top: 0.15em solid #999; + margin-bottom: 0.15em; + margin-top: 0.15em; +} +div.footnote-group { + margin-left: 1em; } +div.footnote-label { + display: inline-block; + min-width: 1.7em; +} + +div.option-list { + border: 0.1em solid var(--border); +} +div.option-list-item { + padding-left: 12em; + padding-right: 0; + padding-bottom: 0.3em; + padding-top: 0.3em; +} +div.odd { + background-color: var(--secondary-background); +} +div.option-list-label { + margin-left: -11.5em; + margin-right: 0em; + min-width: 11.5em; + display: inline-block; + vertical-align: top; +} +div.option-list-description { + width: calc(100% - 1em); + padding-left: 1em; + padding-right: 0; + display: inline-block; +} + +blockquote { + font-size: 0.9em; + font-style: italic; + padding-left: 0.5em; + margin-left: 0; + border-left: 5px solid #bbc; +} + +.pre, span.tok { + font-family: "Source Code Pro", Monaco, Menlo, Consolas, "Courier New", monospace; + font-weight: 500; + font-size: 0.85em; + color: var(--text); + background-color: var(--third-background); + padding-left: 3px; + padding-right: 3px; + border-radius: 4px; +} + +span.tok { + border: 1px solid #808080; + padding-bottom: 0.1em; + margin-right: 0.2em; +} + +pre { + font-family: "Source Code Pro", Monaco, Menlo, Consolas, "Courier New", monospace; + color: var(--text); + font-weight: 500; + display: inline-block; + box-sizing: border-box; + min-width: 100%; + padding: 0.5em; + margin-top: 0.5em; + margin-bottom: 0.5em; + font-size: 0.85em; + white-space: pre !important; + overflow-y: hidden; + overflow-x: visible; + background-color: var(--secondary-background); + border: 1px solid var(--border); + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; } + +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; } + + +/* Nim line-numbered tables */ +.line-nums-table { + width: 100%; + table-layout: fixed; } + +table.line-nums-table { + border-radius: 4px; + border: 1px solid #cccccc; + background-color: ghostwhite; + border-collapse: separate; + margin-top: 15px; + margin-bottom: 25px; } + +.line-nums-table tbody { + border: none; } + +.line-nums-table td pre { + border: none; + background-color: transparent; } + +.line-nums-table td.blob-line-nums { + width: 28px; } + +.line-nums-table td.blob-line-nums pre { + color: #b0b0b0; + -webkit-filter: opacity(75%); + filter: opacity(75%); + text-align: right; + border-color: transparent; + background-color: transparent; + padding-left: 0px; + margin-left: 0px; + padding-right: 0px; + margin-right: 0px; } + + +table { + max-width: 100%; + background-color: transparent; + margin-top: 0.5em; + margin-bottom: 1.5em; + border-collapse: collapse; + border-color: var(--third-background); + border-spacing: 0; + font-size: 0.9em; +} + +table th, table td { + padding: 0px 0.5em 0px; + border-color: var(--third-background); +} + +table th { + background-color: var(--third-background); + border-color: var(--third-background); + font-weight: bold; } + +table th.docinfo-name { + background-color: transparent; + text-align: right; +} + +table tr:hover { + background-color: var(--third-background); } + + +/* rst2html default used to remove borders from tables and images */ +.borderless, table.borderless td, table.borderless th { + border: 0; } + +table.borderless td, table.borderless th { + /* Override padding for "table.docutils td" with "! important". + The right padding separates the table cells. */ + padding: 0 0.5em 0 0 !important; } + +.admonition { + padding: 0.3em; + background-color: var(--secondary-background); + border-left: 0.4em solid #7f7f84; + margin-bottom: 0.5em; + -webkit-box-shadow: 0 5px 8px -6px rgba(0,0,0,.2); + -moz-box-shadow: 0 5px 8px -6px rgba(0,0,0,.2); + box-shadow: 0 5px 8px -6px rgba(0,0,0,.2); +} +.admonition-info { + border-color: var(--info-background); +} +.admonition-info-text { + color: var(--info-background); +} +.admonition-warning { + border-color: var(--warning-background); +} +.admonition-warning-text { + color: var(--warning-background); +} +.admonition-error { + border-color: var(--error-background); +} +.admonition-error-text { + color: var(--error-background); +} + +.first { + /* Override more specific margin styles with "! important". */ + margin-top: 0 !important; } + +.last, .with-subtitle { + margin-bottom: 0 !important; } + +.hidden { + display: none; } + +blockquote.epigraph { + margin: 2em 5em; } + +dl.docutils dd { + margin-bottom: 0.5em; } + +object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] { + overflow: hidden; } + + +div.figure { + margin-left: 2em; + margin-right: 2em; } + +div.footer, div.header { + clear: both; + text-align: center; + color: #666; + font-size: smaller; } + +div.footer { + padding-top: 5em; +} + +div.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; } + +div.line-block div.line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; } + +div.topic { + margin: 2em; } + +div.search_results { + background-color: var(--third-background); + margin: 3em; + padding: 1em; + border: 1px solid #4d4d4d; +} + +div#global-links ul { + margin-left: 0; + list-style-type: none; +} + +div#global-links > simple-boot { + margin-left: 3em; +} + +hr.docutils { + width: 75%; } + +img.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; } + +img.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; } + +img.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; } + +.align-left { + text-align: left; } + +.align-center { + clear: both; + text-align: center; } + +.align-right { + text-align: right; } + +/* reset inner alignment in figures */ +div.align-right { + text-align: inherit; } + +p.attribution { + text-align: right; + margin-left: 50%; } + +p.caption { + font-style: italic; } + +p.credits { + font-style: italic; + font-size: smaller; } + +p.label { + white-space: nowrap; } + +p.rubric { + font-weight: bold; + font-size: larger; + color: maroon; + text-align: center; } + +p.topic-title { + font-weight: bold; } + +pre.address { + margin-bottom: 0; + margin-top: 0; + font: inherit; } + +pre.literal-block, pre.doctest-block, pre.math, pre.code { + margin-left: 2em; + margin-right: 2em; } + +pre.code .ln { + color: grey; } + +/* line numbers */ +pre.code, code { + background-color: #eeeeee; } + +pre.code .comment, code .comment { + color: #5c6576; } + +pre.code .keyword, code .keyword { + color: #3B0D06; + font-weight: bold; } + +pre.code .literal.string, code .literal.string { + color: #0c5404; } + +pre.code .name.builtin, code .name.builtin { + color: #352b84; } + +pre.code .deleted, code .deleted { + background-color: #DEB0A1; } + +pre.code .inserted, code .inserted { + background-color: #A3D289; } + +span.classifier { + font-style: oblique; } + +span.classifier-delimiter { + font-weight: bold; } + +span.problematic { + color: #b30000; } + +span.section-subtitle { + /* font-size relative to parent (h1..h6 element) */ + font-size: 80%; } + +span.DecNumber { + color: var(--number); } + +span.BinNumber { + color: var(--number); } + +span.HexNumber { + color: var(--number); } + +span.OctNumber { + color: var(--number); } + +span.FloatNumber { + color: var(--number); } + +span.Identifier { + color: var(--identifier); } + +span.Keyword { + font-weight: 600; + color: var(--keyword); } + +span.StringLit { + color: var(--literal); } + +span.LongStringLit { + color: var(--literal); } + +span.CharLit { + color: var(--literal); } + +span.EscapeSequence { + color: var(--escapeSequence); } + +span.Operator { + color: var(--operator); } + +span.Punctuation { + color: var(--punctuation); } + +span.Comment, span.LongComment { + font-style: italic; + font-weight: 400; + color: var(--comment); } + +span.RegularExpression { + color: darkviolet; } + +span.TagStart { + color: darkviolet; } + +span.TagEnd { + color: darkviolet; } + +span.Key { + color: #252dbe; } + +span.Value { + color: #252dbe; } + +span.RawData { + color: var(--raw-data); } + +span.Assembler { + color: #252dbe; } + +span.Preprocessor { + color: #252dbe; } + +span.Directive { + color: #252dbe; } + +span.option { + font-weight: bold; + font-family: "Source Code Pro", Monaco, Menlo, Consolas, "Courier New", monospace; + color: var(--option); +} + +span.Prompt { + font-weight: bold; + color: red; } + +span.ProgramOutput { + font-weight: bold; + color: #808080; } + +span.program { + font-weight: bold; + color: var(--program); + text-decoration: underline; + text-decoration-color: var(--hint); + text-decoration-thickness: 0.05em; + text-underline-offset: 0.15em; +} + +span.Command, span.Rule, span.Hyperlink, span.Label, span.Reference, +span.Other { + color: var(--other); } + +/* Pop type, const, proc, and iterator defs in nim def blocks */ +dt pre > span.Identifier, dt pre > span.Operator { + color: var(--identifier); + font-weight: 700; } + +dt pre > span.Keyword ~ span.Identifier, dt pre > span.Identifier ~ span.Identifier, +dt pre > span.Operator ~ span.Identifier, dt pre > span.Other ~ span.Identifier { + color: var(--identifier); + font-weight: inherit; } + +/* Nim sprite for the footer (taken from main page favicon) */ +.nim-sprite { + display: inline-block; + width: 51px; + height: 14px; + background-position: 0 0; + background-size: 51px 14px; + -webkit-filter: opacity(50%); + filter: opacity(50%); + background-repeat: no-repeat; + background-image: var(--nim-sprite-base64); + margin-bottom: 5px; } + +span.pragmadots { + /* Position: relative frees us up to make the dots + look really nice without fucking up the layout and + causing bulging in the parent container */ + position: relative; + /* 1px down looks slightly nicer */ + top: 1px; + padding: 2px; + background-color: var(--third-background); + border-radius: 4px; + margin: 0 2px; + cursor: pointer; + font-size: 0.8em; +} + +span.pragmadots:hover { + background-color: var(--hint); +} +span.pragmawrap { + display: none; +} + +span.attachedType { + display: none; + visibility: hidden; +} diff --git a/ugh/ugh.html b/ugh/ugh.html new file mode 100644 index 00000000..f8375b7f --- /dev/null +++ b/ugh/ugh.html @@ -0,0 +1,1303 @@ +<?xml version="1.0" encoding="utf-8" ?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!-- This file is generated by Nim. --> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + +<meta name="viewport" content="width=device-width, initial-scale=1.0"> + +<!-- Favicon --> +<link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA=="/> +<link rel="icon" type="image/png" sizes="32x32" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QQQEwksSS9ZWwAAAk1JREFUWMPtll2ITVEUx39nn/O7Y5qR8f05wtCUUr6ZIS++8pEnkZInPImneaCQ5METNdOkeFBKUhMPRIkHKfEuUZSUlGlKPN2TrgfncpvmnntnmlEyq1Z7t89/rf9a6+y99oZxGZf/XeIq61EdtgKXgdXA0xrYAvBjOIF1AI9zvjcC74BSpndrJPkBWDScTF8Aa4E3wDlgHbASaANmVqlcCnwHvgDvgVfAJ+AikAAvgfVZwLnSVZHZaOuKoQi3ZOMi4NkYkpe1p4J7A8BpYAD49hfIy/oqG0+hLomiKP2L5L+1ubn5115S+3OAn4EnwBlgMzCjyt6ZAnQCJ4A7wOs88iRJHvw50HoujuPBoCKwHWiosy8MdfZnAdcHk8dxXFJ3VQbQlCTJvRBCGdRbD4M6uc5glpY3eAihpN5S5w12diSEcCCEcKUO4ljdr15T76ur1FDDLIQQ3qv71EdDOe3Kxj3leRXyk+pxdWnFWod6Wt2bY3de3aSuUHcPBVimHs7mK9WrmeOF6lR1o9qnzskh2ar2qm1qizpfXaPeVGdlmGN5pb09qMxz1Xb1kLqgzn1RyH7JUXW52lr5e/Kqi9qpto7V1atuUzfnARrV7jEib1T76gG2qxdGmXyiekkt1GswPTtek0aBfJp6YySGBfWg2tPQ0FAYgf1stUfdmdcjarbYJEniKIq6gY/Aw+zWHAC+p2labGpqiorFYgGYCEzN7oQdQClN07O1/EfDyGgC0ALMBdYAi4FyK+4H3gLPsxfR1zRNi+NP7nH5J+QntnXe5B5mpfQAAAAASUVORK5CYII="> + +<!-- Google fonts --> +<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/> +<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/> + +<!-- CSS --> +<title>src/regex</title> +<link rel="stylesheet" type="text/css" href="nimdoc.out.css"> + +<script type="text/javascript" src="dochack.js"></script> + +<script type="text/javascript"> +function main() { + var pragmaDots = document.getElementsByClassName("pragmadots"); + for (var i = 0; i < pragmaDots.length; i++) { + pragmaDots[i].onclick = function(event) { + // Hide tease + event.target.parentNode.style.display = "none"; + // Show actual + event.target.parentNode.nextElementSibling.style.display = "inline"; + } + } + + function switchTheme(e) { + if (e.target.checked) { + document.documentElement.setAttribute('data-theme', 'dark'); + localStorage.setItem('theme', 'dark'); + } else { + document.documentElement.setAttribute('data-theme', 'light'); + localStorage.setItem('theme', 'light'); + } + } + + const toggleSwitch = document.querySelector('.theme-switch input[type="checkbox"]'); + if (toggleSwitch !== null) { + toggleSwitch.addEventListener('change', switchTheme, false); + } + + var currentTheme = localStorage.getItem('theme'); + if (!currentTheme && window.matchMedia('(prefers-color-scheme: dark)').matches) { + currentTheme = 'dark'; + } + if (currentTheme) { + document.documentElement.setAttribute('data-theme', currentTheme); + + if (currentTheme === 'dark' && toggleSwitch !== null) { + toggleSwitch.checked = true; + } + } +} + +window.addEventListener('DOMContentLoaded', main); +</script> + +</head> +<body> +<div class="document" id="documentId"> + <div class="container"> + <h1 class="title">src/regex</h1> + <div class="row"> + <div class="three columns"> + <div class="theme-switch-wrapper"> + <label class="theme-switch" for="checkbox"> + <input type="checkbox" id="checkbox" /> + <div class="slider round"></div> + </label> + <em>Dark Mode</em> + </div> + <div id="global-links"> + <ul class="simple"> + <li> + <a href="theindex.html">Index</a> + </li> + </ul> + </div> + <div id="searchInputDiv"> + Search: <input type="text" id="searchInput" + onkeyup="search()" /> + </div> + <div> + Group by: + <select onchange="groupBy(this.value)"> + <option value="section">Section</option> + <option value="type">Type</option> + </select> + </div> + <ul class="simple simple-toc" id="toc-list"> +<li><a class="reference" id="syntax_toc" href="#syntax">Syntax</a></li> +<ul class="simple"><li><a class="reference" id="syntax-matching-one-character_toc" href="#syntax-matching-one-character">Matching one character</a></li> +<li><a class="reference" id="syntax-character-classes_toc" href="#syntax-character-classes">Character classes</a></li> +<li><a class="reference" id="syntax-composites_toc" href="#syntax-composites">Composites</a></li> +<li><a class="reference" id="syntax-repetitions_toc" href="#syntax-repetitions">Repetitions</a></li> +<li><a class="reference" id="syntax-empty-matches_toc" href="#syntax-empty-matches">Empty matches</a></li> +<li><a class="reference" id="syntax-grouping-and-flags_toc" href="#syntax-grouping-and-flags">Grouping and flags</a></li> +<li><a class="reference" id="syntax-escape-sequences_toc" href="#syntax-escape-sequences">Escape sequences</a></li> +<li><a class="reference" id="syntax-perl-character-classes-unicode-friendly_toc" href="#syntax-perl-character-classes-unicode-friendly">Perl character classes (Unicode friendly)</a></li> +<li><a class="reference" id="syntax-ascii-character-classes_toc" href="#syntax-ascii-character-classes">ASCII character classes</a></li> +<li><a class="reference" id="syntax-lookaround-assertions_toc" href="#syntax-lookaround-assertions">Lookaround Assertions</a></li> +</ul><li><a class="reference" id="examples_toc" href="#examples">Examples</a></li> +<ul class="simple"><li><a class="reference" id="examples-match_toc" href="#examples-match">Match</a></li> +<li><a class="reference" id="examples-captures_toc" href="#examples-captures">Captures</a></li> +<li><a class="reference" id="examples-find_toc" href="#examples-find">Find</a></li> +<li><a class="reference" id="examples-find-all_toc" href="#examples-find-all">Find All</a></li> +<li><a class="reference" id="examples-verbose-mode_toc" href="#examples-verbose-mode">Verbose Mode</a></li> +<li><a class="reference" id="examples-match-macro_toc" href="#examples-match-macro">Match Macro</a></li> +<li><a class="reference" id="examples-invalid-utfminus8-input-text_toc" href="#examples-invalid-utfminus8-input-text">Invalid UTF-8 input text</a></li> +<li><a class="reference" id="examples-match-arbitrary-bytes_toc" href="#examples-match-arbitrary-bytes">Match arbitrary bytes</a></li> +</ul><li> + <a class="reference reference-toplevel" href="#6" id="56">Imports</a> + <ul class="simple simple-toc-section"> + + </ul> +</li> +<li> + <a class="reference reference-toplevel" href="#10" id="60">Consts</a> + <ul class="simple simple-toc-section"> + <li><a class="reference" href="#reNonCapture" + title="reNonCapture = (a: -1, b: -2)">reNonCapture</a></li> + + </ul> +</li> +<li> + <a class="reference reference-toplevel" href="#12" id="62">Procs</a> + <ul class="simple simple-toc-section"> + <ul class="simple nested-toc-section">contains + <li><a class="reference" href="#contains%2Cstring%2CRegex" + title="contains(s: string; pattern: Regex): bool">contains(s: string; pattern: Regex): bool</a></li> + <li><a class="reference" href="#contains%2Cstring%2CRegex2" + title="contains(s: string; pattern: Regex2): bool">contains(s: string; pattern: Regex2): bool</a></li> + + </ul> + <ul class="simple nested-toc-section">endsWith + <li><a class="reference" href="#endsWith%2Cstring%2CRegex" + title="endsWith(s: string; pattern: Regex): bool">endsWith(s: string; pattern: Regex): bool</a></li> + <li><a class="reference" href="#endsWith%2Cstring%2CRegex2" + title="endsWith(s: string; pattern: Regex2): bool">endsWith(s: string; pattern: Regex2): bool</a></li> + + </ul> + <ul class="simple nested-toc-section">escapeRe + <li><a class="reference" href="#escapeRe%2Cstring" + title="escapeRe(s: string): string">escapeRe(s: string): string</a></li> + + </ul> + <ul class="simple nested-toc-section">find + <li><a class="reference" href="#find%2Cstring%2CRegex2%2CRegexMatch2%2Cint" + title="find(s: string; pattern: Regex2; m: var RegexMatch2; start = 0): bool">find(s: string; pattern: Regex2; m: var RegexMatch2; start = 0): bool</a></li> + <li><a class="reference" href="#find%2Cstring%2CRegex%2CRegexMatch%2Cint" + title="find(s: string; pattern: Regex; m: var RegexMatch; start = 0): bool">find(s: string; pattern: Regex; m: var RegexMatch; start = 0): bool</a></li> + + </ul> + <ul class="simple nested-toc-section">findAll + <li><a class="reference" href="#findAll%2Cstring%2CRegex2%2Cint" + title="findAll(s: string; pattern: Regex2; start = 0): seq[RegexMatch2]">findAll(s: string; pattern: Regex2; start = 0): seq[RegexMatch2]</a></li> + <li><a class="reference" href="#findAll%2Cstring%2CRegex%2Cint" + title="findAll(s: string; pattern: Regex; start = 0): seq[RegexMatch]">findAll(s: string; pattern: Regex; start = 0): seq[RegexMatch]</a></li> + + </ul> + <ul class="simple nested-toc-section">findAllBounds + <li><a class="reference" href="#findAllBounds%2Cstring%2CRegex2%2Cint" + title="findAllBounds(s: string; pattern: Regex2; start = 0): seq[Slice[int]]">findAllBounds(s: string; pattern: Regex2; start = 0): seq[Slice[int]]</a></li> + <li><a class="reference" href="#findAllBounds%2Cstring%2CRegex%2Cint" + title="findAllBounds(s: string; pattern: Regex; start = 0): seq[Slice[int]]">findAllBounds(s: string; pattern: Regex; start = 0): seq[Slice[int]]</a></li> + + </ul> + <ul class="simple nested-toc-section">findAndCaptureAll + <li><a class="reference" href="#findAndCaptureAll%2Cstring%2CRegex" + title="findAndCaptureAll(s: string; pattern: Regex): seq[string]">findAndCaptureAll(s: string; pattern: Regex): seq[string]</a></li> + + </ul> + <ul class="simple nested-toc-section">group + <li><a class="reference" href="#group%2CRegexMatch2%2Cint" + title="group(m: RegexMatch2; i: int): Slice[int]">group(m: RegexMatch2; i: int): Slice[int]</a></li> + <li><a class="reference" href="#group%2CRegexMatch2%2Cstring" + title="group(m: RegexMatch2; s: string): Slice[int]">group(m: RegexMatch2; s: string): Slice[int]</a></li> + <li><a class="reference" href="#group%2CRegexMatch%2Cstring%2Cstring" + title="group(m: RegexMatch; groupName: string; text: string): seq[string]">group(m: RegexMatch; groupName: string; text: string): seq[string]</a></li> + <li><a class="reference" href="#group%2CRegexMatch%2Cint" + title="group(m: RegexMatch; i: int): seq[Slice[int]]">group(m: RegexMatch; i: int): seq[Slice[int]]</a></li> + <li><a class="reference" href="#group%2CRegexMatch%2Cint%2Cstring" + title="group(m: RegexMatch; i: int; text: string): seq[string]">group(m: RegexMatch; i: int; text: string): seq[string]</a></li> + <li><a class="reference" href="#group%2CRegexMatch%2Cstring" + title="group(m: RegexMatch; s: string): seq[Slice[int]]">group(m: RegexMatch; s: string): seq[Slice[int]]</a></li> + + </ul> + <ul class="simple nested-toc-section">groupFirstCapture + <li><a class="reference" href="#groupFirstCapture%2CRegexMatch%2Cstring%2Cstring" + title="groupFirstCapture(m: RegexMatch; groupName: string; text: string): string">groupFirstCapture(m: RegexMatch; groupName: string; text: string): string</a></li> + <li><a class="reference" href="#groupFirstCapture%2CRegexMatch%2Cint%2Cstring" + title="groupFirstCapture(m: RegexMatch; i: int; text: string): string">groupFirstCapture(m: RegexMatch; i: int; text: string): string</a></li> + + </ul> + <ul class="simple nested-toc-section">groupLastCapture + <li><a class="reference" href="#groupLastCapture%2CRegexMatch%2Cstring%2Cstring" + title="groupLastCapture(m: RegexMatch; groupName: string; text: string): string">groupLastCapture(m: RegexMatch; groupName: string; text: string): string</a></li> + <li><a class="reference" href="#groupLastCapture%2CRegexMatch%2Cint%2Cstring" + title="groupLastCapture(m: RegexMatch; i: int; text: string): string">groupLastCapture(m: RegexMatch; i: int; text: string): string</a></li> + + </ul> + <ul class="simple nested-toc-section">groupNames + <li><a class="reference" href="#groupNames%2CRegexMatch" + title="groupNames(m: RegexMatch): seq[string]">groupNames(m: RegexMatch): seq[string]</a></li> + <li><a class="reference" href="#groupNames%2CRegexMatch2" + title="groupNames(m: RegexMatch2): seq[string]">groupNames(m: RegexMatch2): seq[string]</a></li> + + </ul> + <ul class="simple nested-toc-section">groupsCount + <li><a class="reference" href="#groupsCount%2CRegexMatch" + title="groupsCount(m: RegexMatch): int">groupsCount(m: RegexMatch): int</a></li> + <li><a class="reference" href="#groupsCount%2CRegexMatch2" + title="groupsCount(m: RegexMatch2): int">groupsCount(m: RegexMatch2): int</a></li> + + </ul> + <ul class="simple nested-toc-section">isInitialized + <li><a class="reference" href="#isInitialized%2CRegex" + title="isInitialized(re: Regex): bool">isInitialized(re: Regex): bool</a></li> + <li><a class="reference" href="#isInitialized%2CRegex2" + title="isInitialized(re: Regex2): bool">isInitialized(re: Regex2): bool</a></li> + + </ul> + <ul class="simple nested-toc-section">match + <li><a class="reference" href="#match%2Cstring%2CRegex" + title="match(s: string; pattern: Regex): bool">match(s: string; pattern: Regex): bool</a></li> + <li><a class="reference" href="#match%2Cstring%2CRegex2" + title="match(s: string; pattern: Regex2): bool">match(s: string; pattern: Regex2): bool</a></li> + <li><a class="reference" href="#match%2Cstring%2CRegex2%2CRegexMatch2%2Cint" + title="match(s: string; pattern: Regex2; m: var RegexMatch2; start = 0): bool">match(s: string; pattern: Regex2; m: var RegexMatch2; start = 0): bool</a></li> + <li><a class="reference" href="#match%2Cstring%2CRegex%2CRegexMatch%2Cint" + title="match(s: string; pattern: Regex; m: var RegexMatch; start = 0): bool">match(s: string; pattern: Regex; m: var RegexMatch; start = 0): bool</a></li> + + </ul> + <ul class="simple nested-toc-section">re + <li><a class="reference" href="#re%2Cstaticstring" + title="re(s: static string): static[Regex]">re(s: static string): static[Regex]</a></li> + <li><a class="reference" href="#re%2Cstring" + title="re(s: string): Regex">re(s: string): Regex</a></li> + + </ul> + <ul class="simple nested-toc-section">re2 + <li><a class="reference" href="#re2%2Cstaticstring%2CstaticRegexFlags" + title="re2(s: static string; flags: static RegexFlags = {}): static[Regex2]">re2(s: static string; flags: static RegexFlags = {}): static[Regex2]</a></li> + <li><a class="reference" href="#re2%2Cstring%2CRegexFlags" + title="re2(s: string; flags: RegexFlags = {}): Regex2">re2(s: string; flags: RegexFlags = {}): Regex2</a></li> + + </ul> + <ul class="simple nested-toc-section">replace + <li><a class="reference" href="#replace%2Cstring%2CRegex2%2Cproc%28RegexMatch2%2Cstring%29%2Cint" + title="replace(s: string; pattern: Regex2; + by: proc (m: RegexMatch2; s: string): string; limit = 0): string">replace(s: string; pattern: Regex2; + by: proc (m: RegexMatch2; s: string): string; limit = 0): string</a></li> + <li><a class="reference" href="#replace%2Cstring%2CRegex2%2Cstring%2Cint" + title="replace(s: string; pattern: Regex2; by: string; limit = 0): string">replace(s: string; pattern: Regex2; by: string; limit = 0): string</a></li> + <li><a class="reference" href="#replace%2Cstring%2CRegex%2Cproc%28RegexMatch%2Cstring%29%2Cint" + title="replace(s: string; pattern: Regex; by: proc (m: RegexMatch; s: string): string; + limit = 0): string">replace(s: string; pattern: Regex; by: proc (m: RegexMatch; s: string): string; + limit = 0): string</a></li> + <li><a class="reference" href="#replace%2Cstring%2CRegex%2Cstring%2Cint" + title="replace(s: string; pattern: Regex; by: string; limit = 0): string">replace(s: string; pattern: Regex; by: string; limit = 0): string</a></li> + + </ul> + <ul class="simple nested-toc-section">rex + <li><a class="reference" href="#rex%2Cstring" + title="rex(s: string): RegexLit">rex(s: string): RegexLit</a></li> + + </ul> + <ul class="simple nested-toc-section">split + <li><a class="reference" href="#split%2Cstring%2CRegex" + title="split(s: string; sep: Regex): seq[string]">split(s: string; sep: Regex): seq[string]</a></li> + <li><a class="reference" href="#split%2Cstring%2CRegex2" + title="split(s: string; sep: Regex2): seq[string]">split(s: string; sep: Regex2): seq[string]</a></li> + + </ul> + <ul class="simple nested-toc-section">splitIncl + <li><a class="reference" href="#splitIncl%2Cstring%2CRegex" + title="splitIncl(s: string; sep: Regex): seq[string]">splitIncl(s: string; sep: Regex): seq[string]</a></li> + <li><a class="reference" href="#splitIncl%2Cstring%2CRegex2" + title="splitIncl(s: string; sep: Regex2): seq[string]">splitIncl(s: string; sep: Regex2): seq[string]</a></li> + + </ul> + <ul class="simple nested-toc-section">startsWith + <li><a class="reference" href="#startsWith%2Cstring%2CRegex2%2Cint" + title="startsWith(s: string; pattern: Regex2; start = 0): bool">startsWith(s: string; pattern: Regex2; start = 0): bool</a></li> + <li><a class="reference" href="#startsWith%2Cstring%2CRegex%2Cint" + title="startsWith(s: string; pattern: Regex; start = 0): bool">startsWith(s: string; pattern: Regex; start = 0): bool</a></li> + + </ul> + <ul class="simple nested-toc-section">toPattern + <li><a class="reference" href="#toPattern%2Cstring" + title="toPattern(s: string): Regex">toPattern(s: string): Regex</a></li> + + </ul> + + </ul> +</li> +<li> + <a class="reference reference-toplevel" href="#15" id="65">Iterators</a> + <ul class="simple simple-toc-section"> + <ul class="simple nested-toc-section">findAll + <li><a class="reference" href="#findAll.i%2Cstring%2CRegex2%2Cint" + title="findAll(s: string; pattern: Regex2; start = 0): RegexMatch2">findAll(s: string; pattern: Regex2; start = 0): RegexMatch2</a></li> + <li><a class="reference" href="#findAll.i%2Cstring%2CRegex%2Cint" + title="findAll(s: string; pattern: Regex; start = 0): RegexMatch">findAll(s: string; pattern: Regex; start = 0): RegexMatch</a></li> + + </ul> + <ul class="simple nested-toc-section">findAllBounds + <li><a class="reference" href="#findAllBounds.i%2Cstring%2CRegex2%2Cint" + title="findAllBounds(s: string; pattern: Regex2; start = 0): Slice[int]">findAllBounds(s: string; pattern: Regex2; start = 0): Slice[int]</a></li> + <li><a class="reference" href="#findAllBounds.i%2Cstring%2CRegex%2Cint" + title="findAllBounds(s: string; pattern: Regex; start = 0): Slice[int]">findAllBounds(s: string; pattern: Regex; start = 0): Slice[int]</a></li> + + </ul> + <ul class="simple nested-toc-section">group + <li><a class="reference" href="#group.i%2CRegexMatch%2Cint" + title="group(m: RegexMatch; i: int): Slice[int]">group(m: RegexMatch; i: int): Slice[int]</a></li> + <li><a class="reference" href="#group.i%2CRegexMatch%2Cstring" + title="group(m: RegexMatch; s: string): Slice[int]">group(m: RegexMatch; s: string): Slice[int]</a></li> + + </ul> + <ul class="simple nested-toc-section">split + <li><a class="reference" href="#split.i%2Cstring%2CRegex" + title="split(s: string; sep: Regex): string">split(s: string; sep: Regex): string</a></li> + <li><a class="reference" href="#split.i%2Cstring%2CRegex2" + title="split(s: string; sep: Regex2): string">split(s: string; sep: Regex2): string</a></li> + + </ul> + + </ul> +</li> +<li> + <a class="reference reference-toplevel" href="#17" id="67">Macros</a> + <ul class="simple simple-toc-section"> + <ul class="simple nested-toc-section">match + <li><a class="reference" href="#match.m%2Cstring%2CRegexLit%2Cuntyped" + title="match(text: string; regex: RegexLit; body: untyped): untyped">match(text: string; regex: RegexLit; body: untyped): untyped</a></li> + + </ul> + + </ul> +</li> +<li> + <a class="reference reference-toplevel" href="#19" id="69">Exports</a> + <ul class="simple simple-toc-section"> + + </ul> +</li> + +</ul> + + </div> + + <div class="nine columns" id="content"> + <div id="tocRoot"></div> + + <p class="module-desc">A library for parsing, compiling, and executing regular expressions. The match time is linear in the length of the text and the regular expression. So, it can handle input from untrusted users. The syntax is similar to PCRE but lacks a few features that can not be implemented while keeping the space/time complexity guarantees, ex: backreferences. +<h1><a class="toc-backref" id="syntax" href="#syntax">Syntax</a></h1> +<h2><a class="toc-backref" id="syntax-matching-one-character" href="#syntax-matching-one-character">Matching one character</a></h2><pre class="listing"><span class="Operator">.</span> <span class="Identifier">any</span> <span class="Identifier">character</span> <span class="Keyword">except</span> <span class="Identifier">new</span> <span class="Identifier">line</span> <span class="Punctuation">(</span><span class="Identifier">includes</span> <span class="Identifier">new</span> <span class="Identifier">line</span> <span class="Identifier">with</span> <span class="Identifier">s</span> <span class="Identifier">flag</span><span class="Punctuation">)</span> +<span class="Operator">\</span><span class="Identifier">d</span> <span class="Identifier">digit</span> <span class="Punctuation">(</span><span class="Operator">\</span><span class="Identifier">p</span><span class="Punctuation">{</span><span class="Identifier">Nd</span><span class="Punctuation">}</span><span class="Punctuation">)</span> +<span class="Operator">\</span><span class="Identifier">D</span> <span class="Keyword">not</span> <span class="Identifier">digit</span> +<span class="Operator">\</span><span class="Identifier">pN</span> <span class="Identifier">One</span><span class="Operator">-</span><span class="Identifier">letter</span> <span class="Identifier">name</span> <span class="Identifier">Unicode</span> <span class="Identifier">character</span> <span class="Identifier">class</span> +<span class="Operator">\</span><span class="Identifier">p</span><span class="Punctuation">{</span><span class="Identifier">Greek</span><span class="Punctuation">}</span> <span class="Identifier">Unicode</span> <span class="Identifier">character</span> <span class="Identifier">class</span> <span class="Punctuation">(</span><span class="Identifier">general</span> <span class="Identifier">category</span> <span class="Keyword">or</span> <span class="Identifier">script</span><span class="Punctuation">)</span> +<span class="Operator">\</span><span class="Identifier">PN</span> <span class="Identifier">Negated</span> <span class="Identifier">one</span><span class="Operator">-</span><span class="Identifier">letter</span> <span class="Identifier">name</span> <span class="Identifier">Unicode</span> <span class="Identifier">character</span> <span class="Identifier">class</span> +<span class="Operator">\</span><span class="Identifier">P</span><span class="Punctuation">{</span><span class="Identifier">Greek</span><span class="Punctuation">}</span> <span class="Identifier">negated</span> <span class="Identifier">Unicode</span> <span class="Identifier">character</span> <span class="Identifier">class</span> <span class="Punctuation">(</span><span class="Identifier">general</span> <span class="Identifier">category</span> <span class="Keyword">or</span> <span class="Identifier">script</span><span class="Punctuation">)</span></pre> +<h2><a class="toc-backref" id="syntax-character-classes" href="#syntax-character-classes">Character classes</a></h2><pre class="listing"><span class="Punctuation">[</span><span class="Identifier">xyz</span><span class="Punctuation">]</span> <span class="Identifier">A</span> <span class="Identifier">character</span> <span class="Identifier">class</span> <span class="Identifier">matching</span> <span class="Identifier">either</span> <span class="Identifier">x</span><span class="Punctuation">,</span> <span class="Identifier">y</span> <span class="Keyword">or</span> <span class="Identifier">z</span> <span class="Punctuation">(</span><span class="Identifier">union</span><span class="Punctuation">)</span><span class="Operator">.</span> +<span class="Punctuation">[</span><span class="Operator">^</span><span class="Identifier">xyz</span><span class="Punctuation">]</span> <span class="Identifier">A</span> <span class="Identifier">character</span> <span class="Identifier">class</span> <span class="Identifier">matching</span> <span class="Identifier">any</span> <span class="Identifier">character</span> <span class="Keyword">except</span> <span class="Identifier">x</span><span class="Punctuation">,</span> <span class="Identifier">y</span> <span class="Keyword">and</span> <span class="Identifier">z</span><span class="Operator">.</span> +<span class="Punctuation">[</span><span class="Identifier">a</span><span class="Operator">-</span><span class="Identifier">z</span><span class="Punctuation">]</span> <span class="Identifier">A</span> <span class="Identifier">character</span> <span class="Identifier">class</span> <span class="Identifier">matching</span> <span class="Identifier">any</span> <span class="Identifier">character</span> <span class="Keyword">in</span> <span class="Identifier">range</span> <span class="Identifier">a</span><span class="Operator">-</span><span class="Identifier">z</span><span class="Operator">.</span> +<span class="Punctuation">[</span><span class="Punctuation">[</span><span class="Punctuation">:</span><span class="Identifier">alpha</span><span class="Punctuation">:</span><span class="Punctuation">]</span><span class="Punctuation">]</span> <span class="Identifier">ASCII</span> <span class="Identifier">character</span> <span class="Identifier">class</span> <span class="Punctuation">(</span><span class="Punctuation">[</span><span class="Identifier">A</span><span class="Operator">-</span><span class="Identifier">Za</span><span class="Operator">-</span><span class="Identifier">z</span><span class="Punctuation">]</span><span class="Punctuation">)</span> +<span class="Punctuation">[</span><span class="Punctuation">[</span><span class="Punctuation">:</span><span class="Operator">^</span><span class="Identifier">alpha</span><span class="Punctuation">:</span><span class="Punctuation">]</span><span class="Punctuation">]</span> <span class="Identifier">Negated</span> <span class="Identifier">ASCII</span> <span class="Identifier">character</span> <span class="Identifier">class</span> <span class="Punctuation">(</span><span class="Punctuation">[</span><span class="Operator">^</span><span class="Identifier">A</span><span class="Operator">-</span><span class="Identifier">Za</span><span class="Operator">-</span><span class="Identifier">z</span><span class="Punctuation">]</span><span class="Punctuation">)</span> +<span class="Punctuation">[</span><span class="Operator">\</span><span class="Punctuation">[</span><span class="Operator">\</span><span class="Punctuation">]</span><span class="Punctuation">]</span> <span class="Identifier">Escaping</span> <span class="Keyword">in</span> <span class="Identifier">character</span> <span class="Identifier">classes</span> <span class="Punctuation">(</span><span class="Identifier">matching</span> <span class="Punctuation">[</span> <span class="Keyword">or</span> <span class="Punctuation">]</span><span class="Punctuation">)</span></pre> +<h2><a class="toc-backref" id="syntax-composites" href="#syntax-composites">Composites</a></h2><pre class="listing"><span class="Identifier">xy</span> <span class="Identifier">concatenation</span> <span class="Punctuation">(</span><span class="Identifier">x</span> <span class="Identifier">followed</span> <span class="Identifier">by</span> <span class="Identifier">y</span><span class="Punctuation">)</span> +<span class="Identifier">x</span><span class="Operator">|</span><span class="Identifier">y</span> <span class="Identifier">alternation</span> <span class="Punctuation">(</span><span class="Identifier">x</span> <span class="Keyword">or</span> <span class="Identifier">y</span><span class="Punctuation">,</span> <span class="Identifier">prefer</span> <span class="Identifier">x</span><span class="Punctuation">)</span></pre> +<h2><a class="toc-backref" id="syntax-repetitions" href="#syntax-repetitions">Repetitions</a></h2><pre class="listing"><span class="Identifier">x</span><span class="Operator">*</span> <span class="Identifier">zero</span> <span class="Keyword">or</span> <span class="Identifier">more</span> <span class="Keyword">of</span> <span class="Identifier">x</span> <span class="Punctuation">(</span><span class="Identifier">greedy</span><span class="Punctuation">)</span> +<span class="Identifier">x</span><span class="Operator">+</span> <span class="Identifier">one</span> <span class="Keyword">or</span> <span class="Identifier">more</span> <span class="Keyword">of</span> <span class="Identifier">x</span> <span class="Punctuation">(</span><span class="Identifier">greedy</span><span class="Punctuation">)</span> +<span class="Identifier">x</span><span class="Operator">?</span> <span class="Identifier">zero</span> <span class="Keyword">or</span> <span class="Identifier">one</span> <span class="Keyword">of</span> <span class="Identifier">x</span> <span class="Punctuation">(</span><span class="Identifier">greedy</span><span class="Punctuation">)</span> +<span class="Identifier">x</span><span class="Operator">*?</span> <span class="Identifier">zero</span> <span class="Keyword">or</span> <span class="Identifier">more</span> <span class="Keyword">of</span> <span class="Identifier">x</span> <span class="Punctuation">(</span><span class="Identifier">ungreedy</span><span class="Operator">/</span><span class="Identifier">lazy</span><span class="Punctuation">)</span> +<span class="Identifier">x</span><span class="Operator">+?</span> <span class="Identifier">one</span> <span class="Keyword">or</span> <span class="Identifier">more</span> <span class="Keyword">of</span> <span class="Identifier">x</span> <span class="Punctuation">(</span><span class="Identifier">ungreedy</span><span class="Operator">/</span><span class="Identifier">lazy</span><span class="Punctuation">)</span> +<span class="Identifier">x</span><span class="Operator">??</span> <span class="Identifier">zero</span> <span class="Keyword">or</span> <span class="Identifier">one</span> <span class="Keyword">of</span> <span class="Identifier">x</span> <span class="Punctuation">(</span><span class="Identifier">ungreedy</span><span class="Operator">/</span><span class="Identifier">lazy</span><span class="Punctuation">)</span> +<span class="Identifier">x</span><span class="Punctuation">{</span><span class="Identifier">n</span><span class="Punctuation">,</span><span class="Identifier">m</span><span class="Punctuation">}</span> <span class="Identifier">at</span> <span class="Identifier">least</span> <span class="Identifier">n</span> <span class="Identifier">x</span> <span class="Keyword">and</span> <span class="Identifier">at</span> <span class="Identifier">most</span> <span class="Identifier">m</span> <span class="Identifier">x</span> <span class="Punctuation">(</span><span class="Identifier">greedy</span><span class="Punctuation">)</span> +<span class="Identifier">x</span><span class="Punctuation">{</span><span class="Identifier">n</span><span class="Punctuation">,</span><span class="Punctuation">}</span> <span class="Identifier">at</span> <span class="Identifier">least</span> <span class="Identifier">n</span> <span class="Identifier">x</span> <span class="Punctuation">(</span><span class="Identifier">greedy</span><span class="Punctuation">)</span> +<span class="Identifier">x</span><span class="Punctuation">{</span><span class="Identifier">n</span><span class="Punctuation">}</span> <span class="Identifier">exactly</span> <span class="Identifier">n</span> <span class="Identifier">x</span> +<span class="Identifier">x</span><span class="Punctuation">{</span><span class="Identifier">n</span><span class="Punctuation">,</span><span class="Identifier">m</span><span class="Punctuation">}</span><span class="Operator">?</span> <span class="Identifier">at</span> <span class="Identifier">least</span> <span class="Identifier">n</span> <span class="Identifier">x</span> <span class="Keyword">and</span> <span class="Identifier">at</span> <span class="Identifier">most</span> <span class="Identifier">m</span> <span class="Identifier">x</span> <span class="Punctuation">(</span><span class="Identifier">ungreedy</span><span class="Operator">/</span><span class="Identifier">lazy</span><span class="Punctuation">)</span> +<span class="Identifier">x</span><span class="Punctuation">{</span><span class="Identifier">n</span><span class="Punctuation">,</span><span class="Punctuation">}</span><span class="Operator">?</span> <span class="Identifier">at</span> <span class="Identifier">least</span> <span class="Identifier">n</span> <span class="Identifier">x</span> <span class="Punctuation">(</span><span class="Identifier">ungreedy</span><span class="Operator">/</span><span class="Identifier">lazy</span><span class="Punctuation">)</span> +<span class="Identifier">x</span><span class="Punctuation">{</span><span class="Identifier">n</span><span class="Punctuation">}</span><span class="Operator">?</span> <span class="Identifier">exactly</span> <span class="Identifier">n</span> <span class="Identifier">x</span></pre> +<h2><a class="toc-backref" id="syntax-empty-matches" href="#syntax-empty-matches">Empty matches</a></h2><pre class="listing"><span class="Operator">^</span> <span class="Identifier">the</span> <span class="Identifier">beginning</span> <span class="Keyword">of</span> <span class="Identifier">text</span> <span class="Punctuation">(</span><span class="Keyword">or</span> <span class="Identifier">start</span><span class="Operator">-</span><span class="Keyword">of</span><span class="Operator">-</span><span class="Identifier">line</span> <span class="Identifier">with</span> <span class="Identifier">multi</span><span class="Operator">-</span><span class="Identifier">line</span> <span class="Identifier">mode</span><span class="Punctuation">)</span> +<span class="Operator">$</span> <span class="Identifier">the</span> <span class="Keyword">end</span> <span class="Keyword">of</span> <span class="Identifier">text</span> <span class="Punctuation">(</span><span class="Keyword">or</span> <span class="Keyword">end</span><span class="Operator">-</span><span class="Keyword">of</span><span class="Operator">-</span><span class="Identifier">line</span> <span class="Identifier">with</span> <span class="Identifier">multi</span><span class="Operator">-</span><span class="Identifier">line</span> <span class="Identifier">mode</span><span class="Punctuation">)</span> +<span class="Operator">\</span><span class="Identifier">A</span> <span class="Identifier">only</span> <span class="Identifier">the</span> <span class="Identifier">beginning</span> <span class="Keyword">of</span> <span class="Identifier">text</span> <span class="Punctuation">(</span><span class="Identifier">even</span> <span class="Identifier">with</span> <span class="Identifier">multi</span><span class="Operator">-</span><span class="Identifier">line</span> <span class="Identifier">mode</span> <span class="Identifier">enabled</span><span class="Punctuation">)</span> +<span class="Operator">\</span><span class="Identifier">z</span> <span class="Identifier">only</span> <span class="Identifier">the</span> <span class="Keyword">end</span> <span class="Keyword">of</span> <span class="Identifier">text</span> <span class="Punctuation">(</span><span class="Identifier">even</span> <span class="Identifier">with</span> <span class="Identifier">multi</span><span class="Operator">-</span><span class="Identifier">line</span> <span class="Identifier">mode</span> <span class="Identifier">enabled</span><span class="Punctuation">)</span> +<span class="Operator">\</span><span class="Identifier">b</span> <span class="Identifier">a</span> <span class="Identifier">Unicode</span> <span class="Identifier">word</span> <span class="Identifier">boundary</span> <span class="Punctuation">(</span><span class="Operator">\</span><span class="Identifier">w</span> <span class="Identifier">on</span> <span class="Identifier">one</span> <span class="Identifier">side</span> <span class="Keyword">and</span> <span class="Operator">\</span><span class="Identifier">W</span><span class="Punctuation">,</span> <span class="Operator">\</span><span class="Identifier">A</span><span class="Punctuation">,</span> <span class="Keyword">or</span> <span class="Operator">\</span><span class="Identifier">z</span> <span class="Identifier">on</span> <span class="Identifier">other</span><span class="Punctuation">)</span> +<span class="Operator">\</span><span class="Identifier">B</span> <span class="Keyword">not</span> <span class="Identifier">a</span> <span class="Identifier">Unicode</span> <span class="Identifier">word</span> <span class="Identifier">boundary</span></pre> +<h2><a class="toc-backref" id="syntax-grouping-and-flags" href="#syntax-grouping-and-flags">Grouping and flags</a></h2><pre class="listing"><span class="Punctuation">(</span><span class="Identifier">exp</span><span class="Punctuation">)</span> <span class="Identifier">numbered</span> <span class="Identifier">capture</span> <span class="Identifier">group</span> <span class="Punctuation">(</span><span class="Identifier">indexed</span> <span class="Identifier">by</span> <span class="Identifier">opening</span> <span class="Identifier">parenthesis</span><span class="Punctuation">)</span> +<span class="Punctuation">(</span><span class="Operator">?</span><span class="Identifier">P</span><span class="Operator"><</span><span class="Identifier">name</span><span class="Operator">></span><span class="Identifier">exp</span><span class="Punctuation">)</span> <span class="Identifier">named</span> <span class="Punctuation">(</span><span class="Identifier">also</span> <span class="Identifier">numbered</span><span class="Punctuation">)</span> <span class="Identifier">capture</span> <span class="Identifier">group</span> <span class="Punctuation">(</span><span class="Identifier">allowed</span> <span class="Identifier">chars</span><span class="Punctuation">:</span> <span class="Punctuation">[</span><span class="Identifier">_0</span><span class="Operator">-</span><span class="DecNumber">9</span><span class="Identifier">a</span><span class="Operator">-</span><span class="Identifier">zA</span><span class="Operator">-</span><span class="Identifier">Z</span><span class="Punctuation">]</span><span class="Punctuation">)</span> +<span class="Punctuation">(</span><span class="Operator">?:</span><span class="Identifier">exp</span><span class="Punctuation">)</span> <span class="Identifier">non</span><span class="Operator">-</span><span class="Identifier">capturing</span> <span class="Identifier">group</span> +<span class="Punctuation">(</span><span class="Operator">?</span><span class="Identifier">flags</span><span class="Punctuation">)</span> <span class="Identifier">set</span> <span class="Identifier">flags</span> <span class="Identifier">within</span> <span class="Identifier">current</span> <span class="Identifier">group</span> +<span class="Punctuation">(</span><span class="Operator">?</span><span class="Identifier">flags</span><span class="Punctuation">:</span><span class="Identifier">exp</span><span class="Punctuation">)</span> <span class="Identifier">set</span> <span class="Identifier">flags</span> <span class="Keyword">for</span> <span class="Identifier">exp</span> <span class="Punctuation">(</span><span class="Identifier">non</span><span class="Operator">-</span><span class="Identifier">capturing</span><span class="Punctuation">)</span></pre><p>Flags are each a single character. For example, (?x) sets the flag x and (?-x) clears the flag x. Multiple flags can be set or cleared at the same time: (?xy) sets both the x and y flags, (?x-y) sets the x flag and clears the y flag, and (?-xy) clears both the x and y flags.</p> +<pre class="listing"><span class="Identifier">i</span> <span class="Keyword">case</span><span class="Operator">-</span><span class="Identifier">insensitive</span><span class="Punctuation">:</span> <span class="Identifier">letters</span> <span class="Identifier">match</span> <span class="Identifier">both</span> <span class="Identifier">upper</span> <span class="Keyword">and</span> <span class="Identifier">lower</span> <span class="Keyword">case</span> +<span class="Identifier">m</span> <span class="Identifier">multi</span><span class="Operator">-</span><span class="Identifier">line</span> <span class="Identifier">mode</span><span class="Punctuation">:</span> <span class="Operator">^</span> <span class="Keyword">and</span> <span class="Operator">$</span> <span class="Identifier">match</span> <span class="Identifier">begin</span><span class="Operator">/</span><span class="Keyword">end</span> <span class="Keyword">of</span> <span class="Identifier">line</span> +<span class="Identifier">s</span> <span class="Identifier">allow</span> <span class="Operator">.</span> <span class="Identifier">to</span> <span class="Identifier">match</span> <span class="Operator">\</span><span class="Identifier">L</span> <span class="Punctuation">(</span><span class="Identifier">new</span> <span class="Identifier">line</span><span class="Punctuation">)</span> +<span class="Identifier">U</span> <span class="Identifier">swap</span> <span class="Identifier">the</span> <span class="Identifier">meaning</span> <span class="Keyword">of</span> <span class="Identifier">x</span><span class="Operator">*</span> <span class="Keyword">and</span> <span class="Identifier">x</span><span class="Operator">*?</span> <span class="Punctuation">(</span><span class="Identifier">un</span><span class="Operator">-</span><span class="Identifier">greedy</span> <span class="Identifier">mode</span><span class="Punctuation">)</span> +<span class="Identifier">u</span> <span class="Identifier">Unicode</span> <span class="Identifier">support</span> <span class="Punctuation">(</span><span class="Identifier">enabled</span> <span class="Identifier">by</span> <span class="Identifier">default</span><span class="Punctuation">)</span> +<span class="Identifier">x</span> <span class="Identifier">ignore</span> <span class="Identifier">whitespace</span> <span class="Keyword">and</span> <span class="Identifier">allow</span> <span class="Identifier">line</span> <span class="Identifier">comments</span> <span class="Punctuation">(</span><span class="Identifier">starting</span> <span class="Identifier">with</span> <span class="Punctuation">`</span><span class="Comment">#`)</span></pre><p><tt class="docutils literal"><span class="pre"><span class="Identifier">All</span> <span class="Identifier">flags</span> <span class="Identifier">are</span> <span class="Identifier">disabled</span> <span class="Identifier">by</span> <span class="Identifier">default</span> <span class="Identifier">unless</span> <span class="Identifier">stated</span> <span class="Identifier">otherwise</span></span></tt></p> + +<h2><a class="toc-backref" id="syntax-escape-sequences" href="#syntax-escape-sequences">Escape sequences</a></h2><pre class="listing"><span class="Operator">\*</span> <span class="Identifier">literal</span> <span class="Operator">*</span><span class="Punctuation">,</span> <span class="Identifier">works</span> <span class="Keyword">for</span> <span class="Identifier">any</span> <span class="Identifier">punctuation</span> <span class="Identifier">character</span><span class="Punctuation">:</span> <span class="Operator">\.+*?</span><span class="Punctuation">(</span><span class="Punctuation">)</span><span class="Operator">|</span><span class="Punctuation">[</span><span class="Punctuation">]</span><span class="Punctuation">{</span><span class="Punctuation">}</span><span class="Operator">^$</span> +<span class="Operator">\</span><span class="Identifier">a</span> <span class="Identifier">bell</span> <span class="Punctuation">(</span><span class="Operator">\</span><span class="Identifier">x07</span><span class="Punctuation">)</span> +<span class="Operator">\</span><span class="Identifier">f</span> <span class="Identifier">form</span> <span class="Identifier">feed</span> <span class="Punctuation">(</span><span class="Operator">\</span><span class="Identifier">x0C</span><span class="Punctuation">)</span> +<span class="Operator">\</span><span class="Identifier">t</span> <span class="Identifier">horizontal</span> <span class="Identifier">tab</span> +<span class="Operator">\</span><span class="Identifier">n</span> <span class="Identifier">new</span> <span class="Identifier">line</span> <span class="Punctuation">(</span><span class="Operator">\</span><span class="Identifier">L</span><span class="Punctuation">)</span> +<span class="Operator">\</span><span class="Identifier">r</span> <span class="Identifier">carriage</span> <span class="Keyword">return</span> +<span class="Operator">\</span><span class="Identifier">v</span> <span class="Identifier">vertical</span> <span class="Identifier">tab</span> <span class="Punctuation">(</span><span class="Operator">\</span><span class="Identifier">x0B</span><span class="Punctuation">)</span> +<span class="Operator">\</span><span class="DecNumber">123</span> <span class="Identifier">octal</span> <span class="Identifier">character</span> <span class="Identifier">code</span> <span class="Punctuation">(</span><span class="Identifier">up</span> <span class="Identifier">to</span> <span class="Identifier">three</span> <span class="Identifier">digits</span><span class="Punctuation">)</span> +<span class="Operator">\</span><span class="Identifier">x7F</span> <span class="Identifier">hex</span> <span class="Identifier">character</span> <span class="Identifier">code</span> <span class="Punctuation">(</span><span class="Identifier">exactly</span> <span class="Identifier">two</span> <span class="Identifier">digits</span><span class="Punctuation">)</span> +<span class="Operator">\</span><span class="Identifier">x</span><span class="Punctuation">{</span><span class="DecNumber">10</span><span class="Identifier">FFFF</span><span class="Punctuation">}</span> <span class="Identifier">any</span> <span class="Identifier">hex</span> <span class="Identifier">character</span> <span class="Identifier">code</span> <span class="Identifier">corresponding</span> <span class="Identifier">to</span> <span class="Identifier">a</span> <span class="Identifier">Unicode</span> <span class="Identifier">code</span> <span class="Identifier">point</span> +<span class="Operator">\</span><span class="Identifier">u007F</span> <span class="Identifier">hex</span> <span class="Identifier">character</span> <span class="Identifier">code</span> <span class="Punctuation">(</span><span class="Identifier">exactly</span> <span class="Identifier">four</span> <span class="Identifier">digits</span><span class="Punctuation">)</span> +<span class="Operator">\</span><span class="Identifier">U0010FFFF</span> <span class="Identifier">hex</span> <span class="Identifier">character</span> <span class="Identifier">code</span> <span class="Punctuation">(</span><span class="Identifier">exactly</span> <span class="Identifier">eight</span> <span class="Identifier">digits</span><span class="Punctuation">)</span></pre> +<h2><a class="toc-backref" id="syntax-perl-character-classes-unicode-friendly" href="#syntax-perl-character-classes-unicode-friendly">Perl character classes (Unicode friendly)</a></h2><p>These classes are based on the definitions provided in <a class="reference external" href="http://www.unicode.org/reports/tr18/#Compatibility_Properties">UTS#18</a></p> +<pre class="listing"><span class="Operator">\</span><span class="Identifier">d</span> <span class="Identifier">digit</span> <span class="Punctuation">(</span><span class="Operator">\</span><span class="Identifier">p</span><span class="Punctuation">{</span><span class="Identifier">Nd</span><span class="Punctuation">}</span><span class="Punctuation">)</span> +<span class="Operator">\</span><span class="Identifier">D</span> <span class="Keyword">not</span> <span class="Identifier">digit</span> +<span class="Operator">\</span><span class="Identifier">s</span> <span class="Identifier">whitespace</span> <span class="Punctuation">(</span><span class="Operator">\</span><span class="Identifier">p</span><span class="Punctuation">{</span><span class="Identifier">White_Space</span><span class="Punctuation">}</span><span class="Punctuation">)</span> +<span class="Operator">\</span><span class="Identifier">S</span> <span class="Keyword">not</span> <span class="Identifier">whitespace</span> +<span class="Operator">\</span><span class="Identifier">w</span> <span class="Identifier">word</span> <span class="Identifier">character</span> <span class="Punctuation">(</span><span class="Operator">\</span><span class="Identifier">p</span><span class="Punctuation">{</span><span class="Identifier">Alphabetic</span><span class="Punctuation">}</span> <span class="Operator">+</span> <span class="Operator">\</span><span class="Identifier">p</span><span class="Punctuation">{</span><span class="Identifier">M</span><span class="Punctuation">}</span> <span class="Operator">+</span> <span class="Operator">\</span><span class="Identifier">d</span> <span class="Operator">+</span> <span class="Operator">\</span><span class="Identifier">p</span><span class="Punctuation">{</span><span class="Identifier">Pc</span><span class="Punctuation">}</span> <span class="Operator">+</span> <span class="Operator">\</span><span class="Identifier">p</span><span class="Punctuation">{</span><span class="Identifier">Join_Control</span><span class="Punctuation">}</span><span class="Punctuation">)</span> +<span class="Operator">\</span><span class="Identifier">W</span> <span class="Keyword">not</span> <span class="Identifier">word</span> <span class="Identifier">character</span></pre> +<h2><a class="toc-backref" id="syntax-ascii-character-classes" href="#syntax-ascii-character-classes">ASCII character classes</a></h2><pre class="listing"><span class="Punctuation">[</span><span class="Punctuation">[</span><span class="Punctuation">:</span><span class="Identifier">alnum</span><span class="Punctuation">:</span><span class="Punctuation">]</span><span class="Punctuation">]</span> <span class="Identifier">alphanumeric</span> <span class="Punctuation">(</span><span class="Punctuation">[</span><span class="DecNumber">0</span><span class="Operator">-</span><span class="DecNumber">9</span><span class="Identifier">A</span><span class="Operator">-</span><span class="Identifier">Za</span><span class="Operator">-</span><span class="Identifier">z</span><span class="Punctuation">]</span><span class="Punctuation">)</span> +<span class="Punctuation">[</span><span class="Punctuation">[</span><span class="Punctuation">:</span><span class="Identifier">alpha</span><span class="Punctuation">:</span><span class="Punctuation">]</span><span class="Punctuation">]</span> <span class="Identifier">alphabetic</span> <span class="Punctuation">(</span><span class="Punctuation">[</span><span class="Identifier">A</span><span class="Operator">-</span><span class="Identifier">Za</span><span class="Operator">-</span><span class="Identifier">z</span><span class="Punctuation">]</span><span class="Punctuation">)</span> +<span class="Punctuation">[</span><span class="Punctuation">[</span><span class="Punctuation">:</span><span class="Identifier">ascii</span><span class="Punctuation">:</span><span class="Punctuation">]</span><span class="Punctuation">]</span> <span class="Identifier">ASCII</span> <span class="Punctuation">(</span><span class="Punctuation">[</span><span class="Operator">\</span><span class="Identifier">x00</span><span class="Operator">-\</span><span class="Identifier">x7F</span><span class="Punctuation">]</span><span class="Punctuation">)</span> +<span class="Punctuation">[</span><span class="Punctuation">[</span><span class="Punctuation">:</span><span class="Identifier">blank</span><span class="Punctuation">:</span><span class="Punctuation">]</span><span class="Punctuation">]</span> <span class="Identifier">blank</span> <span class="Punctuation">(</span><span class="Punctuation">[</span><span class="Operator">\</span><span class="Identifier">t</span> <span class="Punctuation">]</span><span class="Punctuation">)</span> +<span class="Punctuation">[</span><span class="Punctuation">[</span><span class="Punctuation">:</span><span class="Identifier">cntrl</span><span class="Punctuation">:</span><span class="Punctuation">]</span><span class="Punctuation">]</span> <span class="Identifier">control</span> <span class="Punctuation">(</span><span class="Punctuation">[</span><span class="Operator">\</span><span class="Identifier">x00</span><span class="Operator">-\</span><span class="Identifier">x1F</span><span class="Operator">\</span><span class="Identifier">x7F</span><span class="Punctuation">]</span><span class="Punctuation">)</span> +<span class="Punctuation">[</span><span class="Punctuation">[</span><span class="Punctuation">:</span><span class="Identifier">digit</span><span class="Punctuation">:</span><span class="Punctuation">]</span><span class="Punctuation">]</span> <span class="Identifier">digits</span> <span class="Punctuation">(</span><span class="Punctuation">[</span><span class="DecNumber">0</span><span class="Operator">-</span><span class="DecNumber">9</span><span class="Punctuation">]</span><span class="Punctuation">)</span> +<span class="Punctuation">[</span><span class="Punctuation">[</span><span class="Punctuation">:</span><span class="Identifier">graph</span><span class="Punctuation">:</span><span class="Punctuation">]</span><span class="Punctuation">]</span> <span class="Identifier">graphical</span> <span class="Punctuation">(</span><span class="Punctuation">[</span><span class="Operator">!-~</span><span class="Punctuation">]</span><span class="Punctuation">)</span> +<span class="Punctuation">[</span><span class="Punctuation">[</span><span class="Punctuation">:</span><span class="Identifier">lower</span><span class="Punctuation">:</span><span class="Punctuation">]</span><span class="Punctuation">]</span> <span class="Identifier">lower</span> <span class="Keyword">case</span> <span class="Punctuation">(</span><span class="Punctuation">[</span><span class="Identifier">a</span><span class="Operator">-</span><span class="Identifier">z</span><span class="Punctuation">]</span><span class="Punctuation">)</span> +<span class="Punctuation">[</span><span class="Punctuation">[</span><span class="Punctuation">:</span><span class="Identifier">print</span><span class="Punctuation">:</span><span class="Punctuation">]</span><span class="Punctuation">]</span> <span class="Identifier">printable</span> <span class="Punctuation">(</span><span class="Punctuation">[</span> <span class="Operator">-~</span><span class="Punctuation">]</span><span class="Punctuation">)</span> +<span class="Punctuation">[</span><span class="Punctuation">[</span><span class="Punctuation">:</span><span class="Identifier">punct</span><span class="Punctuation">:</span><span class="Punctuation">]</span><span class="Punctuation">]</span> <span class="Identifier">punctuation</span> <span class="Punctuation">(</span><span class="Punctuation">[</span><span class="Operator">!-/:-@\</span><span class="Punctuation">[</span><span class="Operator">-</span><span class="Punctuation">`</span><span class="Punctuation">{</span><span class="Operator">-~</span><span class="Punctuation">]</span><span class="Punctuation">)</span> +<span class="Punctuation">[</span><span class="Punctuation">[</span><span class="Punctuation">:</span><span class="Identifier">space</span><span class="Punctuation">:</span><span class="Punctuation">]</span><span class="Punctuation">]</span> <span class="Identifier">whitespace</span> <span class="Punctuation">(</span><span class="Punctuation">[</span><span class="Operator">\</span><span class="Identifier">t</span><span class="Operator">\</span><span class="Identifier">n</span><span class="Operator">\</span><span class="Identifier">v</span><span class="Operator">\</span><span class="Identifier">f</span><span class="Operator">\</span><span class="Identifier">r</span> <span class="Punctuation">]</span><span class="Punctuation">)</span> +<span class="Punctuation">[</span><span class="Punctuation">[</span><span class="Punctuation">:</span><span class="Identifier">upper</span><span class="Punctuation">:</span><span class="Punctuation">]</span><span class="Punctuation">]</span> <span class="Identifier">upper</span> <span class="Keyword">case</span> <span class="Punctuation">(</span><span class="Punctuation">[</span><span class="Identifier">A</span><span class="Operator">-</span><span class="Identifier">Z</span><span class="Punctuation">]</span><span class="Punctuation">)</span> +<span class="Punctuation">[</span><span class="Punctuation">[</span><span class="Punctuation">:</span><span class="Identifier">word</span><span class="Punctuation">:</span><span class="Punctuation">]</span><span class="Punctuation">]</span> <span class="Identifier">word</span> <span class="Identifier">characters</span> <span class="Punctuation">(</span><span class="Punctuation">[</span><span class="DecNumber">0</span><span class="Operator">-</span><span class="DecNumber">9</span><span class="Identifier">A</span><span class="Operator">-</span><span class="Identifier">Za</span><span class="Operator">-</span><span class="Identifier">z_</span><span class="Punctuation">]</span><span class="Punctuation">)</span> +<span class="Punctuation">[</span><span class="Punctuation">[</span><span class="Punctuation">:</span><span class="Identifier">xdigit</span><span class="Punctuation">:</span><span class="Punctuation">]</span><span class="Punctuation">]</span> <span class="Identifier">hex</span> <span class="Identifier">digit</span> <span class="Punctuation">(</span><span class="Punctuation">[</span><span class="DecNumber">0</span><span class="Operator">-</span><span class="DecNumber">9</span><span class="Identifier">A</span><span class="Operator">-</span><span class="Identifier">Fa</span><span class="Operator">-</span><span class="Identifier">f</span><span class="Punctuation">]</span><span class="Punctuation">)</span></pre> +<h2><a class="toc-backref" id="syntax-lookaround-assertions" href="#syntax-lookaround-assertions">Lookaround Assertions</a></h2><pre class="listing"><span class="Punctuation">(</span><span class="Operator">?=</span><span class="Identifier">regex</span><span class="Punctuation">)</span> <span class="Identifier">A</span> <span class="Identifier">positive</span> <span class="Identifier">lookahead</span> <span class="Identifier">assertion</span> +<span class="Punctuation">(</span><span class="Operator">?!</span><span class="Identifier">regex</span><span class="Punctuation">)</span> <span class="Identifier">A</span> <span class="Identifier">negative</span> <span class="Identifier">lookahead</span> <span class="Identifier">assertion</span> +<span class="Punctuation">(</span><span class="Operator">?<=</span><span class="Identifier">regex</span><span class="Punctuation">)</span> <span class="Identifier">A</span> <span class="Identifier">positive</span> <span class="Identifier">lookbehind</span> <span class="Identifier">assertion</span> +<span class="Punctuation">(</span><span class="Operator">?<!</span><span class="Identifier">regex</span><span class="Punctuation">)</span> <span class="Identifier">A</span> <span class="Identifier">negative</span> <span class="Identifier">lookbehind</span> <span class="Identifier">assertion</span></pre><p>Any regex expression is a valid lookaround; groups are captured as well. Beware, lookarounds containing repetitions (<tt class="docutils literal"><span class="pre">*</span></tt>, <tt class="docutils literal"><span class="pre">+</span></tt>, and <tt class="docutils literal"><span class="pre">{n,}</span></tt>) may run in polynomial time.</p> + +<h1><a class="toc-backref" id="examples" href="#examples">Examples</a></h1> +<h2><a class="toc-backref" id="examples-match" href="#examples-match">Match</a></h2><p>The <tt class="docutils literal"><span class="pre">match</span></tt> function match a text from start to end, similar to <tt class="docutils literal"><span class="pre">^regex$</span></tt>. This means the whole text needs to match the regex for this function to return <tt class="docutils literal"><span class="pre">true</span></tt>.</p> +<pre class="listing"><span class="Keyword">let</span> <span class="Identifier">text</span> <span class="Operator">=</span> <span class="StringLit">"nim c --styleCheck:hint --colors:off regex.nim"</span> +<span class="Keyword">var</span> <span class="Identifier">m</span><span class="Punctuation">:</span> <span class="Identifier">RegexMatch2</span> +<span class="Keyword">if</span> <span class="Identifier">match</span><span class="Punctuation">(</span><span class="Identifier">text</span><span class="Punctuation">,</span> <span class="RawData">re2"nim c (?:--(\w+:\w+) *)+ (\w+).nim"</span><span class="Punctuation">,</span> <span class="Identifier">m</span><span class="Punctuation">)</span><span class="Punctuation">:</span> + <span class="Identifier">doAssert</span> <span class="Identifier">text</span><span class="Punctuation">[</span><span class="Identifier">m</span><span class="Operator">.</span><span class="Identifier">group</span><span class="Punctuation">(</span><span class="DecNumber">0</span><span class="Punctuation">)</span><span class="Punctuation">]</span> <span class="Operator">==</span> <span class="StringLit">"colors:off"</span> + <span class="Identifier">doAssert</span> <span class="Identifier">text</span><span class="Punctuation">[</span><span class="Identifier">m</span><span class="Operator">.</span><span class="Identifier">group</span><span class="Punctuation">(</span><span class="DecNumber">1</span><span class="Punctuation">)</span><span class="Punctuation">]</span> <span class="Operator">==</span> <span class="StringLit">"regex"</span> +<span class="Keyword">else</span><span class="Punctuation">:</span> + <span class="Identifier">doAssert</span> <span class="Identifier">false</span><span class="Punctuation">,</span> <span class="StringLit">"no match"</span></pre> +<h2><a class="toc-backref" id="examples-captures" href="#examples-captures">Captures</a></h2><p>Like most other regex engines, this library only captures the last repetition in a repeated group (<tt class="docutils literal"><span class="pre">*</span></tt>, <tt class="docutils literal"><span class="pre">+</span></tt>, <tt class="docutils literal"><span class="pre">{n}</span></tt>). Note how in the previous example both <tt class="docutils literal"><span class="pre">styleCheck:hint</span></tt> and <tt class="docutils literal"><span class="pre">colors:off</span></tt> are matched in the same group but only the last captured match (<tt class="docutils literal"><span class="pre">colors:off</span></tt>) is returned.</p> +<p>To check if a capture group did match you can use <tt class="docutils literal"><span class="pre">reNonCapture</span></tt>. For example <tt class="docutils literal"><span class="pre">doAssert m.group(0) != reNonCapture</span></tt>. This is useful to disambiguate empty captures and non-matched captures. Since both return an empty string when slicing the text.</p> +<p>The space complexity for captures is <tt class="docutils literal"><span class="pre">O(regex_len * groups_count)</span></tt>, and so it can be used to match untrusted text.</p> + +<h2><a class="toc-backref" id="examples-find" href="#examples-find">Find</a></h2><p>The <tt class="docutils literal"><span class="pre">find</span></tt> function will find the first piece of text that match a given regex.</p> +<pre class="listing"><span class="Keyword">let</span> <span class="Identifier">text</span> <span class="Operator">=</span> <span class="LongStringLit">""" +The Continental's email list: +john_wick@continental.com +winston@continental.com +ms_perkins@continental.com +"""</span> +<span class="Keyword">var</span> <span class="Identifier">match</span> <span class="Operator">=</span> <span class="StringLit">""</span> +<span class="Keyword">var</span> <span class="Identifier">capture</span> <span class="Operator">=</span> <span class="StringLit">""</span> +<span class="Keyword">var</span> <span class="Identifier">m</span><span class="Punctuation">:</span> <span class="Identifier">RegexMatch2</span> +<span class="Keyword">if</span> <span class="Identifier">find</span><span class="Punctuation">(</span><span class="Identifier">text</span><span class="Punctuation">,</span> <span class="RawData">re2"(\w+)@\w+\.\w+"</span><span class="Punctuation">,</span> <span class="Identifier">m</span><span class="Punctuation">)</span><span class="Punctuation">:</span> + <span class="Identifier">match</span> <span class="Operator">=</span> <span class="Identifier">text</span><span class="Punctuation">[</span><span class="Identifier">m</span><span class="Operator">.</span><span class="Identifier">boundaries</span><span class="Punctuation">]</span> + <span class="Identifier">capture</span> <span class="Operator">=</span> <span class="Identifier">text</span><span class="Punctuation">[</span><span class="Identifier">m</span><span class="Operator">.</span><span class="Identifier">group</span><span class="Punctuation">(</span><span class="DecNumber">0</span><span class="Punctuation">)</span><span class="Punctuation">]</span> +<span class="Identifier">doAssert</span> <span class="Identifier">match</span> <span class="Operator">==</span> <span class="StringLit">"john_wick@continental.com"</span> +<span class="Identifier">doAssert</span> <span class="Identifier">capture</span> <span class="Operator">==</span> <span class="StringLit">"john_wick"</span></pre> +<h2><a class="toc-backref" id="examples-find-all" href="#examples-find-all">Find All</a></h2><p>The <tt class="docutils literal"><span class="pre"><span class="Identifier">findAll</span></span></tt> function will find all pieces of text that match a given regex, returning their boundaries and captures/submatches.</p> +<pre class="listing"><span class="Keyword">let</span> <span class="Identifier">text</span> <span class="Operator">=</span> <span class="LongStringLit">""" +The Continental's email list: +john_wick@continental.com +winston@continental.com +ms_perkins@continental.com +"""</span> +<span class="Keyword">var</span> <span class="Identifier">matches</span> <span class="Operator">=</span> <span class="Identifier">newSeq</span><span class="Punctuation">[</span><span class="Identifier">string</span><span class="Punctuation">]</span><span class="Punctuation">(</span><span class="Punctuation">)</span> +<span class="Keyword">var</span> <span class="Identifier">captures</span> <span class="Operator">=</span> <span class="Identifier">newSeq</span><span class="Punctuation">[</span><span class="Identifier">string</span><span class="Punctuation">]</span><span class="Punctuation">(</span><span class="Punctuation">)</span> +<span class="Keyword">for</span> <span class="Identifier">m</span> <span class="Keyword">in</span> <span class="Identifier">findAll</span><span class="Punctuation">(</span><span class="Identifier">text</span><span class="Punctuation">,</span> <span class="RawData">re2"(\w+)@\w+\.\w+"</span><span class="Punctuation">)</span><span class="Punctuation">:</span> + <span class="Identifier">matches</span><span class="Operator">.</span><span class="Identifier">add</span> <span class="Identifier">text</span><span class="Punctuation">[</span><span class="Identifier">m</span><span class="Operator">.</span><span class="Identifier">boundaries</span><span class="Punctuation">]</span> + <span class="Identifier">captures</span><span class="Operator">.</span><span class="Identifier">add</span> <span class="Identifier">text</span><span class="Punctuation">[</span><span class="Identifier">m</span><span class="Operator">.</span><span class="Identifier">group</span><span class="Punctuation">(</span><span class="DecNumber">0</span><span class="Punctuation">)</span><span class="Punctuation">]</span> +<span class="Identifier">doAssert</span> <span class="Identifier">matches</span> <span class="Operator">==</span> <span class="Operator">@</span><span class="Punctuation">[</span> + <span class="StringLit">"john_wick@continental.com"</span><span class="Punctuation">,</span> + <span class="StringLit">"winston@continental.com"</span><span class="Punctuation">,</span> + <span class="StringLit">"ms_perkins@continental.com"</span> +<span class="Punctuation">]</span> +<span class="Identifier">doAssert</span> <span class="Identifier">captures</span> <span class="Operator">==</span> <span class="Operator">@</span><span class="Punctuation">[</span><span class="StringLit">"john_wick"</span><span class="Punctuation">,</span> <span class="StringLit">"winston"</span><span class="Punctuation">,</span> <span class="StringLit">"ms_perkins"</span><span class="Punctuation">]</span></pre> +<h2><a class="toc-backref" id="examples-verbose-mode" href="#examples-verbose-mode">Verbose Mode</a></h2><p>Verbose mode <tt class="docutils literal"><span class="pre"><span class="Punctuation">(</span><span class="Operator">?</span><span class="Identifier">x</span><span class="Punctuation">)</span></span></tt> makes regexes more readable by allowing comments and multi-lines within the regular expression itself. The caveat is spaces and pound signs must be scaped to be matched.</p> +<pre class="listing"><span class="Keyword">const</span> <span class="Identifier">exp</span> <span class="Operator">=</span> <span class="LongStringLit">re2"""(?x) +\# # the hashtag +\w+ # hashtag words +"""</span> +<span class="Keyword">let</span> <span class="Identifier">text</span> <span class="Operator">=</span> <span class="StringLit">"#NimLang"</span> +<span class="Identifier">doAssert</span> <span class="Identifier">match</span><span class="Punctuation">(</span><span class="Identifier">text</span><span class="Punctuation">,</span> <span class="Identifier">exp</span><span class="Punctuation">)</span></pre> +<h2><a class="toc-backref" id="examples-match-macro" href="#examples-match-macro">Match Macro</a></h2><p>The <tt class="docutils literal"><span class="pre">match</span></tt> macro is sometimes more convenient, and faster than the function version. It will run a full match on the whole string, similar to <tt class="docutils literal"><span class="pre"><span class="Operator">^</span><span class="Identifier">regex</span><span class="Operator">$</span></span></tt>.</p> +<p>A <tt class="docutils literal"><span class="pre">matches: seq[string]</span></tt> variable is injected into the scope, and it contains the submatches for every capture group.</p> +<pre class="listing"><span class="Keyword">var</span> <span class="Identifier">matched</span> <span class="Operator">=</span> <span class="Identifier">false</span> +<span class="Keyword">let</span> <span class="Identifier">text</span> <span class="Operator">=</span> <span class="StringLit">"[my link](https://example.com)"</span> +<span class="Identifier">match</span> <span class="Identifier">text</span><span class="Punctuation">,</span> <span class="RawData">rex"\[([^\]]+)\]\((https?://[^)]+)\)"</span><span class="Punctuation">:</span> + <span class="Identifier">doAssert</span> <span class="Identifier">matches</span> <span class="Operator">==</span> <span class="Operator">@</span><span class="Punctuation">[</span><span class="StringLit">"my link"</span><span class="Punctuation">,</span> <span class="StringLit">"https://example.com"</span><span class="Punctuation">]</span> + <span class="Identifier">matched</span> <span class="Operator">=</span> <span class="Identifier">true</span> +<span class="Identifier">doAssert</span> <span class="Identifier">matched</span></pre> +<h2><a class="toc-backref" id="examples-invalid-utfminus8-input-text" href="#examples-invalid-utfminus8-input-text">Invalid UTF-8 input text</a></h2><p>UTF-8 validation on the input text is only done in debug mode for perf reasons. The behaviour on invalid UTF-8 input (i.e: malformed, corrupted, truncated, etc) when compiling in release/danger mode is currently undefined, and it will likely result in an internal AssertionDefect or some other error.</p> +<p>What can be done about this is validating the input text to avoid passing invalid input to the match function.</p> +<pre class="listing"><span class="Keyword">import</span> <span class="Identifier">unicode</span> +<span class="Comment"># good input text</span> +<span class="Identifier">doAssert</span> <span class="Identifier">validateUtf8</span><span class="Punctuation">(</span><span class="StringLit">"abc"</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="Operator">-</span><span class="DecNumber">1</span> +<span class="Comment"># bad input text</span> +<span class="Identifier">doAssert</span> <span class="Identifier">validateUtf8</span><span class="Punctuation">(</span><span class="StringLit">"</span><span class="EscapeSequence">\xf8</span><span class="EscapeSequence">\xa1</span><span class="EscapeSequence">\xa1</span><span class="EscapeSequence">\xa1</span><span class="EscapeSequence">\xa1</span><span class="StringLit">"</span><span class="Punctuation">)</span> <span class="Operator">!=</span> <span class="Operator">-</span><span class="DecNumber">1</span></pre><p>Note at the time of writting this, Nim's <tt class="docutils literal"><span class="pre">validateUtf8</span></tt> <a class="reference external" href="https://github.com/nim-lang/Nim/issues/19333">is not strict enough</a> and so you are better off using <a class="reference external" href="https://github.com/nitely/nim-unicodeplus">nim-unicodeplus's</a> <tt class="docutils literal"><span class="pre">verifyUtf8</span></tt> function.</p> + +<h2><a class="toc-backref" id="examples-match-arbitrary-bytes" href="#examples-match-arbitrary-bytes">Match arbitrary bytes</a></h2><p>Setting the <tt class="docutils literal"><span class="pre">regexArbitraryBytes</span></tt> flag will treat both the regex and the input text as byte sequences. This flag makes ascii mode <tt class="docutils literal"><span class="pre">(?-u)</span></tt> the default.</p> +<pre class="listing"><span class="Keyword">let</span> <span class="Identifier">flags</span> <span class="Operator">=</span> <span class="Punctuation">{</span><span class="Identifier">regexArbitraryBytes</span><span class="Punctuation">}</span> +<span class="Identifier">doAssert</span> <span class="Identifier">match</span><span class="Punctuation">(</span><span class="StringLit">"</span><span class="EscapeSequence">\xff</span><span class="StringLit">"</span><span class="Punctuation">,</span> <span class="Identifier">re2</span><span class="Punctuation">(</span><span class="RawData">r"\xff"</span><span class="Punctuation">,</span> <span class="Identifier">flags</span><span class="Punctuation">)</span><span class="Punctuation">)</span> +<span class="Identifier">doAssert</span> <span class="Identifier">match</span><span class="Punctuation">(</span><span class="StringLit">"</span><span class="EscapeSequence">\xf8</span><span class="EscapeSequence">\xa1</span><span class="EscapeSequence">\xa1</span><span class="EscapeSequence">\xa1</span><span class="EscapeSequence">\xa1</span><span class="StringLit">"</span><span class="Punctuation">,</span> <span class="Identifier">re2</span><span class="Punctuation">(</span><span class="RawData">r".+"</span><span class="Punctuation">,</span> <span class="Identifier">flags</span><span class="Punctuation">)</span><span class="Punctuation">)</span></pre><p>Beware of (un)expected behaviour when mixin UTF-8 characters.</p> +<pre class="listing"><span class="Keyword">let</span> <span class="Identifier">flags</span> <span class="Operator">=</span> <span class="Punctuation">{</span><span class="Identifier">regexArbitraryBytes</span><span class="Punctuation">}</span> +<span class="Identifier">doAssert</span> <span class="Identifier">match</span><span class="Punctuation">(</span><span class="StringLit">"Ⓐ"</span><span class="Punctuation">,</span> <span class="Identifier">re2</span><span class="Punctuation">(</span><span class="RawData">r"Ⓐ"</span><span class="Punctuation">,</span> <span class="Identifier">flags</span><span class="Punctuation">)</span><span class="Punctuation">)</span> +<span class="Identifier">doAssert</span> <span class="Identifier">match</span><span class="Punctuation">(</span><span class="StringLit">"ⒶⒶ"</span><span class="Punctuation">,</span> <span class="Identifier">re2</span><span class="Punctuation">(</span><span class="RawData">r"(Ⓐ)+"</span><span class="Punctuation">,</span> <span class="Identifier">flags</span><span class="Punctuation">)</span><span class="Punctuation">)</span> +<span class="Identifier">doAssert</span> <span class="Keyword">not</span> <span class="Identifier">match</span><span class="Punctuation">(</span><span class="StringLit">"ⒶⒶ"</span><span class="Punctuation">,</span> <span class="Identifier">re2</span><span class="Punctuation">(</span><span class="RawData">r"Ⓐ+"</span><span class="Punctuation">,</span> <span class="Identifier">flags</span><span class="Punctuation">)</span><span class="Punctuation">)</span> <span class="Comment"># ???</span></pre><p>The last line in the above example won't match because the regex is parsed as a byte sequence. The <tt class="docutils literal"><span class="pre">Ⓐ</span></tt> character is composed of multiple bytes (<tt class="docutils literal"><span class="pre">\xe2\x92\xb6</span></tt>), and only the last byte is affected by the <tt class="docutils literal"><span class="pre">+</span></tt> operator.</p> +</p> + <div class="section" id="6"> +<h1><a class="toc-backref" href="#6">Imports</a></h1> +<dl class="item"> +<a class="reference external" href="types.html">types</a>, <a class="reference external" href="common.html">common</a>, <a class="reference external" href="compiler.html">compiler</a>, <a class="reference external" href="nfatype.html">nfatype</a>, <a class="reference external" href="nfafindall.html">nfafindall</a>, <a class="reference external" href="nfafindall2.html">nfafindall2</a>, <a class="reference external" href="nfamatch.html">nfamatch</a>, <a class="reference external" href="nfamatch2.html">nfamatch2</a>, <a class="reference external" href="litopt.html">litopt</a>, <a class="reference external" href="nfamacro.html">nfamacro</a>, <a class="reference external" href="parser.html">parser</a>, <a class="reference external" href="exptransformation.html">exptransformation</a>, <a class="reference external" href="dotgraph.html">dotgraph</a> +</dl></div> +<div class="section" id="10"> +<h1><a class="toc-backref" href="#10">Consts</a></h1> +<dl class="item"> +<div id="reNonCapture"> +<dt><pre><a href="regex.html#reNonCapture"><span class="Identifier">reNonCapture</span></a> <span class="Other">=</span> <span class="Other">(</span><span class="Identifier">a</span><span class="Other">:</span> <span class="DecNumber">-1</span><span class="Other">,</span> <span class="Identifier">b</span><span class="Other">:</span> <span class="DecNumber">-2</span><span class="Other">)</span></pre></dt> +<dd> + + + +</dd> +</div> + +</dl></div> +<div class="section" id="12"> +<h1><a class="toc-backref" href="#12">Procs</a></h1> +<dl class="item"> +<div id="contains,string,Regex"> +<dt><pre><span class="Keyword">func</span> <a href="#contains%2Cstring%2CRegex"><span class="Identifier">contains</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">pattern</span><span class="Other">:</span> <a href="nfatype.html#Regex"><span class="Identifier">Regex</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">bool</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> + <span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">"use contains(string, Regex2) instead"</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + <div class="deprecation-message"> + <b>Deprecated:</b> use contains(string, Regex2) instead + </div> + + + +</dd> +</div> +<div id="contains,string,Regex2"> +<dt><pre><span class="Keyword">func</span> <a href="#contains%2Cstring%2CRegex2"><span class="Identifier">contains</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">pattern</span><span class="Other">:</span> <a href="nfatype.html#Regex2"><span class="Identifier">Regex2</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">bool</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> + <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + +<p><strong class="examples_text">Example:</strong></p> +<pre class="listing"><span class="Identifier">doAssert</span> <span class="RawData">re2"bc"</span> <span class="Keyword">in</span> <span class="StringLit">"abcd"</span> +<span class="Identifier">doAssert</span> <span class="RawData">re2"(23)+"</span> <span class="Keyword">in</span> <span class="StringLit">"23232"</span> +<span class="Identifier">doAssert</span> <span class="RawData">re2"^(23)+$"</span> <span class="Keyword">notin</span> <span class="StringLit">"23232"</span></pre> + +</dd> +</div> +<div id="endsWith,string,Regex"> +<dt><pre><span class="Keyword">func</span> <a href="#endsWith%2Cstring%2CRegex"><span class="Identifier">endsWith</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">pattern</span><span class="Other">:</span> <a href="nfatype.html#Regex"><span class="Identifier">Regex</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">bool</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> + <span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">"use endsWith(string, Regex2) instead"</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + <div class="deprecation-message"> + <b>Deprecated:</b> use endsWith(string, Regex2) instead + </div> + + + +</dd> +</div> +<div id="endsWith,string,Regex2"> +<dt><pre><span class="Keyword">func</span> <a href="#endsWith%2Cstring%2CRegex2"><span class="Identifier">endsWith</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">pattern</span><span class="Other">:</span> <a href="nfatype.html#Regex2"><span class="Identifier">Regex2</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">bool</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> + <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + +return whether the string ends with the pattern or not +<p><strong class="examples_text">Example:</strong></p> +<pre class="listing"><span class="Identifier">doAssert</span> <span class="StringLit">"abc"</span><span class="Operator">.</span><span class="Identifier">endsWith</span><span class="Punctuation">(</span><span class="RawData">re2"\w"</span><span class="Punctuation">)</span> +<span class="Identifier">doAssert</span> <span class="Keyword">not</span> <span class="StringLit">"abc"</span><span class="Operator">.</span><span class="Identifier">endsWith</span><span class="Punctuation">(</span><span class="RawData">re2"\d"</span><span class="Punctuation">)</span></pre> + +</dd> +</div> +<div id="escapeRe,string"> +<dt><pre><span class="Keyword">func</span> <a href="#escapeRe%2Cstring"><span class="Identifier">escapeRe</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + +Escape special regex characters in <tt class="docutils literal"><span class="pre">s</span></tt> so that it can be matched verbatim + +</dd> +</div> +<div id="find,string,Regex2,RegexMatch2,int"> +<dt><pre><span class="Keyword">func</span> <a href="#find%2Cstring%2CRegex2%2CRegexMatch2%2Cint"><span class="Identifier">find</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">pattern</span><span class="Other">:</span> <a href="nfatype.html#Regex2"><span class="Identifier">Regex2</span></a><span class="Other">;</span> <span class="Identifier">m</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="nfatype.html#RegexMatch2"><span class="Identifier">RegexMatch2</span></a><span class="Other">;</span> <span class="Identifier">start</span> <span class="Other">=</span> <span class="DecNumber">0</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">bool</span> {. + <span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + +search through the string looking for the first location where there is a match +<p><strong class="examples_text">Example:</strong></p> +<pre class="listing"><span class="Keyword">var</span> <span class="Identifier">m</span><span class="Punctuation">:</span> <span class="Identifier">RegexMatch2</span> +<span class="Identifier">doAssert</span> <span class="StringLit">"abcd"</span><span class="Operator">.</span><span class="Identifier">find</span><span class="Punctuation">(</span><span class="RawData">re2"bc"</span><span class="Punctuation">,</span> <span class="Identifier">m</span><span class="Punctuation">)</span> <span class="Keyword">and</span> + <span class="Identifier">m</span><span class="Operator">.</span><span class="Identifier">boundaries</span> <span class="Operator">==</span> <span class="DecNumber">1</span> <span class="Operator">..</span> <span class="DecNumber">2</span> +<span class="Identifier">doAssert</span> <span class="Keyword">not</span> <span class="StringLit">"abcd"</span><span class="Operator">.</span><span class="Identifier">find</span><span class="Punctuation">(</span><span class="RawData">re2"de"</span><span class="Punctuation">,</span> <span class="Identifier">m</span><span class="Punctuation">)</span> +<span class="Identifier">doAssert</span> <span class="StringLit">"2222"</span><span class="Operator">.</span><span class="Identifier">find</span><span class="Punctuation">(</span><span class="RawData">re2"(22)*"</span><span class="Punctuation">,</span> <span class="Identifier">m</span><span class="Punctuation">)</span> <span class="Keyword">and</span> + <span class="Identifier">m</span><span class="Operator">.</span><span class="Identifier">group</span><span class="Punctuation">(</span><span class="DecNumber">0</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">2</span> <span class="Operator">..</span> <span class="DecNumber">3</span></pre> + +</dd> +</div> +<div id="find,string,Regex,RegexMatch,int"> +<dt><pre><span class="Keyword">func</span> <a href="#find%2Cstring%2CRegex%2CRegexMatch%2Cint"><span class="Identifier">find</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">pattern</span><span class="Other">:</span> <a href="nfatype.html#Regex"><span class="Identifier">Regex</span></a><span class="Other">;</span> <span class="Identifier">m</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="nfatype.html#RegexMatch"><span class="Identifier">RegexMatch</span></a><span class="Other">;</span> <span class="Identifier">start</span> <span class="Other">=</span> <span class="DecNumber">0</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">bool</span> {. + <span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> + <span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">"use find(string, Regex2, var RegexMatch2) instead"</span><span class="Other">,</span> + <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + <div class="deprecation-message"> + <b>Deprecated:</b> use find(string, Regex2, var RegexMatch2) instead + </div> + + + +</dd> +</div> +<div id="findAll,string,Regex2,int"> +<dt><pre><span class="Keyword">func</span> <a href="#findAll%2Cstring%2CRegex2%2Cint"><span class="Identifier">findAll</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">pattern</span><span class="Other">:</span> <a href="nfatype.html#Regex2"><span class="Identifier">Regex2</span></a><span class="Other">;</span> <span class="Identifier">start</span> <span class="Other">=</span> <span class="DecNumber">0</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="nfatype.html#RegexMatch2"><span class="Identifier">RegexMatch2</span></a><span class="Other">]</span> {.<span class="Identifier">inline</span><span class="Other">,</span> + <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> +<div id="findAll,string,Regex,int"> +<dt><pre><span class="Keyword">func</span> <a href="#findAll%2Cstring%2CRegex%2Cint"><span class="Identifier">findAll</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">pattern</span><span class="Other">:</span> <a href="nfatype.html#Regex"><span class="Identifier">Regex</span></a><span class="Other">;</span> <span class="Identifier">start</span> <span class="Other">=</span> <span class="DecNumber">0</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="nfatype.html#RegexMatch"><span class="Identifier">RegexMatch</span></a><span class="Other">]</span> {.<span class="Identifier">inline</span><span class="Other">,</span> + <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">"use findAll(string, Regex2) instead"</span><span class="Other">,</span> + <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + <div class="deprecation-message"> + <b>Deprecated:</b> use findAll(string, Regex2) instead + </div> + + + +</dd> +</div> +<div id="findAllBounds,string,Regex2,int"> +<dt><pre><span class="Keyword">func</span> <a href="#findAllBounds%2Cstring%2CRegex2%2Cint"><span class="Identifier">findAllBounds</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">pattern</span><span class="Other">:</span> <a href="nfatype.html#Regex2"><span class="Identifier">Regex2</span></a><span class="Other">;</span> <span class="Identifier">start</span> <span class="Other">=</span> <span class="DecNumber">0</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">Slice</span><span class="Other">[</span><span class="Identifier">int</span><span class="Other">]</span><span class="Other">]</span> {. + <span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> +<div id="findAllBounds,string,Regex,int"> +<dt><pre><span class="Keyword">func</span> <a href="#findAllBounds%2Cstring%2CRegex%2Cint"><span class="Identifier">findAllBounds</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">pattern</span><span class="Other">:</span> <a href="nfatype.html#Regex"><span class="Identifier">Regex</span></a><span class="Other">;</span> <span class="Identifier">start</span> <span class="Other">=</span> <span class="DecNumber">0</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">Slice</span><span class="Other">[</span><span class="Identifier">int</span><span class="Other">]</span><span class="Other">]</span> {. + <span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">"use findAllBounds(string, Regex2) instead"</span><span class="Other">,</span> + <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + <div class="deprecation-message"> + <b>Deprecated:</b> use findAllBounds(string, Regex2) instead + </div> + + + +</dd> +</div> +<div id="findAndCaptureAll,string,Regex"> +<dt><pre><span class="Keyword">func</span> <a href="#findAndCaptureAll%2Cstring%2CRegex"><span class="Identifier">findAndCaptureAll</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">pattern</span><span class="Other">:</span> <a href="nfatype.html#Regex"><span class="Identifier">Regex</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span> {.<span class="Identifier">inline</span><span class="Other">,</span> + <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">"use findAll(string, Regex2) instead"</span><span class="Other">,</span> + <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + <div class="deprecation-message"> + <b>Deprecated:</b> use findAll(string, Regex2) instead + </div> + + + +</dd> +</div> +<div id="group,RegexMatch2,int"> +<dt><pre><span class="Keyword">func</span> <a href="#group%2CRegexMatch2%2Cint"><span class="Identifier">group</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <a href="nfatype.html#RegexMatch2"><span class="Identifier">RegexMatch2</span></a><span class="Other">;</span> <span class="Identifier">i</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Slice</span><span class="Other">[</span><span class="Identifier">int</span><span class="Other">]</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + +return slice for a given group. Slice of start > end are empty matches (i.e.: <tt class="docutils literal"><span class="pre">re2"(\d?)"</span></tt>) and they are included same as in PCRE. +<p><strong class="examples_text">Example:</strong></p> +<pre class="listing"><span class="Keyword">let</span> <span class="Identifier">text</span> <span class="Operator">=</span> <span class="StringLit">"abc"</span> +<span class="Keyword">var</span> <span class="Identifier">m</span><span class="Punctuation">:</span> <span class="Identifier">RegexMatch2</span> +<span class="Identifier">doAssert</span> <span class="Identifier">text</span><span class="Operator">.</span><span class="Identifier">match</span><span class="Punctuation">(</span><span class="RawData">re2"(\w)+"</span><span class="Punctuation">,</span> <span class="Identifier">m</span><span class="Punctuation">)</span> +<span class="Identifier">doAssert</span> <span class="Identifier">text</span><span class="Punctuation">[</span><span class="Identifier">m</span><span class="Operator">.</span><span class="Identifier">group</span><span class="Punctuation">(</span><span class="DecNumber">0</span><span class="Punctuation">)</span><span class="Punctuation">]</span> <span class="Operator">==</span> <span class="StringLit">"c"</span></pre> + +</dd> +</div> +<div id="group,RegexMatch2,string"> +<dt><pre><span class="Keyword">func</span> <a href="#group%2CRegexMatch2%2Cstring"><span class="Identifier">group</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <a href="nfatype.html#RegexMatch2"><span class="Identifier">RegexMatch2</span></a><span class="Other">;</span> <span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Slice</span><span class="Other">[</span><span class="Identifier">int</span><span class="Other">]</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">KeyError</span><span class="Other">]</span><span class="Other">,</span> + <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + +return slices for a given named group +<p><strong class="examples_text">Example:</strong></p> +<pre class="listing"><span class="Keyword">let</span> <span class="Identifier">text</span> <span class="Operator">=</span> <span class="StringLit">"abc"</span> +<span class="Keyword">var</span> <span class="Identifier">m</span><span class="Punctuation">:</span> <span class="Identifier">RegexMatch2</span> +<span class="Identifier">doAssert</span> <span class="Identifier">text</span><span class="Operator">.</span><span class="Identifier">match</span><span class="Punctuation">(</span><span class="RawData">re2"(?P<foo>\w)+"</span><span class="Punctuation">,</span> <span class="Identifier">m</span><span class="Punctuation">)</span> +<span class="Identifier">doAssert</span> <span class="Identifier">text</span><span class="Punctuation">[</span><span class="Identifier">m</span><span class="Operator">.</span><span class="Identifier">group</span><span class="Punctuation">(</span><span class="StringLit">"foo"</span><span class="Punctuation">)</span><span class="Punctuation">]</span> <span class="Operator">==</span> <span class="StringLit">"c"</span></pre> + +</dd> +</div> +<div id="group,RegexMatch,string,string"> +<dt><pre><span class="Keyword">func</span> <a href="#group%2CRegexMatch%2Cstring%2Cstring"><span class="Identifier">group</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <a href="nfatype.html#RegexMatch"><span class="Identifier">RegexMatch</span></a><span class="Other">;</span> <span class="Identifier">groupName</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">text</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span> {. + <span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">KeyError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">deprecated</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + <div class="deprecation-message"> + <b>Deprecated</b> + </div> + + + +</dd> +</div> +<div id="group,RegexMatch,int"> +<dt><pre><span class="Keyword">func</span> <a href="#group%2CRegexMatch%2Cint"><span class="Identifier">group</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <a href="nfatype.html#RegexMatch"><span class="Identifier">RegexMatch</span></a><span class="Other">;</span> <span class="Identifier">i</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">Slice</span><span class="Other">[</span><span class="Identifier">int</span><span class="Other">]</span><span class="Other">]</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> + <span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">"use group(RegexMatch2, int)"</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + <div class="deprecation-message"> + <b>Deprecated:</b> use group(RegexMatch2, int) + </div> + + + +</dd> +</div> +<div id="group,RegexMatch,int,string"> +<dt><pre><span class="Keyword">func</span> <a href="#group%2CRegexMatch%2Cint%2Cstring"><span class="Identifier">group</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <a href="nfatype.html#RegexMatch"><span class="Identifier">RegexMatch</span></a><span class="Other">;</span> <span class="Identifier">i</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">;</span> <span class="Identifier">text</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span> {.<span class="Identifier">inline</span><span class="Other">,</span> + <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">deprecated</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + <div class="deprecation-message"> + <b>Deprecated</b> + </div> + + + +</dd> +</div> +<div id="group,RegexMatch,string"> +<dt><pre><span class="Keyword">func</span> <a href="#group%2CRegexMatch%2Cstring"><span class="Identifier">group</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <a href="nfatype.html#RegexMatch"><span class="Identifier">RegexMatch</span></a><span class="Other">;</span> <span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">Slice</span><span class="Other">[</span><span class="Identifier">int</span><span class="Other">]</span><span class="Other">]</span> {.<span class="Identifier">inline</span><span class="Other">,</span> + <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">KeyError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">"use group(RegexMatch2, string)"</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + <div class="deprecation-message"> + <b>Deprecated:</b> use group(RegexMatch2, string) + </div> + + + +</dd> +</div> +<div id="groupFirstCapture,RegexMatch,string,string"> +<dt><pre><span class="Keyword">func</span> <a href="#groupFirstCapture%2CRegexMatch%2Cstring%2Cstring"><span class="Identifier">groupFirstCapture</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <a href="nfatype.html#RegexMatch"><span class="Identifier">RegexMatch</span></a><span class="Other">;</span> <span class="Identifier">groupName</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">text</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</span> {. + <span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">KeyError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">deprecated</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + <div class="deprecation-message"> + <b>Deprecated</b> + </div> + + + +</dd> +</div> +<div id="groupFirstCapture,RegexMatch,int,string"> +<dt><pre><span class="Keyword">func</span> <a href="#groupFirstCapture%2CRegexMatch%2Cint%2Cstring"><span class="Identifier">groupFirstCapture</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <a href="nfatype.html#RegexMatch"><span class="Identifier">RegexMatch</span></a><span class="Other">;</span> <span class="Identifier">i</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">;</span> <span class="Identifier">text</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</span> {.<span class="Identifier">inline</span><span class="Other">,</span> + <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">deprecated</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + <div class="deprecation-message"> + <b>Deprecated</b> + </div> + + + +</dd> +</div> +<div id="groupLastCapture,RegexMatch,string,string"> +<dt><pre><span class="Keyword">func</span> <a href="#groupLastCapture%2CRegexMatch%2Cstring%2Cstring"><span class="Identifier">groupLastCapture</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <a href="nfatype.html#RegexMatch"><span class="Identifier">RegexMatch</span></a><span class="Other">;</span> <span class="Identifier">groupName</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">text</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</span> {. + <span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">KeyError</span><span class="Other">]</span><span class="Other">,</span> + <span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">"use group(RegexMatch2, string) instead"</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + <div class="deprecation-message"> + <b>Deprecated:</b> use group(RegexMatch2, string) instead + </div> + + + +</dd> +</div> +<div id="groupLastCapture,RegexMatch,int,string"> +<dt><pre><span class="Keyword">func</span> <a href="#groupLastCapture%2CRegexMatch%2Cint%2Cstring"><span class="Identifier">groupLastCapture</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <a href="nfatype.html#RegexMatch"><span class="Identifier">RegexMatch</span></a><span class="Other">;</span> <span class="Identifier">i</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">;</span> <span class="Identifier">text</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</span> {.<span class="Identifier">inline</span><span class="Other">,</span> + <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">"use group(RegexMatch2, int) instead"</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + <div class="deprecation-message"> + <b>Deprecated:</b> use group(RegexMatch2, int) instead + </div> + + + +</dd> +</div> +<div id="groupNames,RegexMatch"> +<dt><pre><span class="Keyword">func</span> <a href="#groupNames%2CRegexMatch"><span class="Identifier">groupNames</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <a href="nfatype.html#RegexMatch"><span class="Identifier">RegexMatch</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> + <span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">"use groupNames(RegexMatch2)"</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + <div class="deprecation-message"> + <b>Deprecated:</b> use groupNames(RegexMatch2) + </div> + + + +</dd> +</div> +<div id="groupNames,RegexMatch2"> +<dt><pre><span class="Keyword">func</span> <a href="#groupNames%2CRegexMatch2"><span class="Identifier">groupNames</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <a href="nfatype.html#RegexMatch2"><span class="Identifier">RegexMatch2</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + +return the names of capturing groups. +<p><strong class="examples_text">Example:</strong></p> +<pre class="listing"><span class="Keyword">let</span> <span class="Identifier">text</span> <span class="Operator">=</span> <span class="StringLit">"hello world"</span> +<span class="Keyword">var</span> <span class="Identifier">m</span><span class="Punctuation">:</span> <span class="Identifier">RegexMatch2</span> +<span class="Identifier">doAssert</span> <span class="Identifier">text</span><span class="Operator">.</span><span class="Identifier">match</span><span class="Punctuation">(</span><span class="RawData">re2"(?P<greet>hello) (?P<who>world)"</span><span class="Punctuation">,</span> <span class="Identifier">m</span><span class="Punctuation">)</span> +<span class="Identifier">doAssert</span> <span class="Identifier">m</span><span class="Operator">.</span><span class="Identifier">groupNames</span> <span class="Operator">==</span> <span class="Operator">@</span><span class="Punctuation">[</span><span class="StringLit">"greet"</span><span class="Punctuation">,</span> <span class="StringLit">"who"</span><span class="Punctuation">]</span></pre> + +</dd> +</div> +<div id="groupsCount,RegexMatch"> +<dt><pre><span class="Keyword">func</span> <a href="#groupsCount%2CRegexMatch"><span class="Identifier">groupsCount</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <a href="nfatype.html#RegexMatch"><span class="Identifier">RegexMatch</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">int</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">"use groupsCount(RegexMatch2)"</span><span class="Other">,</span> + <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + <div class="deprecation-message"> + <b>Deprecated:</b> use groupsCount(RegexMatch2) + </div> + + + +</dd> +</div> +<div id="groupsCount,RegexMatch2"> +<dt><pre><span class="Keyword">func</span> <a href="#groupsCount%2CRegexMatch2"><span class="Identifier">groupsCount</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <a href="nfatype.html#RegexMatch2"><span class="Identifier">RegexMatch2</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">int</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + +return the number of capturing groups +<p><strong class="examples_text">Example:</strong></p> +<pre class="listing"><span class="Keyword">var</span> <span class="Identifier">m</span><span class="Punctuation">:</span> <span class="Identifier">RegexMatch2</span> +<span class="Identifier">doAssert</span> <span class="StringLit">"ab"</span><span class="Operator">.</span><span class="Identifier">match</span><span class="Punctuation">(</span><span class="RawData">re2"(a)(b)"</span><span class="Punctuation">,</span> <span class="Identifier">m</span><span class="Punctuation">)</span> +<span class="Identifier">doAssert</span> <span class="Identifier">m</span><span class="Operator">.</span><span class="Identifier">groupsCount</span> <span class="Operator">==</span> <span class="DecNumber">2</span></pre> + +</dd> +</div> +<div id="isInitialized,Regex"> +<dt><pre><span class="Keyword">func</span> <a href="#isInitialized%2CRegex"><span class="Identifier">isInitialized</span></a><span class="Other">(</span><span class="Identifier">re</span><span class="Other">:</span> <a href="nfatype.html#Regex"><span class="Identifier">Regex</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">bool</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">"use isInitialized(Regex2) instead"</span><span class="Other">,</span> + <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + <div class="deprecation-message"> + <b>Deprecated:</b> use isInitialized(Regex2) instead + </div> + + + +</dd> +</div> +<div id="isInitialized,Regex2"> +<dt><pre><span class="Keyword">func</span> <a href="#isInitialized%2CRegex2"><span class="Identifier">isInitialized</span></a><span class="Other">(</span><span class="Identifier">re</span><span class="Other">:</span> <a href="nfatype.html#Regex2"><span class="Identifier">Regex2</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">bool</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + +Check whether the regex has been initialized +<p><strong class="examples_text">Example:</strong></p> +<pre class="listing"><span class="Keyword">var</span> <span class="Identifier">re</span><span class="Punctuation">:</span> <span class="Identifier">Regex2</span> +<span class="Identifier">doAssert</span> <span class="Keyword">not</span> <span class="Identifier">re</span><span class="Operator">.</span><span class="Identifier">isInitialized</span> +<span class="Identifier">re</span> <span class="Operator">=</span> <span class="RawData">re2"foo"</span> +<span class="Identifier">doAssert</span> <span class="Identifier">re</span><span class="Operator">.</span><span class="Identifier">isInitialized</span></pre> + +</dd> +</div> +<div id="match,string,Regex"> +<dt><pre><span class="Keyword">func</span> <a href="#match%2Cstring%2CRegex"><span class="Identifier">match</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">pattern</span><span class="Other">:</span> <a href="nfatype.html#Regex"><span class="Identifier">Regex</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">bool</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> + <span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">"use match(string, Regex2) instead"</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + <div class="deprecation-message"> + <b>Deprecated:</b> use match(string, Regex2) instead + </div> + + + +</dd> +</div> +<div id="match,string,Regex2"> +<dt><pre><span class="Keyword">func</span> <a href="#match%2Cstring%2CRegex2"><span class="Identifier">match</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">pattern</span><span class="Other">:</span> <a href="nfatype.html#Regex2"><span class="Identifier">Regex2</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">bool</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> + <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + + + +</dd> +</div> +<div id="match,string,Regex2,RegexMatch2,int"> +<dt><pre><span class="Keyword">func</span> <a href="#match%2Cstring%2CRegex2%2CRegexMatch2%2Cint"><span class="Identifier">match</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">pattern</span><span class="Other">:</span> <a href="nfatype.html#Regex2"><span class="Identifier">Regex2</span></a><span class="Other">;</span> <span class="Identifier">m</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="nfatype.html#RegexMatch2"><span class="Identifier">RegexMatch2</span></a><span class="Other">;</span> <span class="Identifier">start</span> <span class="Other">=</span> <span class="DecNumber">0</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">bool</span> {. + <span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + +return a match if the whole string matches the regular expression. This is similar to <tt class="docutils literal"><span class="pre">find(text, re"^regex$", m)</span></tt> but has better performance +<p><strong class="examples_text">Example:</strong></p> +<pre class="listing"><span class="Keyword">var</span> <span class="Identifier">m</span><span class="Punctuation">:</span> <span class="Identifier">RegexMatch2</span> +<span class="Identifier">doAssert</span> <span class="StringLit">"abcd"</span><span class="Operator">.</span><span class="Identifier">match</span><span class="Punctuation">(</span><span class="RawData">re2"abcd"</span><span class="Punctuation">,</span> <span class="Identifier">m</span><span class="Punctuation">)</span> +<span class="Identifier">doAssert</span> <span class="Keyword">not</span> <span class="StringLit">"abcd"</span><span class="Operator">.</span><span class="Identifier">match</span><span class="Punctuation">(</span><span class="RawData">re2"abc"</span><span class="Punctuation">,</span> <span class="Identifier">m</span><span class="Punctuation">)</span></pre> + +</dd> +</div> +<div id="match,string,Regex,RegexMatch,int"> +<dt><pre><span class="Keyword">func</span> <a href="#match%2Cstring%2CRegex%2CRegexMatch%2Cint"><span class="Identifier">match</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">pattern</span><span class="Other">:</span> <a href="nfatype.html#Regex"><span class="Identifier">Regex</span></a><span class="Other">;</span> <span class="Identifier">m</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="nfatype.html#RegexMatch"><span class="Identifier">RegexMatch</span></a><span class="Other">;</span> <span class="Identifier">start</span> <span class="Other">=</span> <span class="DecNumber">0</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">bool</span> {. + <span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> + <span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">"use match(string, Regex2, var RegexMatch2) instead"</span><span class="Other">,</span> + <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + <div class="deprecation-message"> + <b>Deprecated:</b> use match(string, Regex2, var RegexMatch2) instead + </div> + + + +</dd> +</div> +<div id="re,staticstring"> +<dt><pre><span class="Keyword">func</span> <a href="#re%2Cstaticstring"><span class="Identifier">re</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">static</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">static</span><span class="Other">[</span><a href="nfatype.html#Regex"><span class="Identifier">Regex</span></a><span class="Other">]</span> {.<span class="Identifier">inline</span><span class="Other">,</span> + <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">"use re2(static string) instead"</span></span>.}</pre></dt> +<dd> + <div class="deprecation-message"> + <b>Deprecated:</b> use re2(static string) instead + </div> + + + +</dd> +</div> +<div id="re,string"> +<dt><pre><span class="Keyword">func</span> <a href="#re%2Cstring"><span class="Identifier">re</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <a href="nfatype.html#Regex"><span class="Identifier">Regex</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><a href="common.html#RegexError"><span class="Identifier">RegexError</span></a><span class="Other">]</span><span class="Other">,</span> + <span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">"use re2(string) instead"</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + <div class="deprecation-message"> + <b>Deprecated:</b> use re2(string) instead + </div> + + + +</dd> +</div> +<div id="re2,staticstring,staticRegexFlags"> +<dt><pre><span class="Keyword">func</span> <a href="#re2%2Cstaticstring%2CstaticRegexFlags"><span class="Identifier">re2</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">static</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">flags</span><span class="Other">:</span> <span class="Identifier">static</span> <span class="Identifier">RegexFlags</span> <span class="Other">=</span> <span class="Other">{</span><span class="Other">}</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">static</span><span class="Other">[</span><a href="nfatype.html#Regex2"><span class="Identifier">Regex2</span></a><span class="Other">]</span> {. + <span class="Identifier">inline</span>.}</pre></dt> +<dd> + +Parse and compile a regular expression at compile-time + +</dd> +</div> +<div id="re2,string,RegexFlags"> +<dt><pre><span class="Keyword">func</span> <a href="#re2%2Cstring%2CRegexFlags"><span class="Identifier">re2</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">flags</span><span class="Other">:</span> <a href="types.html#RegexFlags"><span class="Identifier">RegexFlags</span></a> <span class="Other">=</span> <span class="Other">{</span><span class="Other">}</span><span class="Other">)</span><span class="Other">:</span> <a href="nfatype.html#Regex2"><span class="Identifier">Regex2</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><a href="common.html#RegexError"><span class="Identifier">RegexError</span></a><span class="Other">]</span><span class="Other">,</span> + <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + +Parse and compile a regular expression at run-time +<p><strong class="examples_text">Example:</strong></p> +<pre class="listing"><span class="Keyword">let</span> <span class="Identifier">abcx</span> <span class="Operator">=</span> <span class="RawData">re2"abc\w"</span> +<span class="Keyword">let</span> <span class="Identifier">abcx2</span> <span class="Operator">=</span> <span class="Identifier">re2</span><span class="Punctuation">(</span><span class="RawData">r"abc\w"</span><span class="Punctuation">)</span> +<span class="Keyword">let</span> <span class="Identifier">pat</span> <span class="Operator">=</span> <span class="RawData">r"abc\w"</span> +<span class="Keyword">let</span> <span class="Identifier">abcx3</span> <span class="Operator">=</span> <span class="Identifier">re2</span><span class="Punctuation">(</span><span class="Identifier">pat</span><span class="Punctuation">)</span></pre> + +</dd> +</div> +<div id="replace,string,Regex2,proc(RegexMatch2,string),int"> +<dt><pre><span class="Keyword">func</span> <a href="#replace%2Cstring%2CRegex2%2Cproc%28RegexMatch2%2Cstring%29%2Cint"><span class="Identifier">replace</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">pattern</span><span class="Other">:</span> <a href="nfatype.html#Regex2"><span class="Identifier">Regex2</span></a><span class="Other">;</span> + <span class="Identifier">by</span><span class="Other">:</span> <span class="Keyword">proc</span> <span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <a href="nfatype.html#RegexMatch2"><span class="Identifier">RegexMatch2</span></a><span class="Other">;</span> <span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">limit</span> <span class="Other">=</span> <span class="DecNumber">0</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</span> {. + <span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> </span><span class="Identifier">effectsOf</span><span class="Other">:</span> <span class="Identifier">by</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + +<p>Replace matched substrings.</p> +<p>If <tt class="docutils literal"><span class="pre">limit</span></tt> is given, at most <tt class="docutils literal"><span class="pre">limit</span></tt> replacements are done. <tt class="docutils literal"><span class="pre">limit</span></tt> of 0 means there is no limit</p> + +<p><strong class="examples_text">Example:</strong></p> +<pre class="listing"><span class="Keyword">proc</span> <span class="Identifier">removeStars</span><span class="Punctuation">(</span><span class="Identifier">m</span><span class="Punctuation">:</span> <span class="Identifier">RegexMatch2</span><span class="Punctuation">,</span> <span class="Identifier">s</span><span class="Punctuation">:</span> <span class="Identifier">string</span><span class="Punctuation">)</span><span class="Punctuation">:</span> <span class="Identifier">string</span> <span class="Operator">=</span> + <span class="Identifier">result</span> <span class="Operator">=</span> <span class="Identifier">s</span><span class="Punctuation">[</span><span class="Identifier">m</span><span class="Operator">.</span><span class="Identifier">group</span><span class="Punctuation">(</span><span class="DecNumber">0</span><span class="Punctuation">)</span><span class="Punctuation">]</span> + <span class="Keyword">if</span> <span class="Identifier">result</span> <span class="Operator">==</span> <span class="StringLit">"*"</span><span class="Punctuation">:</span> + <span class="Identifier">result</span> <span class="Operator">=</span> <span class="StringLit">""</span> +<span class="Keyword">let</span> <span class="Identifier">text</span> <span class="Operator">=</span> <span class="StringLit">"**this is a test**"</span> +<span class="Identifier">doAssert</span> <span class="Identifier">text</span><span class="Operator">.</span><span class="Identifier">replace</span><span class="Punctuation">(</span><span class="RawData">re2"(\*)"</span><span class="Punctuation">,</span> <span class="Identifier">removeStars</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">"this is a test"</span></pre> + +</dd> +</div> +<div id="replace,string,Regex2,string,int"> +<dt><pre><span class="Keyword">func</span> <a href="#replace%2Cstring%2CRegex2%2Cstring%2Cint"><span class="Identifier">replace</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">pattern</span><span class="Other">:</span> <a href="nfatype.html#Regex2"><span class="Identifier">Regex2</span></a><span class="Other">;</span> <span class="Identifier">by</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">limit</span> <span class="Other">=</span> <span class="DecNumber">0</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</span> {. + <span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">ValueError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + +<p>Replace matched substrings.</p> +<p>Matched groups can be accessed with <tt class="docutils literal"><span class="pre">$N</span></tt> notation, where <tt class="docutils literal"><span class="pre">N</span></tt> is the group's index, starting at 1 (1-indexed). <tt class="docutils literal"><span class="pre">$$</span></tt> means literal <tt class="docutils literal"><span class="pre">$</span></tt>.</p> +<p>If <tt class="docutils literal"><span class="pre">limit</span></tt> is given, at most <tt class="docutils literal"><span class="pre">limit</span></tt> replacements are done. <tt class="docutils literal"><span class="pre">limit</span></tt> of 0 means there is no limit</p> + +<p><strong class="examples_text">Example:</strong></p> +<pre class="listing"><span class="Identifier">doAssert</span> <span class="StringLit">"aaa"</span><span class="Operator">.</span><span class="Identifier">replace</span><span class="Punctuation">(</span><span class="RawData">re2"a"</span><span class="Punctuation">,</span> <span class="StringLit">"b"</span><span class="Punctuation">,</span> <span class="DecNumber">1</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">"baa"</span> +<span class="Identifier">doAssert</span> <span class="StringLit">"abc"</span><span class="Operator">.</span><span class="Identifier">replace</span><span class="Punctuation">(</span><span class="RawData">re2"(a(b)c)"</span><span class="Punctuation">,</span> <span class="StringLit">"m($1) m($2)"</span><span class="Punctuation">)</span> <span class="Operator">==</span> + <span class="StringLit">"m(abc) m(b)"</span> +<span class="Identifier">doAssert</span> <span class="StringLit">"Nim is awesome!"</span><span class="Operator">.</span><span class="Identifier">replace</span><span class="Punctuation">(</span><span class="RawData">re2"(\w\B)"</span><span class="Punctuation">,</span> <span class="StringLit">"$1_"</span><span class="Punctuation">)</span> <span class="Operator">==</span> + <span class="StringLit">"N_i_m i_s a_w_e_s_o_m_e!"</span></pre> + +</dd> +</div> +<div id="replace,string,Regex,proc(RegexMatch,string),int"> +<dt><pre><span class="Keyword">func</span> <a href="#replace%2Cstring%2CRegex%2Cproc%28RegexMatch%2Cstring%29%2Cint"><span class="Identifier">replace</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">pattern</span><span class="Other">:</span> <a href="nfatype.html#Regex"><span class="Identifier">Regex</span></a><span class="Other">;</span> + <span class="Identifier">by</span><span class="Other">:</span> <span class="Keyword">proc</span> <span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <a href="nfatype.html#RegexMatch"><span class="Identifier">RegexMatch</span></a><span class="Other">;</span> <span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">limit</span> <span class="Other">=</span> <span class="DecNumber">0</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</span> {. + <span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> </span><span class="Identifier">effectsOf</span><span class="Other">:</span> <span class="Identifier">by</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">"use replace(string, Regex2, proc(RegexMatch2, string): string) instead"</span><span class="Other">,</span> + <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + <div class="deprecation-message"> + <b>Deprecated:</b> use replace(string, Regex2, proc(RegexMatch2, string): string) instead + </div> + + + +</dd> +</div> +<div id="replace,string,Regex,string,int"> +<dt><pre><span class="Keyword">func</span> <a href="#replace%2Cstring%2CRegex%2Cstring%2Cint"><span class="Identifier">replace</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">pattern</span><span class="Other">:</span> <a href="nfatype.html#Regex"><span class="Identifier">Regex</span></a><span class="Other">;</span> <span class="Identifier">by</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">limit</span> <span class="Other">=</span> <span class="DecNumber">0</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</span> {.<span class="Identifier">inline</span><span class="Other">,</span> + <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">ValueError</span><span class="Other">]</span><span class="Other">,</span> + <span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">"use replace(string, Regex2, string) instead"</span><span class="Other">,</span> + <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + <div class="deprecation-message"> + <b>Deprecated:</b> use replace(string, Regex2, string) instead + </div> + + + +</dd> +</div> +<div id="rex,string"> +<dt><pre><span class="Keyword">func</span> <a href="#rex%2Cstring"><span class="Identifier">rex</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <a href="nfatype.html#RegexLit"><span class="Identifier">RegexLit</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + +Raw regex literal string + +</dd> +</div> +<div id="split,string,Regex"> +<dt><pre><span class="Keyword">func</span> <a href="#split%2Cstring%2CRegex"><span class="Identifier">split</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">sep</span><span class="Other">:</span> <a href="nfatype.html#Regex"><span class="Identifier">Regex</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> + <span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">"use split(string, Regex2) instead"</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + <div class="deprecation-message"> + <b>Deprecated:</b> use split(string, Regex2) instead + </div> + + + +</dd> +</div> +<div id="split,string,Regex2"> +<dt><pre><span class="Keyword">func</span> <a href="#split%2Cstring%2CRegex2"><span class="Identifier">split</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">sep</span><span class="Other">:</span> <a href="nfatype.html#Regex2"><span class="Identifier">Regex2</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> + <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + +return not matched substrings +<p><strong class="examples_text">Example:</strong></p> +<pre class="listing"><span class="Identifier">doAssert</span> <span class="Identifier">split</span><span class="Punctuation">(</span><span class="StringLit">"11a22Ϊ33Ⓐ44弢55"</span><span class="Punctuation">,</span> <span class="RawData">re2"\d+"</span><span class="Punctuation">)</span> <span class="Operator">==</span> + <span class="Operator">@</span><span class="Punctuation">[</span><span class="StringLit">""</span><span class="Punctuation">,</span> <span class="StringLit">"a"</span><span class="Punctuation">,</span> <span class="StringLit">"Ϊ"</span><span class="Punctuation">,</span> <span class="StringLit">"Ⓐ"</span><span class="Punctuation">,</span> <span class="StringLit">"弢"</span><span class="Punctuation">,</span> <span class="StringLit">""</span><span class="Punctuation">]</span></pre> + +</dd> +</div> +<div id="splitIncl,string,Regex"> +<dt><pre><span class="Keyword">func</span> <a href="#splitIncl%2Cstring%2CRegex"><span class="Identifier">splitIncl</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">sep</span><span class="Other">:</span> <a href="nfatype.html#Regex"><span class="Identifier">Regex</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> + <span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">"use splitIncl(string, Regex2) instead"</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + <div class="deprecation-message"> + <b>Deprecated:</b> use splitIncl(string, Regex2) instead + </div> + + + +</dd> +</div> +<div id="splitIncl,string,Regex2"> +<dt><pre><span class="Keyword">func</span> <a href="#splitIncl%2Cstring%2CRegex2"><span class="Identifier">splitIncl</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">sep</span><span class="Other">:</span> <a href="nfatype.html#Regex2"><span class="Identifier">Regex2</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> + <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + +return not matched substrings, including captured groups +<p><strong class="examples_text">Example:</strong></p> +<pre class="listing"><span class="Keyword">let</span> + <span class="Identifier">parts</span> <span class="Operator">=</span> <span class="Identifier">splitIncl</span><span class="Punctuation">(</span><span class="StringLit">"a,b"</span><span class="Punctuation">,</span> <span class="RawData">re2"(,)"</span><span class="Punctuation">)</span> + <span class="Identifier">expected</span> <span class="Operator">=</span> <span class="Operator">@</span><span class="Punctuation">[</span><span class="StringLit">"a"</span><span class="Punctuation">,</span> <span class="StringLit">","</span><span class="Punctuation">,</span> <span class="StringLit">"b"</span><span class="Punctuation">]</span> +<span class="Identifier">doAssert</span> <span class="Identifier">parts</span> <span class="Operator">==</span> <span class="Identifier">expected</span></pre> + +</dd> +</div> +<div id="startsWith,string,Regex2,int"> +<dt><pre><span class="Keyword">func</span> <a href="#startsWith%2Cstring%2CRegex2%2Cint"><span class="Identifier">startsWith</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">pattern</span><span class="Other">:</span> <a href="nfatype.html#Regex2"><span class="Identifier">Regex2</span></a><span class="Other">;</span> <span class="Identifier">start</span> <span class="Other">=</span> <span class="DecNumber">0</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">bool</span> {.<span class="Identifier">inline</span><span class="Other">,</span> + <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + +return whether the string starts with the pattern or not +<p><strong class="examples_text">Example:</strong></p> +<pre class="listing"><span class="Identifier">doAssert</span> <span class="StringLit">"abc"</span><span class="Operator">.</span><span class="Identifier">startsWith</span><span class="Punctuation">(</span><span class="RawData">re2"\w"</span><span class="Punctuation">)</span> +<span class="Identifier">doAssert</span> <span class="Keyword">not</span> <span class="StringLit">"abc"</span><span class="Operator">.</span><span class="Identifier">startsWith</span><span class="Punctuation">(</span><span class="RawData">re2"\d"</span><span class="Punctuation">)</span></pre> + +</dd> +</div> +<div id="startsWith,string,Regex,int"> +<dt><pre><span class="Keyword">func</span> <a href="#startsWith%2Cstring%2CRegex%2Cint"><span class="Identifier">startsWith</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">pattern</span><span class="Other">:</span> <a href="nfatype.html#Regex"><span class="Identifier">Regex</span></a><span class="Other">;</span> <span class="Identifier">start</span> <span class="Other">=</span> <span class="DecNumber">0</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">bool</span> {.<span class="Identifier">inline</span><span class="Other">,</span> + <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">"use startsWith(string, Regex2) instead"</span><span class="Other">,</span> + <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + <div class="deprecation-message"> + <b>Deprecated:</b> use startsWith(string, Regex2) instead + </div> + + + +</dd> +</div> +<div id="toPattern,string"> +<dt><pre><span class="Keyword">func</span> <a href="#toPattern%2Cstring"><span class="Identifier">toPattern</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <a href="nfatype.html#Regex"><span class="Identifier">Regex</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><a href="common.html#RegexError"><span class="Identifier">RegexError</span></a><span class="Other">]</span><span class="Other">,</span> + <span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">"Use `re2(string)` instead"</span><span class="Other">,</span> + <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + <div class="deprecation-message"> + <b>Deprecated:</b> Use `re2(string)` instead + </div> + + + +</dd> +</div> + +</dl></div> +<div class="section" id="15"> +<h1><a class="toc-backref" href="#15">Iterators</a></h1> +<dl class="item"> +<div id="findAll.i,string,Regex2,int"> +<dt><pre><span class="Keyword">iterator</span> <a href="#findAll.i%2Cstring%2CRegex2%2Cint"><span class="Identifier">findAll</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">pattern</span><span class="Other">:</span> <a href="nfatype.html#Regex2"><span class="Identifier">Regex2</span></a><span class="Other">;</span> <span class="Identifier">start</span> <span class="Other">=</span> <span class="DecNumber">0</span><span class="Other">)</span><span class="Other">:</span> <a href="nfatype.html#RegexMatch2"><span class="Identifier">RegexMatch2</span></a> {.<span class="Identifier">inline</span><span class="Other">,</span> + <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + +search through the string and return each match. Empty matches (start > end) are included +<p><strong class="examples_text">Example:</strong></p> +<pre class="listing"><span class="Keyword">let</span> <span class="Identifier">text</span> <span class="Operator">=</span> <span class="StringLit">"abcabc"</span> +<span class="Keyword">var</span> <span class="Identifier">bounds</span> <span class="Operator">=</span> <span class="Identifier">newSeq</span><span class="Punctuation">[</span><span class="Identifier">Slice</span><span class="Punctuation">[</span><span class="Identifier">int</span><span class="Punctuation">]</span><span class="Punctuation">]</span><span class="Punctuation">(</span><span class="Punctuation">)</span> +<span class="Keyword">var</span> <span class="Identifier">found</span> <span class="Operator">=</span> <span class="Identifier">newSeq</span><span class="Punctuation">[</span><span class="Identifier">string</span><span class="Punctuation">]</span><span class="Punctuation">(</span><span class="Punctuation">)</span> +<span class="Keyword">for</span> <span class="Identifier">m</span> <span class="Keyword">in</span> <span class="Identifier">findAll</span><span class="Punctuation">(</span><span class="Identifier">text</span><span class="Punctuation">,</span> <span class="RawData">re2"bc"</span><span class="Punctuation">)</span><span class="Punctuation">:</span> + <span class="Identifier">bounds</span><span class="Operator">.</span><span class="Identifier">add</span> <span class="Identifier">m</span><span class="Operator">.</span><span class="Identifier">boundaries</span> + <span class="Identifier">found</span><span class="Operator">.</span><span class="Identifier">add</span> <span class="Identifier">text</span><span class="Punctuation">[</span><span class="Identifier">m</span><span class="Operator">.</span><span class="Identifier">boundaries</span><span class="Punctuation">]</span> +<span class="Identifier">doAssert</span> <span class="Identifier">bounds</span> <span class="Operator">==</span> <span class="Operator">@</span><span class="Punctuation">[</span><span class="DecNumber">1</span> <span class="Operator">..</span> <span class="DecNumber">2</span><span class="Punctuation">,</span> <span class="DecNumber">4</span> <span class="Operator">..</span> <span class="DecNumber">5</span><span class="Punctuation">]</span> +<span class="Identifier">doAssert</span> <span class="Identifier">found</span> <span class="Operator">==</span> <span class="Operator">@</span><span class="Punctuation">[</span><span class="StringLit">"bc"</span><span class="Punctuation">,</span> <span class="StringLit">"bc"</span><span class="Punctuation">]</span></pre> + +</dd> +</div> +<div id="findAll.i,string,Regex,int"> +<dt><pre><span class="Keyword">iterator</span> <a href="#findAll.i%2Cstring%2CRegex%2Cint"><span class="Identifier">findAll</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">pattern</span><span class="Other">:</span> <a href="nfatype.html#Regex"><span class="Identifier">Regex</span></a><span class="Other">;</span> <span class="Identifier">start</span> <span class="Other">=</span> <span class="DecNumber">0</span><span class="Other">)</span><span class="Other">:</span> <a href="nfatype.html#RegexMatch"><span class="Identifier">RegexMatch</span></a> {.<span class="Identifier">inline</span><span class="Other">,</span> + <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">"use findAll(string, Regex2) instead"</span><span class="Other">,</span> + <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + <div class="deprecation-message"> + <b>Deprecated:</b> use findAll(string, Regex2) instead + </div> + + + +</dd> +</div> +<div id="findAllBounds.i,string,Regex2,int"> +<dt><pre><span class="Keyword">iterator</span> <a href="#findAllBounds.i%2Cstring%2CRegex2%2Cint"><span class="Identifier">findAllBounds</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">pattern</span><span class="Other">:</span> <a href="nfatype.html#Regex2"><span class="Identifier">Regex2</span></a><span class="Other">;</span> <span class="Identifier">start</span> <span class="Other">=</span> <span class="DecNumber">0</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Slice</span><span class="Other">[</span><span class="Identifier">int</span><span class="Other">]</span> {. + <span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + +search through the string and return each match. Empty matches (start > end) are included +<p><strong class="examples_text">Example:</strong></p> +<pre class="listing"><span class="Keyword">let</span> <span class="Identifier">text</span> <span class="Operator">=</span> <span class="StringLit">"abcabc"</span> +<span class="Keyword">var</span> <span class="Identifier">bounds</span> <span class="Operator">=</span> <span class="Identifier">newSeq</span><span class="Punctuation">[</span><span class="Identifier">Slice</span><span class="Punctuation">[</span><span class="Identifier">int</span><span class="Punctuation">]</span><span class="Punctuation">]</span><span class="Punctuation">(</span><span class="Punctuation">)</span> +<span class="Keyword">for</span> <span class="Identifier">bd</span> <span class="Keyword">in</span> <span class="Identifier">findAllBounds</span><span class="Punctuation">(</span><span class="Identifier">text</span><span class="Punctuation">,</span> <span class="RawData">re2"bc"</span><span class="Punctuation">)</span><span class="Punctuation">:</span> + <span class="Identifier">bounds</span><span class="Operator">.</span><span class="Identifier">add</span> <span class="Identifier">bd</span> +<span class="Identifier">doAssert</span> <span class="Identifier">bounds</span> <span class="Operator">==</span> <span class="Operator">@</span><span class="Punctuation">[</span><span class="DecNumber">1</span> <span class="Operator">..</span> <span class="DecNumber">2</span><span class="Punctuation">,</span> <span class="DecNumber">4</span> <span class="Operator">..</span> <span class="DecNumber">5</span><span class="Punctuation">]</span></pre> + +</dd> +</div> +<div id="findAllBounds.i,string,Regex,int"> +<dt><pre><span class="Keyword">iterator</span> <a href="#findAllBounds.i%2Cstring%2CRegex%2Cint"><span class="Identifier">findAllBounds</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">pattern</span><span class="Other">:</span> <a href="nfatype.html#Regex"><span class="Identifier">Regex</span></a><span class="Other">;</span> <span class="Identifier">start</span> <span class="Other">=</span> <span class="DecNumber">0</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Slice</span><span class="Other">[</span><span class="Identifier">int</span><span class="Other">]</span> {. + <span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">"use findAllBounds(string, Regex2) instead"</span><span class="Other">,</span> + <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + <div class="deprecation-message"> + <b>Deprecated:</b> use findAllBounds(string, Regex2) instead + </div> + + + +</dd> +</div> +<div id="group.i,RegexMatch,int"> +<dt><pre><span class="Keyword">iterator</span> <a href="#group.i%2CRegexMatch%2Cint"><span class="Identifier">group</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <a href="nfatype.html#RegexMatch"><span class="Identifier">RegexMatch</span></a><span class="Other">;</span> <span class="Identifier">i</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Slice</span><span class="Other">[</span><span class="Identifier">int</span><span class="Other">]</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> + <span class="Identifier">deprecated</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + <div class="deprecation-message"> + <b>Deprecated</b> + </div> + + + +</dd> +</div> +<div id="group.i,RegexMatch,string"> +<dt><pre><span class="Keyword">iterator</span> <a href="#group.i%2CRegexMatch%2Cstring"><span class="Identifier">group</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <a href="nfatype.html#RegexMatch"><span class="Identifier">RegexMatch</span></a><span class="Other">;</span> <span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Slice</span><span class="Other">[</span><span class="Identifier">int</span><span class="Other">]</span> {.<span class="Identifier">inline</span><span class="Other">,</span> + <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">KeyError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">deprecated</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + <div class="deprecation-message"> + <b>Deprecated</b> + </div> + + + +</dd> +</div> +<div id="split.i,string,Regex"> +<dt><pre><span class="Keyword">iterator</span> <a href="#split.i%2Cstring%2CRegex"><span class="Identifier">split</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">sep</span><span class="Other">:</span> <a href="nfatype.html#Regex"><span class="Identifier">Regex</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> + <span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">"use split(string, Regex2) instead"</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + <div class="deprecation-message"> + <b>Deprecated:</b> use split(string, Regex2) instead + </div> + + + +</dd> +</div> +<div id="split.i,string,Regex2"> +<dt><pre><span class="Keyword">iterator</span> <a href="#split.i%2Cstring%2CRegex2"><span class="Identifier">split</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">sep</span><span class="Other">:</span> <a href="nfatype.html#Regex2"><span class="Identifier">Regex2</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> + <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span>.}</pre></dt> +<dd> + +return not matched substrings +<p><strong class="examples_text">Example:</strong></p> +<pre class="listing"><span class="Keyword">var</span> <span class="Identifier">found</span> <span class="Operator">=</span> <span class="Identifier">newSeq</span><span class="Punctuation">[</span><span class="Identifier">string</span><span class="Punctuation">]</span><span class="Punctuation">(</span><span class="Punctuation">)</span> +<span class="Keyword">for</span> <span class="Identifier">s</span> <span class="Keyword">in</span> <span class="Identifier">split</span><span class="Punctuation">(</span><span class="StringLit">"11a22Ϊ33Ⓐ44弢55"</span><span class="Punctuation">,</span> <span class="RawData">re2"\d+"</span><span class="Punctuation">)</span><span class="Punctuation">:</span> + <span class="Identifier">found</span><span class="Operator">.</span><span class="Identifier">add</span> <span class="Identifier">s</span> +<span class="Identifier">doAssert</span> <span class="Identifier">found</span> <span class="Operator">==</span> <span class="Operator">@</span><span class="Punctuation">[</span><span class="StringLit">""</span><span class="Punctuation">,</span> <span class="StringLit">"a"</span><span class="Punctuation">,</span> <span class="StringLit">"Ϊ"</span><span class="Punctuation">,</span> <span class="StringLit">"Ⓐ"</span><span class="Punctuation">,</span> <span class="StringLit">"弢"</span><span class="Punctuation">,</span> <span class="StringLit">""</span><span class="Punctuation">]</span></pre> + +</dd> +</div> + +</dl></div> +<div class="section" id="17"> +<h1><a class="toc-backref" href="#17">Macros</a></h1> +<dl class="item"> +<div id="match.m,string,RegexLit,untyped"> +<dt><pre><span class="Keyword">macro</span> <a href="#match.m%2Cstring%2CRegexLit%2Cuntyped"><span class="Identifier">match</span></a><span class="Other">(</span><span class="Identifier">text</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">regex</span><span class="Other">:</span> <a href="nfatype.html#RegexLit"><span class="Identifier">RegexLit</span></a><span class="Other">;</span> <span class="Identifier">body</span><span class="Other">:</span> <span class="Identifier">untyped</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">untyped</span></pre></dt> +<dd> + +<p>return a match if the whole string matches the regular expression. This is similar to the <tt class="docutils literal"><span class="pre">match</span></tt> function, but faster. Notice it requires a raw regex <em>literal</em> string as second parameter; the regex must be known at compile time, and cannot be a var/let/const</p> +<p>A <tt class="docutils literal"><span class="pre">matches: seq[string]</span></tt> variable is injected into the scope, and it contains the submatches for every capture group. If a group is repeated (ex: <tt class="docutils literal"><span class="pre"><span class="Punctuation">(</span><span class="Operator">\\</span><span class="Identifier">w</span><span class="Punctuation">)</span><span class="Operator">+</span></span></tt>), it will contain the last capture for that group.</p> +<p>Note: Only available in Nim +1.1</p> + +<p><strong class="examples_text">Example:</strong></p> +<pre class="listing"><span class="Identifier">match</span> <span class="StringLit">"abc"</span><span class="Punctuation">,</span> <span class="RawData">rex"(a(b)c)"</span><span class="Punctuation">:</span> + <span class="Identifier">doAssert</span> <span class="Identifier">matches</span> <span class="Operator">==</span> <span class="Operator">@</span><span class="Punctuation">[</span><span class="StringLit">"abc"</span><span class="Punctuation">,</span> <span class="StringLit">"b"</span><span class="Punctuation">]</span></pre> + +</dd> +</div> + +</dl></div> +<div class="section" id="19"> +<h1><a class="toc-backref" href="#19">Exports</a></h1> +<dl class="item"> +<a href="nfatype.html#RegexLit"><span class="Identifier">RegexLit</span></a>, <a href="nfatype.html#Regex"><span class="Identifier">Regex</span></a>, <a href="nfatype.html#Regex2"><span class="Identifier">Regex2</span></a>, <a href="nfatype.html#RegexMatch"><span class="Identifier">RegexMatch</span></a>, <a href="nfatype.html#RegexMatch2"><span class="Identifier">RegexMatch2</span></a>, <a href="types.html#RegexFlag"><span class="Identifier">RegexFlag</span></a>, <a href="types.html#RegexFlags"><span class="Identifier">RegexFlags</span></a>, <a href="common.html#RegexError"><span class="Identifier">RegexError</span></a> +</dl></div> + + </div> +</div> + + <div class="row"> + <div class="twelve-columns footer"> + <span class="nim-sprite"></span> + <br/> + <small style="color: var(--hint);">Made with Nim. Generated: 2024-01-06 00:34:09 UTC</small> + </div> + </div> + </div> +</div> + +</body> +</html>