3using System.Collections.Generic;
58 if (
Argument.AssociatedObjectValue is
string s)
87 StringBuilder Markdown =
new StringBuilder();
89 return Markdown.ToString();
100 int Rows = Matrix.
Rows;
107 foreach (
string Name
in OM.ColumnNames)
109 Markdown.Append(
"| ");
111 Markdown.Append(
' ');
116 for (Col = 1; Col <= Cols; Col++)
118 Markdown.Append(
"| ");
119 Markdown.Append(Col.ToString());
120 Markdown.Append(
' ');
124 Markdown.AppendLine(
"|");
126 for (Col = 0; Col < Cols; Col++)
128 switch (ColumnAlignment(Matrix, Col))
131 Markdown.Append(
"|:--");
135 Markdown.Append(
"|:-:");
139 Markdown.Append(
"|--:");
143 Markdown.Append(
"|---");
148 Markdown.AppendLine(
"|");
150 LinkedList<KeyValuePair<string, string>> Notes =
null;
152 for (Row = 0; Row < Rows; Row++)
154 for (Col = 0; Col < Cols; Col++)
156 Markdown.Append(
"| ");
160 if (!(E?.AssociatedObjectValue is
null))
166 string NoteId =
"n" + Guid.NewGuid().ToString().Replace(
"-",
string.Empty);
169 Notes =
new LinkedList<KeyValuePair<string, string>>();
171 Notes.AddLast(
new KeyValuePair<string, string>(NoteId, s));
173 Markdown.Append(
"[^");
174 Markdown.Append(NoteId);
175 Markdown.Append(
']');
180 Markdown.Append(
' ');
184 Markdown.AppendLine(
"|");
187 if (!(Notes is
null))
189 foreach (KeyValuePair<string, string> Note
in Notes)
191 Markdown.AppendLine();
192 Markdown.Append(
"[^");
193 Markdown.Append(Note.Key);
194 Markdown.Append(
"]:");
196 foreach (
string Row2
in Note.Value.Replace(
"\r\n",
"\n").Replace(
'\r',
'\n').Split(
'\n'))
198 Markdown.Append(
'\t');
199 Markdown.AppendLine(Row2);
208 int Rows = Matrix.
Rows;
214 for (Row = 0; Row < Rows; Row++)
224 else if (Obj is
double)
226 else if (Obj is
bool)
230 switch (Convert.GetTypeCode(Obj))
232 case TypeCode.Boolean:
237 case TypeCode.DateTime:
238 case TypeCode.String:
243 case TypeCode.Decimal:
244 case TypeCode.Double:
249 case TypeCode.Single:
250 case TypeCode.UInt16:
251 case TypeCode.UInt32:
252 case TypeCode.UInt64:
257 case TypeCode.Object:
263 if (!Result.HasValue)
265 else if (Result.Value != Cell)
282 private static string EnumerableToMarkdown(IEnumerable<IElement> Elements)
284 StringBuilder Markdown =
new StringBuilder();
289 Markdown.AppendLine();
292 return Markdown.ToString();
312 StringBuilder Markdown =
new StringBuilder();
314 return Markdown.ToString();
324 Markdown.AppendLine(
"```graph");
326 Markdown.AppendLine();
327 Markdown.AppendLine(
"```");
328 Markdown.AppendLine();
337 StringBuilder Markdown =
new StringBuilder();
339 return Markdown.ToString();
351 Markdown.AppendLine(
"```image/png");
352 Markdown.AppendLine(Convert.ToBase64String(Bin));
353 Markdown.AppendLine(
"```");
354 Markdown.AppendLine();
363 StringBuilder Markdown =
new StringBuilder();
365 return Markdown.ToString();
375 using (SKData Data = Image.Encode(SKEncodedImageFormat.Png, 100))
377 byte[] Bin = Data.ToArray();
379 Markdown.AppendLine(
"```image/png");
380 Markdown.AppendLine(Convert.ToBase64String(Bin));
381 Markdown.AppendLine(
"```");
382 Markdown.AppendLine();
Helps with parsing of commong data types.
static readonly char[] CRLF
Contains the CR LF character sequence.
Converts an element to a markdown string.
override string FunctionName
Name of the function
static void PixelsToMarkdown(PixelInformation Pixels, StringBuilder Markdown)
Converts pixels to Markdown.
static void ImageToMarkdown(SKImage Image, StringBuilder Markdown)
Converts an image to Markdown.
override IElement Evaluate(IElement Argument, Variables Variables)
Evaluates the function.
static string ImageToMarkdown(SKImage Image)
Converts an image to Markdown.
static string MatrixToMarkdown(IMatrix Matrix)
Converts a matrix to Markdown.
static string SetToMarkdown(ISet Set)
Converts a set to Markdown.
static string PixelsToMarkdown(PixelInformation Pixels)
Converts pixels to Markdown.
static void GraphToMarkdown(Graph Graph, StringBuilder Markdown)
Converts a graph to Markdown.
static string Evaluate(IElement Argument)
Converts an element to a markdown string.
static string GraphToMarkdown(Graph Graph)
Converts a graph to Markdown.
static string VectorToMarkdown(IVector Vector)
Converts a vector to Markdown.
ToMarkdown(ScriptNode Argument, int Start, int Length, Expression Expression)
Converts an element to a markdown string.
static void MatrixToMarkdown(IMatrix Matrix, StringBuilder Markdown)
Converts a matrix to Markdown.
Contains a markdown document. This markdown document class supports original markdown,...
static string Encode(string s)
Encodes all special characters in a string so that it can be included in a markdown document without ...
Base class for all types of sets.
override ICollection< IElement > ChildElements
An enumeration of child elements. If the element is a scalar, this property will return null.
Class managing a script expression.
string ToXml()
Exports the graph to XML.
Base class for funcions of one variable.
ScriptNode Argument
Function argument.
Base class for all nodes in a parsed script tree.
int Length
Length of expression covered by node.
override string ToString()
int Start
Start position in script expression.
bool HasColumnNames
If the matrix has column names defined.
ToMatrix(ScriptNode Operand, bool NullCheck, int Start, int Length, Expression Expression)
To-Matrix operator.
Basic interface for all types of elements.
object AssociatedObjectValue
Associated object value.
ICollection< IElement > ChildElements
An enumeration of child elements. If the element is a scalar, this property will return null.
Basic interface for matrices.
int Columns
Number of columns.
IElement GetElement(int Column, int Row)
Gets an element of the matrix.
Basic interface for vectors.
Basic interface for all types of sets.
Interface for objects that can be converted into matrices.
TextAlignment
Text alignment of contents.