Skip to content

Instantly share code, notes, and snippets.

@roylee0704
Created March 22, 2020 09:32
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save roylee0704/ee7f1c41485c0c84cdc59f9a97ffe071 to your computer and use it in GitHub Desktop.
Save roylee0704/ee7f1c41485c0c84cdc59f9a97ffe071 to your computer and use it in GitHub Desktop.
proposal: countries/states under countries dir
import { Country } from './country.interface';
import { State } from './state.interface';
export class Malaysia implements Country {
constructor(public readonly code = 'MY', public readonly name = 'Malaysia', public readonly states: State[] = [
new Perlis(),
new Kedah(),
new Penang(),
new Kelantan(),
new Terengganu(),
new Pahang(),
new Perak(),
new KualaLumpur(),
new Selangor(),
new Putrajaya(),
new NegeriSembilan(),
new Johor(),
new Melaka(),
new Sabah(),
new Labuan(),
new Sarawak(),
]) { }
}
export class Perlis implements State {
constructor(public readonly name: string = 'Perlis') { }
hasPostalCode(postalCode: number): boolean {
return (postalCode >= +'01000' && postalCode <= +'02800');
}
}
export class Kedah implements State {
constructor(public readonly name: string = 'Kedah') { }
hasPostalCode(postalCode: number): boolean {
return (postalCode >= +'05000' && postalCode <= +'09810');
}
}
export class Penang implements State {
constructor(public readonly name: string = 'Penang') { }
hasPostalCode(postalCode: number): boolean {
return (postalCode >= +'10000' && postalCode <= +'14400');
}
}
export class Kelantan implements State {
constructor(public readonly name: string = 'Kelantan') { }
hasPostalCode(postalCode: number): boolean {
return (postalCode >= +'15000' && postalCode <= +'18500');
}
}
export class Terengganu implements State {
constructor(public readonly name: string = 'Terengganu') { }
hasPostalCode(postalCode: number): boolean {
return (postalCode >= +'20000' && postalCode <= +'24300');
}
}
export class Pahang implements State {
constructor(public readonly name: string = 'Pahang') { }
hasPostalCode(postalCode: number): boolean {
return (
(postalCode >= +'25000' && postalCode <= +'28800') ||
(postalCode >= +'39000' && postalCode <= +'39200') ||
postalCode === +'49000' ||
postalCode === +'69000'
);
}
}
export class Perak implements State {
constructor(public readonly name: string = 'Perak') { }
hasPostalCode(postalCode: number): boolean {
return (postalCode >= +'30000' && postalCode <= +'36810');
}
}
export class Selangor implements State {
constructor(public readonly name: string = 'Selangor') { }
hasPostalCode(postalCode: number): boolean {
return (
postalCode >= +'40000' && postalCode <= +'48300' ||
postalCode >= +'63000' && postalCode <= +'68100'
);
}
}
export class KualaLumpur implements State {
constructor(public readonly name: string = 'KualaLumpur') { }
hasPostalCode(postalCode: number): boolean {
return (postalCode >= +'50000' && postalCode <= +'60000');
}
}
export class Putrajaya implements State {
constructor(public readonly name: string = 'KualaLumpur') { }
hasPostalCode(postalCode: number): boolean {
return (postalCode >= +'62000' && postalCode <= +'62988');
}
}
export class NegeriSembilan implements State {
constructor(public readonly name: string = 'NegeriSembilan') { }
hasPostalCode(postalCode: number): boolean {
return (postalCode >= +'70000' && postalCode <= +'73509');
}
}
export class Melaka implements State {
constructor(public readonly name: string = 'Melaka') { }
hasPostalCode(postalCode: number): boolean {
return (postalCode >= +'75000' && postalCode <= +'78309');
}
}
export class Johor implements State {
constructor(public readonly name: string = 'Johor') { }
hasPostalCode(postalCode: number): boolean {
return (postalCode >= +'79000' && postalCode <= +'86900');
}
}
export class Labuan implements State {
constructor(public readonly name: string = 'Labuan') { }
hasPostalCode(postalCode: number): boolean {
return (postalCode >= +'87000' && postalCode <= +'87033');
}
}
export class Sabah implements State {
constructor(public readonly name: string = 'Sabah') { }
hasPostalCode(postalCode: number): boolean {
return (postalCode >= +'88000' && postalCode <= +'91309');
}
}
export class Sarawak implements State {
constructor(public readonly name: string = 'Sarawak') { }
hasPostalCode(postalCode: number): boolean {
return (postalCode >= +'93000' && postalCode <= +'98859');
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment