@voxgig/sdkgen-langpack 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.sdk/model/target/dart.aon +63 -0
- package/.sdk/model/target/haskell.aon +72 -0
- package/.sdk/model/target/lean.aon +91 -0
- package/.sdk/src/cmp/dart/Config_dart.ts +248 -0
- package/.sdk/src/cmp/dart/EntityBase_dart.ts +34 -0
- package/.sdk/src/cmp/dart/EntityOperation_dart.ts +43 -0
- package/.sdk/src/cmp/dart/EntityTypes_dart.ts +207 -0
- package/.sdk/src/cmp/dart/Entity_dart.ts +87 -0
- package/.sdk/src/cmp/dart/Gitignore_dart.ts +34 -0
- package/.sdk/src/cmp/dart/MainEntity_dart.ts +33 -0
- package/.sdk/src/cmp/dart/Main_dart.ts +178 -0
- package/.sdk/src/cmp/dart/Package_dart.ts +82 -0
- package/.sdk/src/cmp/dart/ReadmeEntity_dart.ts +177 -0
- package/.sdk/src/cmp/dart/ReadmeExamplesTest_dart.ts +238 -0
- package/.sdk/src/cmp/dart/ReadmeExplanation_dart.ts +53 -0
- package/.sdk/src/cmp/dart/ReadmeHowto_dart.ts +152 -0
- package/.sdk/src/cmp/dart/ReadmeInstall_dart.ts +59 -0
- package/.sdk/src/cmp/dart/ReadmeIntro_dart.ts +65 -0
- package/.sdk/src/cmp/dart/ReadmeModel_dart.ts +151 -0
- package/.sdk/src/cmp/dart/ReadmeOptions_dart.ts +63 -0
- package/.sdk/src/cmp/dart/ReadmeQuick_dart.ts +225 -0
- package/.sdk/src/cmp/dart/ReadmeRef_dart.ts +397 -0
- package/.sdk/src/cmp/dart/ReadmeTopHowto_dart.ts +24 -0
- package/.sdk/src/cmp/dart/ReadmeTopQuick_dart.ts +106 -0
- package/.sdk/src/cmp/dart/ReadmeTopTest_dart.ts +78 -0
- package/.sdk/src/cmp/dart/SdkError_dart.ts +42 -0
- package/.sdk/src/cmp/dart/TestDirect_dart.ts +516 -0
- package/.sdk/src/cmp/dart/TestEntity_dart.ts +628 -0
- package/.sdk/src/cmp/dart/Test_dart.ts +138 -0
- package/.sdk/src/cmp/dart/fragment/Config.data.fragment.dart +98 -0
- package/.sdk/src/cmp/dart/fragment/Config.fragment.dart +70 -0
- package/.sdk/src/cmp/dart/fragment/Direct.test.fragment.dart +25 -0
- package/.sdk/src/cmp/dart/fragment/Entity.fragment.dart +29 -0
- package/.sdk/src/cmp/dart/fragment/Entity.test.fragment.dart +28 -0
- package/.sdk/src/cmp/dart/fragment/EntityBase.fragment.dart +302 -0
- package/.sdk/src/cmp/dart/fragment/EntityCreateOp.fragment.dart +98 -0
- package/.sdk/src/cmp/dart/fragment/EntityListOp.fragment.dart +90 -0
- package/.sdk/src/cmp/dart/fragment/EntityLoadOp.fragment.dart +102 -0
- package/.sdk/src/cmp/dart/fragment/EntityRemoveOp.fragment.dart +108 -0
- package/.sdk/src/cmp/dart/fragment/EntityUpdateOp.fragment.dart +102 -0
- package/.sdk/src/cmp/dart/fragment/Main.fragment.dart +339 -0
- package/.sdk/src/cmp/dart/fragment/SdkError.fragment.dart +26 -0
- package/.sdk/src/cmp/dart/tsconfig.json +15 -0
- package/.sdk/src/cmp/dart/utility_dart.ts +155 -0
- package/.sdk/src/cmp/haskell/Config_haskell.ts +98 -0
- package/.sdk/src/cmp/haskell/Entity_haskell.ts +13 -0
- package/.sdk/src/cmp/haskell/Gitignore_haskell.ts +27 -0
- package/.sdk/src/cmp/haskell/Main_haskell.ts +123 -0
- package/.sdk/src/cmp/haskell/Package_haskell.ts +60 -0
- package/.sdk/src/cmp/haskell/ReadmeEntity_haskell.ts +186 -0
- package/.sdk/src/cmp/haskell/ReadmeExamplesTest_haskell.ts +135 -0
- package/.sdk/src/cmp/haskell/ReadmeExplanation_haskell.ts +48 -0
- package/.sdk/src/cmp/haskell/ReadmeHowto_haskell.ts +168 -0
- package/.sdk/src/cmp/haskell/ReadmeInstall_haskell.ts +51 -0
- package/.sdk/src/cmp/haskell/ReadmeIntro_haskell.ts +67 -0
- package/.sdk/src/cmp/haskell/ReadmeModel_haskell.ts +162 -0
- package/.sdk/src/cmp/haskell/ReadmeOptions_haskell.ts +74 -0
- package/.sdk/src/cmp/haskell/ReadmeQuick_haskell.ts +241 -0
- package/.sdk/src/cmp/haskell/ReadmeRef_haskell.ts +408 -0
- package/.sdk/src/cmp/haskell/ReadmeTopHowto_haskell.ts +31 -0
- package/.sdk/src/cmp/haskell/ReadmeTopQuick_haskell.ts +104 -0
- package/.sdk/src/cmp/haskell/ReadmeTopTest_haskell.ts +80 -0
- package/.sdk/src/cmp/haskell/Test_haskell.ts +297 -0
- package/.sdk/src/cmp/haskell/tsconfig.json +15 -0
- package/.sdk/src/cmp/haskell/utility_haskell.ts +166 -0
- package/.sdk/src/cmp/lean/Config_lean.ts +93 -0
- package/.sdk/src/cmp/lean/Entity_lean.ts +9 -0
- package/.sdk/src/cmp/lean/Gitignore_lean.ts +18 -0
- package/.sdk/src/cmp/lean/Main_lean.ts +120 -0
- package/.sdk/src/cmp/lean/Package_lean.ts +93 -0
- package/.sdk/src/cmp/lean/ReadmeEntity_lean.ts +29 -0
- package/.sdk/src/cmp/lean/ReadmeExplanation_lean.ts +19 -0
- package/.sdk/src/cmp/lean/ReadmeHowto_lean.ts +25 -0
- package/.sdk/src/cmp/lean/ReadmeInstall_lean.ts +39 -0
- package/.sdk/src/cmp/lean/ReadmeIntro_lean.ts +25 -0
- package/.sdk/src/cmp/lean/ReadmeModel_lean.ts +24 -0
- package/.sdk/src/cmp/lean/ReadmeOptions_lean.ts +22 -0
- package/.sdk/src/cmp/lean/ReadmeQuick_lean.ts +50 -0
- package/.sdk/src/cmp/lean/ReadmeRef_lean.ts +40 -0
- package/.sdk/src/cmp/lean/ReadmeTopHowto_lean.ts +16 -0
- package/.sdk/src/cmp/lean/ReadmeTopQuick_lean.ts +23 -0
- package/.sdk/src/cmp/lean/ReadmeTopTest_lean.ts +19 -0
- package/.sdk/src/cmp/lean/Test_lean.ts +261 -0
- package/.sdk/src/cmp/lean/utility_lean.ts +129 -0
- package/.sdk/tm/dart/LICENSE +22 -0
- package/.sdk/tm/dart/Makefile +50 -0
- package/.sdk/tm/dart/lib/Context.dart +150 -0
- package/.sdk/tm/dart/lib/Control.dart +15 -0
- package/.sdk/tm/dart/lib/Operation.dart +31 -0
- package/.sdk/tm/dart/lib/Point.dart +51 -0
- package/.sdk/tm/dart/lib/Response.dart +32 -0
- package/.sdk/tm/dart/lib/Result.dart +39 -0
- package/.sdk/tm/dart/lib/Spec.dart +49 -0
- package/.sdk/tm/dart/lib/feature/audit/AuditFeature.dart +103 -0
- package/.sdk/tm/dart/lib/feature/base/BaseFeature.dart +76 -0
- package/.sdk/tm/dart/lib/feature/cache/CacheFeature.dart +152 -0
- package/.sdk/tm/dart/lib/feature/clienttrack/ClienttrackFeature.dart +104 -0
- package/.sdk/tm/dart/lib/feature/cost/CostFeature.dart +446 -0
- package/.sdk/tm/dart/lib/feature/debug/DebugFeature.dart +153 -0
- package/.sdk/tm/dart/lib/feature/idempotency/IdempotencyFeature.dart +92 -0
- package/.sdk/tm/dart/lib/feature/log/LogFeature.dart +85 -0
- package/.sdk/tm/dart/lib/feature/metrics/MetricsFeature.dart +103 -0
- package/.sdk/tm/dart/lib/feature/netsim/NetsimFeature.dart +186 -0
- package/.sdk/tm/dart/lib/feature/paging/PagingFeature.dart +240 -0
- package/.sdk/tm/dart/lib/feature/proxy/ProxyFeature.dart +118 -0
- package/.sdk/tm/dart/lib/feature/ratelimit/RatelimitFeature.dart +103 -0
- package/.sdk/tm/dart/lib/feature/rbac/RbacFeature.dart +121 -0
- package/.sdk/tm/dart/lib/feature/retry/RetryFeature.dart +155 -0
- package/.sdk/tm/dart/lib/feature/secrets/SecretsFeature.dart +649 -0
- package/.sdk/tm/dart/lib/feature/secrets/plugin/capability.dart +105 -0
- package/.sdk/tm/dart/lib/feature/secrets/plugin/catalog.dart +46 -0
- package/.sdk/tm/dart/lib/feature/secrets/plugin/config.dart +297 -0
- package/.sdk/tm/dart/lib/feature/secrets/plugin/depend.dart +198 -0
- package/.sdk/tm/dart/lib/feature/secrets/plugin/env.dart +144 -0
- package/.sdk/tm/dart/lib/feature/secrets/plugin/export.dart +58 -0
- package/.sdk/tm/dart/lib/feature/secrets/plugin/graph.dart +160 -0
- package/.sdk/tm/dart/lib/feature/secrets/plugin/host.dart +1067 -0
- package/.sdk/tm/dart/lib/feature/secrets/plugin/order.dart +172 -0
- package/.sdk/tm/dart/lib/feature/secrets/plugin/plugin.dart +23 -0
- package/.sdk/tm/dart/lib/feature/secrets/plugin/point.dart +117 -0
- package/.sdk/tm/dart/lib/feature/secrets/plugin/ref.dart +105 -0
- package/.sdk/tm/dart/lib/feature/secrets/plugin/resolve.dart +58 -0
- package/.sdk/tm/dart/lib/feature/secrets/plugin/types.dart +201 -0
- package/.sdk/tm/dart/lib/feature/secrets/plugin/version.dart +116 -0
- package/.sdk/tm/dart/lib/feature/secrets/sekreto/plugins/aws.dart +285 -0
- package/.sdk/tm/dart/lib/feature/secrets/sekreto/plugins/azuresecrets.dart +178 -0
- package/.sdk/tm/dart/lib/feature/secrets/sekreto/plugins/boru.dart +145 -0
- package/.sdk/tm/dart/lib/feature/secrets/sekreto/plugins/crypto.dart +194 -0
- package/.sdk/tm/dart/lib/feature/secrets/sekreto/plugins/doppler.dart +101 -0
- package/.sdk/tm/dart/lib/feature/secrets/sekreto/plugins/gcpsecrets.dart +143 -0
- package/.sdk/tm/dart/lib/feature/secrets/sekreto/plugins/hashicorp.dart +190 -0
- package/.sdk/tm/dart/lib/feature/secrets/sekreto/plugins/httpjson.dart +363 -0
- package/.sdk/tm/dart/lib/feature/secrets/sekreto/plugins/infisical.dart +149 -0
- package/.sdk/tm/dart/lib/feature/secrets/sekreto/plugins/onepassword.dart +146 -0
- package/.sdk/tm/dart/lib/feature/secrets/sekreto/plugins/secretspec.dart +116 -0
- package/.sdk/tm/dart/lib/feature/secrets/sekreto/plugins/sigv4.dart +237 -0
- package/.sdk/tm/dart/lib/feature/secrets/sekreto/src/addr.dart +138 -0
- package/.sdk/tm/dart/lib/feature/secrets/sekreto/src/json.dart +276 -0
- package/.sdk/tm/dart/lib/feature/secrets/sekreto/src/provider.dart +31 -0
- package/.sdk/tm/dart/lib/feature/secrets/sekreto/src/providers.dart +243 -0
- package/.sdk/tm/dart/lib/feature/secrets/sekreto/src/sekreto.dart +730 -0
- package/.sdk/tm/dart/lib/feature/secrets/sekreto/src/spec.dart +200 -0
- package/.sdk/tm/dart/lib/feature/secrets/sekreto/src/support.dart +217 -0
- package/.sdk/tm/dart/lib/feature/streaming/StreamingFeature.dart +97 -0
- package/.sdk/tm/dart/lib/feature/telemetry/TelemetryFeature.dart +136 -0
- package/.sdk/tm/dart/lib/feature/test/TestFeature.dart +328 -0
- package/.sdk/tm/dart/lib/feature/timeout/TimeoutFeature.dart +104 -0
- package/.sdk/tm/dart/lib/utility/CleanUtility.dart +12 -0
- package/.sdk/tm/dart/lib/utility/DoneUtility.dart +18 -0
- package/.sdk/tm/dart/lib/utility/ErrUtility.dart +46 -0
- package/.sdk/tm/dart/lib/utility/FeatureAddUtility.dart +35 -0
- package/.sdk/tm/dart/lib/utility/FeatureHookUtility.dart +20 -0
- package/.sdk/tm/dart/lib/utility/FeatureInitUtility.dart +9 -0
- package/.sdk/tm/dart/lib/utility/FetcherUtility.dart +104 -0
- package/.sdk/tm/dart/lib/utility/GraphqlUtility.dart +162 -0
- package/.sdk/tm/dart/lib/utility/MakeContextUtility.dart +6 -0
- package/.sdk/tm/dart/lib/utility/MakeErrorUtility.dart +71 -0
- package/.sdk/tm/dart/lib/utility/MakeFetchDefUtility.dart +42 -0
- package/.sdk/tm/dart/lib/utility/MakeOptionsUtility.dart +233 -0
- package/.sdk/tm/dart/lib/utility/MakePointUtility.dart +130 -0
- package/.sdk/tm/dart/lib/utility/MakeRequestUtility.dart +66 -0
- package/.sdk/tm/dart/lib/utility/MakeResponseUtility.dart +59 -0
- package/.sdk/tm/dart/lib/utility/MakeResultUtility.dart +49 -0
- package/.sdk/tm/dart/lib/utility/MakeSpecUtility.dart +77 -0
- package/.sdk/tm/dart/lib/utility/MakeUrlUtility.dart +51 -0
- package/.sdk/tm/dart/lib/utility/ParamUtility.dart +56 -0
- package/.sdk/tm/dart/lib/utility/PrepareAuthUtility.dart +46 -0
- package/.sdk/tm/dart/lib/utility/PrepareBodyUtility.dart +19 -0
- package/.sdk/tm/dart/lib/utility/PrepareHeadersUtility.dart +11 -0
- package/.sdk/tm/dart/lib/utility/PrepareMethodUtility.dart +30 -0
- package/.sdk/tm/dart/lib/utility/PrepareParamsUtility.dart +23 -0
- package/.sdk/tm/dart/lib/utility/PreparePathUtility.dart +9 -0
- package/.sdk/tm/dart/lib/utility/PrepareQueryUtility.dart +18 -0
- package/.sdk/tm/dart/lib/utility/ResultBasicUtility.dart +29 -0
- package/.sdk/tm/dart/lib/utility/ResultBodyUtility.dart +15 -0
- package/.sdk/tm/dart/lib/utility/ResultHeadersUtility.dart +18 -0
- package/.sdk/tm/dart/lib/utility/StructUtility.dart +127 -0
- package/.sdk/tm/dart/lib/utility/TransformRequestUtility.dart +28 -0
- package/.sdk/tm/dart/lib/utility/TransformResponseUtility.dart +44 -0
- package/.sdk/tm/dart/lib/utility/Utility.dart +239 -0
- package/.sdk/tm/dart/lib/utility/voxgig_struct.dart +2462 -0
- package/.sdk/tm/dart/src/feature/README.md +3 -0
- package/.sdk/tm/dart/src/feature/audit/.gitkeep +0 -0
- package/.sdk/tm/dart/src/feature/base/.gitkeep +0 -0
- package/.sdk/tm/dart/src/feature/cache/.gitkeep +0 -0
- package/.sdk/tm/dart/src/feature/clienttrack/.gitkeep +0 -0
- package/.sdk/tm/dart/src/feature/cost/.gitkeep +0 -0
- package/.sdk/tm/dart/src/feature/debug/.gitkeep +0 -0
- package/.sdk/tm/dart/src/feature/idempotency/.gitkeep +0 -0
- package/.sdk/tm/dart/src/feature/log/.gitkeep +0 -0
- package/.sdk/tm/dart/src/feature/metrics/.gitkeep +0 -0
- package/.sdk/tm/dart/src/feature/netsim/.gitkeep +0 -0
- package/.sdk/tm/dart/src/feature/paging/.gitkeep +0 -0
- package/.sdk/tm/dart/src/feature/proxy/.gitkeep +0 -0
- package/.sdk/tm/dart/src/feature/ratelimit/.gitkeep +0 -0
- package/.sdk/tm/dart/src/feature/rbac/.gitkeep +0 -0
- package/.sdk/tm/dart/src/feature/retry/.gitkeep +0 -0
- package/.sdk/tm/dart/src/feature/secrets/.gitkeep +0 -0
- package/.sdk/tm/dart/src/feature/streaming/.gitkeep +0 -0
- package/.sdk/tm/dart/src/feature/telemetry/.gitkeep +0 -0
- package/.sdk/tm/dart/src/feature/test/.gitkeep +0 -0
- package/.sdk/tm/dart/src/feature/timeout/.gitkeep +0 -0
- package/.sdk/tm/dart/test/custom_test.dart +65 -0
- package/.sdk/tm/dart/test/exists_test.dart +12 -0
- package/.sdk/tm/dart/test/feature/harness.dart +347 -0
- package/.sdk/tm/dart/test/feature/secrets/secrets_test.dart +1107 -0
- package/.sdk/tm/dart/test/feature_test.dart +1193 -0
- package/.sdk/tm/dart/test/harness.dart +153 -0
- package/.sdk/tm/dart/test/netsim_test.dart +48 -0
- package/.sdk/tm/dart/test/omni.dart +520 -0
- package/.sdk/tm/dart/test/omni_smoke_test.dart +143 -0
- package/.sdk/tm/dart/test/pipeline_test.dart +608 -0
- package/.sdk/tm/dart/test/primary_test.dart +476 -0
- package/.sdk/tm/dart/test/sdk-test-control.json +19 -0
- package/.sdk/tm/dart/test/struct_test.dart +468 -0
- package/.sdk/tm/dart/test/utility.dart +198 -0
- package/.sdk/tm/dart/test/vendor/omni/omni.dart +7 -0
- package/.sdk/tm/dart/test/vendor/omni/runner.dart +653 -0
- package/.sdk/tm/dart/test/vendor/omni/util.dart +232 -0
- package/.sdk/tm/haskell/LICENSE +21 -0
- package/.sdk/tm/haskell/Makefile +22 -0
- package/.sdk/tm/haskell/VERSION +1 -0
- package/.sdk/tm/haskell/src/SdkFeatures.hs +1440 -0
- package/.sdk/tm/haskell/src/SdkHelpers.hs +337 -0
- package/.sdk/tm/haskell/src/SdkJson.hs +111 -0
- package/.sdk/tm/haskell/src/SdkRuntime.hs +1279 -0
- package/.sdk/tm/haskell/src/SdkTypes.hs +195 -0
- package/.sdk/tm/haskell/src/VoxgigStruct.hs +2299 -0
- package/.sdk/tm/haskell/src/Vregex.hs +237 -0
- package/.sdk/tm/haskell/src/feature/README.md +5 -0
- package/.sdk/tm/haskell/src/feature/audit/.gitkeep +0 -0
- package/.sdk/tm/haskell/src/feature/base/.gitkeep +0 -0
- package/.sdk/tm/haskell/src/feature/cache/.gitkeep +0 -0
- package/.sdk/tm/haskell/src/feature/clienttrack/.gitkeep +0 -0
- package/.sdk/tm/haskell/src/feature/debug/.gitkeep +0 -0
- package/.sdk/tm/haskell/src/feature/idempotency/.gitkeep +0 -0
- package/.sdk/tm/haskell/src/feature/log/.gitkeep +0 -0
- package/.sdk/tm/haskell/src/feature/metrics/.gitkeep +0 -0
- package/.sdk/tm/haskell/src/feature/netsim/.gitkeep +0 -0
- package/.sdk/tm/haskell/src/feature/paging/.gitkeep +0 -0
- package/.sdk/tm/haskell/src/feature/proxy/.gitkeep +0 -0
- package/.sdk/tm/haskell/src/feature/ratelimit/.gitkeep +0 -0
- package/.sdk/tm/haskell/src/feature/rbac/.gitkeep +0 -0
- package/.sdk/tm/haskell/src/feature/retry/.gitkeep +0 -0
- package/.sdk/tm/haskell/src/feature/streaming/.gitkeep +0 -0
- package/.sdk/tm/haskell/src/feature/telemetry/.gitkeep +0 -0
- package/.sdk/tm/haskell/src/feature/test/.gitkeep +0 -0
- package/.sdk/tm/haskell/src/feature/timeout/.gitkeep +0 -0
- package/.sdk/tm/haskell/test/Harness.hs +281 -0
- package/.sdk/tm/haskell/test/OmniResolver.hs +252 -0
- package/.sdk/tm/haskell/test/Runner.hs +49 -0
- package/.sdk/tm/haskell/test/StructCorpus.hs +449 -0
- package/.sdk/tm/haskell/test/TCustomUtility.hs +38 -0
- package/.sdk/tm/haskell/test/TFeature.hs +794 -0
- package/.sdk/tm/haskell/test/TNetsim.hs +50 -0
- package/.sdk/tm/haskell/test/TPipeline.hs +334 -0
- package/.sdk/tm/haskell/test/TPrimaryCorpus.hs +263 -0
- package/.sdk/tm/haskell/test/TPrimaryUtility.hs +386 -0
- package/.sdk/tm/haskell/test/Testutil.hs +59 -0
- package/.sdk/tm/haskell/test/vendor/omni/Omni.hs +1147 -0
- package/.sdk/tm/lean/LICENSE +21 -0
- package/.sdk/tm/lean/Makefile +32 -0
- package/.sdk/tm/lean/VERSION +1 -0
- package/.sdk/tm/lean/src/SdkFeature.lean +171 -0
- package/.sdk/tm/lean/src/SdkFeatures.lean +787 -0
- package/.sdk/tm/lean/src/SdkJson.lean +134 -0
- package/.sdk/tm/lean/src/SdkRuntime.lean +374 -0
- package/.sdk/tm/lean/src/SdkUtility.lean +809 -0
- package/.sdk/tm/lean/src/VoxgigStruct.lean +2880 -0
- package/.sdk/tm/lean/src/Vregex.lean +412 -0
- package/.sdk/tm/lean/src/feature/README.md +5 -0
- package/.sdk/tm/lean/src/feature/audit/.gitkeep +0 -0
- package/.sdk/tm/lean/src/feature/base/.gitkeep +0 -0
- package/.sdk/tm/lean/src/feature/cache/.gitkeep +0 -0
- package/.sdk/tm/lean/src/feature/clienttrack/.gitkeep +0 -0
- package/.sdk/tm/lean/src/feature/cost/.gitkeep +0 -0
- package/.sdk/tm/lean/src/feature/debug/.gitkeep +0 -0
- package/.sdk/tm/lean/src/feature/idempotency/.gitkeep +0 -0
- package/.sdk/tm/lean/src/feature/log/.gitkeep +0 -0
- package/.sdk/tm/lean/src/feature/metrics/.gitkeep +0 -0
- package/.sdk/tm/lean/src/feature/netsim/.gitkeep +0 -0
- package/.sdk/tm/lean/src/feature/paging/.gitkeep +0 -0
- package/.sdk/tm/lean/src/feature/proxy/.gitkeep +0 -0
- package/.sdk/tm/lean/src/feature/ratelimit/.gitkeep +0 -0
- package/.sdk/tm/lean/src/feature/rbac/.gitkeep +0 -0
- package/.sdk/tm/lean/src/feature/retry/.gitkeep +0 -0
- package/.sdk/tm/lean/src/feature/streaming/.gitkeep +0 -0
- package/.sdk/tm/lean/src/feature/telemetry/.gitkeep +0 -0
- package/.sdk/tm/lean/src/feature/test/.gitkeep +0 -0
- package/.sdk/tm/lean/src/feature/timeout/.gitkeep +0 -0
- package/.sdk/tm/lean/test/OmniResolver.lean +358 -0
- package/.sdk/tm/lean/test/OmniSmoke.lean +174 -0
- package/.sdk/tm/lean/test/StructCorpus.lean +368 -0
- package/.sdk/tm/lean/test/TFeature.lean +281 -0
- package/.sdk/tm/lean/test/TPrimaryUtility.lean +227 -0
- package/.sdk/tm/lean/test/vendor/omni/Omni.lean +997 -0
- package/LICENSE +21 -0
- package/README.md +104 -0
- package/package.json +78 -0
- package/sdkgen-package.json +22 -0
|
@@ -0,0 +1,412 @@
|
|
|
1
|
+
/- Minimal backtracking regex engine for the Lean port of voxgig/struct.
|
|
2
|
+
Supports the RE2 subset the corpus exercises: literals, '.', anchors ^ $,
|
|
3
|
+
\b and \B, character classes [..] / [^..] with ranges and \d \w \s \D \W \S,
|
|
4
|
+
groups (..), (?:..) and (?P<name>..), alternation |, quantifiers * + ? and
|
|
5
|
+
{n}/{n,}/{n,m} with optional lazy '?'. Capturing groups are tracked, so
|
|
6
|
+
the engine backs the full re_* API (find with captures, find_all, replace)
|
|
7
|
+
at the Go-stdlib minimum bar; `test` also serves $LIKE. No third-party
|
|
8
|
+
dependency. -/
|
|
9
|
+
|
|
10
|
+
namespace Vregex
|
|
11
|
+
|
|
12
|
+
inductive CItem where
|
|
13
|
+
| cchar (c : Char)
|
|
14
|
+
| crange (a b : Char)
|
|
15
|
+
| cd | cw | cs | cnd | cnw | cns -- \d \w \s \D \W \S
|
|
16
|
+
deriving Repr
|
|
17
|
+
|
|
18
|
+
inductive Node where
|
|
19
|
+
| char (c : Char)
|
|
20
|
+
| any
|
|
21
|
+
| start
|
|
22
|
+
| stop
|
|
23
|
+
| wordb
|
|
24
|
+
| nwordb
|
|
25
|
+
| cls (neg : Bool) (items : List CItem)
|
|
26
|
+
| grp (gi : Nat) (alts : List (List Node)) -- alternation; gi>0 = capture index
|
|
27
|
+
| star (greedy : Bool) (atom : Node)
|
|
28
|
+
| plus (greedy : Bool) (atom : Node)
|
|
29
|
+
| opt (greedy : Bool) (atom : Node)
|
|
30
|
+
| rep (greedy : Bool) (mn : Nat) (mx : Option Int) (atom : Node)
|
|
31
|
+
deriving Repr
|
|
32
|
+
|
|
33
|
+
/- Compiled = the alternation AST plus the number of capturing groups. -/
|
|
34
|
+
structure Re where
|
|
35
|
+
alts : List (List Node)
|
|
36
|
+
ngroups : Nat
|
|
37
|
+
|
|
38
|
+
-- ----- parser (over an Array Char) -----
|
|
39
|
+
|
|
40
|
+
private structure PState where
|
|
41
|
+
pat : Array Char
|
|
42
|
+
pos : Nat
|
|
43
|
+
gc : Nat := 0 -- capturing groups seen so far
|
|
44
|
+
|
|
45
|
+
private def peekAt (s : PState) (off : Nat := 0) : Option Char :=
|
|
46
|
+
s.pat[s.pos + off]?
|
|
47
|
+
|
|
48
|
+
private def adv (s : PState) : PState := { s with pos := s.pos + 1 }
|
|
49
|
+
|
|
50
|
+
private def parseClass (s0 : PState) : Node × PState := Id.run do
|
|
51
|
+
-- assumes current char is '['
|
|
52
|
+
let mut s := adv s0
|
|
53
|
+
let neg := peekAt s == some '^'
|
|
54
|
+
if neg then s := adv s
|
|
55
|
+
let mut items : List CItem := []
|
|
56
|
+
let mut finished := false
|
|
57
|
+
while !finished do
|
|
58
|
+
match peekAt s with
|
|
59
|
+
| none => finished := true
|
|
60
|
+
| some ']' => s := adv s; finished := true
|
|
61
|
+
| some '\\' =>
|
|
62
|
+
s := adv s
|
|
63
|
+
match peekAt s with
|
|
64
|
+
| some 'd' => items := .cd :: items; s := adv s
|
|
65
|
+
| some 'w' => items := .cw :: items; s := adv s
|
|
66
|
+
| some 's' => items := .cs :: items; s := adv s
|
|
67
|
+
| some 'D' => items := .cnd :: items; s := adv s
|
|
68
|
+
| some 'W' => items := .cnw :: items; s := adv s
|
|
69
|
+
| some 'S' => items := .cns :: items; s := adv s
|
|
70
|
+
| some 'n' => items := .cchar '\n' :: items; s := adv s
|
|
71
|
+
| some 't' => items := .cchar '\t' :: items; s := adv s
|
|
72
|
+
| some 'r' => items := .cchar '\r' :: items; s := adv s
|
|
73
|
+
| some c => items := .cchar c :: items; s := adv s
|
|
74
|
+
| none => pure ()
|
|
75
|
+
| some c =>
|
|
76
|
+
s := adv s
|
|
77
|
+
-- range?
|
|
78
|
+
match peekAt s with
|
|
79
|
+
| some '-' =>
|
|
80
|
+
if peekAt s 1 != none && peekAt s 1 != some ']' then
|
|
81
|
+
s := adv s
|
|
82
|
+
match peekAt s with
|
|
83
|
+
| some c2 => s := adv s; items := .crange c c2 :: items
|
|
84
|
+
| none => items := .cchar c :: items
|
|
85
|
+
else
|
|
86
|
+
items := .cchar c :: items
|
|
87
|
+
| _ => items := .cchar c :: items
|
|
88
|
+
return (.cls neg items.reverse, s)
|
|
89
|
+
|
|
90
|
+
private def parseNum (s0 : PState) : String × PState := Id.run do
|
|
91
|
+
let mut s := s0
|
|
92
|
+
let mut b := ""
|
|
93
|
+
let mut go := true
|
|
94
|
+
while go do
|
|
95
|
+
match peekAt s with
|
|
96
|
+
| some c =>
|
|
97
|
+
if c >= '0' && c <= '9' then b := b.push c; s := adv s
|
|
98
|
+
else go := false
|
|
99
|
+
| none => go := false
|
|
100
|
+
return (b, s)
|
|
101
|
+
|
|
102
|
+
private def parseQuantSuffix (atom : Node) (s0 : PState) : Option (Node × PState) := Id.run do
|
|
103
|
+
match peekAt s0 with
|
|
104
|
+
| some '*' =>
|
|
105
|
+
let s := adv s0
|
|
106
|
+
let lzy := peekAt s == some '?'
|
|
107
|
+
let s := if lzy then adv s else s
|
|
108
|
+
return some (.star (!lzy) atom, s)
|
|
109
|
+
| some '+' =>
|
|
110
|
+
let s := adv s0
|
|
111
|
+
let lzy := peekAt s == some '?'
|
|
112
|
+
let s := if lzy then adv s else s
|
|
113
|
+
return some (.plus (!lzy) atom, s)
|
|
114
|
+
| some '?' =>
|
|
115
|
+
let s := adv s0
|
|
116
|
+
let lzy := peekAt s == some '?'
|
|
117
|
+
let s := if lzy then adv s else s
|
|
118
|
+
return some (.opt (!lzy) atom, s)
|
|
119
|
+
| some '{' =>
|
|
120
|
+
-- {n} {n,} {n,m}
|
|
121
|
+
let s := adv s0
|
|
122
|
+
let (mn, s) := parseNum s
|
|
123
|
+
let (mx, s) :=
|
|
124
|
+
match peekAt s with
|
|
125
|
+
| some ',' =>
|
|
126
|
+
let s := adv s
|
|
127
|
+
let (mxs, s) := parseNum s
|
|
128
|
+
((if mxs == "" then none else some ((mxs.toNat?.getD 0 : Int))), s)
|
|
129
|
+
| _ => (some ((mn.toNat?.getD 0 : Int)), s)
|
|
130
|
+
match peekAt s with
|
|
131
|
+
| some '}' =>
|
|
132
|
+
if mn == "" then return none
|
|
133
|
+
let s := adv s
|
|
134
|
+
let lzy := peekAt s == some '?'
|
|
135
|
+
let s := if lzy then adv s else s
|
|
136
|
+
return some (.rep (!lzy) (mn.toNat?.getD 0) mx atom, s)
|
|
137
|
+
| _ => return none -- not a valid quantifier; treat '{' literally
|
|
138
|
+
| _ => return none
|
|
139
|
+
|
|
140
|
+
mutual
|
|
141
|
+
|
|
142
|
+
partial def parseAlt (s0 : PState) : List (List Node) × PState := Id.run do
|
|
143
|
+
let (first, s) := parseSeq s0
|
|
144
|
+
let mut alts := [first]
|
|
145
|
+
let mut s := s
|
|
146
|
+
while peekAt s == some '|' do
|
|
147
|
+
let (nxt, s') := parseSeq (adv s)
|
|
148
|
+
alts := nxt :: alts
|
|
149
|
+
s := s'
|
|
150
|
+
return (alts.reverse, s)
|
|
151
|
+
|
|
152
|
+
partial def parseSeq (s0 : PState) : List Node × PState := Id.run do
|
|
153
|
+
let mut out : List Node := []
|
|
154
|
+
let mut s := s0
|
|
155
|
+
let mut stop := false
|
|
156
|
+
while !stop do
|
|
157
|
+
match peekAt s with
|
|
158
|
+
| none | some '|' | some ')' => stop := true
|
|
159
|
+
| _ =>
|
|
160
|
+
match parseAtom s with
|
|
161
|
+
| none => stop := true
|
|
162
|
+
| some (a, s') =>
|
|
163
|
+
match parseQuantSuffix a s' with
|
|
164
|
+
| some (q, s'') => out := q :: out; s := s''
|
|
165
|
+
| none => out := a :: out; s := s'
|
|
166
|
+
return (out.reverse, s)
|
|
167
|
+
|
|
168
|
+
partial def parseAtom (s0 : PState) : Option (Node × PState) :=
|
|
169
|
+
match peekAt s0 with
|
|
170
|
+
| none => none
|
|
171
|
+
| some '(' =>
|
|
172
|
+
let s := adv s0
|
|
173
|
+
-- (?: is non-capturing; a plain ( and an RE2 named group (?P<name> are
|
|
174
|
+
-- both capturing (names are not tracked). Indices follow opening parens.
|
|
175
|
+
let (gi, s) :=
|
|
176
|
+
if peekAt s == some '?' && peekAt s 1 == some ':' then (0, adv (adv s))
|
|
177
|
+
else if peekAt s == some '?' && peekAt s 1 == some 'P' && peekAt s 2 == some '<' then
|
|
178
|
+
Id.run do
|
|
179
|
+
let mut t := adv (adv (adv s))
|
|
180
|
+
while peekAt t != none && peekAt t != some '>' do
|
|
181
|
+
t := adv t
|
|
182
|
+
if peekAt t == some '>' then t := adv t
|
|
183
|
+
return (t.gc + 1, { t with gc := t.gc + 1 })
|
|
184
|
+
else (s.gc + 1, { s with gc := s.gc + 1 })
|
|
185
|
+
let (alts, s) := parseAlt s
|
|
186
|
+
let s := if peekAt s == some ')' then adv s else s
|
|
187
|
+
some (.grp gi alts, s)
|
|
188
|
+
| some '[' => some (parseClass s0)
|
|
189
|
+
| some '.' => some (.any, adv s0)
|
|
190
|
+
| some '^' => some (.start, adv s0)
|
|
191
|
+
| some '$' => some (.stop, adv s0)
|
|
192
|
+
| some '\\' =>
|
|
193
|
+
let s := adv s0
|
|
194
|
+
match peekAt s with
|
|
195
|
+
| some 'd' => some (.cls false [.cd], adv s)
|
|
196
|
+
| some 'w' => some (.cls false [.cw], adv s)
|
|
197
|
+
| some 's' => some (.cls false [.cs], adv s)
|
|
198
|
+
| some 'D' => some (.cls false [.cnd], adv s)
|
|
199
|
+
| some 'W' => some (.cls false [.cnw], adv s)
|
|
200
|
+
| some 'S' => some (.cls false [.cns], adv s)
|
|
201
|
+
| some 'b' => some (.wordb, adv s)
|
|
202
|
+
| some 'B' => some (.nwordb, adv s)
|
|
203
|
+
| some 'n' => some (.char '\n', adv s)
|
|
204
|
+
| some 't' => some (.char '\t', adv s)
|
|
205
|
+
| some 'r' => some (.char '\r', adv s)
|
|
206
|
+
| some c => some (.char c, adv s)
|
|
207
|
+
| none => some (.char '\\', s)
|
|
208
|
+
| some c => some (.char c, adv s0)
|
|
209
|
+
|
|
210
|
+
end
|
|
211
|
+
|
|
212
|
+
def parse (pat : String) : Re :=
|
|
213
|
+
let (alts, st) := parseAlt { pat := pat.toList.toArray, pos := 0 }
|
|
214
|
+
{ alts, ngroups := st.gc }
|
|
215
|
+
|
|
216
|
+
-- ----- matcher (backtracking, CPS) -----
|
|
217
|
+
|
|
218
|
+
def isWord (c : Char) : Bool :=
|
|
219
|
+
(c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9') || c == '_'
|
|
220
|
+
|
|
221
|
+
def citemMatch (it : CItem) (c : Char) : Bool :=
|
|
222
|
+
match it with
|
|
223
|
+
| .cchar x => c == x
|
|
224
|
+
| .crange a b => c >= a && c <= b
|
|
225
|
+
| .cd => c >= '0' && c <= '9'
|
|
226
|
+
| .cnd => !(c >= '0' && c <= '9')
|
|
227
|
+
| .cw => isWord c
|
|
228
|
+
| .cnw => !isWord c
|
|
229
|
+
| .cs => c == ' ' || c == '\t' || c == '\n' || c == '\r' || c == '\x0c' || c == '\x0b'
|
|
230
|
+
| .cns => !(c == ' ' || c == '\t' || c == '\n' || c == '\r' || c == '\x0c' || c == '\x0b')
|
|
231
|
+
|
|
232
|
+
/- The continuation receives the accepting end position and the capture
|
|
233
|
+
spans so far (or fails with none); the first accepting continuation under
|
|
234
|
+
backtracking order wins. Capture spans are threaded functionally, so
|
|
235
|
+
backtracking naturally discards abandoned group records. -/
|
|
236
|
+
|
|
237
|
+
/-- Capture spans, one slot per capturing group (1-based groups at index-1). -/
|
|
238
|
+
abbrev Caps := Array (Option (Nat × Nat))
|
|
239
|
+
|
|
240
|
+
abbrev K := Nat → Caps → Option (Nat × Caps)
|
|
241
|
+
|
|
242
|
+
mutual
|
|
243
|
+
|
|
244
|
+
partial def mNode (input : Array Char) (len : Nat) (node : Node) (pos : Nat)
|
|
245
|
+
(caps : Caps) (k : K) : Option (Nat × Caps) :=
|
|
246
|
+
match node with
|
|
247
|
+
| .char c => if pos < len && input[pos]! == c then k (pos + 1) caps else none
|
|
248
|
+
| .any => if pos < len && input[pos]! != '\n' then k (pos + 1) caps else none
|
|
249
|
+
| .start => if pos == 0 then k pos caps else none
|
|
250
|
+
| .stop => if pos == len then k pos caps else none
|
|
251
|
+
| .wordb =>
|
|
252
|
+
let before := pos > 0 && isWord input[pos - 1]!
|
|
253
|
+
let after := pos < len && isWord input[pos]!
|
|
254
|
+
if before != after then k pos caps else none
|
|
255
|
+
| .nwordb =>
|
|
256
|
+
let before := pos > 0 && isWord input[pos - 1]!
|
|
257
|
+
let after := pos < len && isWord input[pos]!
|
|
258
|
+
if before == after then k pos caps else none
|
|
259
|
+
| .cls neg items =>
|
|
260
|
+
if pos < len then
|
|
261
|
+
let c := input[pos]!
|
|
262
|
+
let hit := items.any (citemMatch · c)
|
|
263
|
+
if (if neg then !hit else hit) then k (pos + 1) caps else none
|
|
264
|
+
else none
|
|
265
|
+
| .grp gi alts =>
|
|
266
|
+
let k' : K :=
|
|
267
|
+
if gi == 0 then k
|
|
268
|
+
else fun p caps' => k p (caps'.set! (gi - 1) (some (pos, p)))
|
|
269
|
+
alts.firstM (fun seq => mSeq input len seq pos caps k')
|
|
270
|
+
| .opt greedy a =>
|
|
271
|
+
if greedy then (mNode input len a pos caps k).orElse (fun _ => k pos caps)
|
|
272
|
+
else (k pos caps).orElse (fun _ => mNode input len a pos caps k)
|
|
273
|
+
| .star greedy a => mStar input len greedy a pos caps k
|
|
274
|
+
| .plus greedy a =>
|
|
275
|
+
mNode input len a pos caps (fun p caps' => mStar input len greedy a p caps' k)
|
|
276
|
+
| .rep greedy mn mx a => mRep input len greedy mn mx a pos caps k
|
|
277
|
+
|
|
278
|
+
partial def mStar (input : Array Char) (len : Nat) (greedy : Bool) (a : Node) (pos : Nat)
|
|
279
|
+
(caps : Caps) (k : K) : Option (Nat × Caps) :=
|
|
280
|
+
let more : K := fun p caps' =>
|
|
281
|
+
if p > pos then mStar input len greedy a p caps' k else none
|
|
282
|
+
if greedy then (mNode input len a pos caps more).orElse (fun _ => k pos caps)
|
|
283
|
+
else (k pos caps).orElse (fun _ => mNode input len a pos caps more)
|
|
284
|
+
|
|
285
|
+
partial def mRep (input : Array Char) (len : Nat) (greedy : Bool) (mn : Nat) (mx : Option Int)
|
|
286
|
+
(a : Node) (pos : Nat) (caps : Caps) (k : K) : Option (Nat × Caps) :=
|
|
287
|
+
if mn > 0 then
|
|
288
|
+
mNode input len a pos caps (fun p caps' =>
|
|
289
|
+
mRep input len greedy (mn - 1) (mx.map (· - 1)) a p caps' k)
|
|
290
|
+
else
|
|
291
|
+
match mx with
|
|
292
|
+
| some 0 => k pos caps
|
|
293
|
+
| _ =>
|
|
294
|
+
let next : K := fun p caps' =>
|
|
295
|
+
if p > pos then mRep input len greedy 0 (mx.map (· - 1)) a p caps' k else none
|
|
296
|
+
if greedy then (mNode input len a pos caps next).orElse (fun _ => k pos caps)
|
|
297
|
+
else (k pos caps).orElse (fun _ => mNode input len a pos caps next)
|
|
298
|
+
|
|
299
|
+
partial def mSeq (input : Array Char) (len : Nat) (seq : List Node) (pos : Nat)
|
|
300
|
+
(caps : Caps) (k : K) : Option (Nat × Caps) :=
|
|
301
|
+
match seq with
|
|
302
|
+
| [] => k pos caps
|
|
303
|
+
| x :: rest => mNode input len x pos caps (fun p caps' => mSeq input len rest p caps' k)
|
|
304
|
+
|
|
305
|
+
end
|
|
306
|
+
|
|
307
|
+
def compile (pat : String) : Re := parse pat
|
|
308
|
+
|
|
309
|
+
/-- First match at or after position `i`: `(mstart, mend, caps)`. -/
|
|
310
|
+
partial def findAt (re : Re) (chars : Array Char) (len : Nat) (i : Nat) :
|
|
311
|
+
Option (Nat × Nat × Caps) :=
|
|
312
|
+
let rec tryAt (i : Nat) : Option (Nat × Nat × Caps) :=
|
|
313
|
+
if i > len then none
|
|
314
|
+
else
|
|
315
|
+
let caps0 : Caps := Array.replicate re.ngroups none
|
|
316
|
+
match re.alts.firstM (fun seq => mSeq chars len seq i caps0 (fun p c => some (p, c))) with
|
|
317
|
+
| some (e, caps) => some (i, e, caps)
|
|
318
|
+
| none => tryAt (i + 1)
|
|
319
|
+
tryAt i
|
|
320
|
+
|
|
321
|
+
/- Does the pattern match anywhere in input? -/
|
|
322
|
+
partial def test (re : Re) (input : String) : Bool :=
|
|
323
|
+
let chars := input.toList.toArray
|
|
324
|
+
(findAt re chars chars.size 0).isSome
|
|
325
|
+
|
|
326
|
+
def testStr (pat : String) (input : String) : Bool := test (compile pat) input
|
|
327
|
+
|
|
328
|
+
/-- Leftmost match bounds `(start, stop)` in character (codepoint) indices. -/
|
|
329
|
+
partial def findBounds (re : Re) (input : String) : Option (Nat × Nat) :=
|
|
330
|
+
let chars := input.toList.toArray
|
|
331
|
+
(findAt re chars chars.size 0).map (fun (s, e, _) => (s, e))
|
|
332
|
+
|
|
333
|
+
private def sub (chars : Array Char) (a b : Nat) : String :=
|
|
334
|
+
String.ofList (chars.extract a b).toList
|
|
335
|
+
|
|
336
|
+
/-- First match as `[whole, capture1, ...]`; unmatched groups are `""`. -/
|
|
337
|
+
partial def find (re : Re) (input : String) : Option (List String) :=
|
|
338
|
+
let chars := input.toList.toArray
|
|
339
|
+
(findAt re chars chars.size 0).map fun (ms, me, caps) =>
|
|
340
|
+
sub chars ms me :: (caps.toList.map (fun c =>
|
|
341
|
+
match c with
|
|
342
|
+
| some (a, b) => sub chars a b
|
|
343
|
+
| none => ""))
|
|
344
|
+
|
|
345
|
+
/-- Every non-overlapping match, left to right (Go FindAllStringSubmatch). -/
|
|
346
|
+
partial def findAll (re : Re) (input : String) : List (List String) := Id.run do
|
|
347
|
+
let chars := input.toList.toArray
|
|
348
|
+
let len := chars.size
|
|
349
|
+
let mut out : List (List String) := []
|
|
350
|
+
let mut pos := 0
|
|
351
|
+
repeat do
|
|
352
|
+
match findAt re chars len pos with
|
|
353
|
+
| none => break
|
|
354
|
+
| some (ms, me, caps) =>
|
|
355
|
+
out := (sub chars ms me :: (caps.toList.map (fun c =>
|
|
356
|
+
match c with
|
|
357
|
+
| some (a, b) => sub chars a b
|
|
358
|
+
| none => ""))) :: out
|
|
359
|
+
pos := if me == ms then me + 1 else me
|
|
360
|
+
if pos > len then break
|
|
361
|
+
return out.reverse
|
|
362
|
+
|
|
363
|
+
/-- Replace every match; the template supports `$&` (whole), `$1`..`$9` and
|
|
364
|
+
`$$` (a literal `$`). On a zero-width match the current character is
|
|
365
|
+
emitted and the scan advances one position. -/
|
|
366
|
+
partial def replaceAll (re : Re) (input : String) (template : String) : String := Id.run do
|
|
367
|
+
let chars := input.toList.toArray
|
|
368
|
+
let len := chars.size
|
|
369
|
+
let tmpl := template.toList.toArray
|
|
370
|
+
let mut out := ""
|
|
371
|
+
let mut pos := 0
|
|
372
|
+
repeat do
|
|
373
|
+
match findAt re chars len pos with
|
|
374
|
+
| none =>
|
|
375
|
+
out := out ++ sub chars pos len
|
|
376
|
+
break
|
|
377
|
+
| some (ms, me, caps) =>
|
|
378
|
+
out := out ++ sub chars pos ms
|
|
379
|
+
let mut ti := 0
|
|
380
|
+
while ti < tmpl.size do
|
|
381
|
+
let ch := tmpl[ti]!
|
|
382
|
+
if ch == '$' && ti + 1 < tmpl.size then
|
|
383
|
+
let nc := tmpl[ti + 1]!
|
|
384
|
+
if nc == '$' then
|
|
385
|
+
out := out.push '$'
|
|
386
|
+
ti := ti + 2
|
|
387
|
+
else if nc == '&' || (nc >= '0' && nc <= '9') then
|
|
388
|
+
if nc == '&' || nc == '0' then
|
|
389
|
+
out := out ++ sub chars ms me
|
|
390
|
+
else
|
|
391
|
+
let gi := nc.toNat - '0'.toNat
|
|
392
|
+
if gi <= re.ngroups then
|
|
393
|
+
match caps[gi - 1]! with
|
|
394
|
+
| some (a, b) => out := out ++ sub chars a b
|
|
395
|
+
| none => pure ()
|
|
396
|
+
ti := ti + 2
|
|
397
|
+
else
|
|
398
|
+
out := out.push ch
|
|
399
|
+
ti := ti + 1
|
|
400
|
+
else
|
|
401
|
+
out := out.push ch
|
|
402
|
+
ti := ti + 1
|
|
403
|
+
if me == ms then
|
|
404
|
+
if ms < len then
|
|
405
|
+
out := out.push chars[ms]!
|
|
406
|
+
pos := ms + 1
|
|
407
|
+
if pos > len then break
|
|
408
|
+
else
|
|
409
|
+
pos := me
|
|
410
|
+
return out
|
|
411
|
+
|
|
412
|
+
end Vregex
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|