Implements a three-phase Sieve email filtering pipeline: - Data models (SieveCondition, SieveAction, SieveRule) as sealed Dart classes - SieveParser: converts RFC 5228 Sieve scripts to a flat SieveRule list, supporting if/elsif/else, allof/anyof, header/size/exists tests, and all common actions (fileinto, keep, discard, flag, mark) - SieveInterpreter: evaluates compiled rules against a SieveEmailContext, tracking routing state in SieveExecutionContext with implicit keep behaviour - 40 unit tests covering parser correctness and interpreter execution Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
18 lines
386 B
Dart
18 lines
386 B
Dart
sealed class SieveAction {}
|
|
|
|
final class FileIntoAction extends SieveAction {
|
|
FileIntoAction(this.folder);
|
|
final String folder;
|
|
}
|
|
|
|
final class KeepAction extends SieveAction {}
|
|
|
|
final class DiscardAction extends SieveAction {}
|
|
|
|
final class MarkAsSeenAction extends SieveAction {}
|
|
|
|
final class FlagAction extends SieveAction {
|
|
FlagAction(this.flags);
|
|
final List<String> flags;
|
|
}
|