Browse Source

Print compilation result from main

main
Dylan Baker 3 years ago
parent
commit
93b4bc080d
2 changed files with 18 additions and 2 deletions
  1. 13
    0
      src/compiler.rs
  2. 5
    2
      src/main.rs

+ 13
- 0
src/compiler.rs View File

@@ -1,5 +1,7 @@
1 1
 use serde_json::{json, Value};
2 2
 
3
+use std::fmt::{Display, Formatter};
4
+
3 5
 use crate::error::CompilerError;
4 6
 use crate::parser::{Field, Identifier, Select};
5 7
 
@@ -15,6 +17,17 @@ impl Query {
15 17
     }
16 18
 }
17 19
 
20
+impl Display for Query {
21
+    fn fmt(&self, f: &mut Formatter) -> std::fmt::Result {
22
+        let header = format!("GET /{}/_search", self.source.name);
23
+        let body = match serde_json::to_string_pretty(&self.body) {
24
+            Ok(body) => body,
25
+            Err(_) => return Err(std::fmt::Error {}),
26
+        };
27
+        write!(f, "{}\n{}", header, body)
28
+    }
29
+}
30
+
18 31
 pub fn compile(expr: Select) -> Result<Query, CompilerError> {
19 32
     let mut source = false;
20 33
     let field_names: Vec<Value> = expr

+ 5
- 2
src/main.rs View File

@@ -1,5 +1,5 @@
1
-use elastic::lexer;
2 1
 use elastic::parser;
2
+use elastic::{compiler::compile, lexer};
3 3
 
4 4
 use std::env;
5 5
 
@@ -8,6 +8,9 @@ fn main() -> std::io::Result<()> {
8 8
     let input = args.join(" ");
9 9
     let tokens = lexer::scan(&input)?;
10 10
     let select = parser::parse(tokens)?;
11
-    dbg!(select);
11
+    let result = compile(select)?;
12
+
13
+    println!("{}", result);
14
+
12 15
     Ok(())
13 16
 }

Loading…
Cancel
Save