1extern crate proc_macro;
2
3use proc_macro::TokenStream;
4
5mod define_rules;
6mod doc;
7mod format_rule;
8mod json;
9mod test;
10mod to_doc;
11
12#[proc_macro]
13pub fn test_lexer(input: TokenStream) -> TokenStream {
14 test::test_lexer(input)
15}
16
17#[proc_macro]
18pub fn test_parser(input: TokenStream) -> TokenStream {
19 test::test_parser(input)
20}
21
22#[proc_macro_attribute]
23pub fn oak_test(attr: TokenStream, item: TokenStream) -> TokenStream {
24 test::oak_test(attr, item)
25}
26
27#[proc_macro_derive(AsDocument, attributes(oak))]
28pub fn derive_as_document(input: TokenStream) -> TokenStream {
29 to_doc::derive_as_document(input)
30}
31
32#[proc_macro_derive(FormatRule, attributes(oak))]
33pub fn derive_format_rule(input: TokenStream) -> TokenStream {
34 format_rule::derive_format_rule(input)
35}
36
37#[proc_macro]
38pub fn define_rules(input: TokenStream) -> TokenStream {
39 define_rules::define_rules(input)
40}
41
42#[proc_macro]
43pub fn doc(input: TokenStream) -> TokenStream {
44 doc::doc(input)
45}
46
47#[proc_macro]
48pub fn json(input: TokenStream) -> TokenStream {
49 json::json(input)
50}