country

package
v2.5.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 9, 2023 License: MIT Imports: 5 Imported by: 0

Documentation

Overview

Package country provides a data type for ISO-3166, and a list of countries from Unicode CLDR.

Example
package main

import (
	"fmt"

	"github.com/blueboardio/cldr/v2/country"
)

func main() {
	FR := country.Code("FR")
	fmt.Println(FR.Emoji(), country.Countries[FR].Name)

}
Output:

🇫🇷 France

Index

Examples

Constants

This section is empty.

Variables

View Source
var Countries = map[Code]*Info{}/* 260 elements not displayed */

Countries is the list of countries from Unicode CLDR.

Source: cldr-common-44.0.zip

The following codes are removed:

QO (duplicate of UM)
ZZ (unknown)
View Source
var ErrInvalidCountryCode = errors.New("invalid country code")
View Source
var ErrInvalidSet = errors.New("invalid countries set")

Functions

This section is empty.

Types

type Code

type Code string

Code represents an ISO 3166 country code: 2 ASCII letters, uppercase. See https://www.iso.org/fr/iso-3166-country-codes.html.

func (Code) Emoji

func (cc Code) Emoji() string

Emoji converts "FR" to "🇫🇷".

Example
package main

import (
	"fmt"

	"github.com/blueboardio/cldr/v2/country"
)

func main() {
	fmt.Println(country.Code("FR").Emoji())
}
Output:

🇫🇷

func (Code) EmojiRunes added in v2.2.0

func (cc Code) EmojiRunes() (rune, rune)

EmojiRunes returns the 2 runes that represents the emoji for the country code.

func (Code) IsValid

func (cc Code) IsValid() bool

IsValid returns true if cc is a known country code. See Countries.

func (Code) MarshalText

func (cc Code) MarshalText() ([]byte, error)

MarshalText implements encoding.TextMarshaler.

func (*Code) Scan

func (cc *Code) Scan(src interface{}) error

Scan implements database/sql.Scanner.

func (*Code) Set

func (cc *Code) Set(src string) error

Set implements flag.Value.

Set accepts both "FR" and "🇫🇷" (emoji flag).

Example
package main

import (
	"fmt"

	"github.com/blueboardio/cldr/v2/country"
)

var reservedCodes []string

func init() {
	reservedCodes = []string{"AA", "ZZ"}
	c := [2]byte{}
	cs := c[:]

	c[0] = 'Q'
	for b := byte('M'); b <= 'Z'; b++ {
		c[1] = b
		reservedCodes = append(reservedCodes, string(cs))
	}
	c[0] = 'X'
	for b := byte('A'); b <= 'Z'; b++ {
		if b == 'K' {
			continue
		}
		c[1] = b
		reservedCodes = append(reservedCodes, string(cs))
	}
}

func main() {
	var cc country.Code
	_ = cc.Set("🇫🇷")
	fmt.Println(cc)
	_ = cc.Set("GB")
	fmt.Println(cc.Emoji())
}
Output:

FR
🇬🇧

func (Code) String

func (cc Code) String() string

String implements fmt.Stringer.

func (*Code) UnmarshalText

func (cc *Code) UnmarshalText(src []byte) error

UnmarshalText implements encoding.TextUnmarshaler.

func (Code) Value

func (cc Code) Value() (driver.Value, error)

Value implements database/sql/driver.Valuer.

type Emoji

type Emoji struct {
	Code
}

Emoji wraps a country Code to have an external representation as a flag emoji.

"FR" => "🇫🇷"

func (Emoji) MarshalText

func (cc Emoji) MarshalText() ([]byte, error)

MarshalText implements encoding.TextMarshaler.

func (Emoji) Runes added in v2.2.0

func (cc Emoji) Runes() (rune, rune)

Runes returns the 2 runes that represents the emoji for the country code.

func (*Emoji) Set

func (cc *Emoji) Set(s string) error

Set forbids the use of Emoji as a flag.Value.

func (Emoji) String

func (cc Emoji) String() string

String implements fmt.Stringer.

Example
package main

import (
	"fmt"

	"github.com/blueboardio/cldr/v2/country"
)

func main() {
	fmt.Println(country.Emoji{"FR"}.Emoji())
}
Output:

🇫🇷

func (*Emoji) UnmarshalText

func (cc *Emoji) UnmarshalText(b []byte) error

UnmarshalText forbids the use of Emoji as an encoding.TextUnmarshaler.

type Info

type Info struct {
	Code       Code
	Name       string
	Currencies []currency.Code
}

type Set

type Set []Code

Set represents a set of country codes. A set can be used to match a country code against the set. The zero value (nil) matches any country.

The JSON representation (MarshalJSON) is an array of strings or null. The text representation (MarshalText) is codes separated by comma. The string representation (.String) is the text representation but with "*" if the set is empty.

func Any

func Any() Set

Any returns a Set where .MatchesAny() == true

func (*Set) Add

func (cs *Set) Add(c Code)

Add appends c if not already contained in the set.

func (Set) Contains

func (cs Set) Contains(c Code) bool

Contains returns true if cs contains c.

func (Set) Copy

func (cs Set) Copy() Set

Copy returns an independent copy.

func (Set) Currencies

func (cs Set) Currencies() currency.Set

Currencies returns the set of currencies of the countries set.

func (*Set) Filter

func (cs *Set) Filter(filter Set)

Filter removes countries that are not Matched by filter.

The filter is assumed to not contain duplicates. An nil filter is a no-op (matches anything). Order is preserved.

func (Set) HasDuplicates

func (cs Set) HasDuplicates() bool

HasDuplicates checks if cs contains duplicates.

func (Set) Len

func (cs Set) Len() int

Len implements sort.Interface.

func (Set) Less

func (cs Set) Less(i, j int) bool

Less implements sort.Interface.

func (Set) MarshalJSON

func (cs Set) MarshalJSON() ([]byte, error)

MarshalJSON implements encoding/json.Marshaler.

func (Set) MarshalText

func (cs Set) MarshalText() ([]byte, error)

MarshalText implements encoding.TextMarshaler.

func (Set) Matches

func (cs Set) Matches(c Code) bool

Matches returns true if the set is empty (matches anything) or contains c.

Same as Contains except for the empty set case which return true for any country.

func (Set) MatchesAny

func (cs Set) MatchesAny() bool

MatchesAny returns true if the set is empty.

func (*Set) Remove

func (cs *Set) Remove(exclude Set)

Remove removes from cs the intersection of the two sets. If exclude is empty nothing is removed. Order is preserved.

func (*Set) RemoveDuplicates

func (cs *Set) RemoveDuplicates()

RemoveDuplicates remove duplicates. Order is preserved. In case of a duplicate the first one is kept.

func (*Set) Scan

func (cs *Set) Scan(src interface{}) error

func (*Set) Set

func (cs *Set) Set(src string) error

Set implements flag.Value.

func (Set) String

func (cs Set) String() string

String implements fmt.Stringer.

func (Set) Swap

func (cs Set) Swap(i, j int)

Swap implements sort.Interface.

func (*Set) UnmarshalJSON

func (cs *Set) UnmarshalJSON(b []byte) error

UnmarshalJSON implements encoding/json.Unmarshaler.

func (*Set) UnmarshalText

func (cs *Set) UnmarshalText(b []byte) error

UnmarshalText implements encoding.TextUnmarshaler.

func (Set) Value

func (cs Set) Value() (driver.Value, error)

Value() implements database/sql/driver.Valuer.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL