added special keyword highlighting

This commit is contained in:
NilsUeter
2025-03-27 19:00:32 +01:00
parent fc6794cb51
commit d3e95e9ac4
+93 -36
View File
@@ -595,74 +595,74 @@ const checkAbilitiesForInvul = (abilitiesMap, name) => {
case "this model has a 2+ invulnerable save": case "this model has a 2+ invulnerable save":
case "this model has an invulnerable save of 2+": case "this model has an invulnerable save of 2+":
case "this unit has a 2+ invulnerable save": case "this unit has a 2+ invulnerable save":
case "models in this unit have a 2+ invulnerable save.": case "models in this unit have a 2+ invulnerable save":
case "models in this unit have an invulnerable save of 2+": case "models in this unit have an invulnerable save of 2+":
case "models in this units have an invulnerable save of 2+": case "models in this units have an invulnerable save of 2+":
return "2+"; return "2+";
case "this model has a 3+ invulnerable save": case "this model has a 3+ invulnerable save":
case "this model has an invulnerable save of 3+": case "this model has an invulnerable save of 3+":
case "this unit has a 3+ invulnerable save": case "this unit has a 3+ invulnerable save":
case "models in this unit have a 3+ invulnerable save.": case "models in this unit have a 3+ invulnerable save":
case "models in this unit have an invulnerable save of 3+": case "models in this unit have an invulnerable save of 3+":
case "models in this units have an invulnerable save of 3+": case "models in this units have an invulnerable save of 3+":
return "3+"; return "3+";
case "this model has a 4+ invulnerable save": case "this model has a 4+ invulnerable save":
case "this model has an invulnerable save of 4+": case "this model has an invulnerable save of 4+":
case "this unit has a 4+ invulnerable save": case "this unit has a 4+ invulnerable save":
case "models in this unit have a 4+ invulnerable save.": case "models in this unit have a 4+ invulnerable save":
case "models in this unit have an invulnerable save of 4+": case "models in this unit have an invulnerable save of 4+":
case "models in this units have an invulnerable save of 4+": case "models in this units have an invulnerable save of 4+":
return "4+"; return "4+";
case "this model has a 5+ invulnerable save": case "this model has a 5+ invulnerable save":
case "this model has an invulnerable save of 5+": case "this model has an invulnerable save of 5+":
case "this unit has a 5+ invulnerable save": case "this unit has a 5+ invulnerable save":
case "models in this unit have a 5+ invulnerable save.": case "models in this unit have a 5+ invulnerable save":
case "models in this unit have an invulnerable save of 5+": case "models in this unit have an invulnerable save of 5+":
case "models in this units have an invulnerable save of 5+": case "models in this units have an invulnerable save of 5+":
return "5+"; return "5+";
case "this model has a 6+ invulnerable save": case "this model has a 6+ invulnerable save":
case "this model has an invulnerable save of 6+": case "this model has an invulnerable save of 6+":
case "this unit has a 6+ invulnerable save": case "this unit has a 6+ invulnerable save":
case "models in this unit have a 6+ invulnerable save.": case "models in this unit have a 6+ invulnerable save":
case "models in this unit have an invulnerable save of 6+": case "models in this unit have an invulnerable save of 6+":
case "models in this units have an invulnerable save of 6+": case "models in this units have an invulnerable save of 6+":
return "6+"; return "6+";
case "models in this unit have a 2+ invulnerable save against ranged weapons.": case "models in this unit have a 2+ invulnerable save against ranged weapons":
case "models in this unit have a 2+ invulnerable save against ranged attacks.": case "models in this unit have a 2+ invulnerable save against ranged attacks":
case "this model has a 2+ invulnerable save against ranged weapons.": case "this model has a 2+ invulnerable save against ranged weapons":
case "this model has a 2+ invulnerable save against ranged attacks.": case "this model has a 2+ invulnerable save against ranged attacks":
return "2+*"; return "2+*";
case "models in this unit have a 3+ invulnerable save against ranged weapons.": case "models in this unit have a 3+ invulnerable save against ranged weapons":
case "models in this unit have a 3+ invulnerable save against ranged attacks.": case "models in this unit have a 3+ invulnerable save against ranged attacks":
case "this model has a 3+ invulnerable save against ranged attacks.": case "this model has a 3+ invulnerable save against ranged attacks":
case "this model has a 3+ invulnerable save against ranged weapons.": case "this model has a 3+ invulnerable save against ranged weapons":
return "3+*"; return "3+*";
case "models in this unit have a 4+ invulnerable save against ranged weapons.": case "models in this unit have a 4+ invulnerable save against ranged weapons":
case "models in this unit have a 4+ invulnerable save against ranged attacks.": case "models in this unit have a 4+ invulnerable save against ranged attacks":
case "this model has a 4+ invulnerable save against ranged attacks.": case "this model has a 4+ invulnerable save against ranged attacks":
case "this model has a 4+ invulnerable save against ranged weapons.": case "this model has a 4+ invulnerable save against ranged weapons":
return "4+*"; return "4+*";
case "models in this unit have a 5+ invulnerable save against ranged weapons.": case "models in this unit have a 5+ invulnerable save against ranged weapons":
case "models in this unit have a 5+ invulnerable save against ranged attacks.": case "models in this unit have a 5+ invulnerable save against ranged attacks":
case "this model has a 5+ invulnerable save against ranged attacks.": case "this model has a 5+ invulnerable save against ranged attacks":
case "this model has a 5+ invulnerable save against ranged weapons.": case "this model has a 5+ invulnerable save against ranged weapons":
return "5+*"; return "5+*";
case "models in this unit have a 6+ invulnerable save against ranged weapons.": case "models in this unit have a 6+ invulnerable save against ranged weapons":
case "models in this unit have a 6+ invulnerable save against ranged attacks.": case "models in this unit have a 6+ invulnerable save against ranged attacks":
case "this model has a 6+ invulnerable save against ranged attacks.": case "this model has a 6+ invulnerable save against ranged attacks":
case "this model has a 6+ invulnerable save against ranged weapons.": case "this model has a 6+ invulnerable save against ranged weapons":
return "6+*"; return "6+*";
case "this model has a 2+ invulnerable save. you cannot re-roll invulnerable saving throws made for this model.": case "this model has a 2+ invulnerable save. you cannot re-roll invulnerable saving throws made for this model":
return "2+*"; return "2+*";
case "this model has a 3+ invulnerable save. you cannot re-roll invulnerable saving throws made for this model.": case "this model has a 3+ invulnerable save. you cannot re-roll invulnerable saving throws made for this model":
return "3+*"; return "3+*";
case "this model has a 4+ invulnerable save. you cannot re-roll invulnerable saving throws made for this model.": case "this model has a 4+ invulnerable save. you cannot re-roll invulnerable saving throws made for this model":
return "4+*"; return "4+*";
case "this model has a 5+ invulnerable save. you cannot re-roll invulnerable saving throws made for this model.": case "this model has a 5+ invulnerable save. you cannot re-roll invulnerable saving throws made for this model":
return "5+*"; return "5+*";
case "this model has a 6+ invulnerable save. you cannot re-roll invulnerable saving throws made for this model.": case "this model has a 6+ invulnerable save. you cannot re-roll invulnerable saving throws made for this model":
return "6+*"; return "6+*";
} }
} }
@@ -918,11 +918,6 @@ const removeInvulnsWithoutSpecialRules = (abilities) => {
case "this unit has a 4+ invulnerable save": case "this unit has a 4+ invulnerable save":
case "this unit has a 5+ invulnerable save": case "this unit has a 5+ invulnerable save":
case "this unit has a 6+ invulnerable save": case "this unit has a 6+ invulnerable save":
case "this unit has a 2+ invulnerable save.":
case "this unit has a 3+ invulnerable save.":
case "this unit has a 4+ invulnerable save.":
case "this unit has a 5+ invulnerable save.":
case "this unit has a 6+ invulnerable save.":
break; break;
default: default:
filteredAbilities.set(key, value); filteredAbilities.set(key, value);
@@ -931,12 +926,69 @@ const removeInvulnsWithoutSpecialRules = (abilities) => {
return filteredAbilities; return filteredAbilities;
}; };
const boldKeywords = [
"infantry",
"character",
"monster",
"vehicle",
"psyker",
"titanic",
"mounted",
"battleline",
"warlord",
"death guard",
"heretic astartes",
"adeptus astartes",
"adeptus mechanicus",
"tyranids",
"orks",
];
const weaponKeywords = [
"lethal hits",
"blast",
/* "assault", */
"heavy",
"torrent",
"indirect fire",
"sustained hits 1",
"sustained hits 2",
];
const Abilities = ({ abilities }) => { const Abilities = ({ abilities }) => {
if (!abilities) return null; if (!abilities) return null;
const filteredAbilities = removeInvulnsWithoutSpecialRules(abilities); const filteredAbilities = removeInvulnsWithoutSpecialRules(abilities);
let keys = [...filteredAbilities.keys()]; let keys = [...filteredAbilities.keys()];
const replacedAbilities = new Map();
// in the value of the filtered abilites, make certain keywords bold
for (let [key, value] of filteredAbilities) {
let newValue = value;
for (let keyword of boldKeywords) {
newValue = newValue.replace(
new RegExp(`\\b${keyword}\\b`, "gi"),
`<strong>${keyword.toUpperCase()}</strong>`,
);
}
// weaponKeywords could be with [] or without
for (let keyword of weaponKeywords) {
newValue = newValue.replace(
new RegExp(`\\[${keyword}\\]`, "gi"),
`<span style="font-weight: 700; color: var(--primary-color); text-transform: uppercase; line-height: 1.05;">[${keyword.toUpperCase()}]</span>`,
);
newValue = newValue.replace(
new RegExp(`\\b${keyword}\\b`, "gi"),
`<span style="font-weight: 700; color: var(--primary-color); text-transform: uppercase; line-height: 1.05;">${keyword.toUpperCase()}</span>`,
);
}
replacedAbilities.set(key, newValue);
}
return ( return (
<div <div
style={{ style={{
@@ -957,7 +1009,12 @@ const Abilities = ({ abilities }) => {
}} }}
> >
<span style={{ fontWeight: 700 }}>{ability}:</span>{" "} <span style={{ fontWeight: 700 }}>{ability}:</span>{" "}
{filteredAbilities.get(ability)} <span
className="whitespace-pre-line"
dangerouslySetInnerHTML={{
__html: replacedAbilities.get(ability),
}}
></span>
</div> </div>
))} ))}
</div> </div>