[Uml-devel] KDE/kdesdk/umbrello/umbrello

Richard Dale Richard_Dale at tipitina.demon.co.uk
Fri Jul 22 03:14:47 UTC 2005


SVN commit 437549 by rdale:

* Added a Ruby code generator based on the newer more advanced
  Java one, allowing code previewing and editing methods within
  Umbrello.
* It has all the features of the Java generator except for
  creating ANT scripts
* C++ doc comments are converted to RDOC format, like the 
  simpler ruby code generator.
* Generated comments can either be '#'s or =begin.. =end pairs
* The code was tested with the .xmi file for umbrello project
  umbrello-1.4.xmi. But it really needs some sort of 'torture
  test' with all the different types of associations, roles and
  so on to verify to code generation.

CCMAIL: umbrello-devel at kde.org



 M  +6 -0      codegenerators/Makefile.am  
 M  +5 -1      codegenerators/codegenfactory.cpp  
 A             codegenerators/rubyclassdeclarationblock.cpp   [License: no copyright GPL (v2+)]
 A             codegenerators/rubyclassdeclarationblock.h   [License: no copyright GPL (v2+) GENERATED FILE]
 A             codegenerators/rubyclassifiercodedocument.cpp   [License: no copyright GPL (v2+)]
 A             codegenerators/rubyclassifiercodedocument.h   [License: no copyright GPL (v2+)]
 A             codegenerators/rubycodeaccessormethod.cpp   [License: no copyright GPL (v2+)]
 A             codegenerators/rubycodeaccessormethod.h   [License: no copyright GPL (v2+) GENERATED FILE]
 A             codegenerators/rubycodeclassfield.cpp   [License: no copyright GPL (v2+)]
 A             codegenerators/rubycodeclassfield.h   [License: no copyright GPL (v2+)]
 A             codegenerators/rubycodeclassfielddeclarationblock.cpp   [License: no copyright GPL (v2+) GENERATED FILE]
 A             codegenerators/rubycodeclassfielddeclarationblock.h   [License: no copyright GPL (v2+)]
 A             codegenerators/rubycodecomment.cpp   [License: no copyright GPL (v2+)]
 A             codegenerators/rubycodecomment.h   [License: no copyright GPL (v2+)]
 A             codegenerators/rubycodedocumentation.cpp   [License: no copyright GPL (v2+)]
 A             codegenerators/rubycodedocumentation.h   [License: no copyright GPL (v2+)]
 A             codegenerators/rubycodegenerationformbase.cpp   [License: no copyright GENERATED FILE]
 A             codegenerators/rubycodegenerationformbase.h   [License: no copyright GENERATED FILE]
 A             codegenerators/rubycodegenerationformbase.ui  
 A             codegenerators/rubycodegenerationpolicy.cpp   [License: no copyright GPL (v2+)]
 A             codegenerators/rubycodegenerationpolicy.h   [License: no copyright GPL (v2+)]
 A             codegenerators/rubycodegenerationpolicypage.cpp   [License: no copyright GPL (v2+)]
 A             codegenerators/rubycodegenerationpolicypage.h   [License: no copyright GPL (v2+)]
 A             codegenerators/rubycodegenerator.cpp   [License: no copyright GPL (v2+)]
 A             codegenerators/rubycodegenerator.h   [License: no copyright GPL (v2+)]
 A             codegenerators/rubycodeoperation.cpp   [License: no copyright GPL (v2+)]
 A             codegenerators/rubycodeoperation.h   [License: no copyright GPL (v2+)]
 M  +3 -3      codegenerators/rubywriter.cpp  
 M  +1 -1      dialogs/settingsdlg.cpp  


--- trunk/KDE/kdesdk/umbrello/umbrello/codegenerators/Makefile.am #437548:437549
@@ -20,6 +20,12 @@
 				cppheadercodeclassfielddeclarationblock.cpp \
 				cppcodegenerationpolicy.cpp cppcodegenerationpolicypage.cpp \
 				cppcodegenerationformbase.ui cppcodegenerationform.cpp \
