Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/third_party/rust/chardetng/src/   (Firefox Browser Version 136.0.1©)  Datei vom 10.2.2025 mit Größe 11 kB image not shown  

Quelle  tld.rs

  Sprache: Rust
 

/* Any copyright is dedicated to the Public Domain.
 * https://creativecommons.org/publicdomain/zero/1.0/ */


#[derive(Clone, Copy, Debug, PartialEq)]
pub enum Tld {
    CentralWindows,
    Cyrillic,
    Western,
    Greek,
    TurkishAzeri,
    Hebrew,
    Arabic,
    Baltic,
    Vietnamese,
    Thai,
    Simplified,
    Traditional,
    Japanese,
    Korean,
    SimplifiedTraditional,
    TraditionalSimplified,
    CentralIso,
    IcelandicFaroese,
    WesternCyrillic,
    CentralCyrillic,
    WesternArabic,
    Generic,
    Eu,
}

pub fn classify_tld(tld: &[u8]) -> Tld {
    if tld.len() == 2 {
        let key = [tld[0], tld[1]];
        if let Ok(i) = TWO_LETTER_KEYS.binary_search(&key) {
            TWO_LETTER_VALUES[i]
        } else {
            Tld::Western
        }
    } else if tld.len() == 3 {
        match tld {
            b"edu" | b"gov" | b"mil" => Tld::Western,
            _ => Tld::Generic,
        }
    } else if tld.starts_with(b"xn--") && tld.len() >= 8 {
        // It's unclear is including the IDNs here is a good idea.
        // Clearly, they are an anachronism relative to the era
        // of legacy encodings. The idea, consistent with previous
        // approach in Firefox is to address the case where one
        // of these TLDs is configured as an alternative name for
        // a server that also serves the same content from a
        // two-ASCII-letter TLD. This makes the detection result
        // the same either way even though otherwise this thing
        // does not make much sense.
        if let Ok(i) = PUNYCODE_KEYS.binary_search(&&tld[4..]) {
            PUNYCODE_VALUES[i]
        } else {
            Tld::Generic
        }
    } else {
        Tld::Generic
    }
}

static TWO_LETTER_VALUES: [Tld; 87] = [
    Tld::Generic,               // ac
    Tld::Arabic,                // ae
    Tld::Arabic,                // af
    Tld::Generic,               // ai
    Tld::WesternCyrillic,       // am
    Tld::TurkishAzeri,          // az
    Tld::CentralCyrillic,       // ba
    Tld::Cyrillic,              // bg
    Tld::Arabic,                // bh
    Tld::Cyrillic,              // by
    Tld::Generic,               // bz
    Tld::Generic,               // cb
    Tld::Generic,               // cc
    Tld::Generic,               // cd
    Tld::Simplified,            // cn
    Tld::Generic,               // cx
    Tld::Greek,                 // cy
    Tld::CentralWindows,        // cz
    Tld::Generic,               // dj
    Tld::Arabic,                // dz
    Tld::Arabic,                // eg
    Tld::Eu,                    // eu
    Tld::Generic,               // fm
    Tld::IcelandicFaroese,      // fo
    Tld::WesternCyrillic,       // ge
    Tld::Greek,                 // gr
    Tld::TraditionalSimplified, // hk
    Tld::CentralWindows,        // hr
    Tld::CentralIso,            // hu
    Tld::Hebrew,                // il
    Tld::Generic,               // in
    Tld::Arabic,                // iq
    Tld::Arabic,                // ir
    Tld::IcelandicFaroese,      // is
    Tld::Arabic,                // jo
    Tld::Japanese,              // jp
    Tld::Cyrillic,              // kg
    Tld::Korean,                // kp
    Tld::Korean,                // kr
    Tld::Arabic,                // kw
    Tld::Cyrillic,              // kz
    Tld::Generic,               // la
    Tld::Arabic,                // lb
    Tld::Baltic,                // lt
    Tld::Baltic,                // lv
    Tld::Arabic,                // ly
    Tld::Arabic,                // ma
    Tld::Cyrillic,              // md
    Tld::Generic,               // me
    Tld::Cyrillic,              // mk
    Tld::Cyrillic,              // mn
    Tld::TraditionalSimplified, // mo
    Tld::Arabic,                // mr
    Tld::Generic,               // ms
    Tld::WesternArabic,         // my
    Tld::Generic,               // nu
    Tld::Arabic,                // om
    Tld::Arabic,                // pk
    Tld::CentralIso,            // pl
    Tld::Arabic,                // ps
    Tld::Arabic,                // qa
    Tld::CentralWindows,        // ro
    Tld::Cyrillic,              // rs
    Tld::Cyrillic,              // ru
    Tld::Arabic,                // sa
    Tld::Arabic,                // sd
    Tld::SimplifiedTraditional, // sg
    Tld::CentralIso,            // si
    Tld::CentralWindows,        // sk
    Tld::Generic,               // st
    Tld::Cyrillic,              // su
    Tld::Arabic,                // sy
    Tld::Thai,                  // th
    Tld::Cyrillic,              // tj
    Tld::Generic,               // tk
    Tld::Cyrillic,              // tm
    Tld::Arabic,                // tn
    Tld::Generic,               // to
    Tld::TurkishAzeri,          // tr
    Tld::Generic,               // tv
    Tld::Traditional,           // tw
    Tld::Cyrillic,              // ua
    Tld::Cyrillic,              // uz
    Tld::Generic,               // vc
    Tld::Vietnamese,            // vn
    Tld::Generic,               // vu
    Tld::Arabic,                // ye
];

