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

34
LINES

< > BotCompany Repo | #1024230 // makeNotifyingStringBufferRotate

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

Libraryless. Click here for Pure Java version (2212L/14K).

1  
sbool makeNotifyingStringBufferRotate_verbose;
2  
3  
sclass NotifyingStringBufferRotator implements Runnable {
4  
  NotifyingStringBuffer buf;
5  
  IF0<Int> getMaxChars;
6  
  bool processing; // avoid endless loop
7  
  
8  
  *(NotifyingStringBuffer *buf, IF0<Int> *getMaxChars) {}
9  
  
10  
  run {
11  
    if (processing) ret;
12  
    temp tempSet(this, processing := true);
13  
    Int max = callF(getMaxChars);
14  
    //if (makeNotifyingStringBufferRotate_verbose) System.out.println("XX " + max + " " + buf.length());
15  
    if (max == null || buf.length() <= max) ret;
16  
    if (makeNotifyingStringBufferRotate_verbose) print("Rotating NotifyingStringBuffer (" + buf.length() + "/" + max + ")");
17  
     
18  
    try {
19  
      int newLength = max/2;
20  
      int ofs = buf.length()-newLength;
21  
      S newString = buf.substring(ofs);
22  
      buf.setLength(0);
23  
      buf.append("[...] ").append(newString);
24  
    } catch (Exception e) {
25  
      buf.setLength(0);
26  
    }
27  
    buf.trimToSize();
28  
  }
29  
}
30  
31  
svoid makeNotifyingStringBufferRotate(NotifyingStringBuffer buf, IF0<Int> getMaxChars) {
32  
  if (hasElementWithClassShortNamed('NotifyingStringBufferRotator, buf.onChange)) ret;
33  
  buf.onChange(new NotifyingStringBufferRotator(buf, getMaxChars));
34  
}

download  show line numbers  debug dex  old transpilations   

Travelled to 6 computer(s): bhatertpkbcr, mqqgnosmbjvj, pyentgdyhuwx, pzhvpgtvlbxg, tvejysmllsmz, vouqrxazstgt

No comments. add comment

Snippet ID: #1024230
Snippet name: makeNotifyingStringBufferRotate
Eternal ID of this version: #1024230/9
Text MD5: 02f6f584f8cd479f19f9afd82a622cbc
Transpilation MD5: cb2ec6030c10ba3f40b0b62a856b4311
Author: stefan
Category: javax
Type: JavaX fragment (include)
Public (visible to everyone): Yes
Archived (hidden from active list): No
Created/modified: 2019-07-28 14:06:47
Source code size: 1214 bytes / 34 lines
Pitched / IR pitched: No / No
Views / Downloads: 340 / 1312
Version history: 8 change(s)
Referenced in: [show references]