Skip to content
/ nomap Public

A parser for the '.map' file format used by Quake 1 & 2 as well as Half-Life 1, implemented using the nom parsing framework.

License

Notifications You must be signed in to change notification settings

reslario/nomap

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Docs License

nomap

A parser for the .map file format used by Quake 1 & 2 as well as Half-Life 1, implemented using the nom parsing framework. It can easily be integrated with other nom parsers.

nomap is whitespace agnostic and ignores comments. It also optionally provides Display implementations for all its types (through the "display" feature), so you can serialise a parsed map back into a string.

Example

// parse the example map with the standard format
let map = nomap::parse::<nomap::formats::Standard>(include_str!("../examples/example.map")).unwrap();

// report our findings
for ent in map.entities.iter() {
    println!(
        "Found entity of class `{}` with {} brush{}",
        // every entity should have this, so we optimistically index here
        ent.fields["classname"],
        ent.brushes.len(),
        // some fanciness
        if ent.brushes.len() == 1 { "" } else { "es" }
    )
}

About

A parser for the '.map' file format used by Quake 1 & 2 as well as Half-Life 1, implemented using the nom parsing framework.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages