aboutsummaryrefslogtreecommitdiffstatsci
path: root/CrowIDE/src/Editors/CodeBuffer/CodeLine.cs
diff options
context:
space:
mode:
authorJean-Philippe Bruyère <jp_bruyere@hotmail.com>2018-03-10 06:03:25 +0100
committerJean-Philippe Bruyère <jp_bruyere@hotmail.com>2018-03-10 06:03:25 +0100
commit407690e9b8a2693a7bd831e954c079cb26c569b7 (patch)
tree080e33bbd9e9aea75048306513cde40b603223ea /CrowIDE/src/Editors/CodeBuffer/CodeLine.cs
parentfd3397cdf340284c7cbb912b45ebfdbb654947d5 (diff)
getStremFromPath made instanced for overriding in designiface, crowide wip
Diffstat (limited to 'CrowIDE/src/Editors/CodeBuffer/CodeLine.cs')
-rw-r--r--CrowIDE/src/Editors/CodeBuffer/CodeLine.cs82
1 files changed, 82 insertions, 0 deletions
diff --git a/CrowIDE/src/Editors/CodeBuffer/CodeLine.cs b/CrowIDE/src/Editors/CodeBuffer/CodeLine.cs
new file mode 100644
index 00000000..23f43fba
--- /dev/null
+++ b/CrowIDE/src/Editors/CodeBuffer/CodeLine.cs
@@ -0,0 +1,82 @@
+using System;
+using System.Text;
+using System.Collections.Generic;
+using System.Linq;
+
+namespace Crow.Coding
+{
+ public class CodeLine
+ {
+ public string Content;
+ public List<Token> Tokens;
+ public int EndingState = 0;
+ public Node SyntacticNode;
+ public ParserException exception;
+
+ public CodeLine (string _content){
+ Content = _content;
+ Tokens = null;
+ exception = null;
+ }
+
+ public char this[int i]
+ {
+ get { return Content[i]; }
+ set {
+ if (Content [i] == value)
+ return;
+ StringBuilder sb = new StringBuilder(Content);
+ sb[i] = value;
+ Content = sb.ToString();
+ Tokens = null;
+ //LineUpadateEvent.Raise (this, new CodeBufferEventArgs (i));
+ }
+ }
+ public bool IsFoldable { get { return SyntacticNode == null ? false :
+ SyntacticNode.EndLine != SyntacticNode.StartLine && SyntacticNode.EndLine != null; } }
+ public int FoldingLevel { get { return IsFoldable ? SyntacticNode.Level : 0; } }
+ public bool IsFolded = false;
+ public bool IsParsed {
+ get { return Tokens != null; }
+ }
+ public string PrintableContent {
+ get {
+ return string.IsNullOrEmpty (Content) ? "" : Content.Replace ("\t", new String (' ', Interface.TabSize));
+ }
+ }
+ public int PrintableLength {
+ get {
+ return PrintableContent.Length;
+ }
+ }
+ public int Length {
+ get {
+ return string.IsNullOrEmpty (Content) ? 0 : Content.Length;
+ }
+ }
+ public int FirstNonBlankTokIndex {
+ get { return Tokens == null ? -1 : Tokens.FindIndex (tk=>tk.Type != BufferParser.TokenType.WhiteSpace); }
+ }
+
+ public void SetLineInError (ParserException ex) {
+ Tokens = null;
+ exception = ex;
+ }
+
+// public static implicit operator string(CodeLine sl) {
+// return sl == null ? "" : sl.Content;
+// }
+ public static implicit operator CodeLine(string s) {
+ return new CodeLine(s);
+ }
+ public static bool operator ==(string s1, CodeLine s2)
+ {
+ return string.Equals (s1, s2.Content);
+ }
+ public static bool operator !=(string s1, CodeLine s2)
+ {
+ return !string.Equals (s1, s2.Content);
+ }
+ }
+}
+