SF.net SVN: geany-plugins:[891] trunk/geany-plugins/pretty-printer/src
ctabin at users.sourceforge.net
ctabin at xxxxx
Mon Aug 10 19:45:10 UTC 2009
Revision: 891
http://geany-plugins.svn.sourceforge.net/geany-plugins/?rev=891&view=rev
Author: ctabin
Date: 2009-08-10 19:45:09 +0000 (Mon, 10 Aug 2009)
Log Message:
-----------
PrettyPrinter should now compile with automatic build
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 18:21:56 UTC (rev 890)
+++ trunk/geany-plugins/pretty-printer/src/Plugin.c 2009-08-10 19:45:09 UTC (rev 891)
@@ -1,10 +1,19 @@
/**
- * Written by Cédric Tabin
- * http://www.astorm.ch/
- * Version 1.0 - 08.08.2009
- *
- * Code under licence GPLv2
- * Geany - http://www.geany.org/
+ * Copyright (C) 2009 Cedric Tabin
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
/*
@@ -24,7 +33,8 @@
#include <Scintilla.h>
#include <libxml/parser.h>
#include <libxml/tree.h>
-#include "PrettyPrinter.c"
+#include <glib/gmacros.h>
+#include "PrettyPrinter.h"
GeanyPlugin* geany_plugin;
GeanyData* geany_data;
Modified: trunk/geany-plugins/pretty-printer/src/PrettyPrinter.c
===================================================================
--- trunk/geany-plugins/pretty-printer/src/PrettyPrinter.c 2009-08-10 18:21:56 UTC (rev 890)
+++ trunk/geany-plugins/pretty-printer/src/PrettyPrinter.c 2009-08-10 19:45:09 UTC (rev 891)
@@ -1,10 +1,19 @@
/**
- * Written by Cédric Tabin
- * http://www.astorm.ch/
- * Version 1.0 - 08.08.2009
- *
- * Code under licence GPLv2
- * Geany - http://www.geany.org/
+ * Copyright (C) 2009 Cedric Tabin
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#include "PrettyPrinter.h"
@@ -19,11 +28,11 @@
static char readNextChar(); //read the next char into the input buffer;
static char getNextChar(); //returns the next char but do not increase the input buffer index (use readNextChar for that)
static char getPreviousInsertedChar(); //returns the last inserted char into the new buffer
-static boolean isWhite(char c); //check if the specified char is a white
-static boolean isLineBreak(char c); //check if the specified char is a new line
+static gboolean isWhite(char c); //check if the specified char is a white
+static gboolean isLineBreak(char c); //check if the specified char is a new line
static int putNewLine(); //put a new line into the new char buffer with the correct number of whites (indentation)
-static boolean isInlineNodeAllowed(); //check if it is possible to have an inline node
-static void resetBackwardIndentation(boolean resetLineBreak); //reset the indentation for the current depth (just reset the index in fact)
+static gboolean isInlineNodeAllowed(); //check if it is possible to have an inline node
+static void resetBackwardIndentation(gboolean resetLineBreak); //reset the indentation for the current depth (just reset the index in fact)
//specific parsing functions
static int processElements(); //returns the number of elements processed
@@ -54,8 +63,8 @@
static int inputBufferIndex; //input buffer index (position of the next char to read into the input string)
static int currentDepth; //current depth (for indentation)
static char* currentNodeName; //current node name
-static boolean appendIndentation; //if the indentation must be added (with a line break before)
-static boolean lastNodeOpen; //defines if the last action was a not opening or not
+static gboolean appendIndentation; //if the indentation must be added (with a line break before)
+static gboolean lastNodeOpen; //defines if the last action was a not opening or not
static PrettyPrintingOptions* options; //options of PrettyPrinting
//============================================ GENERAL FUNCTIONS =======================================
@@ -68,7 +77,7 @@
//initialize the variables
result = PRETTY_PRINTING_SUCCESS;
- boolean freeOptions = FALSE;
+ gboolean freeOptions = FALSE;
if (ppOptions == NULL) { ppOptions = createDefaultPrettyPrintingOptions(); freeOptions = TRUE; }
options = ppOptions;
@@ -149,7 +158,8 @@
void putNextCharsInBuffer(int nbChars)
{
- for (int i=0 ; i<nbChars ; ++i)
+ int i;
+ for (i=0 ; i<nbChars ; ++i)
{
char c = readNextChar();
putCharInBuffer(c);
@@ -191,7 +201,8 @@
{
putCharInBuffer('\n');
int spaces = currentDepth*options->indentLength;
- for(int i=0 ; i<spaces ; ++i)
+ int i;
+ for(i=0 ; i<spaces ; ++i)
{
putCharInBuffer(options->indentChar);
}
@@ -221,7 +232,7 @@
return counter;
}
-boolean isWhite(char c)
+gboolean isWhite(char c)
{
if (c == ' ') return TRUE;
if (c == '\t') return TRUE;
@@ -231,7 +242,7 @@
return FALSE;
}
-boolean isLineBreak(char c)
+gboolean isLineBreak(char c)
{
if (c == '\n') return TRUE;
if (c == '\r') return TRUE;
@@ -239,7 +250,7 @@
return FALSE;
}
-boolean isInlineNodeAllowed()
+gboolean isInlineNodeAllowed()
{
//the last action was not an opening => inline not allowed
if (!lastNodeOpen) { return FALSE; }
@@ -263,7 +274,7 @@
//read until closing
char oldChar = ' ';
index += 3; //that by pass meanless chars
- boolean loop = TRUE;
+ gboolean loop = TRUE;
while (loop)
{
char current = inputBuffer[index];
@@ -291,8 +302,8 @@
currentChar = inputBuffer[index+1];
if (currentChar == '/')
{
- //as we are in a correct XML (so far...), if the node is being
- //directly close, the inline is allowed !!!
+ //as we are in a correct XML (so far...), if the node is
+ //being directly close, the inline is allowed !!!
return TRUE;
}
}
@@ -301,7 +312,7 @@
return FALSE;
}
-void resetBackwardIndentation(boolean resetLineBreak)
+void resetBackwardIndentation(gboolean resetLineBreak)
{
xmlPrettyPrintedIndex -= (currentDepth*options->indentLength);
if (resetLineBreak) { --xmlPrettyPrintedIndex; }
@@ -321,7 +332,7 @@
{
int counter = 0;
++currentDepth;
- boolean loop = TRUE;
+ gboolean loop = TRUE;
while (loop && result == PRETTY_PRINTING_SUCCESS)
{
//strip unused whites
@@ -334,7 +345,7 @@
if (appendIndentation) { putNewLine(); }
//always append indentation (but need to store the state)
- boolean indentBackward = appendIndentation;
+ gboolean indentBackward = appendIndentation;
appendIndentation = TRUE;
//okay what do we have now ?
@@ -360,7 +371,11 @@
{
//close a node => stop the loop !!
loop = FALSE;
- if (indentBackward) { xmlPrettyPrintedIndex -= options->indentLength; } //INDEX HACKING
+ if (indentBackward)
+ {
+ //INDEX HACKING
+ xmlPrettyPrintedIndex -= options->indentLength;
+ }
}
else if (nextChar == '?')
{
@@ -413,12 +428,12 @@
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; }
- boolean loop = TRUE;
+ gboolean loop = TRUE;
while (loop)
{
readWhites(); //strip the whites
- char next = getNextChar(); //don't read the last char => will be processed afterwards
+ char next = getNextChar(); //don't read the last char (processed afterwards)
if (next == '/') { loop = FALSE; } /* end of node */
else if (next == '>') { loop = FALSE; } /* end of tag */
else if (next == '?') { loop = FALSE; } /* end of header */
@@ -438,13 +453,16 @@
if (firstChar != '<') { fprintf(stderr, "processHeader : first char should be '<' (not '%c')", firstChar); printDebugStatus(); result = PRETTY_PRINTING_INVALID_CHAR_ERROR; return; } /* what ?????? invalid xml !!! */
if (secondChar == '?')
{
- putNextCharsInBuffer(2); //puts the '<' and '?' chars into the new buffer
+ //puts the '<' and '?' chars into the new buffer
+ putNextCharsInBuffer(2);
while(!isWhite(getNextChar())) { putNextCharsInBuffer(1); }
readWhites();
processElementAttributes();
- putNextCharsInBuffer(2); //puts the '?' and '>' chars into the new buffer
+
+ //puts the '?' and '>' chars into the new buffer
+ putNextCharsInBuffer(2);
}
}
@@ -456,7 +474,9 @@
//read the node name
int nodeNameLength = 0;
- while (!isWhite(getNextChar()) && getNextChar() != '>' && getNextChar() != '/')
+ while (!isWhite(getNextChar()) &&
+ getNextChar() != '>' && //end of the tag
+ getNextChar() != '/') //tag is being closed
{
putNextCharsInBuffer(1);
++nodeNameLength;
@@ -466,7 +486,8 @@
char* nodeName = (char*)malloc(sizeof(char)*nodeNameLength+1);
if (nodeName == NULL) { exit(PRETTY_PRINTING_MALLOC_ERROR); }
nodeName[nodeNameLength] = '\0';
- for (int i=0 ; i<nodeNameLength ; ++i)
+ int i;
+ for (i=0 ; i<nodeNameLength ; ++i)
{
int index = xmlPrettyPrintedIndex-nodeNameLength+i;
nodeName[i] = xmlPrettyPrinted[index];
@@ -497,7 +518,12 @@
readNextChar(); //removing '>'
putCharInBuffer('>');
- if (!options->inlineText) { putNewLine(); } //no inline text => new line !
+ if (!options->inlineText)
+ {
+ //no inline text => new line !
+ putNewLine();
+ }
+
putCharsInBuffer("</");
putCharsInBuffer(currentNodeName);
putCharInBuffer('>');
@@ -506,7 +532,12 @@
lastNodeOpen=FALSE;
return;
}
- else if (nextChar == '>') { putNextCharsInBuffer(1); subElementsProcessed = processElements(TRUE); } //the tag is just closed (maybe some content)
+ else if (nextChar == '>')
+ {
+ //the tag is just closed (maybe some content)
+ putNextCharsInBuffer(1);
+ subElementsProcessed = processElements(TRUE);
+ }
else { fprintf(stderr, "processNode : Invalid character '%c'", nextChar); printDebugStatus(); result = PRETTY_PRINTING_INVALID_CHAR_ERROR; return; }
//if the code reaches this area, then the processElements has been called and we must
@@ -527,7 +558,8 @@
//the node will be stripped
if (options->emptyNodeStripping)
{
- xmlPrettyPrintedIndex -= nodeNameLength+4; //because we have '<nodeName ...></nodeName>'
+ //because we have '<nodeName ...></nodeName>'
+ xmlPrettyPrintedIndex -= nodeNameLength+4;
resetBackwardIndentation(TRUE);
if (options->emptyNodeStrippingSpace) { putCharInBuffer(' '); }
@@ -536,7 +568,8 @@
//the closing tag will be put on the same line
else if (options->inlineText)
{
- xmlPrettyPrintedIndex -= nodeNameLength+3; //because we have '</nodeName>'
+ //correct the index because we have '</nodeName>'
+ xmlPrettyPrintedIndex -= nodeNameLength+3;
resetBackwardIndentation(TRUE);
//rewrite the node name
@@ -557,18 +590,18 @@
void processComment()
{
- boolean inlineAllowed = FALSE;
+ gboolean inlineAllowed = FALSE;
if (options->inlineComment) { inlineAllowed = isInlineNodeAllowed(); }
if (inlineAllowed) { resetBackwardIndentation(TRUE); }
putNextCharsInBuffer(4); //add the chars '<!--'
char oldChar = '-';
- boolean loop = TRUE;
+ gboolean loop = TRUE;
while (loop)
{
char nextChar = readNextChar();
- if (oldChar == '-' && nextChar == '-') //the comment is being closed
+ if (oldChar == '-' && nextChar == '-') //comment is being closed
{
loop = FALSE;
}
@@ -578,7 +611,7 @@
putCharInBuffer(nextChar);
oldChar = nextChar;
}
- else if (!options->oneLineComment) //oh ! there is a line break !
+ else if (!options->oneLineComment) //oh ! there is a line break
{
readWhites(); //strip the whites and new line
putNewLine(); //put a new indentation line
@@ -588,8 +621,11 @@
}
else //the comments must be inlined
{
- readWhites(); //strip the whites and add a space if necessary
- if (getPreviousInsertedChar() != ' ') { putCharInBuffer(' '); }
+ readWhites(); //strip the whites and add a space if needed
+ if (getPreviousInsertedChar() != ' ')
+ {
+ putCharInBuffer(' ');
+ }
}
}
@@ -606,7 +642,7 @@
void processTextNode()
{
//checks if inline is allowed
- boolean inlineTextAllowed = FALSE;
+ gboolean inlineTextAllowed = FALSE;
if (options->inlineText) { inlineTextAllowed = isInlineNodeAllowed(); }
if (inlineTextAllowed) { resetBackwardIndentation(TRUE); } //remove previous indentation
@@ -614,13 +650,19 @@
if (!options->trimLeadingWhites)
{
int backwardIndex = inputBufferIndex-1;
- while (inputBuffer[backwardIndex] == ' ' || inputBuffer[backwardIndex] == '\t') { --backwardIndex; } //backward rolling
+ while (inputBuffer[backwardIndex] == ' ' ||
+ inputBuffer[backwardIndex] == '\t')
+ {
+ --backwardIndex; //backward rolling
+ }
- //now the input[backwardIndex] IS NOT a white. So we go to the next char...
+ //now the input[backwardIndex] IS NOT a white. So we go to
+ //the next char...
++backwardIndex;
//and then re-add the whites
- while (inputBuffer[backwardIndex] == ' ' || inputBuffer[backwardIndex] == '\t')
+ while (inputBuffer[backwardIndex] == ' ' ||
+ inputBuffer[backwardIndex] == '\t')
{
putCharInBuffer(inputBuffer[backwardIndex]);
++backwardIndex;
@@ -636,9 +678,13 @@
readWhites();
if (options->oneLineText)
{
- //as we can put text on one line, remove the line break and replace it by a space
- //but only if the previous char wasn't a space
- if (getPreviousInsertedChar() != ' ') { putCharInBuffer(' '); }
+ //as we can put text on one line, remove the line break
+ //and replace it by a space but only if the previous
+ //char wasn't a space
+ if (getPreviousInsertedChar() != ' ')
+ {
+ putCharInBuffer(' ');
+ }
}
else
{
@@ -658,7 +704,8 @@
//strip the trailing whites
if (options->trimTrailingWhites)
{
- while(getPreviousInsertedChar() == ' ' || getPreviousInsertedChar() == '\t')
+ while(getPreviousInsertedChar() == ' ' ||
+ getPreviousInsertedChar() == '\t')
{
--xmlPrettyPrintedIndex;
}
@@ -673,13 +720,13 @@
void processCDATA()
{
- boolean inlineAllowed = FALSE;
+ gboolean inlineAllowed = FALSE;
if (options->inlineCdata) { inlineAllowed = isInlineNodeAllowed(); }
if (inlineAllowed) { resetBackwardIndentation(TRUE); }
putNextCharsInBuffer(9); //putting the '<![CDATA[' into the buffer
- boolean loop = TRUE;
+ gboolean loop = TRUE;
char oldChar = '[';
while(loop)
{
Modified: trunk/geany-plugins/pretty-printer/src/PrettyPrinter.h
===================================================================
--- trunk/geany-plugins/pretty-printer/src/PrettyPrinter.h 2009-08-10 18:21:56 UTC (rev 890)
+++ trunk/geany-plugins/pretty-printer/src/PrettyPrinter.h 2009-08-10 19:45:09 UTC (rev 891)
@@ -1,10 +1,19 @@
/**
- * Written by Cédric Tabin
- * http://www.astorm.ch/
- * Version 1.0 - 08.08.2009
- *
- * Code under licence GPLv2
- * Geany - http://www.geany.org/
+ * Copyright (C) 2009 Cedric Tabin
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#ifndef PRETTY_PRINTER_H
@@ -15,6 +24,8 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <glib/gmacros.h>
+#include <glib/gtypes.h>
//========================================== DEFINES ===========================================================
@@ -25,26 +36,23 @@
#define PRETTY_PRINTING_EMPTY_XML 2
#define PRETTY_PRINTING_NOT_SUPPORTED_YET 3
-//base type
-#define boolean int
-
//========================================== STRUCTURES =======================================================
typedef struct
{
char indentChar; //char used for indentation
int indentLength; //number of char to use for indentation (by default 2 spaces)
- boolean oneLineText; //text is put on one line
- boolean inlineText; //if possible text are inline (no return after the opening node and before closing node)
- boolean oneLineComment; //comments are put on one line
- boolean inlineComment; //if possible comments are inline (no return after the opening node and before closing node)
- boolean oneLineCdata; //cdata are put on one line
- boolean inlineCdata; //if possible cdata are inline (no return after the opening node and before closing node)
- boolean emptyNodeStripping; //the empty nodes such <node></node> are set to <node/>
- boolean emptyNodeStrippingSpace; //put a space before the '/>' when a node is stripped
- boolean forceEmptyNodeSplit; //force an empty node to be splitted : <node /> becomes <node></node> (only if emptyNodeStripping = false)
- boolean trimLeadingWhites; //trim the leading whites in a text node
- boolean trimTrailingWhites; //trim the trailing whites in a text node
+ gboolean oneLineText; //text is put on one line
+ gboolean inlineText; //if possible text are inline (no return after the opening node and before closing node)
+ gboolean oneLineComment; //comments are put on one line
+ gboolean inlineComment; //if possible comments are inline (no return after the opening node and before closing node)
+ gboolean oneLineCdata; //cdata are put on one line
+ gboolean inlineCdata; //if possible cdata are inline (no return after the opening node and before closing node)
+ gboolean emptyNodeStripping; //the empty nodes such <node></node> are set to <node/>
+ gboolean emptyNodeStrippingSpace; //put a space before the '/>' when a node is stripped
+ gboolean forceEmptyNodeSplit; //force an empty node to be splitted : <node /> becomes <node></node> (only if emptyNodeStripping = false)
+ gboolean trimLeadingWhites; //trim the leading whites in a text node
+ gboolean trimTrailingWhites; //trim the trailing whites in a text node
} PrettyPrintingOptions;
//========================================== FUNCTIONS =========================================================
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Plugins-Commits
mailing list