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

20
LINES

< > BotCompany Repo | #1031922 // tok_metaFor

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

Libraryless. Click here for Pure Java version (10462L/58K).

svoid tok_metaFor(LS tok) {
  int i;
  
  jreplace(tok, "meta-for <id> also as", "meta-for $4 in $4,");
  
  while ((i = jfind_any(tok,
    "meta-for <id> in",
    "meta-for <id> as")) >= 0) {
    int iOpening = indexOf(tok, i, "{");
    int iClosing = tok_findEndOfBracketPart(tok, iOpening)-1;
    int iVar = i+6, iFirstValue = iVar+4;
    S var = tok.get(iVar);
    LS values = identifiersOnly(subList(tok, iFirstValue, iOpening-1));
    LS body = subList(tok, iOpening+1, iClosing);
    
    tokReplace_reTok(tok, i, iClosing+1,
      mapToLines(values, value ->
        join(replaceInClonedList(body, var, value))));
  }
}

download  show line numbers  debug dex  old transpilations   

Travelled to 3 computer(s): bhatertpkbcr, mqqgnosmbjvj, pyentgdyhuwx

No comments. add comment

Snippet ID: #1031922
Snippet name: tok_metaFor
Eternal ID of this version: #1031922/11
Text MD5: e50333930b0a0f8169e5c348ad2a19ee
Transpilation MD5: 984a99db28d896738fb89123504d0734
Author: stefan
Category: javax / transpiling
Type: JavaX fragment (include)
Public (visible to everyone): Yes
Archived (hidden from active list): No
Created/modified: 2022-07-19 23:51:40
Source code size: 646 bytes / 20 lines
Pitched / IR pitched: No / No
Views / Downloads: 171 / 297
Version history: 10 change(s)
Referenced in: [show references]