nit: Added new binary nituml, for generation of UML diagrams from Nit source code.
authorLucas Bajolet <r4pass@hotmail.com>
Wed, 17 Sep 2014 21:02:29 +0000 (17:02 -0400)
committerLucas Bajolet <r4pass@hotmail.com>
Tue, 23 Sep 2014 18:06:23 +0000 (14:06 -0400)
Signed-off-by: Lucas Bajolet <r4pass@hotmail.com>

src/nituml.nit [new file with mode: 0644]

diff --git a/src/nituml.nit b/src/nituml.nit
new file mode 100644 (file)
index 0000000..3d5f3ba
--- /dev/null
@@ -0,0 +1,47 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# UML generator in dot format.
+module nituml
+
+import modelbuilder
+import frontend
+import uml
+
+redef class ToolContext
+       var umlphase: Phase = new UMLPhase(self, null)
+end
+
+private class UMLPhase
+       super Phase
+       redef fun process_mainmodule(mainmodule, mmodules)
+       do
+               var d = new UMLModel(mainmodule.model, mainmodule, toolcontext)
+               print d.generate_class_uml.write_to_string
+       end
+end
+
+# process options
+var toolcontext = new ToolContext
+toolcontext.process_options(args)
+var arguments = toolcontext.option_context.rest
+
+# build model
+var model = new Model
+var mbuilder = new ModelBuilder(model, toolcontext)
+var mmodules = mbuilder.parse(arguments)
+
+if mmodules.is_empty then return
+mbuilder.run_phases
+toolcontext.run_global_phases(mmodules)