Agents for developpement added + frontend add + backend added. Git viewer created + agent and template creator + layout and project creator
45 lines
1.1 KiB
Rust
45 lines
1.1 KiB
Rust
//! Markdown content value object.
|
|
|
|
use serde::{Deserialize, Serialize};
|
|
|
|
/// A Markdown document — the content of an agent context (`.md`) or a template.
|
|
///
|
|
/// This is a thin newtype: the domain treats Markdown as opaque text and does
|
|
/// not parse it. It exists to give the content a meaningful type at API
|
|
/// boundaries (vs. a bare `String`).
|
|
#[derive(Debug, Clone, PartialEq, Eq, Default, Serialize, Deserialize)]
|
|
#[serde(transparent)]
|
|
pub struct MarkdownDoc(String);
|
|
|
|
impl MarkdownDoc {
|
|
/// Wraps raw Markdown content (empty content is permitted).
|
|
#[must_use]
|
|
pub fn new(content: impl Into<String>) -> Self {
|
|
Self(content.into())
|
|
}
|
|
|
|
/// Returns the content as a string slice.
|
|
#[must_use]
|
|
pub fn as_str(&self) -> &str {
|
|
&self.0
|
|
}
|
|
|
|
/// Consumes the document, returning its content.
|
|
#[must_use]
|
|
pub fn into_string(self) -> String {
|
|
self.0
|
|
}
|
|
|
|
/// Returns `true` if the document is empty.
|
|
#[must_use]
|
|
pub fn is_empty(&self) -> bool {
|
|
self.0.is_empty()
|
|
}
|
|
}
|
|
|
|
impl From<String> for MarkdownDoc {
|
|
fn from(s: String) -> Self {
|
|
Self(s)
|
|
}
|
|
}
|