Scott Baker | 555307d | 2019-11-04 08:58:01 -0800 | [diff] [blame] | 1 | // Copyright 2015 The Go Authors. All rights reserved. |
| 2 | // Use of this source code is governed by a BSD-style |
| 3 | // license that can be found in the LICENSE file. |
| 4 | |
| 5 | // +build ignore |
| 6 | |
| 7 | package main |
| 8 | |
| 9 | import ( |
| 10 | "unicode" |
| 11 | |
| 12 | "golang.org/x/text/internal/gen" |
| 13 | "golang.org/x/text/internal/ucd" |
| 14 | "golang.org/x/text/unicode/rangetable" |
| 15 | ) |
| 16 | |
| 17 | // These tables are hand-extracted from: |
| 18 | // https://www.unicode.org/Public/8.0.0/ucd/extracted/DerivedBidiClass.txt |
| 19 | func visitDefaults(fn func(r rune, c Class)) { |
| 20 | // first write default values for ranges listed above. |
| 21 | visitRunes(fn, AL, []rune{ |
| 22 | 0x0600, 0x07BF, // Arabic |
| 23 | 0x08A0, 0x08FF, // Arabic Extended-A |
| 24 | 0xFB50, 0xFDCF, // Arabic Presentation Forms |
| 25 | 0xFDF0, 0xFDFF, |
| 26 | 0xFE70, 0xFEFF, |
| 27 | 0x0001EE00, 0x0001EEFF, // Arabic Mathematical Alpha Symbols |
| 28 | }) |
| 29 | visitRunes(fn, R, []rune{ |
| 30 | 0x0590, 0x05FF, // Hebrew |
| 31 | 0x07C0, 0x089F, // Nko et al. |
| 32 | 0xFB1D, 0xFB4F, |
| 33 | 0x00010800, 0x00010FFF, // Cypriot Syllabary et. al. |
| 34 | 0x0001E800, 0x0001EDFF, |
| 35 | 0x0001EF00, 0x0001EFFF, |
| 36 | }) |
| 37 | visitRunes(fn, ET, []rune{ // European Terminator |
| 38 | 0x20A0, 0x20Cf, // Currency symbols |
| 39 | }) |
| 40 | rangetable.Visit(unicode.Noncharacter_Code_Point, func(r rune) { |
| 41 | fn(r, BN) // Boundary Neutral |
| 42 | }) |
| 43 | ucd.Parse(gen.OpenUCDFile("DerivedCoreProperties.txt"), func(p *ucd.Parser) { |
| 44 | if p.String(1) == "Default_Ignorable_Code_Point" { |
| 45 | fn(p.Rune(0), BN) // Boundary Neutral |
| 46 | } |
| 47 | }) |
| 48 | } |
| 49 | |
| 50 | func visitRunes(fn func(r rune, c Class), c Class, runes []rune) { |
| 51 | for i := 0; i < len(runes); i += 2 { |
| 52 | lo, hi := runes[i], runes[i+1] |
| 53 | for j := lo; j <= hi; j++ { |
| 54 | fn(j, c) |
| 55 | } |
| 56 | } |
| 57 | } |