UNPKG

archidekt

Version:
113 lines (91 loc) 2.35 kB
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; };