1#![forbid(unsafe_code)]
2#![deny(warnings)]
3#![allow(clippy::too_many_arguments)]
4mod data_provider;
12pub(crate) mod load_locales;
13pub(crate) mod scoped;
14pub(crate) mod t_format;
15pub(crate) mod t_macro;
16pub(crate) mod t_plural;
17
18use leptos_i18n_codegen::load_locales::plurals::PluralRuleType;
19use t_macro::{InputType, OutputType};
20
21#[proc_macro]
22pub fn load_locales(_tokens: proc_macro::TokenStream) -> proc_macro::TokenStream {
23 match load_locales::load_locales() {
24 Ok(ts) => ts.into(),
25 Err(err) => {
26 let err = err.to_string();
27 quote::quote!(compile_error!(#err);).into()
28 }
29 }
30}
31
32#[proc_macro]
33pub fn declare_locales(tokens: proc_macro::TokenStream) -> proc_macro::TokenStream {
34 load_locales::declare_locales::declare_locales(tokens)
35}
36
37#[proc_macro]
38pub fn t(tokens: proc_macro::TokenStream) -> proc_macro::TokenStream {
39 t_macro::t_macro(tokens, InputType::Context, OutputType::View)
40}
41
42#[proc_macro]
43pub fn tu(tokens: proc_macro::TokenStream) -> proc_macro::TokenStream {
44 t_macro::t_macro(tokens, InputType::Untracked, OutputType::View)
45}
46
47#[proc_macro]
48pub fn td(tokens: proc_macro::TokenStream) -> proc_macro::TokenStream {
49 t_macro::t_macro(tokens, InputType::Locale, OutputType::View)
50}
51
52#[proc_macro]
53pub fn t_string(tokens: proc_macro::TokenStream) -> proc_macro::TokenStream {
54 t_macro::t_macro(tokens, InputType::Context, OutputType::String)
55}
56
57#[proc_macro]
58pub fn tu_string(tokens: proc_macro::TokenStream) -> proc_macro::TokenStream {
59 t_macro::t_macro(tokens, InputType::Untracked, OutputType::String)
60}
61
62#[proc_macro]
63pub fn t_display(tokens: proc_macro::TokenStream) -> proc_macro::TokenStream {
64 t_macro::t_macro(tokens, InputType::Context, OutputType::Display)
65}
66
67#[proc_macro]
68pub fn tu_display(tokens: proc_macro::TokenStream) -> proc_macro::TokenStream {
69 t_macro::t_macro(tokens, InputType::Untracked, OutputType::Display)
70}
71
72#[proc_macro]
73pub fn td_string(tokens: proc_macro::TokenStream) -> proc_macro::TokenStream {
74 t_macro::t_macro(tokens, InputType::Locale, OutputType::String)
75}
76
77#[proc_macro]
78pub fn td_display(tokens: proc_macro::TokenStream) -> proc_macro::TokenStream {
79 t_macro::t_macro(tokens, InputType::Locale, OutputType::Display)
80}
81
82#[proc_macro]
83pub fn use_i18n_scoped(tokens: proc_macro::TokenStream) -> proc_macro::TokenStream {
84 scoped::use_i18n_scoped(tokens)
85}
86
87#[proc_macro]
88pub fn scope_i18n(tokens: proc_macro::TokenStream) -> proc_macro::TokenStream {
89 scoped::scope_i18n(tokens)
90}
91
92#[proc_macro]
93pub fn scope_locale(tokens: proc_macro::TokenStream) -> proc_macro::TokenStream {
94 scoped::scope_locale(tokens)
95}
96
97#[proc_macro]
98pub fn t_format(tokens: proc_macro::TokenStream) -> proc_macro::TokenStream {
99 t_format::t_format(
100 tokens,
101 t_format::InputType::Context,
102 t_format::OutputType::View,
103 )
104}
105
106#[proc_macro]
107pub fn tu_format(tokens: proc_macro::TokenStream) -> proc_macro::TokenStream {
108 t_format::t_format(
109 tokens,
110 t_format::InputType::Untracked,
111 t_format::OutputType::View,
112 )
113}
114
115#[proc_macro]
116pub fn td_format(tokens: proc_macro::TokenStream) -> proc_macro::TokenStream {
117 t_format::t_format(
118 tokens,
119 t_format::InputType::Locale,
120 t_format::OutputType::View,
121 )
122}
123
124#[proc_macro]
125pub fn t_format_string(tokens: proc_macro::TokenStream) -> proc_macro::TokenStream {
126 t_format::t_format(
127 tokens,
128 t_format::InputType::Context,
129 t_format::OutputType::String,
130 )
131}
132
133#[proc_macro]
134pub fn tu_format_string(tokens: proc_macro::TokenStream) -> proc_macro::TokenStream {
135 t_format::t_format(
136 tokens,
137 t_format::InputType::Untracked,
138 t_format::OutputType::String,
139 )
140}
141
142#[proc_macro]
143pub fn td_format_string(tokens: proc_macro::TokenStream) -> proc_macro::TokenStream {
144 t_format::t_format(
145 tokens,
146 t_format::InputType::Locale,
147 t_format::OutputType::String,
148 )
149}
150
151#[proc_macro]
152pub fn t_format_display(tokens: proc_macro::TokenStream) -> proc_macro::TokenStream {
153 t_format::t_format(
154 tokens,
155 t_format::InputType::Context,
156 t_format::OutputType::Display,
157 )
158}
159
160#[proc_macro]
161pub fn tu_format_display(tokens: proc_macro::TokenStream) -> proc_macro::TokenStream {
162 t_format::t_format(
163 tokens,
164 t_format::InputType::Untracked,
165 t_format::OutputType::Display,
166 )
167}
168
169#[proc_macro]
170pub fn td_format_display(tokens: proc_macro::TokenStream) -> proc_macro::TokenStream {
171 t_format::t_format(
172 tokens,
173 t_format::InputType::Locale,
174 t_format::OutputType::Display,
175 )
176}
177
178#[proc_macro]
179pub fn t_plural(tokens: proc_macro::TokenStream) -> proc_macro::TokenStream {
180 t_plural::t_plural(
181 tokens,
182 t_plural::InputType::Context,
183 PluralRuleType::Cardinal,
184 )
185}
186
187#[proc_macro]
188pub fn tu_plural(tokens: proc_macro::TokenStream) -> proc_macro::TokenStream {
189 t_plural::t_plural(
190 tokens,
191 t_plural::InputType::Untracked,
192 PluralRuleType::Cardinal,
193 )
194}
195
196#[proc_macro]
197pub fn td_plural(tokens: proc_macro::TokenStream) -> proc_macro::TokenStream {
198 t_plural::t_plural(
199 tokens,
200 t_plural::InputType::Locale,
201 PluralRuleType::Cardinal,
202 )
203}
204
205#[proc_macro]
206pub fn t_plural_ordinal(tokens: proc_macro::TokenStream) -> proc_macro::TokenStream {
207 t_plural::t_plural(
208 tokens,
209 t_plural::InputType::Context,
210 PluralRuleType::Ordinal,
211 )
212}
213
214#[proc_macro]
215pub fn tu_plural_ordinal(tokens: proc_macro::TokenStream) -> proc_macro::TokenStream {
216 t_plural::t_plural(
217 tokens,
218 t_plural::InputType::Untracked,
219 PluralRuleType::Ordinal,
220 )
221}
222
223#[proc_macro]
224pub fn td_plural_ordinal(tokens: proc_macro::TokenStream) -> proc_macro::TokenStream {
225 t_plural::t_plural(tokens, t_plural::InputType::Locale, PluralRuleType::Ordinal)
226}
227
228#[proc_macro_derive(IcuDataProvider)]
230pub fn derive_icu_data_provider(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
231 data_provider::derive_icu_data_provider(input)
232}