Marker.hx 574 B

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