summaryrefslogtreecommitdiffstats
path: root/vendor/unic-langid-macros-impl
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:02:58 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:02:58 +0000
commit698f8c2f01ea549d77d7dc3338a12e04c11057b9 (patch)
tree173a775858bd501c378080a10dca74132f05bc50 /vendor/unic-langid-macros-impl
parentInitial commit. (diff)
downloadrustc-698f8c2f01ea549d77d7dc3338a12e04c11057b9.tar.xz
rustc-698f8c2f01ea549d77d7dc3338a12e04c11057b9.zip
Adding upstream version 1.64.0+dfsg1.upstream/1.64.0+dfsg1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'vendor/unic-langid-macros-impl')
-rw-r--r--vendor/unic-langid-macros-impl/.cargo-checksum.json1
-rw-r--r--vendor/unic-langid-macros-impl/Cargo.toml39
-rw-r--r--vendor/unic-langid-macros-impl/README.md1
-rw-r--r--vendor/unic-langid-macros-impl/src/lib.rs108
4 files changed, 149 insertions, 0 deletions
diff --git a/vendor/unic-langid-macros-impl/.cargo-checksum.json b/vendor/unic-langid-macros-impl/.cargo-checksum.json
new file mode 100644
index 000000000..04f0d8d51
--- /dev/null
+++ b/vendor/unic-langid-macros-impl/.cargo-checksum.json
@@ -0,0 +1 @@
+{"files":{"Cargo.toml":"022f8b86153c9050d55f9f1e3877542e6840e9a0cfcb67cc523f1f2089c2b1b7","README.md":"5040022258561c990431417a73521d15ace408b70329a97bc61da94914ed1a75","src/lib.rs":"83231cab2e2ceb3aebd4ec6f103a8ff98d1b52b407e7c9d6c66fba911637379d"},"package":"29396ffd97e27574c3e01368b1a64267d3064969e4848e2e130ff668be9daa9f"} \ No newline at end of file
diff --git a/vendor/unic-langid-macros-impl/Cargo.toml b/vendor/unic-langid-macros-impl/Cargo.toml
new file mode 100644
index 000000000..ca0b1ee1b
--- /dev/null
+++ b/vendor/unic-langid-macros-impl/Cargo.toml
@@ -0,0 +1,39 @@
+# 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 believe there's an error in this file please file an
+# issue against the rust-lang/cargo repository. If you're
+# editing this file be aware that the upstream Cargo.toml
+# will likely look very different (and much more reasonable)
+
+[package]
+edition = "2018"
+name = "unic-langid-macros-impl"
+version = "0.9.0"
+authors = ["Manish Goregaokar <manishsmail@gmail.com>", "Zibi Braniecki <gandalf@mozilla.com>"]
+include = ["src/**/*", "benches/*.rs", "Cargo.toml", "README.md"]
+description = "API for managing Unicode Language Identifiers"
+readme = "README.md"
+categories = ["internationalization"]
+license = "MIT/Apache-2.0"
+repository = "https://github.com/zbraniecki/unic-locale"
+
+[lib]
+proc_macro = true
+[dependencies.proc-macro-hack]
+version = "0.5"
+
+[dependencies.quote]
+version = "1.0"
+
+[dependencies.syn]
+version = "1.0"
+features = ["parsing", "proc-macro"]
+default-features = false
+
+[dependencies.unic-langid-impl]
+version = "0.9"
diff --git a/vendor/unic-langid-macros-impl/README.md b/vendor/unic-langid-macros-impl/README.md
new file mode 100644
index 000000000..203468ce2
--- /dev/null
+++ b/vendor/unic-langid-macros-impl/README.md
@@ -0,0 +1 @@
+This is an internal macro implementation crate for `unic-langid`. Please use `unic-langid`.
diff --git a/vendor/unic-langid-macros-impl/src/lib.rs b/vendor/unic-langid-macros-impl/src/lib.rs
new file mode 100644
index 000000000..ee27a51e8
--- /dev/null
+++ b/vendor/unic-langid-macros-impl/src/lib.rs
@@ -0,0 +1,108 @@
+extern crate proc_macro;
+
+use proc_macro::TokenStream;
+
+use proc_macro_hack::proc_macro_hack;
+use quote::quote;
+use syn::{parse_macro_input, LitStr};
+
+use unic_langid_impl::{subtags, LanguageIdentifier};
+
+#[proc_macro_hack]
+pub fn lang(input: TokenStream) -> TokenStream {
+ let id = parse_macro_input!(input as LitStr);
+ let parsed: subtags::Language = id.value().parse().expect("Malformed Language Subtag");
+
+ let lang: Option<u64> = parsed.into();
+ let lang = if let Some(lang) = lang {
+ quote!(unsafe { $crate::subtags::Language::from_raw_unchecked(#lang) })
+ } else {
+ quote!(None)
+ };
+
+ TokenStream::from(quote! {
+ #lang
+ })
+}
+
+#[proc_macro_hack]
+pub fn script(input: TokenStream) -> TokenStream {
+ let id = parse_macro_input!(input as LitStr);
+ let parsed: subtags::Script = id.value().parse().expect("Malformed Script Subtag");
+
+ let script: u32 = parsed.into();
+
+ TokenStream::from(quote! {
+ unsafe { $crate::subtags::Script::from_raw_unchecked(#script) }
+ })
+}
+
+#[proc_macro_hack]
+pub fn region(input: TokenStream) -> TokenStream {
+ let id = parse_macro_input!(input as LitStr);
+ let parsed: subtags::Region = id.value().parse().expect("Malformed Region Subtag");
+
+ let region: u32 = parsed.into();
+
+ TokenStream::from(quote! {
+ unsafe { $crate::subtags::Region::from_raw_unchecked(#region) }
+ })
+}
+
+#[proc_macro_hack]
+pub fn variant_fn(input: TokenStream) -> TokenStream {
+ let id = parse_macro_input!(input as LitStr);
+ let parsed: subtags::Variant = id.value().parse().expect("Malformed Variant Subtag");
+
+ let variant: u64 = parsed.into();
+
+ TokenStream::from(quote! {
+ unsafe { $crate::subtags::Variant::from_raw_unchecked(#variant) }
+ })
+}
+
+#[proc_macro_hack]
+pub fn langid(input: TokenStream) -> TokenStream {
+ let id = parse_macro_input!(input as LitStr);
+ let parsed: LanguageIdentifier = id.value().parse().expect("Malformed Language Identifier");
+
+ let (lang, script, region, variants) = parsed.into_parts();
+
+ let lang: Option<u64> = lang.into();
+ let lang = if let Some(lang) = lang {
+ quote!(unsafe { $crate::subtags::Language::from_raw_unchecked(#lang) })
+ } else {
+ quote!($crate::subtags::Language::default())
+ };
+
+ let script = if let Some(script) = script {
+ let script: u32 = script.into();
+ quote!(Some(unsafe { $crate::subtags::Script::from_raw_unchecked(#script) }))
+ } else {
+ quote!(None)
+ };
+
+ let region = if let Some(region) = region {
+ let region: u32 = region.into();
+ quote!(Some(unsafe { $crate::subtags::Region::from_raw_unchecked(#region) }))
+ } else {
+ quote!(None)
+ };
+
+ let variants = if !variants.is_empty() {
+ let v: Vec<_> = variants
+ .iter()
+ .map(|v| {
+ let variant: u64 = v.into();
+ quote!(unsafe { $crate::subtags::Variant::from_raw_unchecked(#variant) })
+ })
+ .collect();
+ quote!(Some(Box::new([#(#v,)*])))
+ } else {
+ quote!(None)
+ };
+
+ TokenStream::from(quote! {
+ unsafe { $crate::LanguageIdentifier::from_raw_parts_unchecked(#lang, #script, #region, #variants) }
+ })
+}