@@ -441,28 +441,55 @@ extension AST.Atom.CharacterProperty {
441441
442442 /// Character age, as per UnicodeScalar.Properties.age.
443443 case age( major: Int , minor: Int )
444-
444+
445+ /// A block property.
446+ case block( Unicode . Block )
447+
445448 case posix( Unicode . POSIXProperty )
446449
447450 /// Some special properties implemented by PCRE and Oniguruma.
448451 case pcreSpecial( PCRESpecialCategory )
449- case onigurumaSpecial( OnigurumaSpecialProperty )
450-
452+
453+ /// Some special properties implemented by Java.
454+ case javaSpecial( JavaSpecial )
455+
451456 public enum MapKind : Hashable {
452457 case lowercase
453458 case uppercase
454459 case titlecase
455460 }
456461 }
457462
458- // TODO: erm, separate out or fold into something? splat it in?
459463 public enum PCRESpecialCategory : String , Hashable {
460464 case alphanumeric = " Xan "
461465 case posixSpace = " Xps "
462466 case perlSpace = " Xsp "
463467 case universallyNamed = " Xuc "
464468 case perlWord = " Xwd "
465469 }
470+
471+ /// Special Java properties that correspond to methods on
472+ /// `java.lang.Character`, with the `java` prefix replaced by `is`.
473+ public enum JavaSpecial : String , Hashable , CaseIterable {
474+ case alphabetic = " javaAlphabetic "
475+ case defined = " javaDefined "
476+ case digit = " javaDigit "
477+ case identifierIgnorable = " javaIdentifierIgnorable "
478+ case ideographic = " javaIdeographic "
479+ case isoControl = " javaISOControl "
480+ case javaIdentifierPart = " javaJavaIdentifierPart " // not a typo, that's actually the name
481+ case javaIdentifierStart = " javaJavaIdentifierStart " // not a typo, that's actually the name
482+ case javaLetter = " javaLetter "
483+ case javaLetterOrDigit = " javaLetterOrDigit "
484+ case lowerCase = " javaLowerCase "
485+ case mirrored = " javaMirrored "
486+ case spaceChar = " javaSpaceChar "
487+ case titleCase = " javaTitleCase "
488+ case unicodeIdentifierPart = " javaUnicodeIdentifierPart "
489+ case unicodeIdentifierStart = " javaUnicodeIdentifierStart "
490+ case upperCase = " javaUpperCase "
491+ case whitespace = " javaWhitespace "
492+ }
466493}
467494
468495extension AST . Atom {
0 commit comments