| 38 | |
| 39 | impl WorldGenerator for Markdown { |
| 40 | fn preprocess(&mut self, resolve: &Resolve, world: WorldId) { |
| 41 | self.sizes.fill(resolve); |
| 42 | |
| 43 | let world = &resolve.worlds[world]; |
| 44 | uwriteln!( |
| 45 | self.src, |
| 46 | "# <a id=\"{}\"></a>World {}\n", |
| 47 | world.name.to_snake_case(), |
| 48 | world.name |
| 49 | ); |
| 50 | self.hrefs.insert( |
| 51 | world.name.to_string(), |
| 52 | format!("#{}", world.name.to_snake_case()), |
| 53 | ); |
| 54 | |
| 55 | let mut r#gen = self.interface(resolve); |
| 56 | |
| 57 | r#gen.docs(&world.docs); |
| 58 | r#gen.push_str("\n"); |
| 59 | |
| 60 | // Produce a table of contents for the world. |
| 61 | let mut first = true; |
| 62 | for (name, import) in &world.imports { |
| 63 | if first { |
| 64 | r#gen.push_str(" - Imports:\n"); |
| 65 | first = false; |
| 66 | } |
| 67 | let name = &resolve.name_world_key(name); |
| 68 | match import { |
| 69 | WorldItem::Interface { .. } => { |
| 70 | r#gen.push_str(" - interface `"); |
| 71 | r#gen.push_str(name); |
| 72 | r#gen.push_str("`\n"); |
| 73 | } |
| 74 | WorldItem::Function(_) => { |
| 75 | r#gen.push_str(" - function `"); |
| 76 | r#gen.push_str(name); |
| 77 | r#gen.push_str("`\n"); |
| 78 | } |
| 79 | WorldItem::Type { .. } => { |
| 80 | r#gen.push_str(" - type `"); |
| 81 | r#gen.push_str(name); |
| 82 | r#gen.push_str("`\n"); |
| 83 | } |
| 84 | } |
| 85 | } |
| 86 | let mut first = true; |
| 87 | for (name, export) in &world.exports { |
| 88 | if first { |
| 89 | r#gen.push_str(" - Exports:\n"); |
| 90 | first = false; |
| 91 | } |
| 92 | let name = &resolve.name_world_key(name); |
| 93 | match export { |
| 94 | WorldItem::Interface { .. } => { |
| 95 | r#gen.push_str(" - interface `"); |
| 96 | r#gen.push_str(name); |
| 97 | r#gen.push_str("`\n"); |