A light-weight library that provides formatting features for Trackmania games.
npm install tm-essentialsThen you can retrieve the library with:
const TMEssentials = require('tm-essentials');<script src="https://unpkg.com/tm-essentials"></script>Then you can retrieve the library from the global variable TMEssentials
RegExp to match all the formatting codes
RegExp to match all the color formatting codes
Deformat the text
let formatted = "$F00T$D01M$C13U$A14.$815K$727r$528a$329z$23By$03CC$03Co$04Bl$059o$068r$077s$085 $094v$0A30$0B1.$0C01";
let deformatted = TextFormatter.deformat(formatted);
console.log(deformatted);
// Output: TMU.KrazyColors v0.1Will parse the color formatting and convert it to ANSI escape codes. Works best on console output.
let formatted = "$l[https://kc.jfreu.com/]$F00T$D01M$C13U$A14.$815K$727r$528a$329z$23By$03CC$03Co$04Bl$059o$068r$077s$085$l $094v$0A30$0B1.$0C01";
let ansiFormat = TextFormatter.formatAnsi(formatted);
console.log(ansiFormat);You can also pass some options in it:
disableLinks: will disable links to external sites (false by default)lightBackground: adapt color to be visible on light backgrounds (false by default)
let formatted = "$l[https://kc.jfreu.com/]$F00T$D01M$C13U$A14.$815K$727r$528a$329z$23By$03CC$03Co$04Bl$059o$068r$077s$085$l $094v$0A30$0B1.$0C01";
let ansiFormat = TextFormatter.formatAnsi(formatted, {
disableLinks: true,
lightBackground: true
});
console.log(ansiFormat);This is a port of the original Maniaplanet style parser written in pure JS. Copyright © 2012 - 2026 Nadeo & Baptiste Lafontaine
let formatted = "$l[https://kc.jfreu.com]$F00T$D01M$C13U$A14.$815K$727r$528a$329z$23By$03CC$03Co$04Bl$059o$068r$077s$085$l $094v$0A30$0B1.$0C01";
let htmlFormat = TextFormatter.formatHtml(formatted);
document.querySelector("#result").innerHTML = htmlFormat;You can also pass some options in it:
disableLinks: will disable links to external sites (false by default)lightBackground: adapt color to be visible on light backgrounds (false by default)linkTarget: add atargetattribute into links
let formatted = "$l[https://kc.jfreu.com]$F00T$D01M$C13U$A14.$815K$727r$528a$329z$23By$03CC$03Co$04Bl$059o$068r$077s$085$l $094v$0A30$0B1.$0C01";
let htmlFormat = TextFormatter.formatHtml(formatted, {
disableLinks: true,
lightBackground: true
});
document.querySelector("#result").innerHTML = htmlFormat;let formatted = "$l[https://greep.fr]Open this link to a new tab$l with the target attribute";
let htmlFormat = TextFormatter.formatHtml(formatted, {
linkTarget: "_blank"
});
document.querySelector("#result").innerHTML = htmlFormat;Time.fromMilliseconds(1337).toTmString(); // "0:01.337"
Time.fromMilliseconds(1337).toTmString(true); // Will use hundredths as output: "0:01.33"
Time.fromSeconds(13.37).toTmString(); // "0:13.370"
Time.fromMinutes(13.37).toTmString(); // "13:37.000"
Time.fromHours(13.37).toTmString(); // "13:37:00.000"
Time.noTime.toTmString(); // "-:--.---"TimeSpan will return a Time class when one of noTime property or thoses methods is used:
Time.noTimeTime.fromMilliseconds()Time.fromSeconds()Time.fromMinutes()Time.fromHours()
Time.time - Total milliseconds as integer value.
Time.toTmString() - Outputs the time to a formatted Trackmania-like string
Accounts.toAccountId("Jtmn3kBnSSadky_mLNhp_A") // "26d9a7de-4067-4926-9d93-2fe62cd869fc"Accounts.toLogin("26d9a7de-4067-4926-9d93-2fe62cd869fc") // "Jtmn3kBnSSadky_mLNhp_A"