1#![warn(missing_docs)]
2extern crate proc_macro;
8
9use proc_macro::TokenStream;
10
11mod define_rules;
12mod doc;
13mod format_rule;
14mod json;
15mod test;
16mod to_doc;
17
18#[proc_macro]
20pub fn test_lexer(input: TokenStream) -> TokenStream {
21 test::test_lexer(input)
22}
23
24#[proc_macro]
26pub fn test_parser(input: TokenStream) -> TokenStream {
27 test::test_parser(input)
28}
29
30#[proc_macro_attribute]
32pub fn oak_test(attr: TokenStream, item: TokenStream) -> TokenStream {
33 test::oak_test(attr, item)
34}
35
36#[proc_macro_derive(AsDocument, attributes(oak))]
38pub fn derive_as_document(input: TokenStream) -> TokenStream {
39 to_doc::derive_as_document(input)
40}
41
42#[proc_macro_derive(FormatRule, attributes(oak))]
44pub fn derive_format_rule(input: TokenStream) -> TokenStream {
45 format_rule::derive_format_rule(input)
46}
47
48#[proc_macro]
50pub fn define_rules(input: TokenStream) -> TokenStream {
51 define_rules::define_rules(input)
52}
53
54#[proc_macro]
56pub fn doc(input: TokenStream) -> TokenStream {
57 doc::doc(input)
58}
59
60#[proc_macro]
62pub fn json(input: TokenStream) -> TokenStream {
63 json::json(input)
64}