PreparationOptions.cs 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. namespace Jint;
  2. public interface IPreparationOptions<out TParsingOptions>
  3. where TParsingOptions : IParsingOptions
  4. {
  5. TParsingOptions ParsingOptions { get; }
  6. /// <summary>
  7. /// Gets or sets whether to fold constant expressions during the preparation phase.
  8. /// Defaults to <see langword="true"/>.
  9. /// </summary>
  10. bool FoldConstants { get; init; }
  11. }
  12. public sealed record class ScriptPreparationOptions : IPreparationOptions<ScriptParsingOptions>
  13. {
  14. private static readonly ParserOptions _defaultParserOptions = ScriptParsingOptions.Default.GetParserOptions() with
  15. {
  16. RegExpParseMode = RegExpParseMode.AdaptToCompiled,
  17. };
  18. public static readonly ScriptPreparationOptions Default = new();
  19. public ScriptParsingOptions ParsingOptions { get; init; } = ScriptParsingOptions.Default;
  20. /// <inheritdoc/>
  21. public bool FoldConstants { get; init; } = Engine.FoldConstantsOnPrepareByDefault;
  22. internal ParserOptions GetParserOptions() => ReferenceEquals(this, Default)
  23. ? _defaultParserOptions
  24. : ParsingOptions.ApplyTo(_defaultParserOptions, _defaultParserOptions.RegExpParseMode, _defaultParserOptions.RegexTimeout);
  25. }
  26. public sealed record class ModulePreparationOptions : IPreparationOptions<ModuleParsingOptions>
  27. {
  28. private static readonly ParserOptions _defaultParserOptions = ModuleParsingOptions.Default.GetParserOptions() with
  29. {
  30. RegExpParseMode = RegExpParseMode.AdaptToCompiled
  31. };
  32. public static readonly ModulePreparationOptions Default = new();
  33. public ModuleParsingOptions ParsingOptions { get; init; } = ModuleParsingOptions.Default;
  34. /// <inheritdoc/>
  35. public bool FoldConstants { get; init; } = Engine.FoldConstantsOnPrepareByDefault;
  36. internal ParserOptions GetParserOptions() => ReferenceEquals(this, Default)
  37. ? _defaultParserOptions
  38. : ParsingOptions.ApplyTo(_defaultParserOptions, _defaultParserOptions.RegExpParseMode, _defaultParserOptions.RegexTimeout);
  39. }