1#![deny(
2 anonymous_parameters,
3 clippy::all,
4 const_err,
5 illegal_floating_point_literal_pattern,
6 late_bound_lifetime_arguments,
7 path_statements,
8 patterns_in_fns_without_body,
9 rust_2018_idioms,
10 trivial_casts,
11 trivial_numeric_casts,
12 unreachable_pub,
13 unsafe_code,
14 unused_extern_crates
15)]
16#![warn(
17 clippy::dbg_macro,
18 clippy::decimal_literal_representation,
19 clippy::get_unwrap,
20 clippy::nursery,
21 clippy::pedantic,
22 clippy::print_stdout,
23 clippy::todo,
24 clippy::unimplemented,
25 clippy::unwrap_used,
26 clippy::use_debug,
27 missing_copy_implementations,
28 missing_debug_implementations,
29 single_use_lifetimes,
30 unused_qualifications,
31 variant_size_differences
32)]
33#![allow(
34 clippy::cast_lossless,
35 clippy::cast_possible_truncation,
36 clippy::cast_possible_wrap,
37 clippy::cast_precision_loss,
38 clippy::cast_sign_loss,
39 clippy::enum_glob_use,
40 clippy::inline_always,
41 clippy::missing_const_for_fn,
42 clippy::missing_errors_doc,
43 clippy::module_name_repetitions,
44 clippy::must_use_candidate,
45 clippy::redundant_pub_crate,
46 clippy::suspicious_arithmetic_impl,
47 clippy::use_self,
48 clippy::wildcard_imports,
49 clippy::zero_prefixed_literal,
50 unstable_name_collisions
51)]
52
53#[allow(unused_extern_crates)]
55extern crate proc_macro;
56
57macro_rules! error {
58 ($message:literal) => {
59 error!(::proc_macro2::Span::call_site(), $message)
60 };
61
62 ($span:expr, $message:literal) => {
63 Err(::syn::Error::new($span, $message))
64 };
65
66 ($span:expr, $($args:expr),+) => {
67 Err(::syn::Error::new($span, format!($($args),+)))
68 };
69}
70
71mod kw {
72 use syn::custom_keyword;
73 custom_keyword!(am);
74 custom_keyword!(pm);
75 custom_keyword!(AM);
76 custom_keyword!(PM);
77 custom_keyword!(utc);
78 custom_keyword!(UTC);
79}
80
81mod date;
82mod ext;
83mod offset;
84mod time;
85mod time_crate;
86
87use date::Date;
88use offset::Offset;
89use proc_macro_hack::proc_macro_hack;
90use quote::ToTokens;
91use syn::parse_macro_input;
92use time::Time;
93
94#[proc_macro_hack]
95#[allow(clippy::unimplemented)]
96pub fn time(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
97 parse_macro_input!(input as Time).to_token_stream().into()
98}
99
100#[proc_macro_hack]
101#[allow(clippy::unimplemented)]
102pub fn offset(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
103 parse_macro_input!(input as Offset).to_token_stream().into()
104}
105
106#[proc_macro_hack]
107#[allow(clippy::unimplemented)]
108pub fn date(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
109 parse_macro_input!(input as Date).to_token_stream().into()
110}