X-Git-Url: http://nitlanguage.org diff --git a/lib/gen_nit.nit b/lib/gen_nit.nit index ea410a2..7af2044 100644 --- a/lib/gen_nit.nit +++ b/lib/gen_nit.nit @@ -15,6 +15,8 @@ # Support to generate and otherwise manipulate Nit code module gen_nit +import template + redef class Sys # Reserved keywords in the Nit language var keywords: Set[String] is lazy do return new HashSet[String].from([ @@ -39,3 +41,46 @@ redef class Sys var methods_in_pointer: Array[String] is lazy do return methods_in_object + [ "free"] end + +# Template of a Nit module to generate Nit code +class NitModule + super Template + + # Header on top of the module, usually the documentation + var header: nullable Writable = null is writable + + # The module's name + var name: Writable is writable + + # Annotations on the module declaration + var annotations = new Array[Writable] + + # Imports from this module + var imports = new Array[Writable] + + # Main content of this module + var content = new Array[Writable] + + redef fun rendering + do + var header = header + if header != null then add header + + var name = name + if annotations.is_empty then + add "module {name}\n\n" + else + add "module {name} is\n" + for annotation in annotations do add "\t{annotation}\n" + add "end\n\n" + end + + for i in imports do add "import {i}\n" + add "\n" + + for l in content do + add l + add "\n" + end + end +end