(* The path values carry format types that are inferred and checked at each use. Writing an interface for them would add noise without adding safety. *) let%path home = "/" let%path register = "/register" let%path login = "/login" let%path logout = "/logout" let%path routines = "/routines" let%path select_routine = "/routines/%s/select" let%path routine = "/routine" let%path workout = "/workout" let%path workout_slot = "/workout/slots/%d" let%path workout_slot_edit = "/workout/slots/%d/edit" let%path finish_workout = "/workout/finish" let%path cancel_workout = "/workout/cancel" let%path logbook = "/logbook" let%path profile = "/profile" let%path settings = "/settings" let%path settings_theme = "/settings/theme" let%path profile_username = "/profile/username" let%path profile_password = "/profile/password" let%path import_upload = "/profile/import" let%path import_review = "/profile/import/%s" let%path import_map = "/profile/import/%s/workouts/%s/map" let%path import_confirm = "/profile/import/%s/workouts/%s/confirm" let%path import_promote_workout = "/profile/import/%s/workouts/%s/promote" let%path import_promote_batch = "/profile/import/%s/promote" let%path app_feedback = "/app-feedback" let%path submit_app_feedback = "/app-feedback/submit" let%path upvote_app_feedback = "/app-feedback/%s/upvote" let%path edit_app_feedback = "/app-feedback/%s/edit" let%path remove_app_feedback = "/app-feedback/%s/remove" let%path feedback = "/feedback" let%path cancel_feedback = "/feedback/cancel" let%path record = "/logbook/%s" let%path record_slot = "/logbook/%s/slots/%d" let%path record_slot_edit = "/logbook/%s/slots/%d/edit" let%path stylesheet = "/assets/hito.css" let%path workout_client = "/assets/workout-client.js"