1
0
mirror of https://github.com/gnosygnu/xowa.git synced 2026-03-02 03:49:30 +00:00

'v3.7.2.1'

This commit is contained in:
gnosygnu
2016-07-10 23:35:32 -04:00
parent f5f48bb9b1
commit b333db45f8
366 changed files with 4468 additions and 3460 deletions

View File

@@ -30,442 +30,448 @@ public class Xol_lang_stub_ { // lists all known stub_ary supported by MW
, Id_ady = 4
, Id_ady_cyrl = 5
, Id_aeb = 6
, Id_af = 7
, Id_ak = 8
, Id_akz = 9
, Id_aln = 10
, Id_als = 11
, Id_am = 12
, Id_an = 13
, Id_ang = 14
, Id_anp = 15
, Id_ar = 16
, Id_arc = 17
, Id_arn = 18
, Id_aro = 19
, Id_arq = 20
, Id_ary = 21
, Id_arz = 22
, Id_as = 23
, Id_ase = 24
, Id_ast = 25
, Id_av = 26
, Id_avk = 27
, Id_awa = 28
, Id_ay = 29
, Id_az = 30
, Id_azb = 31
, Id_ba = 32
, Id_ban = 33
, Id_bar = 34
, Id_bat_smg = 35
, Id_bbc = 36
, Id_bbc_latn = 37
, Id_bcc = 38
, Id_bcl = 39
, Id_be = 40
, Id_be_tarask = 41
, Id_be_x_old = 42
, Id_bew = 43
, Id_bg = 44
, Id_bgn = 45
, Id_bh = 46
, Id_bho = 47
, Id_bi = 48
, Id_bjn = 49
, Id_bm = 50
, Id_bn = 51
, Id_bo = 52
, Id_bpy = 53
, Id_bqi = 54
, Id_br = 55
, Id_brh = 56
, Id_bs = 57
, Id_bto = 58
, Id_bug = 59
, Id_bxr = 60
, Id_ca = 61
, Id_cbk_zam = 62
, Id_cdo = 63
, Id_ce = 64
, Id_ceb = 65
, Id_ch = 66
, Id_chm = 67
, Id_cho = 68
, Id_chr = 69
, Id_chy = 70
, Id_ckb = 71
, Id_co = 72
, Id_cps = 73
, Id_cr = 74
, Id_crh = 75
, Id_crh_cyrl = 76
, Id_crh_latn = 77
, Id_cs = 78
, Id_csb = 79
, Id_cu = 80
, Id_cv = 81
, Id_cy = 82
, Id_da = 83
, Id_de = 84
, Id_de_at = 85
, Id_de_ch = 86
, Id_de_formal = 87
, Id_diq = 88
, Id_dsb = 89
, Id_dtp = 90
, Id_dv = 91
, Id_dz = 92
, Id_ee = 93
, Id_egl = 94
, Id_el = 95
, Id_eml = 96
, Id_en_ca = 97
, Id_en_gb = 98
, Id_en_rtl = 99
, Id_enrtl = 100
, Id_eo = 101
, Id_es = 102
, Id_es_formal = 103
, Id_esu = 104
, Id_et = 105
, Id_eu = 106
, Id_ext = 107
, Id_fa = 108
, Id_ff = 109
, Id_fi = 110
, Id_fit = 111
, Id_fiu_vro = 112
, Id_fj = 113
, Id_fo = 114
, Id_fr = 115
, Id_frc = 116
, Id_frp = 117
, Id_frr = 118
, Id_fur = 119
, Id_fy = 120
, Id_ga = 121
, Id_gag = 122
, Id_gan = 123
, Id_gan_hans = 124
, Id_gan_hant = 125
, Id_gd = 126
, Id_gl = 127
, Id_glk = 128
, Id_gn = 129
, Id_gom = 130
, Id_gom_deva = 131
, Id_gom_latn = 132
, Id_got = 133
, Id_grc = 134
, Id_gsw = 135
, Id_gu = 136
, Id_guc = 137
, Id_gv = 138
, Id_ha = 139
, Id_hak = 140
, Id_haw = 141
, Id_he = 142
, Id_hi = 143
, Id_hif = 144
, Id_hif_latn = 145
, Id_hil = 146
, Id_ho = 147
, Id_hr = 148
, Id_hrx = 149
, Id_hsb = 150
, Id_hsn = 151
, Id_ht = 152
, Id_hu = 153
, Id_hu_formal = 154
, Id_hy = 155
, Id_hz = 156
, Id_ia = 157
, Id_id = 158
, Id_ie = 159
, Id_ig = 160
, Id_ii = 161
, Id_ik = 162
, Id_ike_cans = 163
, Id_ike_latn = 164
, Id_ilo = 165
, Id_inh = 166
, Id_io = 167
, Id_is = 168
, Id_it = 169
, Id_iu = 170
, Id_izh = 171
, Id_ja = 172
, Id_jam = 173
, Id_jbo = 174
, Id_jut = 175
, Id_jv = 176
, Id_ka = 177
, Id_kaa = 178
, Id_kab = 179
, Id_kbd = 180
, Id_kbd_cyrl = 181
, Id_kg = 182
, Id_khw = 183
, Id_ki = 184
, Id_kiu = 185
, Id_kj = 186
, Id_kk = 187
, Id_kk_arab = 188
, Id_kk_cn = 189
, Id_kk_cyrl = 190
, Id_kk_kz = 191
, Id_kk_latn = 192
, Id_kk_tr = 193
, Id_kl = 194
, Id_km = 195
, Id_kn = 196
, Id_ko = 197
, Id_ko_kp = 198
, Id_koi = 199
, Id_kok = 200
, Id_kr = 201
, Id_krc = 202
, Id_kri = 203
, Id_krj = 204
, Id_krl = 205
, Id_ks = 206
, Id_ks_arab = 207
, Id_ks_deva = 208
, Id_ksh = 209
, Id_ku = 210
, Id_ku_arab = 211
, Id_ku_latn = 212
, Id_kv = 213
, Id_kw = 214
, Id_ky = 215
, Id_la = 216
, Id_lad = 217
, Id_lb = 218
, Id_lbe = 219
, Id_lez = 220
, Id_lfn = 221
, Id_lg = 222
, Id_li = 223
, Id_lij = 224
, Id_liv = 225
, Id_lmo = 226
, Id_ln = 227
, Id_lo = 228
, Id_loz = 229
, Id_lrc = 230
, Id_lt = 231
, Id_ltg = 232
, Id_lus = 233
, Id_luz = 234
, Id_lv = 235
, Id_lzh = 236
, Id_lzz = 237
, Id_mai = 238
, Id_map_bms = 239
, Id_mdf = 240
, Id_mg = 241
, Id_mh = 242
, Id_mhr = 243
, Id_mi = 244
, Id_mic = 245
, Id_min = 246
, Id_mk = 247
, Id_ml = 248
, Id_mn = 249
, Id_mnc = 250
, Id_mo = 251
, Id_mr = 252
, Id_mrj = 253
, Id_ms = 254
, Id_mt = 255
, Id_mui = 256
, Id_mus = 257
, Id_mwl = 258
, Id_mwv = 259
, Id_my = 260
, Id_myv = 261
, Id_mzn = 262
, Id_na = 263
, Id_nah = 264
, Id_nan = 265
, Id_nap = 266
, Id_nb = 267
, Id_nds = 268
, Id_nds_nl = 269
, Id_ne = 270
, Id_new = 271
, Id_ng = 272
, Id_niu = 273
, Id_nl = 274
, Id_nl_informal = 275
, Id_nn = 276
, Id_no = 277
, Id_nov = 278
, Id_nrm = 279
, Id_nso = 280
, Id_nv = 281
, Id_ny = 282
, Id_oc = 283
, Id_om = 284
, Id_or = 285
, Id_os = 286
, Id_pa = 287
, Id_pag = 288
, Id_pam = 289
, Id_pap = 290
, Id_pbb = 291
, Id_pcd = 292
, Id_pdc = 293
, Id_pdt = 294
, Id_pfl = 295
, Id_pi = 296
, Id_pih = 297
, Id_pl = 298
, Id_pms = 299
, Id_pnb = 300
, Id_pnt = 301
, Id_ppl = 302
, Id_prg = 303
, Id_ps = 304
, Id_pt = 305
, Id_pt_br = 306
, Id_qqq = 307
, Id_qu = 308
, Id_qug = 309
, Id_rap = 310
, Id_rgn = 311
, Id_rif = 312
, Id_rm = 313
, Id_rmf = 314
, Id_rmy = 315
, Id_rn = 316
, Id_ro = 317
, Id_roa_rup = 318
, Id_roa_tara = 319
, Id_ru = 320
, Id_rue = 321
, Id_rup = 322
, Id_ruq = 323
, Id_ruq_cyrl = 324
, Id_ruq_latn = 325
, Id_rw = 326
, Id_ryu = 327
, Id_sa = 328
, Id_sah = 329
, Id_sat = 330
, Id_saz = 331
, Id_sc = 332
, Id_scn = 333
, Id_sco = 334
, Id_sd = 335
, Id_sdc = 336
, Id_sdh = 337
, Id_se = 338
, Id_sei = 339
, Id_ses = 340
, Id_sg = 341
, Id_sgs = 342
, Id_sh = 343
, Id_shi = 344
, Id_shn = 345
, Id_si = 346
, Id_simple = 347
, Id_sk = 348
, Id_sl = 349
, Id_sli = 350
, Id_sly = 351
, Id_sm = 352
, Id_sma = 353
, Id_sn = 354
, Id_so = 355
, Id_sq = 356
, Id_sr = 357
, Id_sr_ec = 358
, Id_sr_el = 359
, Id_srn = 360
, Id_ss = 361
, Id_st = 362
, Id_stq = 363
, Id_su = 364
, Id_sv = 365
, Id_sw = 366
, Id_sxu = 367
, Id_szl = 368
, Id_ta = 369
, Id_tcy = 370
, Id_te = 371
, Id_test = 372
, Id_tet = 373
, Id_tg = 374
, Id_tg_cyrl = 375
, Id_tg_latn = 376
, Id_th = 377
, Id_ti = 378
, Id_tk = 379
, Id_tl = 380
, Id_tly = 381
, Id_tn = 382
, Id_to = 383
, Id_tokipona = 384
, Id_tp = 385
, Id_tpi = 386
, Id_tr = 387
, Id_tru = 388
, Id_ts = 389
, Id_tt = 390
, Id_tt_cyrl = 391
, Id_tt_latn = 392
, Id_ttt = 393
, Id_tum = 394
, Id_tw = 395
, Id_ty = 396
, Id_tyv = 397
, Id_tzm = 398
, Id_ua = 399
, Id_udm = 400
, Id_ug = 401
, Id_ug_arab = 402
, Id_ug_latn = 403
, Id_uk = 404
, Id_ur = 405
, Id_uz = 406
, Id_ve = 407
, Id_vec = 408
, Id_vep = 409
, Id_vi = 410
, Id_vls = 411
, Id_vmf = 412
, Id_vo = 413
, Id_vot = 414
, Id_vro = 415
, Id_wa = 416
, Id_war = 417
, Id_wo = 418
, Id_wuu = 419
, Id_xal = 420
, Id_xh = 421
, Id_xmf = 422
, Id_yi = 423
, Id_yo = 424
, Id_yue = 425
, Id_za = 426
, Id_zea = 427
, Id_zh = 428
, Id_zh_classical = 429
, Id_zh_cn = 430
, Id_zh_hans = 431
, Id_zh_hant = 432
, Id_zh_hk = 433
, Id_zh_min_nan = 434
, Id_zh_mo = 435
, Id_zh_my = 436
, Id_zh_sg = 437
, Id_zh_tw = 438
, Id_zh_yue = 439
, Id_zu = 440
, Id_aeb_arab = 7
, Id_aeb_latn = 8
, Id_af = 9
, Id_ak = 10
, Id_akz = 11
, Id_aln = 12
, Id_als = 13
, Id_am = 14
, Id_an = 15
, Id_ang = 16
, Id_anp = 17
, Id_ar = 18
, Id_arc = 19
, Id_arn = 20
, Id_aro = 21
, Id_arq = 22
, Id_ary = 23
, Id_arz = 24
, Id_as = 25
, Id_ase = 26
, Id_ast = 27
, Id_av = 28
, Id_avk = 29
, Id_awa = 30
, Id_ay = 31
, Id_az = 32
, Id_azb = 33
, Id_ba = 34
, Id_ban = 35
, Id_bar = 36
, Id_bat_smg = 37
, Id_bbc = 38
, Id_bbc_latn = 39
, Id_bcc = 40
, Id_bcl = 41
, Id_be = 42
, Id_be_tarask = 43
, Id_be_x_old = 44
, Id_bew = 45
, Id_bg = 46
, Id_bgn = 47
, Id_bh = 48
, Id_bho = 49
, Id_bi = 50
, Id_bjn = 51
, Id_bm = 52
, Id_bn = 53
, Id_bo = 54
, Id_bpy = 55
, Id_bqi = 56
, Id_br = 57
, Id_brh = 58
, Id_bs = 59
, Id_bto = 60
, Id_bug = 61
, Id_bxr = 62
, Id_ca = 63
, Id_cbk_zam = 64
, Id_cdo = 65
, Id_ce = 66
, Id_ceb = 67
, Id_ch = 68
, Id_chm = 69
, Id_cho = 70
, Id_chr = 71
, Id_chy = 72
, Id_ckb = 73
, Id_co = 74
, Id_cps = 75
, Id_cr = 76
, Id_crh = 77
, Id_crh_cyrl = 78
, Id_crh_latn = 79
, Id_cs = 80
, Id_csb = 81
, Id_cu = 82
, Id_cv = 83
, Id_cy = 84
, Id_da = 85
, Id_de = 86
, Id_de_at = 87
, Id_de_ch = 88
, Id_de_formal = 89
, Id_diq = 90
, Id_dsb = 91
, Id_dtp = 92
, Id_dty = 93
, Id_dv = 94
, Id_dz = 95
, Id_ee = 96
, Id_egl = 97
, Id_el = 98
, Id_eml = 99
, Id_en_ca = 100
, Id_en_gb = 101
, Id_en_rtl = 102
, Id_enrtl = 103
, Id_eo = 104
, Id_es = 105
, Id_es_formal = 106
, Id_esu = 107
, Id_et = 108
, Id_eu = 109
, Id_ext = 110
, Id_fa = 111
, Id_ff = 112
, Id_fi = 113
, Id_fit = 114
, Id_fiu_vro = 115
, Id_fj = 116
, Id_fo = 117
, Id_fr = 118
, Id_frc = 119
, Id_frp = 120
, Id_frr = 121
, Id_fur = 122
, Id_fy = 123
, Id_ga = 124
, Id_gag = 125
, Id_gan = 126
, Id_gan_hans = 127
, Id_gan_hant = 128
, Id_gd = 129
, Id_gl = 130
, Id_glk = 131
, Id_gn = 132
, Id_gom = 133
, Id_gom_deva = 134
, Id_gom_latn = 135
, Id_gor = 136
, Id_got = 137
, Id_grc = 138
, Id_gsw = 139
, Id_gu = 140
, Id_guc = 141
, Id_gv = 142
, Id_ha = 143
, Id_hak = 144
, Id_haw = 145
, Id_he = 146
, Id_hi = 147
, Id_hif = 148
, Id_hif_latn = 149
, Id_hil = 150
, Id_ho = 151
, Id_hr = 152
, Id_hrx = 153
, Id_hsb = 154
, Id_hsn = 155
, Id_ht = 156
, Id_hu = 157
, Id_hu_formal = 158
, Id_hy = 159
, Id_hz = 160
, Id_ia = 161
, Id_id = 162
, Id_ie = 163
, Id_ig = 164
, Id_ii = 165
, Id_ik = 166
, Id_ike_cans = 167
, Id_ike_latn = 168
, Id_ilo = 169
, Id_inh = 170
, Id_io = 171
, Id_is = 172
, Id_it = 173
, Id_iu = 174
, Id_izh = 175
, Id_ja = 176
, Id_jam = 177
, Id_jbo = 178
, Id_jut = 179
, Id_jv = 180
, Id_ka = 181
, Id_kaa = 182
, Id_kab = 183
, Id_kbd = 184
, Id_kbd_cyrl = 185
, Id_kg = 186
, Id_khw = 187
, Id_ki = 188
, Id_kiu = 189
, Id_kj = 190
, Id_kk = 191
, Id_kk_arab = 192
, Id_kk_cn = 193
, Id_kk_cyrl = 194
, Id_kk_kz = 195
, Id_kk_latn = 196
, Id_kk_tr = 197
, Id_kl = 198
, Id_km = 199
, Id_kn = 200
, Id_ko = 201
, Id_ko_kp = 202
, Id_koi = 203
, Id_kok = 204
, Id_kr = 205
, Id_krc = 206
, Id_kri = 207
, Id_krj = 208
, Id_krl = 209
, Id_ks = 210
, Id_ks_arab = 211
, Id_ks_deva = 212
, Id_ksh = 213
, Id_ku = 214
, Id_ku_arab = 215
, Id_ku_latn = 216
, Id_kv = 217
, Id_kw = 218
, Id_ky = 219
, Id_la = 220
, Id_lad = 221
, Id_lb = 222
, Id_lbe = 223
, Id_lez = 224
, Id_lfn = 225
, Id_lg = 226
, Id_li = 227
, Id_lij = 228
, Id_liv = 229
, Id_lki = 230
, Id_lmo = 231
, Id_ln = 232
, Id_lo = 233
, Id_loz = 234
, Id_lrc = 235
, Id_lt = 236
, Id_ltg = 237
, Id_lus = 238
, Id_luz = 239
, Id_lv = 240
, Id_lzh = 241
, Id_lzz = 242
, Id_mai = 243
, Id_map_bms = 244
, Id_mdf = 245
, Id_mg = 246
, Id_mh = 247
, Id_mhr = 248
, Id_mi = 249
, Id_mic = 250
, Id_min = 251
, Id_mk = 252
, Id_ml = 253
, Id_mn = 254
, Id_mnc = 255
, Id_mo = 256
, Id_mr = 257
, Id_mrj = 258
, Id_ms = 259
, Id_mt = 260
, Id_mui = 261
, Id_mus = 262
, Id_mwl = 263
, Id_mwv = 264
, Id_my = 265
, Id_myv = 266
, Id_mzn = 267
, Id_na = 268
, Id_nah = 269
, Id_nan = 270
, Id_nap = 271
, Id_nb = 272
, Id_nds = 273
, Id_nds_nl = 274
, Id_ne = 275
, Id_new = 276
, Id_ng = 277
, Id_niu = 278
, Id_nl = 279
, Id_nl_informal = 280
, Id_nn = 281
, Id_no = 282
, Id_nov = 283
, Id_nrm = 284
, Id_nso = 285
, Id_nv = 286
, Id_ny = 287
, Id_oc = 288
, Id_olo = 289
, Id_om = 290
, Id_or = 291
, Id_os = 292
, Id_pa = 293
, Id_pag = 294
, Id_pam = 295
, Id_pap = 296
, Id_pbb = 297
, Id_pcd = 298
, Id_pdc = 299
, Id_pdt = 300
, Id_pfl = 301
, Id_pi = 302
, Id_pih = 303
, Id_pl = 304
, Id_pms = 305
, Id_pnb = 306
, Id_pnt = 307
, Id_ppl = 308
, Id_prg = 309
, Id_ps = 310
, Id_pt = 311
, Id_pt_br = 312
, Id_qqq = 313
, Id_qu = 314
, Id_qug = 315
, Id_rap = 316
, Id_rgn = 317
, Id_rif = 318
, Id_rm = 319
, Id_rmf = 320
, Id_rmy = 321
, Id_rn = 322
, Id_ro = 323
, Id_roa_rup = 324
, Id_roa_tara = 325
, Id_ru = 326
, Id_rue = 327
, Id_rup = 328
, Id_ruq = 329
, Id_ruq_cyrl = 330
, Id_ruq_latn = 331
, Id_rw = 332
, Id_ryu = 333
, Id_sa = 334
, Id_sah = 335
, Id_sat = 336
, Id_saz = 337
, Id_sc = 338
, Id_scn = 339
, Id_sco = 340
, Id_sd = 341
, Id_sdc = 342
, Id_sdh = 343
, Id_se = 344
, Id_sei = 345
, Id_ses = 346
, Id_sg = 347
, Id_sgs = 348
, Id_sh = 349
, Id_shi = 350
, Id_shn = 351
, Id_si = 352
, Id_simple = 353
, Id_sk = 354
, Id_sl = 355
, Id_sli = 356
, Id_sly = 357
, Id_sm = 358
, Id_sma = 359
, Id_sn = 360
, Id_so = 361
, Id_sq = 362
, Id_sr = 363
, Id_sr_ec = 364
, Id_sr_el = 365
, Id_srn = 366
, Id_ss = 367
, Id_st = 368
, Id_stq = 369
, Id_su = 370
, Id_sv = 371
, Id_sw = 372
, Id_sxu = 373
, Id_szl = 374
, Id_ta = 375
, Id_tcy = 376
, Id_te = 377
, Id_test = 378
, Id_tet = 379
, Id_tg = 380
, Id_tg_cyrl = 381
, Id_tg_latn = 382
, Id_th = 383
, Id_ti = 384
, Id_tk = 385
, Id_tl = 386
, Id_tly = 387
, Id_tn = 388
, Id_to = 389
, Id_tokipona = 390
, Id_tp = 391
, Id_tpi = 392
, Id_tr = 393
, Id_tru = 394
, Id_ts = 395
, Id_tt = 396
, Id_tt_cyrl = 397
, Id_tt_latn = 398
, Id_ttt = 399
, Id_tum = 400
, Id_tw = 401
, Id_ty = 402
, Id_tyv = 403
, Id_tzm = 404
, Id_ua = 405
, Id_udm = 406
, Id_ug = 407
, Id_ug_arab = 408
, Id_ug_latn = 409
, Id_uk = 410
, Id_ur = 411
, Id_uz = 412
, Id_ve = 413
, Id_vec = 414
, Id_vep = 415
, Id_vi = 416
, Id_vls = 417
, Id_vmf = 418
, Id_vo = 419
, Id_vot = 420
, Id_vro = 421
, Id_wa = 422
, Id_war = 423
, Id_wo = 424
, Id_wuu = 425
, Id_xal = 426
, Id_xh = 427
, Id_xmf = 428
, Id_yi = 429
, Id_yo = 430
, Id_yue = 431
, Id_za = 432
, Id_zea = 433
, Id_zh = 434
, Id_zh_classical = 435
, Id_zh_cn = 436
, Id_zh_hans = 437
, Id_zh_hant = 438
, Id_zh_hk = 439
, Id_zh_min_nan = 440
, Id_zh_mo = 441
, Id_zh_my = 442
, Id_zh_sg = 443
, Id_zh_tw = 444
, Id_zh_yue = 445
, Id_zu = 446
;
public static final int Id__max = 441;
public static final int Id__max = 447;
public static Hash_adp_bry Regy() {
if (stub_hash == null) { // NOTE: any parenthetical String below will have an "unseen" character of "\xE2\x80\xAA" at the begining and "\xE2\x80\xAC" at the end. They are responsible for parentheses-orientation in RTL stub_ary.
stub_hash = Hash_adp_bry.ci_a7(); // ASCII:lang_code; NOTE: must be ci; EX: {{#languages:FR}}
@@ -476,6 +482,8 @@ Regy_add(stub_hash, Id_ace, "ace", "Acèh");
Regy_add(stub_hash, Id_ady, "ady", "Adyghe");
Regy_add(stub_hash, Id_ady_cyrl, "ady-cyrl", "West Circassian (Cyrillic)");
Regy_add(stub_hash, Id_aeb, "aeb", "زَوُن");
Regy_add(stub_hash, Id_aeb_arab, "aeb-arab", "زَوُن");
Regy_add(stub_hash, Id_aeb_latn, "aeb-latn", "زَوُن");
Regy_add(stub_hash, Id_af, "af", "Afrikaans");
Regy_add(stub_hash, Id_ak, "ak", "Akan");
Regy_add(stub_hash, Id_akz, "akz", "Alibamu");
@@ -560,6 +568,7 @@ Regy_add(stub_hash, Id_de_formal, "de-formal", "Deutsch (Sie-Form)");
Regy_add(stub_hash, Id_diq, "diq", "Zazaki");
Regy_add(stub_hash, Id_dsb, "dsb", "Dolnoserbski");
Regy_add(stub_hash, Id_dtp, "dtp", "Dusun Bundu-liwan");
Regy_add(stub_hash, Id_dty, "dty", "Dotyali");
Regy_add(stub_hash, Id_dv, "dv", "ދިވެހިބަސް");
Regy_add(stub_hash, Id_dz, "dz", "ཇོང་ཁ");
Regy_add(stub_hash, Id_ee, "ee", "Eʋegbe");
@@ -602,6 +611,7 @@ Regy_add(stub_hash, Id_gn, "gn", "Avañe'ẽ");
Regy_add(stub_hash, Id_gom, "gom", "कोंकणी");
Regy_add(stub_hash, Id_gom_deva, "gom-deva", "Konkani");
Regy_add(stub_hash, Id_gom_latn, "gom-latn", "कोंकणी (Latin)");
Regy_add(stub_hash, Id_gor, "gor", "Gor");
Regy_add(stub_hash, Id_got, "got", "𐌲𐌿𐍄𐌹𐍃𐌺");
Regy_add(stub_hash, Id_grc, "grc", "Ἀρχαία ἑλληνικὴ");
Regy_add(stub_hash, Id_gsw, "gsw", "Alemannisch");
@@ -695,6 +705,7 @@ Regy_add(stub_hash, Id_lg, "lg", "Luganda");
Regy_add(stub_hash, Id_li, "li", "Limburgs");
Regy_add(stub_hash, Id_lij, "lij", "Líguru");
Regy_add(stub_hash, Id_liv, "liv", "Līvõ kēļ");
Regy_add(stub_hash, Id_lki, "lki", "Laki");
Regy_add(stub_hash, Id_lmo, "lmo", "Lumbaart");
Regy_add(stub_hash, Id_ln, "ln", "Lingála");
Regy_add(stub_hash, Id_lo, "lo", "ລາວ");
@@ -753,6 +764,7 @@ Regy_add(stub_hash, Id_nso, "nso", "Sesotho sa Leboa");
Regy_add(stub_hash, Id_nv, "nv", "Diné bizaad");
Regy_add(stub_hash, Id_ny, "ny", "Chi-Chewa");
Regy_add(stub_hash, Id_oc, "oc", "Occitan");
Regy_add(stub_hash, Id_olo, "olo", "Olo");
Regy_add(stub_hash, Id_om, "om", "Oromoo");
Regy_add(stub_hash, Id_or, "or", "ଓଡ଼ିଆ");
Regy_add(stub_hash, Id_os, "os", "Иронау");

View File

@@ -79,7 +79,7 @@ public class Xol_mw_lang_parser {
String text = Io_mgr.Instance.LoadFilStr(url);
Xol_lang_itm lang = lang_mgr.Get_by_or_new(Bry_.new_u8(lang_key));
this.Parse_core(text, lang, bfr, lang_transform);
} catch (Exception exc) {Err_.Noop(exc); Console_adp__sys.Instance.Write_str_w_nl("failed to parse " + url.NameOnly() + Err_.Message_gplx_full(exc));}
} catch (Exception exc) {Err_.Noop(exc); Console_adp__sys.Instance.Write_str_w_nl("failed to parse " + url.NameOnly() + Err_.Message_gplx_log(exc));}
}
}
private void Parse_file_xtns_php(Xoa_lang_mgr lang_mgr, Io_url mediawiki_root, Bry_bfr bfr, Xol_lang_transform lang_transform) {
@@ -92,7 +92,7 @@ public class Xol_mw_lang_parser {
String text = Io_mgr.Instance.LoadFilStr(url);
boolean prepend_hash = String_.Eq("ParserFunctions.i18n.magic", url.NameOnly());
this.Parse_xtn(text, url, lang_mgr, bfr, prepend_hash, lang_transform);
} catch (Exception exc) {Err_.Noop(exc); Console_adp__sys.Instance.Write_str_w_nl("failed to parse " + url.NameOnly() + Err_.Message_gplx_full(exc));}
} catch (Exception exc) {Err_.Noop(exc); Console_adp__sys.Instance.Write_str_w_nl("failed to parse " + url.NameOnly() + Err_.Message_gplx_log(exc));}
}
}
private void Parse_file_json(Xoa_lang_mgr lang_mgr, Bry_bfr bfr, Xol_lang_transform lang_transform, Io_url root_dir) {
@@ -107,7 +107,7 @@ public class Xol_mw_lang_parser {
try {
Xol_lang_itm lang = lang_mgr.Get_by_or_new(Bry_.new_u8(fil.NameOnly()));
Xob_i18n_parser.Load_msgs(true, lang, fil);
} catch (Exception exc) {Err_.Noop(exc); Console_adp__sys.Instance.Write_str_w_nl(String_.Format("failed to parse json file; url={0} err={1}\n", fil.Raw(), Err_.Message_gplx_full(exc)));}
} catch (Exception exc) {Err_.Noop(exc); Console_adp__sys.Instance.Write_str_w_nl(String_.Format("failed to parse json file; url={0} err={1}\n", fil.Raw(), Err_.Message_gplx_log(exc)));}
}
}
}
@@ -201,7 +201,7 @@ public class Xol_mw_lang_parser {
Parse_magicwords(line, lang.Key_bry(), lang.Kwd_mgr(), prepend_hash, lang_transform);
break;
}
} catch (Exception exc) {Err_.Noop(exc); Console_adp__sys.Instance.Write_str_w_nl("failed to parse " + url.NameOnly() + Err_.Message_gplx_full(exc));}
} catch (Exception exc) {Err_.Noop(exc); Console_adp__sys.Instance.Write_str_w_nl("failed to parse " + url.NameOnly() + Err_.Message_gplx_log(exc));}
}
}
}

