if( typeof module !== 'undefined' ) require( 'wTools' ); let _ = wTools; function onStrip( strip ) { var allowedKeys = [ 'bg', 'background', 'fg', 'foreground' ]; var parts = strip.split( ' : ' ) if( parts.length === 2 ) { if( allowedKeys.indexOf( parts[ 0 ] ) === -1 ) return undefined; return parts; } } var src = 'this #background : red#is#background : default# text1 and # text2 # and text3'; var got = _.strSplitInlined({ src, onInlined : onStrip }); console.log( src ); // log : 'this #background : red#is#background : default# text1 and # text2 # and text3' console.log( _.entity.exportString( got, { levels : 2 } ) ); // log : 'this ,background,red,is,background,default, text1 and # text2 # and text3' var src = 'this #background : red#is#background : default# #text1'; var got = _.strSplitInlined({ src, onInlined : onStrip }); console.log( src ); // log : 'this #background : red#is#background : default# #text1' console.log( _.entity.exportString( got, { levels : 2 } ) ); // log : 'this ,background,red,is,background,default, #text1' var src = '#background : red#text#background : default#'; var got = _.strSplitInlined({ src, onInlined : onStrip }); console.log( src ); // log : '#background : red#text#background : default#' console.log( _.entity.exportString( got, { levels : 2 } ) ); // log : ',background,red,text,background,default,' var src = '#background : red#i#s#background : default##text'; var got = _.strSplitInlined({ src, onInlined : onStrip, preservingEmpty : 1 }); console.log( src ); // log : '#background : red#i#s#background : default##text' console.log( _.entity.exportString( got, { levels : 2 } ) ); // log : ',background,red,i#s,background,default,#text'