1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
use crate::error::Error;
use crate::generators::CodeGen;
use std::fs::File;
use std::io::Write;

/// Generate the `Codepoints` `struct` used by all tables created by all
/// generators.
/// # Example:
/// ```rust
/// pub enum Codepoints {
///   Single(u32),
///   Range(std::ops::RangeInclusive<u32>),
/// }
/// ```
pub struct CodepointsGen {}

impl CodepointsGen {
    /// Creates a new generator for the `Codepoints` `enum`
    pub fn new() -> Self {
        Self {}
    }
}

impl Default for CodepointsGen {
    fn default() -> Self {
        Self::new()
    }
}

impl CodeGen for CodepointsGen {
    fn generate_code(&mut self, file: &mut File) -> Result<(), Error> {
        let template = include_str!("codepoints.template");
        Ok(writeln!(file, "{}", template)?)
    }
}