317 | 317 |
},
|
318 | 318 |
},
|
319 | 319 |
{
|
320 | |
tag: "ne",
|
321 | |
translation: "{0}は{1}と異ならなければなりません",
|
322 | |
override: false,
|
323 | |
customTransFunc: func(ut ut.Translator, fe validator.FieldError) string {
|
324 | |
|
325 | |
t, err := ut.T(fe.Tag(), fe.Field(), fe.Param())
|
326 | |
if err != nil {
|
327 | |
fmt.Printf("warning: error translating FieldError: %#v", fe)
|
328 | |
return fe.(error).Error()
|
329 | |
}
|
330 | |
|
331 | |
return t
|
332 | |
},
|
333 | |
},
|
334 | |
{
|
335 | |
tag: "lt",
|
|
320 |
tag: "ne",
|
336 | 321 |
customRegisFunc: func(ut ut.Translator) (err error) {
|
337 | |
|
338 | |
if err = ut.Add("lt-string", "{0}の長さは{1}よりも少なくなければなりません", false); err != nil {
|
339 | |
return
|
340 | |
}
|
341 | |
|
342 | |
if err = ut.AddCardinal("lt-string-character", "{0}文字", locales.PluralRuleOne, false); err != nil {
|
343 | |
return
|
344 | |
}
|
345 | |
|
346 | |
if err = ut.AddCardinal("lt-string-character", "{0}文字", locales.PluralRuleOther, false); err != nil {
|
347 | |
return
|
348 | |
}
|
349 | |
|
350 | |
if err = ut.Add("lt-number", "{0}は{1}よりも小さくなければなりません", false); err != nil {
|
351 | |
return
|
352 | |
}
|
353 | |
|
354 | |
if err = ut.Add("lt-items", "{0}は{1}よりも少ない項目を含まなければなりません", false); err != nil {
|
355 | |
return
|
356 | |
}
|
357 | |
|
358 | |
if err = ut.AddCardinal("lt-items-item", "{0}つの項目", locales.PluralRuleOne, false); err != nil {
|
359 | |
return
|
360 | |
}
|
361 | |
|
362 | |
if err = ut.AddCardinal("lt-items-item", "{0}つの項目", locales.PluralRuleOther, false); err != nil {
|
363 | |
return
|
364 | |
}
|
365 | |
|
366 | |
if err = ut.Add("lt-datetime", "{0}は現時刻よりも前でなければなりません", false); err != nil {
|
|
322 |
if err = ut.Add("ne-items", "{0}の項目の数は{1}と異ならなければなりません", false); err != nil {
|
|
323 |
fmt.Printf("ne customRegisFunc #1 error because of %v\n", err)
|
|
324 |
return
|
|
325 |
}
|
|
326 |
if err = ut.AddCardinal("ne-items-item", "{0}個", locales.PluralRuleOne, false); err != nil {
|
|
327 |
return
|
|
328 |
}
|
|
329 |
|
|
330 |
if err = ut.AddCardinal("ne-items-item", "{0}個", locales.PluralRuleOther, false); err != nil {
|
|
331 |
return
|
|
332 |
}
|
|
333 |
if err = ut.Add("ne", "{0}は{1}と異ならなければなりません", false); err != nil {
|
|
334 |
fmt.Printf("ne customRegisFunc #2 error because of %v\n", err)
|
367 | 335 |
return
|
368 | 336 |
}
|
369 | 337 |
|
370 | 338 |
return
|
371 | |
|
372 | 339 |
},
|
373 | 340 |
customTransFunc: func(ut ut.Translator, fe validator.FieldError) string {
|
374 | 341 |
|
|
395 | 362 |
}
|
396 | 363 |
|
397 | 364 |
switch kind {
|
398 | |
case reflect.String:
|
399 | |
|
|
365 |
case reflect.Slice:
|
400 | 366 |
var c string
|
401 | |
|
402 | 367 |
err = fn()
|
403 | 368 |
if err != nil {
|
404 | 369 |
goto END
|
405 | 370 |
}
|
406 | 371 |
|
407 | |
c, err = ut.C("lt-string-character", f64, digits, ut.FmtNumber(f64, digits))
|
408 | |
if err != nil {
|
409 | |
goto END
|
410 | |
}
|
411 | |
|
412 | |
t, err = ut.T("lt-string", fe.Field(), c)
|
413 | |
|
414 | |
case reflect.Slice, reflect.Map, reflect.Array:
|
415 | |
var c string
|
416 | |
|
417 | |
err = fn()
|
418 | |
if err != nil {
|
419 | |
goto END
|
420 | |
}
|
421 | |
|
422 | |
c, err = ut.C("lt-items-item", f64, digits, ut.FmtNumber(f64, digits))
|
423 | |
if err != nil {
|
424 | |
goto END
|
425 | |
}
|
426 | |
|
427 | |
t, err = ut.T("lt-items", fe.Field(), c)
|
428 | |
|
429 | |
case reflect.Struct:
|
430 | |
if fe.Type() != reflect.TypeOf(time.Time{}) {
|
431 | |
err = fmt.Errorf("tag '%s' cannot be used on a struct type", fe.Tag())
|
432 | |
goto END
|
433 | |
}
|
434 | |
|
435 | |
t, err = ut.T("lt-datetime", fe.Field())
|
436 | |
|
|
372 |
c, err = ut.C("ne-items-item", f64, digits, ut.FmtNumber(f64, digits))
|
|
373 |
if err != nil {
|
|
374 |
goto END
|
|
375 |
}
|
|
376 |
|
|
377 |
t, err = ut.T("ne-items", fe.Field(), c)
|
|
378 |
break
|
437 | 379 |
default:
|
438 | |
err = fn()
|
439 | |
if err != nil {
|
440 | |
goto END
|
441 | |
}
|
442 | |
|
443 | |
t, err = ut.T("lt-number", fe.Field(), ut.FmtNumber(f64, digits))
|
|
380 |
t, err = ut.T("ne", fe.Field(), fe.Param())
|
444 | 381 |
}
|
445 | 382 |
|
446 | 383 |
END:
|
|
453 | 390 |
},
|
454 | 391 |
},
|
455 | 392 |
{
|
456 | |
tag: "lte",
|
|
393 |
tag: "lt",
|
457 | 394 |
customRegisFunc: func(ut ut.Translator) (err error) {
|
458 | 395 |
|
459 | |
if err = ut.Add("lte-string", "{0}の長さは最大でも{1}でなければなりません", false); err != nil {
|
460 | |
return
|
461 | |
}
|
462 | |
|
463 | |
if err = ut.AddCardinal("lte-string-character", "{0}文字", locales.PluralRuleOne, false); err != nil {
|
464 | |
return
|
465 | |
}
|
466 | |
|
467 | |
if err = ut.AddCardinal("lte-string-character", "{0}文字", locales.PluralRuleOther, false); err != nil {
|
468 | |
return
|
469 | |
}
|
470 | |
|
471 | |
if err = ut.Add("lte-number", "{0}は{1}かより小さくなければなりません", false); err != nil {
|
472 | |
return
|
473 | |
}
|
474 | |
|
475 | |
if err = ut.Add("lte-items", "{0}は最大でも{1}を含まなければなりません", false); err != nil {
|
476 | |
return
|
477 | |
}
|
478 | |
|
479 | |
if err = ut.AddCardinal("lte-items-item", "{0}つの項目", locales.PluralRuleOne, false); err != nil {
|
480 | |
return
|
481 | |
}
|
482 | |
|
483 | |
if err = ut.AddCardinal("lte-items-item", "{0}つの項目", locales.PluralRuleOther, false); err != nil {
|
484 | |
return
|
485 | |
}
|
486 | |
|
487 | |
if err = ut.Add("lte-datetime", "{0}は現時刻以前でなければなりません", false); err != nil {
|
|
396 |
if err = ut.Add("lt-string", "{0}の長さは{1}よりも少なくなければなりません", false); err != nil {
|
|
397 |
return
|
|
398 |
}
|
|
399 |
|
|
400 |
if err = ut.AddCardinal("lt-string-character", "{0}文字", locales.PluralRuleOne, false); err != nil {
|
|
401 |
return
|
|
402 |
}
|
|
403 |
|
|
404 |
if err = ut.AddCardinal("lt-string-character", "{0}文字", locales.PluralRuleOther, false); err != nil {
|
|
405 |
return
|
|
406 |
}
|
|
407 |
|
|
408 |
if err = ut.Add("lt-number", "{0}は{1}よりも小さくなければなりません", false); err != nil {
|
|
409 |
return
|
|
410 |
}
|
|
411 |
|
|
412 |
if err = ut.Add("lt-items", "{0}は{1}よりも少ない項目を含まなければなりません", false); err != nil {
|
|
413 |
return
|
|
414 |
}
|
|
415 |
|
|
416 |
if err = ut.AddCardinal("lt-items-item", "{0}つの項目", locales.PluralRuleOne, false); err != nil {
|
|
417 |
return
|
|
418 |
}
|
|
419 |
|
|
420 |
if err = ut.AddCardinal("lt-items-item", "{0}つの項目", locales.PluralRuleOther, false); err != nil {
|
|
421 |
return
|
|
422 |
}
|
|
423 |
|
|
424 |
if err = ut.Add("lt-datetime", "{0}は現時刻よりも前でなければなりません", false); err != nil {
|
488 | 425 |
return
|
489 | 426 |
}
|
490 | 427 |
|
491 | 428 |
return
|
|
429 |
|
492 | 430 |
},
|
493 | 431 |
customTransFunc: func(ut ut.Translator, fe validator.FieldError) string {
|
494 | 432 |
|
|
524 | 462 |
goto END
|
525 | 463 |
}
|
526 | 464 |
|
527 | |
c, err = ut.C("lte-string-character", f64, digits, ut.FmtNumber(f64, digits))
|
528 | |
if err != nil {
|
529 | |
goto END
|
530 | |
}
|
531 | |
|
532 | |
t, err = ut.T("lte-string", fe.Field(), c)
|
|
465 |
c, err = ut.C("lt-string-character", f64, digits, ut.FmtNumber(f64, digits))
|
|
466 |
if err != nil {
|
|
467 |
goto END
|
|
468 |
}
|
|
469 |
|
|
470 |
t, err = ut.T("lt-string", fe.Field(), c)
|
533 | 471 |
|
534 | 472 |
case reflect.Slice, reflect.Map, reflect.Array:
|
535 | 473 |
var c string
|
|
539 | 477 |
goto END
|
540 | 478 |
}
|
541 | 479 |
|
542 | |
c, err = ut.C("lte-items-item", f64, digits, ut.FmtNumber(f64, digits))
|
543 | |
if err != nil {
|
544 | |
goto END
|
545 | |
}
|
546 | |
|
547 | |
t, err = ut.T("lte-items", fe.Field(), c)
|
|
480 |
c, err = ut.C("lt-items-item", f64, digits, ut.FmtNumber(f64, digits))
|
|
481 |
if err != nil {
|
|
482 |
goto END
|
|
483 |
}
|
|
484 |
|
|
485 |
t, err = ut.T("lt-items", fe.Field(), c)
|
548 | 486 |
|
549 | 487 |
case reflect.Struct:
|
550 | 488 |
if fe.Type() != reflect.TypeOf(time.Time{}) {
|
|
552 | 490 |
goto END
|
553 | 491 |
}
|
554 | 492 |
|
555 | |
t, err = ut.T("lte-datetime", fe.Field())
|
|
493 |
t, err = ut.T("lt-datetime", fe.Field())
|
556 | 494 |
|
557 | 495 |
default:
|
558 | 496 |
err = fn()
|
|
560 | 498 |
goto END
|
561 | 499 |
}
|
562 | 500 |
|
563 | |
t, err = ut.T("lte-number", fe.Field(), ut.FmtNumber(f64, digits))
|
|
501 |
t, err = ut.T("lt-number", fe.Field(), ut.FmtNumber(f64, digits))
|
564 | 502 |
}
|
565 | 503 |
|
566 | 504 |
END:
|
|
573 | 511 |
},
|
574 | 512 |
},
|
575 | 513 |
{
|
576 | |
tag: "gt",
|
|
514 |
tag: "lte",
|
577 | 515 |
customRegisFunc: func(ut ut.Translator) (err error) {
|
578 | 516 |
|
579 | |
if err = ut.Add("gt-string", "{0}の長さは{1}よりも多くなければなりません", false); err != nil {
|
580 | |
return
|
581 | |
}
|
582 | |
|
583 | |
if err = ut.AddCardinal("gt-string-character", "{0}文字", locales.PluralRuleOne, false); err != nil {
|
584 | |
return
|
585 | |
}
|
586 | |
|
587 | |
if err = ut.AddCardinal("gt-string-character", "{0}文字", locales.PluralRuleOther, false); err != nil {
|
588 | |
return
|
589 | |
}
|
590 | |
|
591 | |
if err = ut.Add("gt-number", "{0}は{1}よりも大きくなければなりません", false); err != nil {
|
592 | |
return
|
593 | |
}
|
594 | |
|
595 | |
if err = ut.Add("gt-items", "{0}は{1}よりも多い項目を含まなければなりません", false); err != nil {
|
596 | |
return
|
597 | |
}
|
598 | |
|
599 | |
if err = ut.AddCardinal("gt-items-item", "{0}つの項目", locales.PluralRuleOne, false); err != nil {
|
600 | |
return
|
601 | |
}
|
602 | |
|
603 | |
if err = ut.AddCardinal("gt-items-item", "{0}つの項目", locales.PluralRuleOther, false); err != nil {
|
604 | |
return
|
605 | |
}
|
606 | |
|
607 | |
if err = ut.Add("gt-datetime", "{0}は現時刻よりも後でなければなりません", false); err != nil {
|
|
517 |
if err = ut.Add("lte-string", "{0}の長さは最大でも{1}でなければなりません", false); err != nil {
|
|
518 |
return
|
|
519 |
}
|
|
520 |
|
|
521 |
if err = ut.AddCardinal("lte-string-character", "{0}文字", locales.PluralRuleOne, false); err != nil {
|
|
522 |
return
|
|
523 |
}
|
|
524 |
|
|
525 |
if err = ut.AddCardinal("lte-string-character", "{0}文字", locales.PluralRuleOther, false); err != nil {
|
|
526 |
return
|
|
527 |
}
|
|
528 |
|
|
529 |
if err = ut.Add("lte-number", "{0}は{1}かより小さくなければなりません", false); err != nil {
|
|
530 |
return
|
|
531 |
}
|
|
532 |
|
|
533 |
if err = ut.Add("lte-items", "{0}は最大でも{1}を含まなければなりません", false); err != nil {
|
|
534 |
return
|
|
535 |
}
|
|
536 |
|
|
537 |
if err = ut.AddCardinal("lte-items-item", "{0}つの項目", locales.PluralRuleOne, false); err != nil {
|
|
538 |
return
|
|
539 |
}
|
|
540 |
|
|
541 |
if err = ut.AddCardinal("lte-items-item", "{0}つの項目", locales.PluralRuleOther, false); err != nil {
|
|
542 |
return
|
|
543 |
}
|
|
544 |
|
|
545 |
if err = ut.Add("lte-datetime", "{0}は現時刻以前でなければなりません", false); err != nil {
|
608 | 546 |
return
|
609 | 547 |
}
|
610 | 548 |
|
|
644 | 582 |
goto END
|
645 | 583 |
}
|
646 | 584 |
|
647 | |
c, err = ut.C("gt-string-character", f64, digits, ut.FmtNumber(f64, digits))
|
648 | |
if err != nil {
|
649 | |
goto END
|
650 | |
}
|
651 | |
|
652 | |
t, err = ut.T("gt-string", fe.Field(), c)
|
|
585 |
c, err = ut.C("lte-string-character", f64, digits, ut.FmtNumber(f64, digits))
|
|
586 |
if err != nil {
|
|
587 |
goto END
|
|
588 |
}
|
|
589 |
|
|
590 |
t, err = ut.T("lte-string", fe.Field(), c)
|
653 | 591 |
|
654 | 592 |
case reflect.Slice, reflect.Map, reflect.Array:
|
655 | 593 |
var c string
|
|
659 | 597 |
goto END
|
660 | 598 |
}
|
661 | 599 |
|
662 | |
c, err = ut.C("gt-items-item", f64, digits, ut.FmtNumber(f64, digits))
|
663 | |
if err != nil {
|
664 | |
goto END
|
665 | |
}
|
666 | |
|
667 | |
t, err = ut.T("gt-items", fe.Field(), c)
|
|
600 |
c, err = ut.C("lte-items-item", f64, digits, ut.FmtNumber(f64, digits))
|
|
601 |
if err != nil {
|
|
602 |
goto END
|
|
603 |
}
|
|
604 |
|
|
605 |
t, err = ut.T("lte-items", fe.Field(), c)
|
668 | 606 |
|
669 | 607 |
case reflect.Struct:
|
670 | 608 |
if fe.Type() != reflect.TypeOf(time.Time{}) {
|
|
672 | 610 |
goto END
|
673 | 611 |
}
|
674 | 612 |
|
675 | |
t, err = ut.T("gt-datetime", fe.Field())
|
|
613 |
t, err = ut.T("lte-datetime", fe.Field())
|
676 | 614 |
|
677 | 615 |
default:
|
678 | 616 |
err = fn()
|
|
680 | 618 |
goto END
|
681 | 619 |
}
|
682 | 620 |
|
683 | |
t, err = ut.T("gt-number", fe.Field(), ut.FmtNumber(f64, digits))
|
|
621 |
t, err = ut.T("lte-number", fe.Field(), ut.FmtNumber(f64, digits))
|
684 | 622 |
}
|
685 | 623 |
|
686 | 624 |
END:
|
|
693 | 631 |
},
|
694 | 632 |
},
|
695 | 633 |
{
|
696 | |
tag: "gte",
|
|
634 |
tag: "gt",
|
697 | 635 |
customRegisFunc: func(ut ut.Translator) (err error) {
|
698 | 636 |
|
699 | |
if err = ut.Add("gte-string", "{0}の長さは少なくとも{1}以上はなければなりません", false); err != nil {
|
700 | |
return
|
701 | |
}
|
702 | |
|
703 | |
if err = ut.AddCardinal("gte-string-character", "{0}文字", locales.PluralRuleOne, false); err != nil {
|
704 | |
return
|
705 | |
}
|
706 | |
|
707 | |
if err = ut.AddCardinal("gte-string-character", "{0}文字", locales.PluralRuleOther, false); err != nil {
|
708 | |
return
|
709 | |
}
|
710 | |
|
711 | |
if err = ut.Add("gte-number", "{0}は{1}かより大きくなければなりません", false); err != nil {
|
712 | |
return
|
713 | |
}
|
714 | |
|
715 | |
if err = ut.Add("gte-items", "{0}は少なくとも{1}を含まなければなりません", false); err != nil {
|
716 | |
return
|
717 | |
}
|
718 | |
|
719 | |
if err = ut.AddCardinal("gte-items-item", "{0}つの項目", locales.PluralRuleOne, false); err != nil {
|
720 | |
return
|
721 | |
}
|
722 | |
|
723 | |
if err = ut.AddCardinal("gte-items-item", "{0}つの項目", locales.PluralRuleOther, false); err != nil {
|
724 | |
return
|
725 | |
}
|
726 | |
|
727 | |
if err = ut.Add("gte-datetime", "{0}は現時刻以降でなければなりません", false); err != nil {
|
|
637 |
if err = ut.Add("gt-string", "{0}の長さは{1}よりも多くなければなりません", false); err != nil {
|
|
638 |
return
|
|
639 |
}
|
|
640 |
|
|
641 |
if err = ut.AddCardinal("gt-string-character", "{0}文字", locales.PluralRuleOne, false); err != nil {
|
|
642 |
return
|
|
643 |
}
|
|
644 |
|
|
645 |
if err = ut.AddCardinal("gt-string-character", "{0}文字", locales.PluralRuleOther, false); err != nil {
|
|
646 |
return
|
|
647 |
}
|
|
648 |
|
|
649 |
if err = ut.Add("gt-number", "{0}は{1}よりも大きくなければなりません", false); err != nil {
|
|
650 |
return
|
|
651 |
}
|
|
652 |
|
|
653 |
if err = ut.Add("gt-items", "{0}は{1}よりも多い項目を含まなければなりません", false); err != nil {
|
|
654 |
return
|
|
655 |
}
|
|
656 |
|
|
657 |
if err = ut.AddCardinal("gt-items-item", "{0}つの項目", locales.PluralRuleOne, false); err != nil {
|
|
658 |
return
|
|
659 |
}
|
|
660 |
|
|
661 |
if err = ut.AddCardinal("gt-items-item", "{0}つの項目", locales.PluralRuleOther, false); err != nil {
|
|
662 |
return
|
|
663 |
}
|
|
664 |
|
|
665 |
if err = ut.Add("gt-datetime", "{0}は現時刻よりも後でなければなりません", false); err != nil {
|
728 | 666 |
return
|
729 | 667 |
}
|
730 | 668 |
|
|
764 | 702 |
goto END
|
765 | 703 |
}
|
766 | 704 |
|
|
705 |
c, err = ut.C("gt-string-character", f64, digits, ut.FmtNumber(f64, digits))
|
|
706 |
if err != nil {
|
|
707 |
goto END
|
|
708 |
}
|
|
709 |
|
|
710 |
t, err = ut.T("gt-string", fe.Field(), c)
|
|
711 |
|
|
712 |
case reflect.Slice, reflect.Map, reflect.Array:
|
|
713 |
var c string
|
|
714 |
|
|
715 |
err = fn()
|
|
716 |
if err != nil {
|
|
717 |
goto END
|
|
718 |
}
|
|
719 |
|
|
720 |
c, err = ut.C("gt-items-item", f64, digits, ut.FmtNumber(f64, digits))
|
|
721 |
if err != nil {
|
|
722 |
goto END
|
|
723 |
}
|
|
724 |
|
|
725 |
t, err = ut.T("gt-items", fe.Field(), c)
|
|
726 |
|
|
727 |
case reflect.Struct:
|
|
728 |
if fe.Type() != reflect.TypeOf(time.Time{}) {
|
|
729 |
err = fmt.Errorf("tag '%s' cannot be used on a struct type", fe.Tag())
|
|
730 |
goto END
|
|
731 |
}
|
|
732 |
|
|
733 |
t, err = ut.T("gt-datetime", fe.Field())
|
|
734 |
|
|
735 |
default:
|
|
736 |
err = fn()
|
|
737 |
if err != nil {
|
|
738 |
goto END
|
|
739 |
}
|
|
740 |
|
|
741 |
t, err = ut.T("gt-number", fe.Field(), ut.FmtNumber(f64, digits))
|
|
742 |
}
|
|
743 |
|
|
744 |
END:
|
|
745 |
if err != nil {
|
|
746 |
fmt.Printf("warning: error translating FieldError: %s", err)
|
|
747 |
return fe.(error).Error()
|
|
748 |
}
|
|
749 |
|
|
750 |
return t
|
|
751 |
},
|
|
752 |
},
|
|
753 |
{
|
|
754 |
tag: "gte",
|
|
755 |
customRegisFunc: func(ut ut.Translator) (err error) {
|
|
756 |
|
|
757 |
if err = ut.Add("gte-string", "{0}の長さは少なくとも{1}以上はなければなりません", false); err != nil {
|
|
758 |
return
|
|
759 |
}
|
|
760 |
|
|
761 |
if err = ut.AddCardinal("gte-string-character", "{0}文字", locales.PluralRuleOne, false); err != nil {
|
|
762 |
return
|
|
763 |
}
|
|
764 |
|
|
765 |
if err = ut.AddCardinal("gte-string-character", "{0}文字", locales.PluralRuleOther, false); err != nil {
|
|
766 |
return
|
|
767 |
}
|
|
768 |
|
|
769 |
if err = ut.Add("gte-number", "{0}は{1}かより大きくなければなりません", false); err != nil {
|
|
770 |
return
|
|
771 |
}
|
|
772 |
|
|
773 |
if err = ut.Add("gte-items", "{0}は少なくとも{1}を含まなければなりません", false); err != nil {
|
|
774 |
return
|
|
775 |
}
|
|
776 |
|
|
777 |
if err = ut.AddCardinal("gte-items-item", "{0}つの項目", locales.PluralRuleOne, false); err != nil {
|
|
778 |
return
|
|
779 |
}
|
|
780 |
|
|
781 |
if err = ut.AddCardinal("gte-items-item", "{0}つの項目", locales.PluralRuleOther, false); err != nil {
|
|
782 |
return
|
|
783 |
}
|
|
784 |
|
|
785 |
if err = ut.Add("gte-datetime", "{0}は現時刻以降でなければなりません", false); err != nil {
|
|
786 |
return
|
|
787 |
}
|
|
788 |
|
|
789 |
return
|
|
790 |
},
|
|
791 |
customTransFunc: func(ut ut.Translator, fe validator.FieldError) string {
|
|
792 |
|
|
793 |
var err error
|
|
794 |
var t string
|
|
795 |
var f64 float64
|
|
796 |
var digits uint64
|
|
797 |
var kind reflect.Kind
|
|
798 |
|
|
799 |
fn := func() (err error) {
|
|
800 |
|
|
801 |
if idx := strings.Index(fe.Param(), "."); idx != -1 {
|
|
802 |
digits = uint64(len(fe.Param()[idx+1:]))
|
|
803 |
}
|
|
804 |
|
|
805 |
f64, err = strconv.ParseFloat(fe.Param(), 64)
|
|
806 |
|
|
807 |
return
|
|
808 |
}
|
|
809 |
|
|
810 |
kind = fe.Kind()
|
|
811 |
if kind == reflect.Ptr {
|
|
812 |
kind = fe.Type().Elem().Kind()
|
|
813 |
}
|
|
814 |
|
|
815 |
switch kind {
|
|
816 |
case reflect.String:
|
|
817 |
|
|
818 |
var c string
|
|
819 |
|
|
820 |
err = fn()
|
|
821 |
if err != nil {
|
|
822 |
goto END
|
|
823 |
}
|
|
824 |
|
767 | 825 |
c, err = ut.C("gte-string-character", f64, digits, ut.FmtNumber(f64, digits))
|
768 | 826 |
if err != nil {
|
769 | 827 |
goto END
|