...

Source file src/golang.org/x/text/unicode/bidi/gen_ranges.go

Documentation: golang.org/x/text/unicode/bidi

     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  //go: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  }
    58  

View as plain text