# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2018"
name = "unicode-bidi"
version = "0.3.12"
authors = ["The Servo Project Developers"]
exclude = [
    "benches/**",
    "data/**",
    "examples/**",
    "tests/**",
    "tools/**",
]
description = "Implementation of the Unicode Bidirectional Algorithm"
documentation = "https://docs.rs/unicode-bidi/"
readme = "README.md"
keywords = [
    "rtl",
    "unicode",
    "text",
    "layout",
    "bidi",
]
categories = [
    "no-std",
    "encoding",
    "text-processing",
]
license = "MIT OR Apache-2.0"
repository = "https://github.com/servo/unicode-bidi"

[lib]
name = "unicode_bidi"

[[test]]
name = "conformance_tests"
path = "tests/conformance_tests.rs"
required-features = ["hardcoded-data"]

[dependencies.flame]
version = "0.2"
optional = true

[dependencies.flamer]
version = "0.4"
optional = true

[dependencies.serde]
version = ">=0.8, <2.0"
features = ["derive"]
optional = true
default-features = false

[dev-dependencies.serde_test]
version = ">=0.8, <2.0"

[features]
bench_it = []
default = [
    "std",
    "hardcoded-data",
]
flame_it = [
    "flame",
    "flamer",
]
hardcoded-data = []
std = []
unstable = []
with_serde = ["serde"]

[badges.appveyor]
repository = "servo/unicode-bidi"
