Revision: 892 http://geany-plugins.svn.sourceforge.net/geany-plugins/?rev=892&view=rev Author: ctabin Date: 2009-08-11 22:16:27 +0000 (Tue, 11 Aug 2009)
Log Message: ----------- The PrettyPrinter now uses g_warning and g_debug functions for logging
Modified Paths: -------------- trunk/geany-plugins/pretty-printer/src/Plugin.c trunk/geany-plugins/pretty-printer/src/PrettyPrinter.c trunk/geany-plugins/pretty-printer/src/PrettyPrinter.h
Modified: trunk/geany-plugins/pretty-printer/src/Plugin.c =================================================================== --- trunk/geany-plugins/pretty-printer/src/Plugin.c 2009-08-10 19:45:09 UTC (rev 891) +++ trunk/geany-plugins/pretty-printer/src/Plugin.c 2009-08-11 22:16:27 UTC (rev 892) @@ -43,7 +43,7 @@
//plugin information PLUGIN_VERSION_CHECK(130) -PLUGIN_SET_INFO("XML Formatter", "Format an XML file", +PLUGIN_SET_INFO("XML PrettyPrinter", "Formats an XML and make it readable for a human.", "1.0", "Cédric Tabin - http://www.astorm.ch");
static GtkWidget *main_menu_item = NULL; @@ -85,6 +85,7 @@
//updates the document sci_set_text(sco, buffer); + sci_set_current_position(sco, 0, TRUE); //sets the type GeanyFiletype* fileType = filetypes_index(GEANY_FILETYPES_XML); @@ -100,7 +101,7 @@ LIBXML_TEST_VERSION
//put the menu into the Tools - main_menu_item = gtk_menu_item_new_with_mnemonic("XML Formatter"); + main_menu_item = gtk_menu_item_new_with_mnemonic("PrettyPrint XML"); gtk_widget_show(main_menu_item); gtk_container_add(GTK_CONTAINER(geany->main_widgets->tools_menu), main_menu_item);
Modified: trunk/geany-plugins/pretty-printer/src/PrettyPrinter.c =================================================================== --- trunk/geany-plugins/pretty-printer/src/PrettyPrinter.c 2009-08-10 19:45:09 UTC (rev 891) +++ trunk/geany-plugins/pretty-printer/src/PrettyPrinter.c 2009-08-11 22:16:27 UTC (rev 892) @@ -47,6 +47,7 @@ static void processDoctypeElement(); //process a DOCTYPE ELEMENT node
//debug function +static void printError(char *msg, ...); //just print a message like the printf method static void printDebugStatus(); //just print some variables into the console for debugging
//============================================ PRIVATE PROPERTIES ====================================== @@ -93,7 +94,7 @@ xmlPrettyPrintedLength = *length; xmlPrettyPrinted = (char*)malloc(sizeof(char)*(*length)); - if (xmlPrettyPrinted == NULL) { exit(PRETTY_PRINTING_MALLOC_ERROR); } + if (xmlPrettyPrinted == NULL) { g_error("Allocation error"); } //go to the first char readWhites(); @@ -106,7 +107,7 @@ //adjust the final size xmlPrettyPrinted = realloc(xmlPrettyPrinted, xmlPrettyPrintedIndex); - if (xmlPrettyPrinted == NULL) { exit(PRETTY_PRINTING_MALLOC_ERROR); } + if (xmlPrettyPrinted == NULL) { g_error("Allocation error"); } //freeing the unused values if (freeOptions) { free(options); } @@ -137,7 +138,11 @@ PrettyPrintingOptions* createDefaultPrettyPrintingOptions() { PrettyPrintingOptions* options = (PrettyPrintingOptions*)malloc(sizeof(PrettyPrintingOptions)); - if (options == NULL) { fprintf(stderr, "createDefaultPrettyPrintingOptions : Unable to allocate memory"); return NULL; } + if (options == NULL) + { + printError("createDefaultPrettyPrintingOptions : Unable to allocate memory"); + return NULL; + } options->indentChar = ' '; options->indentLength = 2; @@ -174,7 +179,7 @@ if (charToAdd == '\0') { ++xmlPrettyPrintedLength; } else { xmlPrettyPrintedLength += inputBufferLength; } xmlPrettyPrinted = (char*)realloc(xmlPrettyPrinted, xmlPrettyPrintedLength); - if (xmlPrettyPrinted == NULL) { exit(PRETTY_PRINTING_MALLOC_ERROR); } + if (xmlPrettyPrinted == NULL) { g_error("Allocation error"); } } //putting the char and increase the index for the next one @@ -365,7 +370,11 @@ else if (oneMore == '[') { processCDATA(); ++counter; } //cdata else if (oneMore == 'D') { processDoctype(); ++counter; } //doctype <!DOCTYPE ... > else if (oneMore == 'E') { processDoctypeElement(); ++counter; } //doctype element <!ELEMENT ... > - else { fprintf(stderr, "processElements : Invalid char '%c' afer '<!'", oneMore); printDebugStatus(); result = PRETTY_PRINTING_INVALID_CHAR_ERROR; } + else + { + printError("processElements : Invalid char '%c' afer '<!'", oneMore); + result = PRETTY_PRINTING_INVALID_CHAR_ERROR; + } } else if (nextChar == '/') { @@ -426,7 +435,12 @@ void processElementAttributes() { char current = getNextChar(); //should not be a white - if (isWhite(current)) { fprintf(stderr, "processElementAttributes : first char shouldn't be a white"); printDebugStatus(); result = PRETTY_PRINTING_INVALID_CHAR_ERROR; return; } + if (isWhite(current)) + { + printError("processElementAttributes : first char shouldn't be a white"); + result = PRETTY_PRINTING_INVALID_CHAR_ERROR; + return; + } gboolean loop = TRUE; while (loop) @@ -450,7 +464,13 @@ int firstChar = inputBuffer[inputBufferIndex]; //should be '<' int secondChar = inputBuffer[inputBufferIndex+1]; //must be '?' - if (firstChar != '<') { fprintf(stderr, "processHeader : first char should be '<' (not '%c')", firstChar); printDebugStatus(); result = PRETTY_PRINTING_INVALID_CHAR_ERROR; return; } /* what ?????? invalid xml !!! */ + if (firstChar != '<') + { + /* what ?????? invalid xml !!! */ + printError("processHeader : first char should be '<' (not '%c')", firstChar); + result = PRETTY_PRINTING_INVALID_CHAR_ERROR; return; + } + if (secondChar == '?') { //puts the '<' and '?' chars into the new buffer @@ -469,7 +489,13 @@ void processNode() { int opening = readNextChar(); - if (opening != '<') { fprintf(stderr, "processNode : The first char should be '<' (not '%c')", opening); printDebugStatus(); result = PRETTY_PRINTING_INVALID_CHAR_ERROR; return; } + if (opening != '<') + { + printError("processNode : The first char should be '<' (not '%c')", opening); + result = PRETTY_PRINTING_INVALID_CHAR_ERROR; + return; + } + putCharInBuffer(opening); //read the node name @@ -484,7 +510,7 @@
//store the name char* nodeName = (char*)malloc(sizeof(char)*nodeNameLength+1); - if (nodeName == NULL) { exit(PRETTY_PRINTING_MALLOC_ERROR); } + if (nodeName == NULL) { g_error("Allocation error"); } nodeName[nodeNameLength] = '\0'; int i; for (i=0 ; i<nodeNameLength ; ++i) @@ -538,12 +564,22 @@ putNextCharsInBuffer(1); subElementsProcessed = processElements(TRUE); } - else { fprintf(stderr, "processNode : Invalid character '%c'", nextChar); printDebugStatus(); result = PRETTY_PRINTING_INVALID_CHAR_ERROR; return; } + else + { + printError("processNode : Invalid character '%c'", nextChar); + result = PRETTY_PRINTING_INVALID_CHAR_ERROR; + return; + } //if the code reaches this area, then the processElements has been called and we must //close the opening tag char closeChar = getNextChar(); - if (closeChar != '<') { fprintf(stderr, "processNode : Invalid character '%c' for closing tag (should be '<')", closeChar); printDebugStatus(); result = PRETTY_PRINTING_INVALID_CHAR_ERROR; return; } + if (closeChar != '<') + { + printError("processNode : Invalid character '%c' for closing tag (should be '<')", closeChar); + result = PRETTY_PRINTING_INVALID_CHAR_ERROR; + return; + } do { @@ -630,7 +666,12 @@ } char lastChar = readNextChar(); //should be '>' - if (lastChar != '>') { fprintf(stderr, "processComment : last char must be '>' (not '%c')", lastChar); printDebugStatus(); result = PRETTY_PRINTING_INVALID_CHAR_ERROR; return; } + if (lastChar != '>') + { + printError("processComment : last char must be '>' (not '%c')", lastChar); + result = PRETTY_PRINTING_INVALID_CHAR_ERROR; + return; + } putCharInBuffer(lastChar); if (inlineAllowed) { appendIndentation = FALSE; } @@ -754,7 +795,13 @@ } char lastChar = readNextChar(); //should be '>' - if (lastChar != '>') { fprintf(stderr, "processCDATA : last char must be '>' (not '%c')", lastChar); printDebugStatus(); result = PRETTY_PRINTING_INVALID_CHAR_ERROR; return; } + if (lastChar != '>') + { + printError("processCDATA : last char must be '>' (not '%c')", lastChar); + result = PRETTY_PRINTING_INVALID_CHAR_ERROR; + return; + } + putCharInBuffer(lastChar); if (inlineAllowed) { appendIndentation = FALSE; } @@ -765,27 +812,34 @@
void processDoctype() { - fprintf(stderr, "DOCTYPE is currently not supported by PrettyPrinter\n"); - fflush(stderr); - + printError("DOCTYPE is currently not supported by PrettyPrinter\n"); result = PRETTY_PRINTING_NOT_SUPPORTED_YET; }
void processDoctypeElement() { - fprintf(stderr, "ELEMENT is currently not supported by PrettyPrinter\n"); - fflush(stderr); - + printError("ELEMENT is currently not supported by PrettyPrinter\n"); result = PRETTY_PRINTING_NOT_SUPPORTED_YET; }
+void printError(char *msg, ...) +{ + va_list va; + va_start(va, msg); + g_warning(msg, va); + va_end(va); + + //TODO also do a fprintf on stderr ? + + printDebugStatus(); +} + void printDebugStatus() { - fprintf(stderr, "\n===== INPUT =====\n%s\n=================\ninputLength = %d\ninputIndex = %d\noutputLength = %d\noutputIndex = %d\n", + g_debug(stderr, "\n===== INPUT =====\n%s\n=================\ninputLength = %d\ninputIndex = %d\noutputLength = %d\noutputIndex = %d\n", inputBuffer, inputBufferLength, inputBufferIndex, xmlPrettyPrintedLength, xmlPrettyPrintedIndex); - fflush(stderr); }
Modified: trunk/geany-plugins/pretty-printer/src/PrettyPrinter.h =================================================================== --- trunk/geany-plugins/pretty-printer/src/PrettyPrinter.h 2009-08-10 19:45:09 UTC (rev 891) +++ trunk/geany-plugins/pretty-printer/src/PrettyPrinter.h 2009-08-11 22:16:27 UTC (rev 892) @@ -24,14 +24,13 @@ #include <stdio.h> #include <stdlib.h> #include <string.h> -#include <glib/gmacros.h> -#include <glib/gtypes.h> +#include <stdarg.h> +#include <glib.h>
//========================================== DEFINES ===========================================================
//defines #define PRETTY_PRINTING_SUCCESS 0 -#define PRETTY_PRINTING_MALLOC_ERROR -1 #define PRETTY_PRINTING_INVALID_CHAR_ERROR 1 #define PRETTY_PRINTING_EMPTY_XML 2 #define PRETTY_PRINTING_NOT_SUPPORTED_YET 3
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
plugins-commits@lists.geany.org