Expand description
§OSF — Open Screenplay Format Parser
A Rust parser for Open Screenplay Format (OSF) files, the native format of Fade In Pro screenwriting software.
§Supported Versions
| Version | Attribute Style | Title Page | Notes |
|---|---|---|---|
| 1.2 | basestylename | <info> attributes | Metadata embedded in <info> element |
| 2.0/2.1 | baseStyleName (camelCase) | <titlepage> bookmarks | Separate title page section |
| 4.0 | basestyle (snake_case) | <titlepage> bookmarks | Current version |
§File Format
.fadein files are ZIP archives containing an XML file called document.xml
in the Open Screenplay Format. The parser handles both the ZIP container and
raw XML input.
§Usage
// Parse a .fadein file from disk
let data = std::fs::read("screenplay.fadein").unwrap();
let doc = osf::parse(&data).unwrap();
println!("Title: {:?}", doc.title_page.title);
println!("Authors: {:?}", doc.title_page.authors);
println!("Scenes: {}", doc.scenes.len());
for scene in &doc.scenes {
println!(" Scene {}: {}", scene.number, scene.heading);
}§Raw XML
You can also parse raw OSF XML directly:
let xml = r#"<?xml version="1.0" encoding="UTF-8"?>
<document type="Open Screenplay Format document" version="40">
<info uuid="test" pagecount="1"/>
<settings/><styles/>
<paragraphs>
<para><style basestyle="Scene Heading"/><text>INT. OFFICE - DAY</text></para>
<para><style basestyle="Action"/><text>A desk. A chair.</text></para>
</paragraphs>
<titlepage/><lists/>
</document>"#;
let doc = osf::parse(xml.as_bytes()).unwrap();
assert_eq!(doc.scenes.len(), 1);
assert_eq!(doc.scenes[0].heading, "INT. OFFICE - DAY");Structs§
- OsfDocument
- A fully parsed OSF screenplay document.
- Paragraph
- A single paragraph from the OSF XML.
- Scene
- A single scene in the screenplay.
- Title
Page - Title page metadata extracted from an OSF document.
Enums§
- OsfError
- Errors that can occur when parsing an OSF document.
- OsfVersion
- OSF format version.
- Para
Style - Screenplay paragraph element types.
Functions§
- parse
- Parse a
.fadeinfile or raw OSF XML bytes into anOsfDocument.