poem-openapi 0.2.1

OpenAPI support for Poem.
Documentation
use derive_more::Display;
use regex::Regex;

use crate::{registry::MetaSchema, validation::Validator};

#[derive(Display)]
#[display(fmt = "pattern(\"{}\")", pattern)]
pub struct Pattern {
    pattern: &'static str,
}

impl Pattern {
    #[inline]
    pub fn new(pattern: &'static str) -> Self {
        Self { pattern }
    }
}

impl<T: AsRef<str>> Validator<T> for Pattern {
    #[inline]
    fn check(&self, value: &T) -> bool {
        Regex::new(self.pattern).unwrap().is_match(value.as_ref())
    }

    fn update_meta(&self, meta: &mut MetaSchema) {
        meta.pattern = Some(self.pattern.to_string());
    }
}