1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950openPpxlibmoduleBuilder=Ast_builder.Defaultletparse_restr=trylet_=Str.search_forward(Str.regexp"/\\(.*\\)/\\(.*\\)")str0inletfirst=Str.matched_group1strinletsecond=Str.matched_group2strinmatchString.lengthsecondwith|0->Ok(first,None)|_->Ok(first,Somesecond)withNot_found->Error"invalid regex"letextractor=Ast_pattern.(__')lethandler~ctxt:_({txt=payload;loc}:Ppxlib.Parsetree.payloadloc)=matchpayloadwith|PStr[{pstr_desc=Pstr_eval(expression,_);_}]->(matchexpression.pexp_descwith|Pexp_constant(Pconst_string(str,location,_delimiter))->(matchparse_restrwith|Ok(regex,flags)->(letregex=Builder.estring~loc:locationregexinmatchflagswith|None->[%exprJs.Re.fromString[%eregex]]|Someflags'->letflags=Builder.estring~loc:locationflags'in[%exprJs.Re.fromStringWithFlags~flags:[%eflags][%eregex]])|Errorerr->Builder.pexp_extension~loc(Location.error_extensionf~loc:location"[server-reason-react.melange_ppx] invalid regex: %s,\n%s"errstr))|_->Builder.pexp_extension~loc(Location.error_extensionf~loc"[server-reason-react.melange_ppx] payload should be a string \
literal"))|_->Builder.pexp_extension~loc(Location.error_extensionf~loc"[server-reason-react.melange_ppx] [%%re] extension should have an \
expression as payload")letrule=letextension=Extension.V3.declare"mel.re"Extension.Context.expressionextractorhandlerinContext_free.Rule.extensionextension