static TWO_LETTER_KEYS: [[u8; 2]; 87] = [
    [b'a', b'c'], // Generic
    [b'a', b'e'], // Arabic
    [b'a', b'f'], // Arabic
    [b'a', b'i'], // Generic
    [b'a', b'm'], // WesternCyrillic
    [b'a', b'z'], // TurkishAzeri
    [b'b', b'a'], // CentralCyrillic
    [b'b', b'g'], // Cyrillic
    [b'b', b'h'], // Arabic
    [b'b', b'y'], // Cyrillic
    [b'b', b'z'], // Generic
    [b'c', b'b'], // Generic
    [b'c', b'c'], // Generic
    [b'c', b'd'], // Generic
    [b'c', b'n'], // Simplified
    [b'c', b'x'], // Generic
    [b'c', b'y'], // Greek
    [b'c', b'z'], // CentralWindows
    [b'd', b'j'], // Generic
    [b'd', b'z'], // Arabic
    [b'e', b'g'], // Arabic
    [b'e', b'u'], // Eu
    [b'f', b'm'], // Generic
    [b'f', b'o'], // IcelandicFaroese
    [b'g', b'e'], // WesternCyrillic
    [b'g', b'r'], // Greek
    [b'h', b'k'], // TraditionalSimplified
    [b'h', b'r'], // CentralWindows
    [b'h', b'u'], // CentralIso
    [b'i', b'l'], // Hebrew
    [b'i', b'n'], // Generic
    [b'i', b'q'], // Arabic
    [b'i', b'r'], // Arabic
    [b'i', b's'], // IcelandicFaroese
    [b'j', b'o'], // Arabic
    [b'j', b'p'], // Japanese
    [b'k', b'g'], // Cyrillic
    [b'k', b'p'], // Korean
    [b'k', b'r'], // Korean
    [b'k', b'w'], // Arabic
    [b'k', b'z'], // Cyrillic
    [b'l', b'a'], // Generic
    [b'l', b'b'], // Arabic
    [b'l', b't'], // Baltic
    [b'l', b'v'], // Baltic
    [b'l', b'y'], // Arabic
    [b'm', b'a'], // Arabic
    [b'm', b'd'], // Cyrillic
    [b'm', b'e'], // Generic
    [b'm', b'k'], // Cyrillic
    [b'm', b'n'], // Cyrillic
    [b'm', b'o'], // TraditionalSimplified
    [b'm', b'r'], // Arabic
    [b'm', b's'], // Generic
    [b'm', b'y'], // WesternArabic
    [b'n', b'u'], // Generic
    [b'o', b'm'], // Arabic
    [b'p', b'k'], // Arabic
    [b'p', b'l'], // CentralIso
    [b'p', b's'], // Arabic
    [b'q', b'a'], // Arabic
    [b'r', b'o'], // CentralWindows
    [b'r', b's'], // Cyrillic
    [b'r', b'u'], // Cyrillic
    [b's', b'a'], // Arabic
    [b's', b'd'], // Arabic
    [b's', b'g'], // SimplifiedTraditional
    [b's', b'i'], // CentralIso
    [b's', b'k'], // CentralWindows
    [b's', b't'], // Generic
    [b's', b'u'], // Cyrillic
    [b's', b'y'], // Arabic
    [b't', b'h'], // Thai
    [b't', b'j'], // Cyrillic
    [b't', b'k'], // Generic
    [b't', b'm'], // Cyrillic
    [b't', b'n'], // Arabic
    [b't', b'o'], // Generic
    [b't', b'r'], // TurkishAzeri
    [b't', b'v'], // Generic
    [b't', b'w'], // Traditional
    [b'u', b'a'], // Cyrillic
    [b'u', b'z'], // Cyrillic
    [b'v', b'c'], // Generic
    [b'v', b'n'], // Vietnamese
    [b'v', b'u'], // Generic
    [b'y', b'e'], // Arabic
];