View File

@@ -18,7 +18,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
package gplx.xowa.langs.cases; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*;
import gplx.core.btries.*; import gplx.core.intls.*;
public class Xol_case_mgr implements Gfo_invk, Gfo_case_mgr {
private Bry_bfr tmp_bfr = Bry_bfr_.New(); private Btrie_fast_mgr upper_trie = Btrie_fast_mgr.cs(), lower_trie = Btrie_fast_mgr.cs(); private Xol_case_itm[] itms;
private final Object thread_lock = new Object();
private final Bry_bfr tmp_bfr = Bry_bfr_.New();
private final Btrie_rv trv = new Btrie_rv();
private final Btrie_fast_mgr upper_trie = Btrie_fast_mgr.cs(), lower_trie = Btrie_fast_mgr.cs(); private Xol_case_itm[] itms;
public Xol_case_mgr(byte tid) {this.tid = tid;}
public byte Tid() {return tid;} private byte tid;
public Gfo_case_itm Get_or_null(byte bgn_byte, byte[] src, int bgn, int end) {
@@ -58,65 +61,73 @@ public class Xol_case_mgr implements Gfo_invk, Gfo_case_mgr {
public byte[] Case_reuse_upper(byte[] src, int bgn, int end) {return Case_reuse(Bool_.Y, src, bgn, end);}
public byte[] Case_reuse_lower(byte[] src, int bgn, int end) {return Case_reuse(Bool_.N, src, bgn, end);}
public byte[] Case_reuse(boolean upper, byte[] src, int bgn, int end) {
int pos = bgn;
tmp_bfr.Clear();
Btrie_fast_mgr trie = upper ? upper_trie : lower_trie;
while (true) {
if (pos >= end) break;
byte b = src[pos];
int b_len = gplx.core.intls.Utf8_.Len_of_char_by_1st_byte(b);
Object o = trie.Match_bgn_w_byte(b, src, pos, end); // NOTE: used to be (b, src, bgn, end) which would never case correctly; DATE:2013-12-25
if (o != null && pos < end) { // pos < end used for casing 1st letter only; upper_1st will pass end of 1
Xol_case_itm itm = (Xol_case_itm)o;
if (upper)
itm.Case_reuse_upper(src, pos, b_len);
else
itm.Case_reuse_lower(src, pos, b_len);
synchronized (thread_lock) { // LOCK:trie; DATE:2016-07-06
int pos = bgn;
tmp_bfr.Clear();
Btrie_fast_mgr trie = upper ? upper_trie : lower_trie;
while (true) {
if (pos >= end) break;
byte b = src[pos];
int b_len = gplx.core.intls.Utf8_.Len_of_char_by_1st_byte(b);
Object o = trie.Match_at_w_b0(trv, b, src, pos, end); // NOTE: used to be (b, src, bgn, end) which would never case correctly; DATE:2013-12-25; TS: DATE:2016-07-06
if (o != null && pos < end) { // pos < end used for casing 1st letter only; upper_1st will pass end of 1
Xol_case_itm itm = (Xol_case_itm)o;
if (upper)
itm.Case_reuse_upper(src, pos, b_len);
else
itm.Case_reuse_lower(src, pos, b_len);
}
else {} // noop
pos += b_len;
}
else {} // noop
pos += b_len;
return src;
}
return src;
}
public byte[] Case_reuse_1st_upper(byte[] src) { // NOTE: optimized version called by Frame_ttl; DATE:2014-06-21
int src_len = src.length;
if (src_len == 0) return src; // empty bry
byte b = src[0];
int b_len = gplx.core.intls.Utf8_.Len_of_char_by_1st_byte(b);
Object o = upper_trie.Match_bgn_w_byte(b, src, 0, b_len);
if (o == null) return src; // 1st letter is not a lower case char (either num, symbol, or upper)
Xol_case_itm itm = (Xol_case_itm)o;
itm.Case_build_upper(tmp_bfr);
int pos = upper_trie.Match_pos();
tmp_bfr.Add_mid(src, pos, src_len);
return tmp_bfr.To_bry_and_clear();
synchronized (thread_lock) { // LOCK:trie; DATE:2016-07-06
int src_len = src.length;
if (src_len == 0) return src; // empty bry
byte b = src[0];
int b_len = gplx.core.intls.Utf8_.Len_of_char_by_1st_byte(b);
Object o = upper_trie.Match_at_w_b0(trv, b, src, 0, b_len);
if (o == null) return src; // 1st letter is not a lower case char (either num, symbol, or upper)
Xol_case_itm itm = (Xol_case_itm)o;
itm.Case_build_upper(tmp_bfr);
tmp_bfr.Add_mid(src, trv.Pos(), src_len);
return tmp_bfr.To_bry_and_clear();
}
}
public byte[] Case_build_upper(byte[] src) {return Case_build_upper(src, 0, src.length);}
public byte[] Case_build_upper(byte[] src, int bgn, int end) {return Case_build(Bool_.Y, src, bgn, end);}
public byte[] Case_build_lower(byte[] src) {return Case_build_lower(src, 0, src.length);}
public byte[] Case_build_lower(byte[] src, int bgn, int end) {return Case_build(Bool_.N, src, bgn, end);}
public byte[] Case_build(boolean upper, byte[] src, int bgn, int end) {
int pos = bgn;
tmp_bfr.Clear();
Btrie_fast_mgr trie = upper ? upper_trie : lower_trie;
while (true) {
if (pos >= end) break;
byte b = src[pos];
int b_len = gplx.core.intls.Utf8_.Len_of_char_by_1st_byte(b);
Object o = trie.Match_bgn_w_byte(b, src, pos, end); // NOTE: used to be (b, src, bgn, end) which would never case correctly; DATE:2013-12-25
if (o != null && pos < end) { // pos < end used for casing 1st letter only; upper_1st will pass end of 1
Xol_case_itm itm = (Xol_case_itm)o;
if (upper)
itm.Case_build_upper(tmp_bfr);
else
itm.Case_build_lower(tmp_bfr);
synchronized (thread_lock) { // LOCK:trie; DATE:2016-07-06
int pos = bgn;
tmp_bfr.Clear();
Btrie_fast_mgr trie = upper ? upper_trie : lower_trie;
while (true) {
if (pos >= end) break;
byte b = src[pos];
int b_len = gplx.core.intls.Utf8_.Len_of_char_by_1st_byte(b);
Object o = trie.Match_at_w_b0(trv, b, src, pos, end); // NOTE: used to be (b, src, bgn, end) which would never case correctly; DATE:2013-12-25;
if (o != null && pos < end) { // pos < end used for casing 1st letter only; upper_1st will pass end of 1
Xol_case_itm itm = (Xol_case_itm)o;
if (upper)
itm.Case_build_upper(tmp_bfr);
else
itm.Case_build_lower(tmp_bfr);
}
else {
tmp_bfr.Add_mid(src, pos, pos + b_len);
}
pos += b_len;
}
else {
tmp_bfr.Add_mid(src, pos, pos + b_len);
}
pos += b_len;
return tmp_bfr.To_bry_and_clear();
}
return tmp_bfr.To_bry_and_clear();
}
public byte[] Case_build_1st_upper(Bry_bfr bfr, byte[] src, int bgn, int end) {return Case_build_1st(bfr, Bool_.Y, src, bgn, end);}
public byte[] Case_build_1st_lower(Bry_bfr bfr, byte[] src, int bgn, int end) {return Case_build_1st(bfr, Bool_.N, src, bgn, end);}

View File

@@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.langs.funcs; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*;
import gplx.core.threads.poolables.*;
import gplx.xowa.parsers.tmpls.*;
public class Xol_func_itm {
public byte Tid() {return tid;} private byte tid = Xot_defn_.Tid_null;

View File

@@ -20,8 +20,8 @@ import gplx.core.btries.*; import gplx.core.intls.*; import gplx.core.envs.*; im
import gplx.xowa.parsers.tmpls.*;
import gplx.xowa.langs.kwds.*;
public class Xol_func_regy {
private final Object thread_lock = new Object();
private final Xoa_lang_mgr lang_mgr; private final Xol_lang_itm lang;
private final Xol_func_itm finder = new Xol_func_itm();
private final Btrie_slim_mgr cs_trie = Btrie_slim_mgr.cs(), ci_trie = Btrie_slim_mgr.ci_u8();
public Xol_func_regy(Xoa_lang_mgr lang_mgr, Xol_lang_itm lang) {this.lang_mgr = lang_mgr; this.lang = lang;}
public void Evt_lang_changed(Xol_lang_itm lang) {
@@ -51,48 +51,50 @@ public class Xol_func_regy {
}
}
private void Add(byte[] ary, boolean case_match, Xot_defn func) {
if (case_match)
cs_trie.Add_obj(ary, func);
else {
byte[] lower_ary = lang.Case_mgr().Case_build_lower(ary, 0, ary.length);
ci_trie.Add_obj(lower_ary, func);
}
// synchronized (thread_lock) { // LOCK:DELETE; DATE:2016-07-06
if (case_match)
cs_trie.Add_obj(ary, func);
else {
byte[] lower_ary = lang.Case_mgr().Case_build_lower(ary, 0, ary.length);
ci_trie.Add_obj(lower_ary, func);
}
// }
}
public Xol_func_itm Find_defn(byte[] src, int txt_bgn, int txt_end) {
finder.Clear();
public void Find_defn(Xol_func_itm rv, byte[] src, int txt_bgn, int txt_end) {
rv.Clear();
for (int i = 0; i < 2; i++) {
if (txt_bgn == txt_end) return finder; // NOTE: true when tmpl_name is either not loaded, or doesn't exist
if (txt_bgn == txt_end) return; // NOTE: true when tmpl_name is either not loaded, or doesn't exist
Xot_defn func = Match_bgn(src, txt_bgn, txt_end);
if (func == null) return finder; // NOTE: null when tmpl_name is either not loaded, or doesn't exist
if (func == null) return; // NOTE: null when tmpl_name is either not loaded, or doesn't exist
byte[] func_name = func.Name();
int match_pos = func_name.length + txt_bgn;
byte defn_tid = func.Defn_tid();
switch (defn_tid) {
case Xot_defn_.Tid_func:
if (match_pos == txt_end) // next char is ws (b/c match_pos == txt_end)
finder.Func_set(func, -1);
rv.Func_set(func, -1);
else if (src[match_pos] == Pf_func_.Name_dlm) // next char is :
finder.Func_set(func, match_pos);
rv.Func_set(func, match_pos);
else { // func is close, but not quite: ex: #ifx: or padlefts:
return finder;
return;
}
break;
case Xot_defn_.Tid_safesubst:
case Xot_defn_.Tid_subst:
finder.Subst_set_(defn_tid, txt_bgn, match_pos);
rv.Subst_set_(defn_tid, txt_bgn, match_pos);
if (match_pos < txt_end) txt_bgn = Bry_find_.Find_fwd_while_not_ws(src, match_pos, txt_end);
break;
case Xot_defn_.Tid_raw:
case Xot_defn_.Tid_msg:
case Xot_defn_.Tid_msgnw:
finder.Subst_set_(defn_tid, txt_bgn, match_pos);
rv.Subst_set_(defn_tid, txt_bgn, match_pos);
if (match_pos + 1 < txt_end) // +1 to include ":" (keyword id "raw", not "raw:")
txt_bgn = Bry_find_.Find_fwd_while_not_ws(src, match_pos + 1, txt_end);
break;
default: return finder;
default: return;
}
}
return finder;
return;
}
private Xot_defn Match_bgn(byte[] src, int bgn, int end) {
Object cs_obj = cs_trie.Match_bgn(src, bgn, end);
@@ -111,9 +113,11 @@ public class Xol_func_regy {
: rv_alt; // else return rv_alt
}
private void LowerAry(byte[] src, int bgn, int end) {
int len = end - bgn;
if (len > lower_ary_len) {lower_ary = new byte[len]; lower_ary_len = len;}
lower_ary_len = len;
Array_.Copy_to(src, bgn, lower_ary, 0, len);
synchronized (thread_lock) {
int len = end - bgn;
if (len > lower_ary_len) {lower_ary = new byte[len]; lower_ary_len = len;}
lower_ary_len = len;
Array_.Copy_to(src, bgn, lower_ary, 0, len);
}
} byte[] lower_ary = new byte[255]; int lower_ary_len = 255;
}

View File

@@ -262,10 +262,12 @@ public static final int
private static final Bry_fmtr tmp_fmtr = Bry_fmtr.tmp_().Fail_when_invalid_escapes_(false);
private static final Bry_bfr tmp_bfr = Bry_bfr_.Reset(255);
public static void update_val_(Xol_msg_itm itm, byte[] val) {
boolean has_fmt_arg = tmp_fmtr.Fmt_(val).Compile().Fmt_args_exist();
boolean has_tmpl_txt = Bry_find_.Find_fwd(val, Xop_curly_bgn_lxr.Hook, 0) != -1;
val = trie_space.Replace(tmp_bfr, val, 0, val.length);
itm.Atrs_set(val, has_fmt_arg, has_tmpl_txt);
synchronized (tmp_fmtr) { // LOCK:static-objs; DATE:2016-07-07
boolean has_fmt_arg = tmp_fmtr.Fmt_(val).Compile().Fmt_args_exist();
boolean has_tmpl_txt = Bry_find_.Find_fwd(val, Xop_curly_bgn_lxr.Hook, 0) != -1;
val = trie_space.Replace(tmp_bfr, val, 0, val.length);
itm.Atrs_set(val, has_fmt_arg, has_tmpl_txt);
}
}
public static final byte[] Bry_nbsp = Byte_.Ary_by_ints(194, 160);
private static final Btrie_slim_mgr trie_space = Btrie_slim_mgr.cs() // MW:cache/MessageCache.php|get|Fix for trailing whitespace, removed by textarea|DATE:2014-04-29
@@ -511,8 +513,10 @@ case Xol_msg_itm_.Id_xowa_wikidata_links_special: return new_(Xol_msg_itm_.Id_xo
}
}
public static byte[] eval_(Bry_bfr bfr, Xol_msg_itm tmp_msg_itm, byte[] val, Object... args) {
val = gplx.xowa.apps.gfs.Xoa_gfs_php_mgr.Xto_gfs(bfr, val);
update_val_(tmp_msg_itm, val);
return tmp_fmtr.Bld_bry_many(bfr, args);
synchronized (tmp_fmtr) { // LOCK:static-objs; DATE:2016-07-07
val = gplx.xowa.apps.gfs.Xoa_gfs_php_mgr.Xto_gfs(bfr, val);
update_val_(tmp_msg_itm, val);
return tmp_fmtr.Bld_bry_many(bfr, args);
}
}
}

View File

@@ -58,7 +58,7 @@ public class Xol_msg_mgr_ {
msg_val = tmp_bfr.To_bry_and_clear();
}
if (has_tmpl) {
Xop_ctx sub_ctx = Xop_ctx.new_sub_(wiki); Xop_tkn_mkr tkn_mkr = sub_ctx.Tkn_mkr();
Xop_ctx sub_ctx = Xop_ctx.new_sub_(wiki.Parser_mgr().Ctx()); Xop_tkn_mkr tkn_mkr = sub_ctx.Tkn_mkr();
Xop_root_tkn sub_root = tkn_mkr.Root(msg_val);
msg_val = wiki.Parser_mgr().Main().Parse_text_to_wtxt(sub_root, sub_ctx, tkn_mkr, msg_val);
}
@@ -83,7 +83,7 @@ public class Xol_msg_mgr_ {
msg_in_wiki = wiki.Msg_mgr().Get_or_make(msg_key);
Xoae_page msg_page = Get_msg_itm_from_db(wiki, lang, msg_key, msg_key_sub_root);
byte[] msg_val = Bry_.Empty;
if (msg_page.Missing()) { // [[MediaWiki:key/fallback]] still not found; search "lang.gfs";
if (msg_page.Db().Page().Exists_n()) { // [[MediaWiki:key/fallback]] still not found; search "lang.gfs";
Xol_msg_itm msg_in_lang = Get_msg_itm_from_gfs(wiki, lang, msg_key_sub_root);
if (msg_in_lang == null) {
msg_val = tmp_bfr.Add_byte(Byte_ascii.Lt).Add(msg_key).Add_byte(Byte_ascii.Gt).To_bry_and_clear(); // set val to <msg_key>
@@ -94,8 +94,8 @@ public class Xol_msg_mgr_ {
msg_in_wiki.Src_(Xol_msg_itm.Src_lang);
}
}
else { // page found; dump entire contents
msg_val = Xoa_gfs_php_mgr.Xto_gfs(tmp_bfr, msg_page.Data_raw()); // note that MediaWiki msg's use php arg format ($1); xowa.gfs msgs are already converted
else { // page found; dump entire contents
msg_val = Xoa_gfs_php_mgr.Xto_gfs(tmp_bfr, msg_page.Db().Text().Text_bry()); // note that MediaWiki msg's use php arg format ($1); xowa.gfs msgs are already converted
msg_in_wiki.Src_(Xol_msg_itm.Src_wiki);
}
Xol_msg_itm_.update_val_(msg_in_wiki, msg_val);
@@ -105,14 +105,14 @@ public class Xol_msg_mgr_ {
byte[] ns_bry = wiki.Ns_mgr().Ns_mediawiki().Name_db_w_colon();
Xoa_ttl ttl = wiki.Ttl_parse(Bry_.Add(ns_bry, msg_key)); // ttl="MediaWiki:msg_key"; note that there may be "/lang"; EX:pl.d:Wikislownik:Bar/Archiwum_6 and newarticletext/pl
Xoae_page rv = ttl == null ? Xoae_page.Empty : wiki.Data_mgr().Load_page_by_ttl_for_msg(ttl);
if (rv.Missing()) { // [[MediaWiki:key]] not found; search for [[MediaWiki:key/fallback]]
if (rv.Db().Page().Exists_n()) { // [[MediaWiki:key]] not found; search for [[MediaWiki:key/fallback]]
byte[][] fallback_ary = lang.Fallback_bry_ary();
int fallback_ary_len = fallback_ary.length;
for (int i = 0; i < fallback_ary_len; i++) {
byte[] fallback = fallback_ary[i];
ttl = wiki.Ttl_parse(Bry_.Add(ns_bry, msg_key_sub_root, Slash_bry, fallback)); // ttl="MediaWiki:msg_key/fallback"
rv = ttl == null ? Xoae_page.Empty : wiki.Data_mgr().Load_page_by_ttl_for_msg(ttl);
if (!rv.Missing()) break;
if (rv.Db().Page().Exists()) break;
}
}
return rv;

View File

@@ -49,7 +49,7 @@ class Xol_msg_mgr_fxt {
}
public void Test_mediaWiki_msg(String raw, String expd) {
byte[] msg_ttl = Bry_.new_a7("MediaWiki:msg_ttl");
wiki.Db_mgr().Save_mgr().Data_create(Xoa_ttl.parse(wiki, msg_ttl), Bry_.new_a7(raw));
wiki.Db_mgr().Save_mgr().Data_create(Xoa_ttl.Parse(wiki, msg_ttl), Bry_.new_a7(raw));
Tfds.Eq(expd, String_.new_u8(wiki.Msg_mgr().Val_by_key_obj(Bry_.new_a7("msg_ttl"))));
}
public void Test_val_html_accesskey_and_title(String init_title, String init_accesskey, String expd) {

View File

@@ -27,8 +27,11 @@ public class Xol_specials_mgr implements Gfo_invk {
public Xol_specials_itm Get_by_alias(byte[] alias) {return (Xol_specials_itm)hash_by_aliases.Get_by(alias);}
public Xol_specials_itm Get_by_key(byte[] special) {return (Xol_specials_itm)hash_by_special.Get_by(special);}
public void Add(byte[] special, byte[][] alias_ary) {
Xol_specials_itm itm = new Xol_specials_itm(special, alias_ary);
hash_by_special.Add(special, itm);
Xol_specials_itm itm = (Xol_specials_itm)hash_by_special.Get_by(special);
if (itm == null) { // NOTE: most items will be null, but MessagesCs.php has two entries for PasswordReset; DATE:2016-07-08
itm = new Xol_specials_itm(special, alias_ary);
hash_by_special.Add(special, itm);
}
int len = alias_ary.length;
for (int i = 0; i < len; i++) {
byte[] alias = alias_ary[i];

View File

@@ -27,7 +27,7 @@ public class Xol_convert_regy_tst {
fxt.Init_page("Template:Test_x1", "val");
fxt.Parser_fxt().Test_parse_tmpl_str_test("{{Test_x0}}", "{{test}}", "val");
}
@Test public void Upper_1st() { // PURPOSE: convert should call Xoa_ttl.parse(), which will upper 1st letter; EX:{{jez-eng|sense}} -> Jez-eng; PAGE:sr.w:ДНК DATE:2014-07-06
@Test public void Upper_1st() { // PURPOSE: convert should call Xoa_ttl.Parse(), which will upper 1st letter; EX:{{jez-eng|sense}} -> Jez-eng; PAGE:sr.w:ДНК DATE:2014-07-06
fxt.Init_page("Template:X1", "val");
fxt.Parser_fxt().Test_parse_tmpl_str_test("{{x0}}", "{{test}}", "val");
}