Skip to content

Commit

Permalink
Simplify caseKludge function
Browse files Browse the repository at this point in the history
  • Loading branch information
exuanbo committed Jul 24, 2020
1 parent 65b5fa9 commit c03eeb8
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 24 deletions.
4 changes: 2 additions & 2 deletions lib/icons/.icondb.js
Original file line number Diff line number Diff line change
Expand Up @@ -455,7 +455,7 @@ module.exports = [
["arc-icon",["medium-blue","medium-blue"],/\.arc$/i],
["arduino-icon",["dark-cyan","dark-cyan"],/\.ino$/i,,,/\.arduino$/i,/^Arduin[0o]$/i],
["asciidoctor-icon",["medium-blue","medium-blue"],/\.(?:ad|adoc|asc|asciidoc)$/i,,,/\.asciidoc$/i,/^Ascii[\W_ \t]?D[0o]c$/i],
["asp-icon",["dark-blue","dark-blue"],/\.asp$/i,,,/\.asp$/i,/^[Aa][Ss][Pp][\W_ \t]?[Nn][Ee][Tt]$|^aspx(?:-vb)?$/],
["asp-icon",["dark-blue","dark-blue"],/\.asp$/i,,,/\.asp$/i,/^[Aa][Ss][Pp].[nN][eE][tT]$|^aspx(?:-vb)?$/],
["asp-icon",["medium-maroon","medium-maroon"],/\.asax$/i],
["asp-icon",["dark-green","dark-green"],/\.ascx$/i],
["asp-icon",["medium-green","medium-green"],/\.ashx$/i],
Expand Down Expand Up @@ -1433,7 +1433,7 @@ module.exports = [
["python-icon",["dark-green","dark-green"],/^(?:SConstruct|SConscript)$/],
["python-icon",["medium-green","medium-green"],/^(?:Snakefile|WATCHLISTS)$/],
["python-icon",["dark-maroon","dark-maroon"],/^wscript$/],
["kx-icon",["medium-blue","medium-blue"],/\.q$/i,,,/^source\.q$/,/^[Qq][\W_ \t]?[Kk][Dd][Bb][\W_ \t]?$|^Kdb\s*\+$/],
["kx-icon",["medium-blue","medium-blue"],/\.q$/i,,,/^source\.q$/,/^[Qq]\/[Kk][dD][bB]+$|^Kdb\s*\+$/],
["kx-icon",["dark-purple","dark-purple"],/\.k$/i,,,/^source\.k4$/,/^Q\/?Kdb\+?$/i],
["qiskit-icon",["dark-blue","dark-blue"],/\.qasm$/i,,,/\.qasm$/i,/^Qasm$|^[0o]pen[\W_ \t]?Qasm$/i],
["qlik-icon",["medium-green","medium-green"],/\.qvw$/i],
Expand Down
36 changes: 14 additions & 22 deletions lib/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,32 +18,24 @@ module.exports = {
* so this function attempts to approximate the closest thing.
*
* @param {String} input - Case-insensitive text
* @param {Boolean} fuzz - Apply {@link fuzzyRegExp} to input
* @return {String}
*/
function caseKludge(input, fuzz = false) {
let output = input
function caseKludge(input) {
return input
.split('')
.map((s, index, array) => {
if (/[A-Z]/.test(s)) {
const output = '[' + s + s.toLowerCase() + ']'
const prev = array[index - 1]
if (fuzz && prev && /[a-z]/.test(prev)) return '[\\W_\\S]*' + output
return output
}
if (/[a-z]/.test(s)) return '[' + s.toUpperCase() + s + ']'
if (!fuzz) return escapeRegExp(s)
if (s === '0') return '[0Oo]'
if (/[\W_ \t]?/.test(s)) return '[\\W_ \\t]?'
return s
})
.map(match =>
/[A-Z]/.test(match)
? '[' + match + match.toLowerCase() + ']'
: /[a-z]/.test(match)
? '[' + match + match.toUpperCase() + ']'
: match
)
.join('')

if (fuzz) output = output.replace(/\[Oo\]/g, '[0Oo]')
return output.replace(
/(\[\w{2,3}\])(\1+)/g,
(match, first, rest) => first + '{' + (rest.length / first.length + 1) + '}'
)
.replace(
/(\[\w{2,3}\])(\1+)/g,
(match, first, rest) =>
first + '{' + (rest.length / first.length + 1) + '}'
)
}

/**
Expand Down

0 comments on commit c03eeb8

Please sign in to comment.