Not logged in.  Login/Logout/Register | List snippets | | Create snippet | Upload image | Upload data

36
LINES

< > BotCompany Repo | #1032802 // RegExp - encapsulate a regular expression (unparsed and parsed, optionally CI)

JavaX fragment (include) [tags: use-pretranspiled]

Libraryless. Click here for Pure Java version (5017L/28K).

persistable srecord RegExp(S pattern, bool caseInsensitive) {
  transient Pattern compiled;
  S error;
  
  *(S *pattern) {}

  // TODO: don't compile again when error detected?
  java.util.regex.Pattern compile aka get() {
    try {
      compiled if null = compileRegexpPossiblyIC(pattern, caseInsensitive);
      error = null;
      ret compiled;
    } catch e {
      error = exceptionToStringShort(e);
      null;
    }
  }
  
  bool valid() {
    ret compile() != null;
  }
  
  bool containsSpecialChars() {
    ret containsRegExpSpecialChars(pattern);
  }
  
  bool containedIn(S s) {
    ret regexpContains(getForce(), s);
  }
  
  java.util.regex.Pattern getForce() {
    var pattern = get();
    if (error != null) fail(error, pattern);
    ret pattern;
  }
}

download  show line numbers  debug dex  old transpilations   

Travelled to 4 computer(s): bhatertpkbcr, ekrmjmnbrukm, mowyntqkapby, mqqgnosmbjvj

No comments. add comment

Snippet ID: #1032802
Snippet name: RegExp - encapsulate a regular expression (unparsed and parsed, optionally CI)
Eternal ID of this version: #1032802/14
Text MD5: 823482a7bccdd8145b98140fd69cf41a
Transpilation MD5: 0ef2c1b3e4d161f3ec8c62ed5bb16e25
Author: stefan
Category: javax / regexp
Type: JavaX fragment (include)
Public (visible to everyone): Yes
Archived (hidden from active list): No
Created/modified: 2021-11-14 20:57:10
Source code size: 805 bytes / 36 lines
Pitched / IR pitched: No / No
Views / Downloads: 240 / 414
Version history: 13 change(s)
Referenced in: [show references]