1#![deny(unsafe_code)]
44
45pub mod action;
46pub mod ast;
47pub mod byte_dfa;
48pub mod byte_lex;
49pub mod byte_nfa;
50pub mod byte_simd;
51pub mod bytepat;
52pub mod bpe;
53pub mod builder;
54pub mod canon;
55pub mod captures;
56mod checksum;
57pub mod context;
58pub mod cursor;
59pub mod curvature;
60pub mod decoded;
61pub mod custom;
62pub mod dual_grain;
63pub mod e8;
64pub mod echo;
65pub mod edit;
66pub mod encoding;
67pub mod ends_simd;
68pub mod entanglement;
69pub mod files;
70pub mod flow;
71pub mod follow;
72mod fxhash;
73pub mod gauge;
74pub mod engine;
75pub mod gpu;
76pub mod geodesic;
77pub mod grammar;
78pub mod gravity;
79pub mod holography;
80pub mod isa;
81pub mod kind_route;
82pub mod lexer;
83pub mod library;
84pub mod magnitude;
85pub mod nfa;
86pub mod observation;
87pub mod orbit;
88pub mod paint;
89pub mod parallel_lex;
90pub mod parser;
91pub mod pattern_set;
92pub mod prefilter;
93#[cfg(feature = "compress")]
94pub mod prior_cache;
95pub mod profile;
96pub mod explain;
97pub mod index;
98pub mod infer;
99pub mod quantity;
100pub mod records;
101pub mod templates;
102pub mod relation;
103pub mod report;
104pub mod resonator;
105pub mod rewrite;
106pub mod rule_scan;
107pub mod seam;
108pub mod shape;
109pub mod spectral;
110pub mod streaming;
111pub mod stress;
112pub mod supertoken;
113#[cfg(feature = "tandem")]
114pub mod tandem;
115pub mod token;
116pub mod tokutil;
117pub mod topology;
118pub mod trace;
119pub mod typed;
120pub mod window;
121
122pub use flynnel::notice;
127
128pub use context::{
129 Agreement, ContextConfig, ContextField, RelationContext, RelationReading, Window,
130 WindowProfile,
131};
132pub use captures::{
133 CaptureSlots, SlotCursor, captures_read, captures_read_at, captures_read_iter,
134 static_captures_len, static_token_extent,
135};
136pub use cursor::{
137 Cursor, MatchCursor, MatchRef, Split, capture_names, captures_at, captures_first, captures_iter,
138 captures_len, escape, find, find_at, find_iter, is_match_at, shortest_match,
139 shortest_match_at, split, split_at_depth, splitn,
140};
141pub use curvature::{Curvature, EdgeCurvature};
142pub use dual_grain::{GrainTiming, scan_dual_grain};
143pub use echo::{EchoConfig, EchoField, EchoFrame, SuperEcho};
144pub use entanglement::Entanglement;
145pub use custom::{LibTest, Precedence, Rule, Severity, ShapeError, ShapeSet, TestFailure, TokenShape};
146pub use ast::EmptyLoop;
147pub use builder::PatternBuilder;
148pub use pattern_set::{PatternSet, SetMatches};
149pub use engine::{
150 INLINE_REGS, Match, Regs, Span, captures, captures_over, captures_over_with_lists, captures_with_empty_loop,
151 captures_with_lists, captures_with_shapes, captures_with_shapes_and_lists, is_match, scan,
152 scan_with_empty_loop, scan_with_shapes,
153};
154pub use parser::parse_with_empty_loop;
155pub use flow::{
156 AnalyticConfig, AnalyticField, FlowConfig, FlowField, FlowFrame, Signal, analytic,
157 analytic_signal,
158};
159pub use gpu::{Backend, BackendUsed, device_available, gpu_eligible, scan_gpu, scan_with_backend};
160pub use geodesic::Geodesic;
161pub use grammar::{Grammar, GrammarError, Node};
162pub use holography::Holography;
163pub use magnitude::{MagnitudeConfig, MagnitudeField, MagnitudeFrame};
164pub use observation::{ObservationConfig, ObservationField, ObservationFrame};
165pub use orbit::{OrbitGroup, OrbitToken, canonical, same_orbit, tokenize};
166pub use parser::{ParseError, parse, parse_with_inputs};
167pub use typed::{
168 Clock, date_order_day_first, now_override, set_date_order_day_first, set_now, set_tz_offset,
169};
170pub use profile::{
171 AxisCtx, AxisProfile, EchoProfile, MagnitudeProfile, Profile, ShapeProfile, SpectralProfile,
172 StressProfile, fold_profiles, fold_tokens,
173};
174pub use relation::{Chord, Edge, RelationField, RelationFrame, RelationKind};
175pub use resonator::{
176 Spectrum, analyze_symbols, over_byte_values, over_bytes, over_supertokens, over_tokens,
177};
178pub use rewrite::{
179 Field, Keep, Mask, Matched, Reference, ReportAt, ReportField, ReportRule, Spanned, Template,
180 TemplateError, redactions, redactions_with_shapes, rewrite, rewrite_first, rewrite_n, rewrite_n_with,
181 rewrite_with, rewrite_with_backend,
182};
183pub use seam::{Recovery, SeamConfig, SeamField};
184pub use shape::{RegionKind, ShapeConfig, ShapeField, ShapeFrame};
185pub use spectral::{
186 CodeTexture, SpectralField, SpectralFrame, Texture, analyze, code_regions, code_texture,
187 high_entropy_runs, regions,
188};
189pub use streaming::{HeldStream, StreamScanner, scan_chunked};
190pub use stress::{StressConfig, StressField, StressFrame};
191pub use supertoken::{Role, SuperToken, supertokens};
192pub use topology::Topology;
193
194#[must_use]
199pub fn version() -> &'static str {
200 env!("CARGO_PKG_VERSION")
201}
202
203#[cfg(doctest)]
213#[doc = include_str!("../wiki/content/docs/reference/pattern-syntax.md")]
214mod wiki_pattern_syntax {}
215
216#[cfg(doctest)]
217#[doc = include_str!("../wiki/content/docs/reference/matching.md")]
218mod wiki_matching {}
219
220#[cfg(doctest)]
221#[doc = include_str!("../wiki/content/docs/reference/windows.md")]
222mod wiki_windows {}
223
224#[cfg(doctest)]
225#[doc = include_str!("../wiki/content/docs/reference/rewriting.md")]
226mod wiki_rewriting {}
227
228#[cfg(doctest)]
229#[doc = include_str!("../wiki/content/docs/reference/redaction.md")]
230mod wiki_redaction {}
231
232#[cfg(doctest)]
233#[doc = include_str!("../wiki/content/docs/reference/aggregates.md")]
234mod wiki_aggregates {}
235
236#[cfg(doctest)]
237#[doc = include_str!("../wiki/content/docs/reference/records.md")]
238mod wiki_records {}
239
240#[cfg(doctest)]
241#[doc = include_str!("../wiki/content/docs/reference/building-patterns.md")]
242mod wiki_building_patterns {}
243
244#[cfg(doctest)]
245#[doc = include_str!("../wiki/content/docs/reference/pattern-files.md")]
246mod wiki_pattern_files {}
247
248#[cfg(doctest)]
249#[doc = include_str!("../wiki/content/docs/reference/tools.md")]
250mod wiki_tools {}
251
252#[cfg(doctest)]
253#[doc = include_str!("../wiki/content/docs/reference/axes/context.md")]
254mod wiki_axis_context {}
255
256#[cfg(doctest)]
257#[doc = include_str!("../wiki/content/docs/reference/axes/magnitude.md")]
258mod wiki_axis_magnitude {}
259
260#[cfg(doctest)]
261#[doc = include_str!("../wiki/content/docs/reference/axes/stress.md")]
262mod wiki_axis_stress {}
263
264#[cfg(doctest)]
265#[doc = include_str!("../wiki/content/docs/reference/axes/flow.md")]
266mod wiki_axis_flow {}
267
268#[cfg(doctest)]
269#[doc = include_str!("../wiki/content/docs/reference/axes/observation.md")]
270mod wiki_axis_observation {}
271
272#[cfg(doctest)]
273#[doc = include_str!("../wiki/content/docs/reference/axes/echo.md")]
274mod wiki_axis_echo {}
275
276#[cfg(doctest)]
277#[doc = include_str!("../wiki/content/docs/reference/axes/orbit.md")]
278mod wiki_axis_orbit {}
279
280#[cfg(doctest)]
281#[doc = include_str!("../wiki/content/docs/reference/axes/shape.md")]
282mod wiki_axis_shape {}
283
284#[cfg(doctest)]
285#[doc = include_str!("../wiki/content/docs/reference/axes/spectral.md")]
286mod wiki_axis_spectral {}
287
288#[cfg(doctest)]
289#[doc = include_str!("../wiki/content/docs/reference/axes/seam.md")]
290mod wiki_axis_seam {}
291
292#[cfg(doctest)]
293#[doc = include_str!("../wiki/content/docs/reference/axes/relation.md")]
294mod wiki_axis_relation {}
295
296#[cfg(doctest)]
297#[doc = include_str!("../wiki/content/docs/how-to/extract-fields.md")]
298mod wiki_howto_extract_fields {}
299
300#[cfg(doctest)]
301#[doc = include_str!("../wiki/content/docs/how-to/rename-matches.md")]
302mod wiki_howto_rename_matches {}
303
304#[cfg(doctest)]
305#[doc = include_str!("../wiki/content/docs/how-to/find-tables.md")]
306mod wiki_howto_find_tables {}
307
308#[cfg(doctest)]
309#[doc = include_str!("../wiki/content/docs/how-to/match-up-to-a-symmetry.md")]
310mod wiki_howto_match_up_to_a_symmetry {}
311
312#[cfg(doctest)]
313#[doc = include_str!("../wiki/content/docs/how-to/segment-without-delimiters.md")]
314mod wiki_howto_segment_without_delimiters {}
315
316#[cfg(doctest)]
317#[doc = include_str!("../wiki/content/docs/how-to/find-outliers.md")]
318mod wiki_howto_find_outliers {}
319
320#[cfg(doctest)]
321#[doc = include_str!("../wiki/content/docs/how-to/choose-a-backend.md")]
322mod wiki_howto_choose_a_backend {}
323
324#[cfg(doctest)]
325#[doc = include_str!("../wiki/content/docs/how-to/declare-your-own-atoms.md")]
326mod wiki_howto_declare_your_own_atoms {}
327
328#[cfg(doctest)]
329#[doc = include_str!("../wiki/content/docs/how-to/build-and-reuse-a-pattern.md")]
330mod wiki_howto_build_and_reuse_a_pattern {}
331
332#[cfg(doctest)]
333#[doc = include_str!("../wiki/content/docs/how-to/query-records.md")]
334mod wiki_howto_query_records {}
335
336#[cfg(doctest)]
337#[doc = include_str!("../wiki/content/docs/how-to/count-and-rank-matches.md")]
338mod wiki_howto_count_and_rank_matches {}
339
340#[cfg(doctest)]
341#[doc = include_str!("../wiki/content/docs/how-to/redact-and-follow-logs.md")]
342mod wiki_howto_redact_and_follow_logs {}
343
344#[cfg(doctest)]
345#[doc = include_str!("../wiki/content/docs/how-to/search-a-tree-of-files.md")]
346mod wiki_howto_search_a_tree_of_files {}
347
348#[cfg(doctest)]
349#[doc = include_str!("../wiki/content/docs/how-to/index-a-tree.md")]
350mod wiki_howto_index_a_tree {}
351
352#[cfg(doctest)]
353#[doc = include_str!("../wiki/content/docs/how-to/lint-with-rules.md")]
354mod wiki_howto_lint_with_rules {}
355
356#[cfg(doctest)]
357#[doc = include_str!("../wiki/content/docs/how-to/test-a-pattern-file.md")]
358mod wiki_howto_test_a_pattern_file {}
359
360#[cfg(doctest)]
361#[doc = include_str!("../wiki/content/docs/how-to/filter-by-typed-values.md")]
362mod wiki_howto_filter_by_typed_values {}
363
364#[cfg(doctest)]
365#[doc = include_str!("../wiki/content/docs/how-to/scan-many-patterns-at-once.md")]
366mod wiki_howto_scan_many_patterns_at_once {}
367
368#[cfg(doctest)]
369#[doc = include_str!("../wiki/content/docs/how-to/explain-why-a-pattern-matched.md")]
370mod wiki_howto_explain_why_a_pattern_matched {}
371
372#[cfg(doctest)]
373#[doc = include_str!("../wiki/content/docs/how-to/match-inside-encoded-content.md")]
374mod wiki_howto_match_inside_encoded_content {}
375
376#[cfg(doctest)]
377#[doc = include_str!("../wiki/content/docs/how-to/summarize-a-log-by-templates.md")]
378mod wiki_howto_summarize_a_log_by_templates {}
379
380#[cfg(doctest)]
381#[doc = include_str!("../wiki/content/docs/how-to/scan-input-in-pieces.md")]
382mod wiki_howto_scan_input_in_pieces {}
383
384#[cfg(doctest)]
385#[doc = include_str!("../wiki/content/docs/how-to/parse-with-a-token-grammar.md")]
386mod wiki_howto_parse_with_a_token_grammar {}
387
388#[cfg(doctest)]
389#[doc = include_str!("../wiki/content/docs/how-to/split-run-together-words.md")]
390mod wiki_howto_split_run_together_words {}
391
392#[cfg(doctest)]
393#[doc = include_str!("../wiki/content/docs/how-to/learn-a-subword-tokenizer.md")]
394mod wiki_howto_learn_a_subword_tokenizer {}
395
396#[cfg(doctest)]
397#[doc = include_str!("../wiki/content/docs/how-to/find-deep-nesting.md")]
398mod wiki_howto_find_deep_nesting {}
399
400#[cfg(doctest)]
401#[doc = include_str!("../wiki/content/docs/how-to/find-repeated-or-new-content.md")]
402mod wiki_howto_find_repeated_or_new_content {}
403
404#[cfg(doctest)]
405#[doc = include_str!("../wiki/content/docs/how-to/find-rare-lines-and-out-of-order-times.md")]
406mod wiki_howto_find_rare_lines_and_out_of_order_times {}
407
408#[cfg(doctest)]
409#[doc = include_str!("../wiki/content/docs/how-to/find-where-text-changes-kind.md")]
410mod wiki_howto_find_where_text_changes_kind {}
411
412#[cfg(doctest)]
413#[doc = include_str!("../wiki/content/docs/how-to/pre-check-a-corpus-for-a-literal.md")]
414mod wiki_howto_pre_check_a_corpus_for_a_literal {}
415
416#[cfg(doctest)]
417#[doc = include_str!("../wiki/content/docs/tutorial/getting-started.md")]
418mod wiki_tutorial_getting_started {}
419
420#[cfg(doctest)]
421#[doc = include_str!("../wiki/content/docs/tutorial/first-patterns.md")]
422mod wiki_tutorial_first_patterns {}
423
424#[cfg(doctest)]
425#[doc = include_str!("../wiki/content/docs/tutorial/binding-and-balance.md")]
426mod wiki_tutorial_binding_and_balance {}
427
428#[cfg(doctest)]
429#[doc = include_str!("../wiki/content/docs/tutorial/axes-and-tools.md")]
430mod wiki_tutorial_axes_and_tools {}
431
432#[cfg(doctest)]
433#[doc = include_str!("../wiki/content/docs/tutorial/beyond-regex.md")]
434mod wiki_tutorial_beyond_regex {}
435
436#[cfg(test)]
437mod tests {
438 use super::*;
439
440 #[test]
441 fn version_is_non_empty() {
442 assert!(!version().is_empty());
443 }
444}