archidekt
Version:
archidekt api
113 lines (91 loc) • 2.35 kB
JavaScript
export const formatMap = {
'standard': 1,
'modern': 2,
'commander/edh': 3,
'legacy': 4,
'vintage': 5,
'pauper': 6,
'custom': 7,
'frontier': 8,
'future standard': 9,
'penny dreadful': 10,
'1v1 commander': 11,
'dual commander': 12,
'brawl': 13
}
export const validFormats = new Set(Object.keys(formatMap))
export const isValidFormat = (maybeFormat) => {
let maybe = maybeFormat.toLowerCase()
return validFormats.has(maybe)
}
export const toAPIFormat = (format) => {
let f = format.toLowerCase()
if (isValidFormat(f)) return formatMap[f]
return null
}
export const URIFormats = (formats) => {
let processed = formats
.map(format=>toAPIFormat(format))
.filter(format=>format!=null)
return processed
}
export const colorMap = {
'{w}': 'white',
'{b}': 'black',
'{u}': 'blue',
'{r}': 'red',
'{g}': 'green',
'{c}': 'colorless',
'w': 'white',
'b': 'black',
'u': 'blue',
'r': 'red',
'g': 'green',
'c': 'colorless'
}
export const oracleColorRegex = /\{(\w+)\}/gi
export const extractOracleColors = (str) => {
return str.match(oracleColorRegex).map(match=>match.slice(1,-1).toLowerCase())
}
export const extractOracleColor = (str) => {
let colors = extractOracleColors(str)
return colors ? colors[0] : colors
}
export const isValidColor = maybeColor => {
let mc = maybeColor.toLowerCase();
if (validColors.has(mc)) return mc;
if (colorMap[mc] !== undefined) return colorMap[mc];
let oc = extractOracleColor(mc);
if (colorMap[oc] !== undefined) return colorMap[oc];
return false;
};
export const validColors = new Set([
"white",
"blue",
"black",
"red",
"green",
"colorless"
]);
export const capitalize = str => str.slice(0, 1).toUpperCase() + str.slice(1);
export const toAPIColor = color => {
let c = color.toLowerCase();
let v = isValidColor(c);
if (v) return capitalize(v);
return null;
};
export const URIColors = colors => {
let processed = colors
.map(color => toAPIColor(color))
.filter(color => color != null);
return processed;
};
export const quoteCard = card => `"${card}"`;
export const URICards = cards => {
let processed = cards.map(card => quoteCard(card));
return processed;
};
export const URICommanders = commanders => {
let processed = commanders.map(card => quoteCard(card));
return processed;
};