sv.go 782 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. // SPDX-FileCopyrightText: Adam Evyčędo
  2. //
  3. // SPDX-License-Identifier: AGPL-3.0-or-later
  4. package transformers
  5. import (
  6. "golang.org/x/text/transform"
  7. )
  8. //nolint:gochecknoglobals
  9. var TransformerSV transform.Transformer = ContextualLatiniser{
  10. Replace: func(previous, r rune) []rune {
  11. switch r {
  12. case 'ö':
  13. if previous == ZWJ {
  14. return []rune{'o', 'e'}
  15. }
  16. return []rune{r}
  17. case 'Ö':
  18. if previous == ZWJ {
  19. return []rune{'O', 'e'}
  20. }
  21. return []rune{r}
  22. case 'ä':
  23. if previous == ZWJ {
  24. return []rune{'a', 'e'}
  25. }
  26. return []rune{r}
  27. case 'Ä':
  28. if previous == ZWJ {
  29. return []rune{'A', 'e'}
  30. }
  31. return []rune{r}
  32. case 'å':
  33. return []rune{'a', 'a'}
  34. case 'Å':
  35. return []rune{'A', 'a'}
  36. default:
  37. return []rune{r}
  38. }
  39. },
  40. }