FLTK logo

[master] bedda58 - Handle single quotes

FLTK matrix user chat room
(using Element browser app)   FLTK gitter user chat room   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" Oct 21, 2020  
 
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 ]
 
     
Previous Message ]Next Message ]
 
 

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