Neuron®
The Neuron® is the basis for the creation of open and secure federated networks for smart societies.
Loading...
Searching...
No Matches
CustomEncode.cs
1using System.Collections.Generic;
2using System.Text;
3using Waher.Content;
9
11{
16 {
25 public CustomEncode(ScriptNode Binary, ScriptNode ContentType, int Start, int Length, Expression Expression)
26 : base(Binary, ContentType, Start, Length, Expression)
27 {
28 }
29
33 public override string FunctionName => nameof(CustomEncode);
34
38 public override string[] DefaultArgumentNames => new string[] { "Binary", "ContentType" };
39
48 {
49 object Obj = Argument1.AssociatedObjectValue;
50 string ContentType = Argument2.AssociatedObjectValue?.ToString() ?? string.Empty;
51
52 if (!(Obj is byte[] Bin))
53 {
54 if (Obj is string s)
55 {
56 KeyValuePair<string, string>[] Fields = CommonTypes.ParseFieldValues(ContentType.Trim());
57 string Charset = null;
58
59 foreach (KeyValuePair<string, string> P in Fields)
60 {
61 if (string.Compare(P.Key, "charset", true) == 0)
62 {
63 Charset = P.Value;
64 break;
65 }
66 }
67
68 if (Charset is null)
69 {
70 Bin = Utf8WithBOM.GetBytes(s);
71 ContentType += "; charset=utf-8";
72 }
73 else
74 {
75 System.Text.Encoding Encondig = System.Text.Encoding.GetEncoding(Charset);
76 Bin = Encondig.GetBytes(s);
77
78 }
79 }
80 else
81 throw new ScriptRuntimeException("Expected binary or string content.", this);
82 }
83
84 return new ObjectValue(new CustomEncoding(ContentType, Bin));
85 }
86
87 private static readonly System.Text.Encoding Utf8WithBOM = new UTF8Encoding(true);
88
89 }
90}
A custom encoded object.
Helps with parsing of commong data types.
Definition: CommonTypes.cs:13
static KeyValuePair< string, string >[] ParseFieldValues(string Value)
Parses a set of comma or semicolon-separated field values, optionaly delimited by ' or " characters.
Definition: CommonTypes.cs:472
CustomEncode(ScriptNode Binary, ScriptNode ContentType, int Start, int Length, Expression Expression)
CustomEncode(Binary,Content-Type)
Definition: CustomEncode.cs:25
override string FunctionName
Name of the function
Definition: CustomEncode.cs:33
override IElement Evaluate(IElement Argument1, IElement Argument2, Variables Variables)
Evaluates the function.
Definition: CustomEncode.cs:47
override string[] DefaultArgumentNames
Default Argument names
Definition: CustomEncode.cs:38
Class managing a script expression.
Definition: Expression.cs:39
Base class for funcions of one variable.
ScriptNode Argument2
Function argument 2.
ScriptNode Argument1
Function argument 1.
Base class for all nodes in a parsed script tree.
Definition: ScriptNode.cs:69
int Length
Length of expression covered by node.
Definition: ScriptNode.cs:101
override string ToString()
Definition: ScriptNode.cs:359
int Start
Start position in script expression.
Definition: ScriptNode.cs:92
Collection of variables.
Definition: Variables.cs:25
Basic interface for all types of elements.
Definition: IElement.cs:20