138 lines
2.6 KiB
Rust
138 lines
2.6 KiB
Rust
use super::object::Object;
|
|
use super::object::TextMarkup;
|
|
use super::source::Source;
|
|
|
|
#[derive(Debug)]
|
|
pub struct Paragraph<'s> {
|
|
pub source: &'s str,
|
|
pub children: Vec<Object<'s>>,
|
|
}
|
|
|
|
#[derive(Debug)]
|
|
pub struct Comment<'s> {
|
|
pub source: &'s str,
|
|
}
|
|
|
|
#[derive(Debug)]
|
|
pub struct TableCell<'s> {
|
|
pub source: &'s str,
|
|
pub children: Vec<Object<'s>>,
|
|
}
|
|
|
|
#[derive(Debug)]
|
|
pub struct VerseBlock<'s> {
|
|
pub source: &'s str,
|
|
pub name: &'s str,
|
|
pub data: Option<&'s str>,
|
|
pub children: Vec<Object<'s>>,
|
|
}
|
|
|
|
#[derive(Debug)]
|
|
pub struct CommentBlock<'s> {
|
|
pub source: &'s str,
|
|
pub name: &'s str,
|
|
pub data: Option<&'s str>,
|
|
pub contents: &'s str,
|
|
}
|
|
|
|
#[derive(Debug)]
|
|
pub struct ExampleBlock<'s> {
|
|
pub source: &'s str,
|
|
pub name: &'s str,
|
|
pub data: Option<&'s str>,
|
|
pub contents: &'s str,
|
|
}
|
|
|
|
#[derive(Debug)]
|
|
pub struct ExportBlock<'s> {
|
|
pub source: &'s str,
|
|
pub name: &'s str,
|
|
pub data: Option<&'s str>,
|
|
pub contents: &'s str,
|
|
}
|
|
|
|
#[derive(Debug)]
|
|
pub struct SrcBlock<'s> {
|
|
pub source: &'s str,
|
|
pub name: &'s str,
|
|
pub data: Option<&'s str>,
|
|
pub contents: &'s str,
|
|
}
|
|
|
|
#[derive(Debug)]
|
|
pub struct Clock<'s> {
|
|
pub source: &'s str,
|
|
}
|
|
|
|
#[derive(Debug)]
|
|
pub struct DiarySexp<'s> {
|
|
pub source: &'s str,
|
|
}
|
|
|
|
impl<'s> Paragraph<'s> {
|
|
pub fn of_text(input: &'s str) -> Self {
|
|
let mut objects = Vec::with_capacity(1);
|
|
objects.push(Object::TextMarkup(TextMarkup { source: input }));
|
|
Paragraph {
|
|
source: input,
|
|
children: objects,
|
|
}
|
|
}
|
|
}
|
|
|
|
impl<'s> Source<'s> for Paragraph<'s> {
|
|
fn get_source(&'s self) -> &'s str {
|
|
self.source
|
|
}
|
|
}
|
|
|
|
impl<'s> Source<'s> for TableCell<'s> {
|
|
fn get_source(&'s self) -> &'s str {
|
|
self.source
|
|
}
|
|
}
|
|
|
|
impl<'s> Source<'s> for Comment<'s> {
|
|
fn get_source(&'s self) -> &'s str {
|
|
self.source
|
|
}
|
|
}
|
|
|
|
impl<'s> Source<'s> for VerseBlock<'s> {
|
|
fn get_source(&'s self) -> &'s str {
|
|
self.source
|
|
}
|
|
}
|
|
impl<'s> Source<'s> for CommentBlock<'s> {
|
|
fn get_source(&'s self) -> &'s str {
|
|
self.source
|
|
}
|
|
}
|
|
impl<'s> Source<'s> for ExampleBlock<'s> {
|
|
fn get_source(&'s self) -> &'s str {
|
|
self.source
|
|
}
|
|
}
|
|
impl<'s> Source<'s> for ExportBlock<'s> {
|
|
fn get_source(&'s self) -> &'s str {
|
|
self.source
|
|
}
|
|
}
|
|
impl<'s> Source<'s> for SrcBlock<'s> {
|
|
fn get_source(&'s self) -> &'s str {
|
|
self.source
|
|
}
|
|
}
|
|
|
|
impl<'s> Source<'s> for Clock<'s> {
|
|
fn get_source(&'s self) -> &'s str {
|
|
self.source
|
|
}
|
|
}
|
|
|
|
impl<'s> Source<'s> for DiarySexp<'s> {
|
|
fn get_source(&'s self) -> &'s str {
|
|
self.source
|
|
}
|
|
}
|