github.com/elves/elvish@v0.15.0/website/cmd/runefreq/main.go (about)

     1  package main
     2  
     3  import (
     4  	"bufio"
     5  	"fmt"
     6  	"io"
     7  	"log"
     8  	"os"
     9  	"sort"
    10  )
    11  
    12  func main() {
    13  	freq := map[int]int{}
    14  	rd := bufio.NewReader(os.Stdin)
    15  	for {
    16  		r, _, err := rd.ReadRune()
    17  		if err == io.EOF {
    18  			break
    19  		} else if err != nil {
    20  			log.Fatal(err)
    21  		}
    22  		if r > 0x7f {
    23  			freq[int(r)]++
    24  		}
    25  	}
    26  	var keys []int
    27  	for k := range freq {
    28  		keys = append(keys, k)
    29  	}
    30  	sort.Ints(keys)
    31  	for _, k := range keys {
    32  		fmt.Printf("%d U+%04d %s\n", freq[k], k, string(rune(k)))
    33  	}
    34  }