static PUNYCODE_KEYS: [&'static [u8]; 46] = [
    b"3e0b707e",           // Korean
    b"54b7fta0cc",         // Western
    b"80ao21a",            // Cyrillic
    b"90a3ac",             // Cyrillic
    b"90ae",               // Cyrillic
    b"90ais",              // Cyrillic
    b"clchc0ea0b2g2a9gcd"// SimplifiedTraditional
    b"d1alf",              // Cyrillic
    b"e1a4c",              // Eu
    b"fiqs8S",             // Simplified
    b"fiqz9S",             // Simplified
    b"fzc2c9e2c",          // Western
    b"j1amh",              // Cyrillic
    b"j6w193g",            // TraditionalSimplified
    b"kprw13d",            // Traditional
    b"kpry57d",            // Traditional
    b"l1acc",              // Cyrillic
    b"lgbbat1ad8j",        // Arabic
    b"mgb2ddes",           // Arabic
    b"mgb9awbf",           // Arabic
    b"mgba3a4f16a",        // Arabic
    b"mgbaam7a8h",         // Arabic
    b"mgbah1a3hjkrd",      // Arabic
    b"mgbai9azgqp6j",      // Arabic
    b"mgbayh7gpa",         // Arabic
    b"mgbc0a9azcg",        // Arabic
    b"mgbcpq6gpa1a",       // Arabic
    b"mgberp4a5d4ar",      // Arabic
    b"mgbpl2fh",           // Arabic
    b"mgbtx2b",            // Arabic
    b"mgbx4cd0ab",         // WesternArabic
    b"mix891f",            // TraditionalSimplified
    b"node",               // WesternCyrillic
    b"o3cw4h",             // Thai
    b"ogbpf8fl",           // Arabic
    b"p1ai",               // Cyrillic
    b"pgbs0dh",            // Arabic
    b"q7ce6a",             // Arabic
    b"qxa6a",              // Eu
    b"qxam",               // Greek
    b"wgbh1c",             // Arabic
    b"wgbl6a",             // Arabic
    b"xkc2al3hye2a",       // Western
    b"y9a3aq",             // WesternCyrillic
    b"yfro4i67o",          // SimplifiedTraditional
    b"ygbi2ammx",          // Arabic
];

static PUNYCODE_VALUES: [Tld; 46] = [
    Tld::Korean,                // 3e0b707e
    Tld::Western,               // 54b7fta0cc
    Tld::Cyrillic,              // 80ao21a
    Tld::Cyrillic,              // 90a3ac
    Tld::Cyrillic,              // 90ae
    Tld::Cyrillic,              // 90ais
    Tld::SimplifiedTraditional, // clchc0ea0b2g2a9gcd
    Tld::Cyrillic,              // d1alf
    Tld::Eu,                    // e1a4c
    Tld::Simplified,            // fiqs8S
    Tld::Simplified,            // fiqz9S
    Tld::Western,               // fzc2c9e2c
    Tld::Cyrillic,              // j1amh
    Tld::TraditionalSimplified, // j6w193g
    Tld::Traditional,           // kprw13d
    Tld::Traditional,           // kpry57d
    Tld::Cyrillic,              // l1acc
    Tld::Arabic,                // lgbbat1ad8j
    Tld::Arabic,                // mgb2ddes
    Tld::Arabic,                // mgb9awbf
    Tld::Arabic,                // mgba3a4f16a
    Tld::Arabic,                // mgbaam7a8h
    Tld::Arabic,                // mgbah1a3hjkrd
    Tld::Arabic,                // mgbai9azgqp6j
    Tld::Arabic,                // mgbayh7gpa
    Tld::Arabic,                // mgbc0a9azcg
    Tld::Arabic,                // mgbcpq6gpa1a
    Tld::Arabic,                // mgberp4a5d4ar
    Tld::Arabic,                // mgbpl2fh
    Tld::Arabic,                // mgbtx2b
    Tld::WesternArabic,         // mgbx4cd0ab
    Tld::TraditionalSimplified, // mix891f
    Tld::WesternCyrillic,       // node
    Tld::Thai,                  // o3cw4h
    Tld::Arabic,                // ogbpf8fl
    Tld::Cyrillic,              // p1ai
    Tld::Arabic,                // pgbs0dh
    Tld::Arabic,                // q7ce6a
    Tld::Eu,                    // qxa6a
    Tld::Greek,                 // qxam
    Tld::Arabic,                // wgbh1c
    Tld::Arabic,                // wgbl6a
    Tld::Western,               // xkc2al3hye2a
    Tld::WesternCyrillic,       // y9a3aq
    Tld::SimplifiedTraditional, // yfro4i67o
    Tld::Arabic,                // ygbi2ammx
];

Messung V0.5 in Prozent
C=72 H=92 G=82

¤ Dauer der Verarbeitung: 0.12 Sekunden  (vorverarbeitet am  2026-06-19) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.