trying to add a way for rust to find number of slides in reveal.js

This commit is contained in:
Chris Cochrun 2023-05-16 09:55:26 -05:00
parent 58652eafa1
commit b234795a36
3 changed files with 52 additions and 3 deletions

View file

@ -3,12 +3,13 @@ mod file_helper;
pub mod image_model;
pub mod models;
pub mod presentation_model;
pub mod song_model;
pub mod reveal_js;
pub mod schema;
mod service_thing;
mod settings;
pub mod slide_model;
mod slide_obj;
pub mod song_model;
pub mod video_model;
pub mod ytdl;
// mod video_thumbnail;

View file

@ -2,6 +2,7 @@
mod presentation_model {
use crate::models::*;
use crate::presentation_model::presentation_model::Presentation;
use crate::reveal_js;
use crate::schema::presentations::dsl::*;
use diesel::sqlite::SqliteConnection;
use diesel::{delete, insert_into, prelude::*};
@ -187,12 +188,18 @@ mod presentation_model {
) -> bool {
let db = &mut self.as_mut().get_db();
// println!("{:?}", db);
let mut actual_page_count = new_page_count;
if presentation_html {
let actual_path = presentation_path.clone().to_string().trim();
actual_page_count = reveal_js::count_slides_and_fragments(actual_path);
}
let presentation = self::Presentation {
id: presentation_id,
title: presentation_title.clone().to_string(),
html: false,
html: presentation_html,
path: presentation_path.clone().to_string(),
page_count: new_page_count,
page_count: actual_page_count,
};
println!("{:?}", presentation);

41
src/rust/reveal_js.rs Normal file
View file

@ -0,0 +1,41 @@
// use dirs;
use std::fs::read_to_string;
// struct Slide {
// num_fragments: usize,
// }
// struct Presentation {
// num_slides: usize,
// num_fragments: usize,
// }
pub fn count_slides_and_fragments(html_file_path: &str) -> i32 {
// Read the HTML file
let html_content = read_to_string(html_file_path).expect("Failed to read HTML file");
// Split HTML content by slide delimiters
let slide_delimiter = "<section";
let slide_content: Vec<&str> = html_content.split(slide_delimiter).collect();
// Count slides and fragments
let num_slides = slide_content.len() - 1;
let mut num_fragments = 0;
for slide_html in slide_content.iter().skip(1) {
let fragments = slide_html.matches("fragment").count();
num_fragments += fragments;
}
let total = num_slides + num_fragments;
total as i32
}
// fn main() {
// let html_file_path = "path/to/presentation.html";
// let presentation = count_slides_and_fragments(html_file_path);
// println!("Total number of slides: {}", presentation.num_slides);
// println!("Total number of fragments: {}", presentation.num_fragments);
// }