#![deny(missing_docs,
missing_debug_implementations, missing_copy_implementations,
trivial_casts, trivial_numeric_casts,
unsafe_code,
unstable_features,
unused_import_braces, unused_qualifications)]
#[macro_use]
extern crate error_chain;
extern crate combine;
extern crate vobsub;
extern crate itertools;
extern crate encoding;
mod formats;
pub mod timetypes;
pub mod errors;
use errors::*;
pub use formats::{get_subtitle_format, get_subtitle_format_by_ending, get_subtitle_format_by_ending_err, get_subtitle_format_err, parse_bytes,
parse_str};
pub use formats::SubtitleFormat;
pub use formats::idx::IdxFile;
pub use formats::microdvd::MdvdFile;
pub use formats::srt::SrtFile;
pub use formats::ssa::SsaFile;
pub use formats::vobsub::VobFile;
use timetypes::TimeSpan;
pub trait SubtitleFile {
fn get_subtitle_entries(&self) -> Result<Vec<SubtitleEntry>>;
fn update_subtitle_entries(&mut self, i: &[SubtitleEntry]) -> Result<()>;
fn to_data(&self) -> Result<Vec<u8>>;
}
#[derive(Debug)]
pub struct SubtitleEntry {
pub timespan: TimeSpan,
pub line: Option<String>,
}
impl SubtitleEntry {
fn new(timespan: TimeSpan, line: String) -> SubtitleEntry {
SubtitleEntry {
timespan: timespan,
line: Some(line),
}
}
}
impl From<TimeSpan> for SubtitleEntry {
fn from(f: TimeSpan) -> SubtitleEntry {
SubtitleEntry {
timespan: f,
line: None,
}
}
}