|
@@ -38,7 +38,7 @@ namespace UICatalog.Scenarios {
|
|
|
Height = Dim.Fill (1),
|
|
|
};
|
|
|
|
|
|
- textView.Init();
|
|
|
+ textView.Init ();
|
|
|
|
|
|
textView.Text = "SELECT TOP 100 * \nfrom\n MyDb.dbo.Biochemistry;";
|
|
|
|
|
@@ -63,49 +63,49 @@ namespace UICatalog.Scenarios {
|
|
|
Application.RequestStop ();
|
|
|
}
|
|
|
|
|
|
- private class SqlTextView : TextView{
|
|
|
+ private class SqlTextView : TextView {
|
|
|
|
|
|
- private HashSet<string> keywords = new HashSet<string>(StringComparer.CurrentCultureIgnoreCase);
|
|
|
+ private HashSet<string> keywords = new HashSet<string> (StringComparer.CurrentCultureIgnoreCase);
|
|
|
private Attribute blue;
|
|
|
private Attribute white;
|
|
|
private Attribute magenta;
|
|
|
|
|
|
|
|
|
- public void Init()
|
|
|
+ public void Init ()
|
|
|
{
|
|
|
- keywords.Add("select");
|
|
|
- keywords.Add("distinct");
|
|
|
- keywords.Add("top");
|
|
|
- keywords.Add("from");
|
|
|
- keywords.Add("create");
|
|
|
- keywords.Add("CIPHER");
|
|
|
- keywords.Add("CLASS_ORIGIN");
|
|
|
- keywords.Add("CLIENT");
|
|
|
- keywords.Add("CLOSE");
|
|
|
- keywords.Add("COALESCE");
|
|
|
- keywords.Add("CODE");
|
|
|
- keywords.Add("COLUMNS");
|
|
|
- keywords.Add("COLUMN_FORMAT");
|
|
|
- keywords.Add("COLUMN_NAME");
|
|
|
- keywords.Add("COMMENT");
|
|
|
- keywords.Add("COMMIT");
|
|
|
- keywords.Add("COMPACT");
|
|
|
- keywords.Add("COMPLETION");
|
|
|
- keywords.Add("COMPRESSED");
|
|
|
- keywords.Add("COMPRESSION");
|
|
|
- keywords.Add("CONCURRENT");
|
|
|
- keywords.Add("CONNECT");
|
|
|
- keywords.Add("CONNECTION");
|
|
|
- keywords.Add("CONSISTENT");
|
|
|
- keywords.Add("CONSTRAINT_CATALOG");
|
|
|
- keywords.Add("CONSTRAINT_SCHEMA");
|
|
|
- keywords.Add("CONSTRAINT_NAME");
|
|
|
- keywords.Add("CONTAINS");
|
|
|
- keywords.Add("CONTEXT");
|
|
|
- keywords.Add("CONTRIBUTORS");
|
|
|
- keywords.Add("COPY");
|
|
|
- keywords.Add("CPU");
|
|
|
- keywords.Add("CURSOR_NAME");
|
|
|
+ keywords.Add ("select");
|
|
|
+ keywords.Add ("distinct");
|
|
|
+ keywords.Add ("top");
|
|
|
+ keywords.Add ("from");
|
|
|
+ keywords.Add ("create");
|
|
|
+ keywords.Add ("CIPHER");
|
|
|
+ keywords.Add ("CLASS_ORIGIN");
|
|
|
+ keywords.Add ("CLIENT");
|
|
|
+ keywords.Add ("CLOSE");
|
|
|
+ keywords.Add ("COALESCE");
|
|
|
+ keywords.Add ("CODE");
|
|
|
+ keywords.Add ("COLUMNS");
|
|
|
+ keywords.Add ("COLUMN_FORMAT");
|
|
|
+ keywords.Add ("COLUMN_NAME");
|
|
|
+ keywords.Add ("COMMENT");
|
|
|
+ keywords.Add ("COMMIT");
|
|
|
+ keywords.Add ("COMPACT");
|
|
|
+ keywords.Add ("COMPLETION");
|
|
|
+ keywords.Add ("COMPRESSED");
|
|
|
+ keywords.Add ("COMPRESSION");
|
|
|
+ keywords.Add ("CONCURRENT");
|
|
|
+ keywords.Add ("CONNECT");
|
|
|
+ keywords.Add ("CONNECTION");
|
|
|
+ keywords.Add ("CONSISTENT");
|
|
|
+ keywords.Add ("CONSTRAINT_CATALOG");
|
|
|
+ keywords.Add ("CONSTRAINT_SCHEMA");
|
|
|
+ keywords.Add ("CONSTRAINT_NAME");
|
|
|
+ keywords.Add ("CONTAINS");
|
|
|
+ keywords.Add ("CONTEXT");
|
|
|
+ keywords.Add ("CONTRIBUTORS");
|
|
|
+ keywords.Add ("COPY");
|
|
|
+ keywords.Add ("CPU");
|
|
|
+ keywords.Add ("CURSOR_NAME");
|
|
|
keywords.Add ("primary");
|
|
|
keywords.Add ("key");
|
|
|
keywords.Add ("insert");
|
|
@@ -138,29 +138,26 @@ namespace UICatalog.Scenarios {
|
|
|
keywords.Add ("union");
|
|
|
keywords.Add ("exists");
|
|
|
|
|
|
- Autocomplete.AllSuggestions = keywords.ToList();
|
|
|
+ Autocomplete.AllSuggestions = keywords.ToList ();
|
|
|
|
|
|
magenta = Driver.MakeAttribute (Color.Magenta, Color.Black);
|
|
|
blue = Driver.MakeAttribute (Color.Cyan, Color.Black);
|
|
|
white = Driver.MakeAttribute (Color.White, Color.Black);
|
|
|
}
|
|
|
|
|
|
- protected override void ColorNormal ()
|
|
|
+ protected override void SetNormalColor ()
|
|
|
{
|
|
|
Driver.SetAttribute (white);
|
|
|
}
|
|
|
|
|
|
- protected override void ColorNormal (List<System.Rune> line, int idx)
|
|
|
+ protected override void SetNormalColor (List<System.Rune> line, int idx)
|
|
|
{
|
|
|
- if(IsInStringLiteral(line,idx)) {
|
|
|
+ if (IsInStringLiteral (line, idx)) {
|
|
|
Driver.SetAttribute (magenta);
|
|
|
- }
|
|
|
- else
|
|
|
- if(IsKeyword(line,idx))
|
|
|
- {
|
|
|
+ } else
|
|
|
+ if (IsKeyword (line, idx)) {
|
|
|
Driver.SetAttribute (blue);
|
|
|
- }
|
|
|
- else{
|
|
|
+ } else {
|
|
|
Driver.SetAttribute (white);
|
|
|
}
|
|
|
}
|
|
@@ -168,9 +165,9 @@ namespace UICatalog.Scenarios {
|
|
|
private bool IsInStringLiteral (List<System.Rune> line, int idx)
|
|
|
{
|
|
|
string strLine = new string (line.Select (r => (char)r).ToArray ());
|
|
|
-
|
|
|
- foreach(Match m in Regex.Matches(strLine, "'[^']*'")) {
|
|
|
- if(idx >= m.Index && idx < m.Index+m.Length) {
|
|
|
+
|
|
|
+ foreach (Match m in Regex.Matches (strLine, "'[^']*'")) {
|
|
|
+ if (idx >= m.Index && idx < m.Index + m.Length) {
|
|
|
return true;
|
|
|
}
|
|
|
}
|
|
@@ -178,37 +175,36 @@ namespace UICatalog.Scenarios {
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
- private bool IsKeyword(List<System.Rune> line, int idx)
|
|
|
+ private bool IsKeyword (List<System.Rune> line, int idx)
|
|
|
{
|
|
|
- var word = IdxToWord(line,idx);
|
|
|
-
|
|
|
- if(string.IsNullOrWhiteSpace(word)){
|
|
|
+ var word = IdxToWord (line, idx);
|
|
|
+
|
|
|
+ if (string.IsNullOrWhiteSpace (word)) {
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
- return keywords.Contains(word,StringComparer.CurrentCultureIgnoreCase);
|
|
|
+ return keywords.Contains (word, StringComparer.CurrentCultureIgnoreCase);
|
|
|
}
|
|
|
|
|
|
- private string IdxToWord(List<System.Rune> line, int idx)
|
|
|
+ private string IdxToWord (List<System.Rune> line, int idx)
|
|
|
{
|
|
|
- var words = Regex.Split(
|
|
|
- new string(line.Select(r=>(char)r).ToArray()),
|
|
|
+ var words = Regex.Split (
|
|
|
+ new string (line.Select (r => (char)r).ToArray ()),
|
|
|
"\\b");
|
|
|
|
|
|
|
|
|
int count = 0;
|
|
|
string current = null;
|
|
|
|
|
|
- foreach(var word in words)
|
|
|
- {
|
|
|
+ foreach (var word in words) {
|
|
|
current = word;
|
|
|
- count+= word.Length;
|
|
|
- if(count > idx){
|
|
|
+ count += word.Length;
|
|
|
+ if (count > idx) {
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- return current?.Trim();
|
|
|
+ return current?.Trim ();
|
|
|
}
|
|
|
}
|
|
|
}
|