trying to add a way for rust to find number of slides in reveal.js
This commit is contained in:
parent
58652eafa1
commit
b234795a36
3 changed files with 52 additions and 3 deletions
|
@ -3,12 +3,13 @@ mod file_helper;
|
||||||
pub mod image_model;
|
pub mod image_model;
|
||||||
pub mod models;
|
pub mod models;
|
||||||
pub mod presentation_model;
|
pub mod presentation_model;
|
||||||
pub mod song_model;
|
pub mod reveal_js;
|
||||||
pub mod schema;
|
pub mod schema;
|
||||||
mod service_thing;
|
mod service_thing;
|
||||||
mod settings;
|
mod settings;
|
||||||
pub mod slide_model;
|
pub mod slide_model;
|
||||||
mod slide_obj;
|
mod slide_obj;
|
||||||
|
pub mod song_model;
|
||||||
pub mod video_model;
|
pub mod video_model;
|
||||||
pub mod ytdl;
|
pub mod ytdl;
|
||||||
// mod video_thumbnail;
|
// mod video_thumbnail;
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
mod presentation_model {
|
mod presentation_model {
|
||||||
use crate::models::*;
|
use crate::models::*;
|
||||||
use crate::presentation_model::presentation_model::Presentation;
|
use crate::presentation_model::presentation_model::Presentation;
|
||||||
|
use crate::reveal_js;
|
||||||
use crate::schema::presentations::dsl::*;
|
use crate::schema::presentations::dsl::*;
|
||||||
use diesel::sqlite::SqliteConnection;
|
use diesel::sqlite::SqliteConnection;
|
||||||
use diesel::{delete, insert_into, prelude::*};
|
use diesel::{delete, insert_into, prelude::*};
|
||||||
|
@ -187,12 +188,18 @@ mod presentation_model {
|
||||||
) -> bool {
|
) -> bool {
|
||||||
let db = &mut self.as_mut().get_db();
|
let db = &mut self.as_mut().get_db();
|
||||||
// println!("{:?}", 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 {
|
let presentation = self::Presentation {
|
||||||
id: presentation_id,
|
id: presentation_id,
|
||||||
title: presentation_title.clone().to_string(),
|
title: presentation_title.clone().to_string(),
|
||||||
html: false,
|
html: presentation_html,
|
||||||
path: presentation_path.clone().to_string(),
|
path: presentation_path.clone().to_string(),
|
||||||
page_count: new_page_count,
|
page_count: actual_page_count,
|
||||||
};
|
};
|
||||||
println!("{:?}", presentation);
|
println!("{:?}", presentation);
|
||||||
|
|
||||||
|
|
41
src/rust/reveal_js.rs
Normal file
41
src/rust/reveal_js.rs
Normal 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);
|
||||||
|
// }
|
Loading…
Add table
Add a link
Reference in a new issue