parse-bem

node v4.9.1
version: 7.0.0
endpointsharetweet
function parseBase( source ){ /*= | item_mod-->'item' | item--mod->'item'  */ var result= source, sep= this.sep.modf; if( sep ) result= source.split(sep)[0]; return result; } function parseModfName( source ){ /*= | item_mod-->'mod' | item--mod->'mod'  */ var result= '', sep= this.sep.modf, div; if( sep ){ div= source.split(sep); if( div.length > 1 ){ result = div[1]; } } return result; } function parseModfVal( source ){ /*= | item--modf_val->'val'  */ var result= '', div= source.split(this.sep.modv); if( div.length>1 ) result= div[1]; return result; } function parseModf( source ){ var result= null, sep= this.sep.modf, name; if( sep ){ name = this.ƒn.parseModfName(source); if( name ){ var val= this.ƒn.parseModfVal(source)||null; result= {name,sep,val}; } } return result; } var parser= { sep:{ elem:'__', modf:'--', modv:'_' }, ƒn:{ parseBase: src=> parseBase.call(parser,src), parseModfName: src=>parseModfName.call(parser,src), parseModfVal: src=> parseModfVal.call(parser,src), parseModf: src=> parseModf.call(parser,src), }, parse( source ){ var result= {}; if( !source ) return result; //=split block var div= source.split(this.sep.elem), item= div[0], part= 'block'; //+concat name result[part]={ name:this.ƒn.parseBase(item) }; //=has elem if( div.length>1 ){ //+get postfix item= div[1]; part= 'elem'; //+concat postfix result[part]={ name:this.ƒn.parseBase(item) }; } //=parse mod var mod= this.ƒn.parseModf(item); if( mod ) result[part].mod= mod; return result; }, create(elem='__',modf='--',modv='_'){ Object.assign(this.parser.sep,{elem,modf,modv}); return this.parser.parse; } }; module.exports= parser;
Loading…

no comments

    sign in to comment