 e89f2f4b7b
			
		
	
	e89f2f4b7b
	
	
	
		
			
			Created 10 detailed GitHub issues covering: - Project activation and management UI (#1-2) - Worker node coordination and visualization (#3-4) - Automated GitHub repository scanning (#5) - Intelligent model-to-issue matching (#6) - Multi-model task execution system (#7) - N8N workflow integration (#8) - Hive-Bzzz P2P bridge (#9) - Peer assistance protocol (#10) Each issue includes detailed specifications, acceptance criteria, technical implementation notes, and dependency mapping. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
		
			
				
	
	
		
			87 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			87 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| // Skip text characters for text token, place those to pending buffer
 | |
| // and increment current pos
 | |
| 
 | |
| // Rule to skip pure text
 | |
| // '{}$%@~+=:' reserved for extentions
 | |
| 
 | |
| // !, ", #, $, %, &, ', (, ), *, +, ,, -, ., /, :, ;, <, =, >, ?, @, [, \, ], ^, _, `, {, |, }, or ~
 | |
| 
 | |
| // !!!! Don't confuse with "Markdown ASCII Punctuation" chars
 | |
| // http://spec.commonmark.org/0.15/#ascii-punctuation-character
 | |
| function isTerminatorChar (ch) {
 | |
|   switch (ch) {
 | |
|     case 0x0A/* \n */:
 | |
|     case 0x21/* ! */:
 | |
|     case 0x23/* # */:
 | |
|     case 0x24/* $ */:
 | |
|     case 0x25/* % */:
 | |
|     case 0x26/* & */:
 | |
|     case 0x2A/* * */:
 | |
|     case 0x2B/* + */:
 | |
|     case 0x2D/* - */:
 | |
|     case 0x3A/* : */:
 | |
|     case 0x3C/* < */:
 | |
|     case 0x3D/* = */:
 | |
|     case 0x3E/* > */:
 | |
|     case 0x40/* @ */:
 | |
|     case 0x5B/* [ */:
 | |
|     case 0x5C/* \ */:
 | |
|     case 0x5D/* ] */:
 | |
|     case 0x5E/* ^ */:
 | |
|     case 0x5F/* _ */:
 | |
|     case 0x60/* ` */:
 | |
|     case 0x7B/* { */:
 | |
|     case 0x7D/* } */:
 | |
|     case 0x7E/* ~ */:
 | |
|       return true
 | |
|     default:
 | |
|       return false
 | |
|   }
 | |
| }
 | |
| 
 | |
| export default function text (state, silent) {
 | |
|   let pos = state.pos
 | |
| 
 | |
|   while (pos < state.posMax && !isTerminatorChar(state.src.charCodeAt(pos))) {
 | |
|     pos++
 | |
|   }
 | |
| 
 | |
|   if (pos === state.pos) { return false }
 | |
| 
 | |
|   if (!silent) { state.pending += state.src.slice(state.pos, pos) }
 | |
| 
 | |
|   state.pos = pos
 | |
| 
 | |
|   return true
 | |
| }
 | |
| 
 | |
| // Alternative implementation, for memory.
 | |
| //
 | |
| // It costs 10% of performance, but allows extend terminators list, if place it
 | |
| // to `ParserInline` property. Probably, will switch to it sometime, such
 | |
| // flexibility required.
 | |
| 
 | |
| /*
 | |
| var TERMINATOR_RE = /[\n!#$%&*+\-:<=>@[\\\]^_`{}~]/;
 | |
| 
 | |
| module.exports = function text(state, silent) {
 | |
|   var pos = state.pos,
 | |
|       idx = state.src.slice(pos).search(TERMINATOR_RE);
 | |
| 
 | |
|   // first char is terminator -> empty text
 | |
|   if (idx === 0) { return false; }
 | |
| 
 | |
|   // no terminator -> text till end of string
 | |
|   if (idx < 0) {
 | |
|     if (!silent) { state.pending += state.src.slice(pos); }
 | |
|     state.pos = state.src.length;
 | |
|     return true;
 | |
|   }
 | |
| 
 | |
|   if (!silent) { state.pending += state.src.slice(pos, pos + idx); }
 | |
| 
 | |
|   state.pos += idx;
 | |
| 
 | |
|   return true;
 | |
| }; */
 |