Concatenate the two most significant labels

This commit is contained in:
Magnus Åhall 2026-02-26 09:12:05 +01:00
parent cbd1b137cf
commit fc9583ecd2

View file

@ -49,10 +49,16 @@ export class Application {
const records = this.filteredRecords() const records = this.filteredRecords()
records.sort(this.sortRecords) records.sort(this.sortRecords)
// rec: for example www.google.com
for (const rec of records) { for (const rec of records) {
// com.google (reverse and remove wwww) // It felt wrong when records for the base domain (e.g. google.com) was put in the top level domain (.com).
const labels = rec.labels().reverse().slice(0, -1) // While technically correct, the first label (com) is grouped together with the second label (google).
// Labels are counted reversely since the top domain is most significant.
//
// The `if` here is the exception for records that only has the two first labels. It would otherwise just
// be an empty array of labels and thus discarded.
let labels = rec.labels().reverse().slice(0, -1)
if (rec.labels().length == 1)
labels = rec.labels()
// Start each record from the top and iterate through all its labels // Start each record from the top and iterate through all its labels
// except the first one since that would be the actual record. // except the first one since that would be the actual record.
@ -254,7 +260,18 @@ class Folder {
return this.folderName.toLowerCase() return this.folderName.toLowerCase()
}// }}} }// }}}
labels() {// {{{ labels() {// {{{
return this.name().split('.') let labels = this.name().split('.')
// It is very uncommon to see just the top level domain.
// We're much more used to google.com than com and then google.
// First level is therefore the two most significant labels concatenated.
if (labels.length > 1) {
labels.reverse()
labels = [`${labels[1]}.${labels[0]}`].concat(labels.slice(2))
labels.reverse()
}
return labels
}// }}} }// }}}
addRecord(rec) {// {{{ addRecord(rec) {// {{{
this.records.push(rec) this.records.push(rec)
@ -401,7 +418,24 @@ class Record {
return this.data.MatchSubdomain === 'true' return this.data.MatchSubdomain === 'true'
}// }}} }// }}}
labels() {// {{{ labels() {// {{{
return this.name().split('.') let labels = this.name().split('.')
if (labels.length === 1) {
labels = [labels[0], '_no', 'domain']
}
// It is very uncommon to see just the top level domain.
// We're much more used to google.com than com and then google.
// First level is therefore the two most significant labels concatenated.
if (labels.length > 1) {
labels.reverse()
labels = [`${labels[1]}.${labels[0]}`].concat(labels.slice(2))
labels.reverse()
} else {
console.log(this, labels)
}
return labels
}// }}} }// }}}
copy(el, text) {// {{{ copy(el, text) {// {{{