ftml/tree/
code.rs

1/*
2 * code.rs
3 *
4 * ftml - Library to parse Wikidot text
5 * Copyright (C) 2019-2025 Wikijump Team
6 *
7 * This program is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU Affero General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU Affero General Public License for more details.
16 *
17 * You should have received a copy of the GNU Affero General Public License
18 * along with this program. If not, see <http://www.gnu.org/licenses/>.
19 */
20
21//! Structure to represent a code block.
22
23use super::clone::{option_string_to_owned, string_to_owned};
24use std::borrow::Cow;
25
26#[derive(Serialize, Deserialize, Debug, Clone, Default, PartialEq, Eq)]
27pub struct CodeBlock<'t> {
28    pub contents: Cow<'t, str>,
29    pub language: Option<Cow<'t, str>>,
30    pub name: Option<Cow<'t, str>>,
31}
32
33impl CodeBlock<'_> {
34    pub fn to_owned(&self) -> CodeBlock<'static> {
35        CodeBlock {
36            contents: string_to_owned(&self.contents),
37            language: option_string_to_owned(&self.language),
38            name: option_string_to_owned(&self.name),
39        }
40    }
41}