trixy 0.4.0

A rust crate used to generate multi-language apis for your application
Documentation
/*
* Copyright (C) 2023 - 2024:
* The Trinitrix Project <soispha@vhack.eu, antifallobst@systemausfall.org>
* SPDX-License-Identifier: GPL-3.0-or-later
*
* This file is part of the Trixy crate for Trinitrix.
*
* Trixy is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* and the GNU General Public License along with this program.
* If not, see <https://www.gnu.org/licenses/>.
*/

use crate::parser::command_spec::Attribute;

impl Attribute {
    pub fn to_auxiliary_c(&self) -> String {
        if let Attribute::doc(doc_comment) = self {
            format!("/**\n*{}\n*/", doc_comment)
        } else {
            "".to_owned()
        }
    }
    /// Merge mergable attributes (for example doc comments)
    pub fn to_auxiliary_c_merged(attributes: &[Self]) -> String {
        let doc_comments = attributes
            .iter()
            .map(|attr| {
                if let Attribute::doc(doc_comment) = attr {
                    if doc_comment.is_empty() {
                        "*\n".to_owned()
                    } else {
                        doc_comment
                            .lines()
                            .map(|line| format!("*{}\n", line))
                            .collect::<String>()
                    }
                } else {
                    attr.to_auxiliary_c()
                }
            })
            .collect::<String>();
        if !attributes.is_empty() {
            format!("/**\n{}*/", doc_comments)
        } else {
            "".to_owned()
        }
    }
}