223 lines
3.8 KiB
TypeScript
223 lines
3.8 KiB
TypeScript
![]() |
import { Lexer } from "../text/lexer/Lexer";
|
||
|
import { LexerMatcher } from "../text/lexer/LexerMatcher";
|
||
|
import { LexerMatcherLibrary } from "../text/lexer/LexerMatcherLibrary";
|
||
|
import { RegExpUtility } from "../text/RegExpUtitlity";
|
||
|
import { MultiString } from "./MultiString";
|
||
|
|
||
|
export class Country
|
||
|
{
|
||
|
name:MultiString;
|
||
|
flag:string;
|
||
|
}
|
||
|
|
||
|
export class Countries
|
||
|
{
|
||
|
static _countryMap:Map<string,Country>;
|
||
|
static _lexer:Lexer;
|
||
|
|
||
|
static _createLexerAndMap()
|
||
|
{
|
||
|
if ( Countries._lexer != null )
|
||
|
{
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
let lexer = new Lexer();
|
||
|
let countryMap = new Map<string,Country>();
|
||
|
|
||
|
Countries.list.forEach(
|
||
|
( c )=>
|
||
|
{
|
||
|
lexer.addMatcher( new LexerMatcher( c.name.en, RegExpUtility.createMatcher( c.name.en ) ) );
|
||
|
countryMap.set( c.name.en, c );
|
||
|
}
|
||
|
);
|
||
|
|
||
|
lexer.addMatcher( LexerMatcherLibrary.BREAK_MATCHER );
|
||
|
lexer.addMatcher( LexerMatcherLibrary.ANY_SYMBOL_MATCHER );
|
||
|
|
||
|
this._lexer = lexer;
|
||
|
this._countryMap = countryMap;
|
||
|
}
|
||
|
|
||
|
static get lexer()
|
||
|
{
|
||
|
this._createLexerAndMap();
|
||
|
|
||
|
return this._lexer;
|
||
|
}
|
||
|
|
||
|
static get countryNameMap()
|
||
|
{
|
||
|
this._createLexerAndMap();
|
||
|
|
||
|
return this._countryMap;
|
||
|
}
|
||
|
|
||
|
|
||
|
static list:Country[] =
|
||
|
[
|
||
|
{
|
||
|
name:{ en: "Sweden", de: "Schweden" },
|
||
|
flag: "🇸🇪"
|
||
|
},
|
||
|
|
||
|
{
|
||
|
name:{ en: "South Africa", de: "Südafrika" },
|
||
|
flag: "🇿🇦"
|
||
|
},
|
||
|
|
||
|
{
|
||
|
name:{ en: "Netherlands", de: "Niederlande" },
|
||
|
flag: "🇳🇱"
|
||
|
},
|
||
|
|
||
|
{
|
||
|
name:{ en: "Portugal", de: "Portugal" },
|
||
|
flag: "🇵🇹"
|
||
|
},
|
||
|
|
||
|
{
|
||
|
name:{ en: "France", de: "Frankreich" },
|
||
|
flag: "🇫🇷"
|
||
|
},
|
||
|
|
||
|
{
|
||
|
name:{ en: "Jamaica", de: "Jamaika" },
|
||
|
flag: "🇯🇲"
|
||
|
},
|
||
|
|
||
|
{
|
||
|
name:{ en: "Italy", de: "Italien" },
|
||
|
flag: "🇮🇹"
|
||
|
},
|
||
|
|
||
|
{
|
||
|
name:{ en: "Argentina", de: "Argentinien" },
|
||
|
flag: "🇦🇷"
|
||
|
},
|
||
|
|
||
|
{
|
||
|
name:{ en: "Germany", de: "Deutschland" },
|
||
|
flag: "🇩🇪"
|
||
|
},
|
||
|
|
||
|
{
|
||
|
name:{ en: "Morocco", de: "Marokko" },
|
||
|
flag: "🇲🇦"
|
||
|
},
|
||
|
|
||
|
{
|
||
|
name:{ en: "Brasil", de: "Brasilien" },
|
||
|
flag: "🇧🇷"
|
||
|
},
|
||
|
|
||
|
{
|
||
|
name:{ en: "Panama", de: "Panama" },
|
||
|
flag: "🇵🇦"
|
||
|
},
|
||
|
|
||
|
{
|
||
|
name:{ en: "Colombia", de: "Kolumbien" },
|
||
|
flag: "🇨🇴"
|
||
|
},
|
||
|
|
||
|
{
|
||
|
name:{ en: "South Korea", de: "Südkorea" },
|
||
|
flag: "🇰🇷"
|
||
|
},
|
||
|
|
||
|
{
|
||
|
name:{ en: "New Zealand", de: "Neuseeland" },
|
||
|
flag: "🇳🇿"
|
||
|
},
|
||
|
|
||
|
{
|
||
|
name:{ en: "Swiss", de: "Schweiz" },
|
||
|
flag: "🇨🇭"
|
||
|
},
|
||
|
|
||
|
{
|
||
|
name:{ en: "Norway", de: "Norwegen" },
|
||
|
flag: "🇳🇴"
|
||
|
},
|
||
|
|
||
|
{
|
||
|
name:{ en: "Japan", de: "Japan" },
|
||
|
flag: "🇯🇵"
|
||
|
},
|
||
|
|
||
|
{
|
||
|
name:{ en: "Costa Rica", de: "Costa Rica" },
|
||
|
flag: "🇨🇷"
|
||
|
},
|
||
|
|
||
|
{
|
||
|
name:{ en: "Spain", de: "Spanien" },
|
||
|
flag: "🇪🇸"
|
||
|
},
|
||
|
|
||
|
{
|
||
|
name:{ en: "Zambia", de: "Sambia" },
|
||
|
flag: "🇿🇲"
|
||
|
},
|
||
|
|
||
|
{
|
||
|
name:{ en: "Canada", de: "Kanada" },
|
||
|
flag: "🇨🇦"
|
||
|
},
|
||
|
|
||
|
{
|
||
|
name:{ en: "Ireland", de: "Irland" },
|
||
|
flag: "🇮🇪"
|
||
|
},
|
||
|
|
||
|
{
|
||
|
name:{ en: "USA", de: "USA" },
|
||
|
flag: "🇺🇸"
|
||
|
},
|
||
|
|
||
|
{
|
||
|
name:{ en: "Vietnam", de: "Vietnam" },
|
||
|
flag: "🇻🇳"
|
||
|
},
|
||
|
|
||
|
{
|
||
|
name:{ en: "Australia", de: "Australien" },
|
||
|
flag: "🇦🇺"
|
||
|
},
|
||
|
|
||
|
{
|
||
|
name:{ en: "Nigeria", de: "Nigerien" },
|
||
|
flag: "🇳🇬"
|
||
|
},
|
||
|
|
||
|
{
|
||
|
name:{ en: "England", de: "England" },
|
||
|
flag: "🏴"
|
||
|
},
|
||
|
|
||
|
{
|
||
|
name:{ en: "Denmark", de: "Dänemark" },
|
||
|
flag: "🇩🇰"
|
||
|
},
|
||
|
|
||
|
{
|
||
|
name:{ en: "China", de: "China" },
|
||
|
flag: "🇨🇳"
|
||
|
},
|
||
|
|
||
|
{
|
||
|
name:{ en: "Haiti", de: "Haiti" },
|
||
|
flag: "🇭🇹"
|
||
|
},
|
||
|
|
||
|
{
|
||
|
name:{ en: "Philippines", de: "Philippinen" },
|
||
|
flag: "🇵🇭"
|
||
|
}
|
||
|
|
||
|
|
||
|
]
|
||
|
|
||
|
}
|