+				rubycodegenerator.cpp rubycodeclassfield.cpp \
+				rubyclassifiercodedocument.cpp rubycodecomment.cpp rubycodedocumentation.cpp \
+				rubycodeoperation.cpp rubycodeaccessormethod.cpp \
+				rubyclassdeclarationblock.cpp rubycodeclassfielddeclarationblock.cpp \
+				rubycodegenerationpolicy.cpp rubycodegenerationpolicypage.cpp \
+				rubycodegenerationformbase.ui \
 				simplecodegenerator.cpp \
 				adawriter.cpp aswriter.cpp cppwriter.cpp javawriter.cpp jswriter.cpp \
 				idlwriter.cpp perlwriter.cpp rubywriter.cpp \
--- trunk/KDE/kdesdk/umbrello/umbrello/codegenerators/codegenfactory.cpp #437548:437549
@@ -23,6 +23,7 @@
 // the new
 #include "cppcodegenerator.h"
 #include "javacodegenerator.h"
+#include "rubycodegenerator.h"
 #include "xmlschemawriter.h"
 
 // the old
@@ -143,7 +144,10 @@
         } else if (cname == "PythonWriter") {
             obj = new PythonWriter( doc, name);
         } else if (cname == "RubyWriter") {
-            obj = new RubyWriter( doc, name);
+            if (optionState.generalState.newcodegen)
+                obj = new RubyCodeGenerator(doc, name);
+            else
+                obj = new RubyWriter(doc, name);
         } else if (cname == "SQLWriter") {
             obj = new SQLWriter( doc, name);
         } else if (cname == "XMLSchemaWriter") {
--- trunk/KDE/kdesdk/umbrello/umbrello/codegenerators/rubywriter.cpp #437548:437549
@@ -234,7 +234,7 @@
 
     for (op=opList.first(); op ; op=opList.next()) {
         QString methodName = cleanName(op->getName());
-        QString commentedParams;
+        QStringList commentedParams;
 
         // Skip destructors, and operator methods which
         // can't be defined in ruby
@@ -276,7 +276,7 @@
             int pos = re_params.search(docStr);
             while (pos != -1) {
                 docStr.replace( re_params.cap(0), 
-                                QString("@param _") + re_params.cap(1).lower() + re_params.cap(2) + "_");
+                                QString("@param _") + re_params.cap(1).lower() + re_params.cap(2) + "_" );
                 commentedParams.append(re_params.cap(1).lower() + re_params.cap(2));
 
                 pos += re_params.matchedLength() + 3;
@@ -329,7 +329,7 @@
 
         int j=0;
         for( at = atl->first(); at ;at = atl->next(),j++) {
-            QString nameStr = cppToRubyName(cleanName(at->getName()));
+            QString nameStr = cppToRubyName(at->getName());
             if (j > 0) {
                 h << ", " << nameStr;
             } else {
--- trunk/KDE/kdesdk/umbrello/umbrello/dialogs/settingsdlg.cpp #437548:437549
@@ -116,7 +116,7 @@
     m_GeneralWidgets.tabdiagramsCB -> setChecked( m_pOptionState->generalState.tabdiagrams );
     miscLayout -> addWidget( m_GeneralWidgets.tabdiagramsCB, 0, 1 );
 
-    m_GeneralWidgets.newcodegenCB = new QCheckBox( i18n("Use new C++/Java generators"), m_GeneralWidgets.miscGB );
+    m_GeneralWidgets.newcodegenCB = new QCheckBox( i18n("Use new C++/Java/Ruby generators"), m_GeneralWidgets.miscGB );
     m_GeneralWidgets.newcodegenCB -> setChecked( m_pOptionState->generalState.newcodegen );
     miscLayout -> addWidget( m_GeneralWidgets.newcodegenCB, 1, 0 );
 




More information about the umbrello-devel mailing list