Marker.hx 520 B

123456789101112131415161718192021
  1. class Marker {
  2. static var markerRe = ~/{-(\d+)-}/g;
  3. static public function extractMarkers(doc:String) {
  4. var markers = #if macro [] #else new Map() #end;
  5. var posAcc = 0;
  6. var src = markerRe.map(doc, function(r) {
  7. var p = r.matchedPos();
  8. var name = r.matched(1);
  9. var pos = p.pos - posAcc;
  10. posAcc += p.len;
  11. #if macro
  12. markers.push(macro $v{Std.parseInt(name)} => $v{pos});
  13. #else
  14. markers.set(Std.parseInt(name), pos);
  15. #end
  16. return "";
  17. });
  18. return {source: src, markers: markers};
  19. }
  20. }