smartstring/ts/smartstring.domain.ts

63 lines
2.0 KiB
TypeScript
Raw Normal View History

2016-10-31 23:22:38 +00:00
import * as plugins from './smartstring.plugins';
2016-05-25 03:06:19 +00:00
export class Domain {
2016-10-31 23:22:38 +00:00
fullName: string
level1: string
level2: string
level3: string
level4: string
level5: string
protocol: string
zoneName: string
// aliases
topLevel: string
domainName
subDomain
2016-05-25 03:06:19 +00:00
constructor(domainStringArg:string){
let regexMatches = domainRegex(domainStringArg);
2016-10-31 23:22:38 +00:00
this.fullName = ''
for (let i = 1; i <= 5; i++) {
if (regexMatches[i - 1]) {
2016-06-21 16:59:05 +00:00
let localMatch = regexMatches[i - 1]
2016-10-31 23:22:38 +00:00
this['level' + i.toString()] = localMatch
if (this.fullName === ''){
this.fullName = localMatch
2016-06-21 16:59:05 +00:00
} else {
2016-10-31 23:22:38 +00:00
this.fullName = localMatch + '.' + this.fullName
2016-06-21 16:59:05 +00:00
}
} else {
2016-10-31 23:22:38 +00:00
this['level' + i.toString()] = undefined
};
};
2016-10-31 23:22:38 +00:00
this.protocol = protocolRegex(domainStringArg)
this.zoneName = this.level2 + '.' + this.level1
2016-05-25 03:06:19 +00:00
// aliases
2016-10-31 23:22:38 +00:00
this.topLevel = this.level1
this.domainName = this.level2
this.subDomain = this.level3
2016-05-25 03:06:19 +00:00
}
}
let domainRegex = function(stringArg:string){
2016-10-31 23:22:38 +00:00
let regexString = /([a-zA-Z0-9\-\_]*)\.{0,1}([a-zA-Z0-9\-\_]*)\.{0,1}([a-zA-Z0-9\-\_]*)\.{0,1}([a-zA-Z0-9\-\_]*)\.{0,1}([a-zA-Z0-9\-\_]*)\.{0,1}$/
let regexMatches = regexString.exec(stringArg)
regexMatches.reverse() //make sure we build the domain from toplevel to subdomain (reversed order)
regexMatches.pop() // pop the last element, which is, since we reversed the Array, the full String of matched elements
2016-05-25 03:06:19 +00:00
let regexMatchesFiltered = regexMatches.filter(function(stringArg:string){
2016-10-31 23:22:38 +00:00
return(stringArg !== '')
2016-05-25 03:06:19 +00:00
});
2016-10-31 23:22:38 +00:00
return regexMatchesFiltered
};
let protocolRegex = function(stringArg:string){
2016-10-31 23:22:38 +00:00
let regexString = /^([a-zA-Z0-9]*):\/\//
let regexMatches = regexString.exec(stringArg)
if(regexMatches) {
return regexMatches[1]
} else {
2016-10-31 23:22:38 +00:00
return undefined
}
2016-10-31 23:22:38 +00:00
}