[master] bedda58 - Handle single quotes

GitHub FLTK Project   FLTK News RSS Feed  
  FLTK Apps      FLTK Library      Forums      Links     Login 
 All Forums  |  Back to fltk.commit  ]
 
Previous Message ]Next Message ]

[master] bedda58 - Handle single quotes "Greg Ercolano" 19:47 Oct 21 top right image
 
commit bedda5807e74bbc9f96ee1c446f89923c828a57b
Author:     Greg Ercolano <erco@seriss.com>
AuthorDate: Sun Sep 20 16:05:16 2020 -0700
Commit:     Greg Ercolano <erco@seriss.com>
CommitDate: Mon Oct 19 23:59:56 2020 -0700

    Handle single quotes

 fluid/CodeEditor.cxx | 10 +++++++---
 fluid/StyleParse.cxx |  9 +++++----
 fluid/StyleParse.h   |  3 ++-
 3 files changed, 14 insertions(+), 8 deletions(-)

diff --git fluid/CodeEditor.cxx fluid/CodeEditor.cxx
index c0e91dd..3d7d475 100644
--- fluid/CodeEditor.cxx
+++ fluid/CodeEditor.cxx
@@ -33,7 +33,8 @@ Fl_Text_Display::Style_Table_Entry CodeEditor::
                   { FL_BLUE,             FL_COURIER,        11 }, // D - Strings
                   { FL_DARK_RED,         FL_COURIER,        11 }, // E - Directives
                   { FL_DARK_RED,         FL_COURIER_BOLD,   11 }, // F - Types
-                  { FL_BLUE,             FL_COURIER_BOLD,   11 }  // G - Keywords
+                  { FL_BLUE,             FL_COURIER_BOLD,   11 }, // G - Keywords
+                  { 220, /* med cyan */  FL_COURIER,        11 }  // H - Single quote chars
                 };
 
 // attempt to make the fluid code editor widget honour textsize setting
@@ -61,6 +62,7 @@ void CodeEditor::style_parse(const char *in_tbuff,         // text buffer to par
   // 'E' - Directives     #define, #include..
   // 'F' - Types          void, char..
   // 'G' - Keywords       if, while..
+  // 'H' - Chars          'x'
 
   StyleParse sp;
   sp.tbuff  = in_tbuff;
@@ -83,8 +85,10 @@ void CodeEditor::style_parse(const char *in_tbuff,         // text buffer to par
       if ( !sp.parse_escape() ) break;
     } else if ( strncmp(sp.tbuff, "//", 2)==0 ) {         // Line comment?
       if ( !sp.parse_line_comment() ) break;
-    } else if ( c == '"' ) {                              // Start of quoted string?
-      if ( !sp.parse_quoted_string() ) break;
+    } else if ( c == '"' ) {                              // Start of double quoted string?
+      if ( !sp.parse_quoted_string('"', 'D') ) break;
+    } else if ( c == '\'' ) {                             // Start of single quoted string?
+      if ( !sp.parse_quoted_string('\'', 'H') ) break;
     } else if ( c == '#' && sp.lwhite ) {                 // Start of '#' directive?
       if ( !sp.parse_directive() ) break;
     } else if ( !sp.last && (islower(c) || c == '_') ) {  // Possible C/C++ keyword?
diff --git fluid/StyleParse.cxx fluid/StyleParse.cxx
index 043f2c8..abbb33f 100644
--- fluid/StyleParse.cxx
+++ fluid/StyleParse.cxx
@@ -258,18 +258,19 @@ int StyleParse::parse_keyword() {
   return parse_over_key(key, style);
 }
 
-// Style parse a quoted string.
+// Style parse a quoted string, either "" or ''.
 //    Returns 0 if hit end of buffer, 1 otherwise.
 //
-int StyleParse::parse_quoted_string() {
-  style = 'D';                           // start string style
+int StyleParse::parse_quoted_string(char quote_char, // e.g. '"' or '\''
+                                    char in_style) { // style for quoted text
+  style = in_style;                      // start string style
   if ( !parse_over_char() ) return 0;    // parse over opening quote
 
   // Parse until closing quote reached
   char c;
   while ( len > 0 ) {
     c = tbuff[0];
-    if ( c == '"' ) {                     // Closing quote? Parse and done
+    if ( c == quote_char ) {              // Closing quote? Parse and done
       if ( !parse_over_char() ) return 0; // close quote
       break;
     } else if ( c == '\\' ) {             // Escape sequence? Parse over, continue
diff --git fluid/StyleParse.h fluid/StyleParse.h
index 97755d6..2fcc4f4 100644
--- fluid/StyleParse.h
+++ fluid/StyleParse.h
@@ -50,7 +50,8 @@ public:
   int  parse_over_key(const char *key, char s);
   int  parse_over_angles(char s);
   int  parse_keyword();           // "switch"
-  int  parse_quoted_string();     // "hello"
+  int  parse_quoted_string(char quote_char, char in_style);
+                                  // "hello", 'x'
   int  parse_directive();         // "#define"
   int  parse_line_comment();      // "// text.."
   int  parse_escape();            // "\'"
Direct Link to Message ]
 
bottom left image   bottom right image
Previous Message ]Next Message ]
 
 

Comments are owned by the poster. All other content is copyright 1998-2020 by Bill Spitzak and others. This project is hosted by The FLTK Team. Please report site problems to 'erco@seriss.com'.