本文整理汇总了C#中IConstructor.ConstructScalar方法的典型用法代码示例。如果您正苦于以下问题:C# IConstructor.ConstructScalar方法的具体用法?C# IConstructor.ConstructScalar怎么用?C# IConstructor.ConstructScalar使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IConstructor
的用法示例。
在下文中一共展示了IConstructor.ConstructScalar方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ConstructYamlBinary
public static byte[] ConstructYamlBinary(IConstructor ctor, Node node) {
string val = ctor.ConstructScalar(node).ToString().Replace("\r", "").Replace("\n", "");
return Convert.FromBase64String(val);
}
示例2: TryConstructYamlBool
public static bool TryConstructYamlBool(IConstructor ctor, Node node, out bool result) {
if (BOOL_VALUES.TryGetValue(ctor.ConstructScalar(node).ToString(), out result)) {
return true;
}
return false;
}
示例3: ConstructYamlFloat
public static object ConstructYamlFloat(IConstructor ctor, Node node) {
string value = ctor.ConstructScalar(node).ToString().Replace("_", "").Replace(",", "");
int sign = +1;
char first = value[0];
if (first == '-') {
sign = -1;
value = value.Substring(1);
} else if (first == '+') {
value = value.Substring(1);
}
string valLower = value.ToLower();
if (valLower == ".inf") {
return sign == -1 ? double.NegativeInfinity : double.PositiveInfinity;
} else if (valLower == ".nan") {
return double.NaN;
} else if (value.IndexOf(':') != -1) {
string[] digits = value.Split(':');
int bes = 1;
double val = 0.0;
for (int i = 0, j = digits.Length; i < j; i++) {
val += (double.Parse(digits[(j - i) - 1]) * bes);
bes *= 60;
}
return sign * val;
} else {
return sign * double.Parse(value);
}
}
示例4: ConstructYamlInt
public static object ConstructYamlInt(IConstructor ctor, Node node) {
string value = ctor.ConstructScalar(node).ToString().Replace("_","").Replace(",","");
int sign = +1;
char first = value[0];
if(first == '-') {
sign = -1;
value = value.Substring(1);
} else if(first == '+') {
value = value.Substring(1);
}
int @base = 10;
if (value == "0") {
return 0;
} else if (value.StartsWith("0b")) {
value = value.Substring(2);
@base = 2;
} else if (value.StartsWith("0x")) {
value = value.Substring(2);
@base = 16;
} else if (value.StartsWith("0")) {
value = value.Substring(1);
@base = 8;
} else if (value.IndexOf(':') != -1) {
string[] digits = value.Split(':');
int bes = 1;
int val = 0;
for (int i = 0, j = digits.Length; i < j; i++) {
val += (int.Parse(digits[(j - i) - 1]) * bes);
bes *= 60;
}
return sign*val;
}
try {
// LiteralParser.ParseInteger delegate handles parsing & conversion to BigInteger (if needed)
return LiteralParser.ParseInteger(sign, value, @base);
} catch (Exception e) {
throw new ConstructorException(string.Format("Could not parse integer value: '{0}' (sign {1}, base {2})", value, sign, @base), e);
}
}
示例5: ConstructYamlStr
public static string ConstructYamlStr(IConstructor ctor, Node node) {
string value = ctor.ConstructScalar(node).ToString();
return value.Length != 0 ? value : null;
}
示例6: ConstructRubyRange
public static Range ConstructRubyRange(IConstructor/*!*/ ctor, Node node) {
object begin = null;
object end = null;
bool excludeEnd = false;
ScalarNode scalar = node as ScalarNode;
if (scalar != null) {
string value = scalar.Value;
int dotsIdx;
if ((dotsIdx = value.IndexOf("...")) != -1) {
begin = ParseObject(ctor, value.Substring(0, dotsIdx));
end = ParseObject(ctor, value.Substring(dotsIdx + 3));
excludeEnd = true;
} else if ((dotsIdx = value.IndexOf("..")) != -1) {
begin = ParseObject(ctor, value.Substring(0, dotsIdx));
end = ParseObject(ctor, value.Substring(dotsIdx + 2));
} else {
throw new ConstructorException("Invalid Range: " + value);
}
} else {
MappingNode mapping = node as MappingNode;
if (mapping == null) {
throw new ConstructorException("Invalid Range: " + node);
}
foreach (KeyValuePair<Node, Node> n in mapping.Nodes) {
string key = ctor.ConstructScalar(n.Key).ToString();
switch (key) {
case "begin":
begin = ctor.ConstructObject(n.Value);
break;
case "end":
end = ctor.ConstructObject(n.Value);
break;
case "excl":
TryConstructYamlBool(ctor, n.Value, out excludeEnd);
break;
default:
throw new ConstructorException(string.Format("'{0}' is not allowed as an instance variable name for class Range", key));
}
}
}
var comparisonStorage = new BinaryOpStorage();
return new Range(comparisonStorage, ctor.GlobalScope.Context, begin, end, excludeEnd);
}
示例7: ConstructRubyScalar
public static object ConstructRubyScalar(IConstructor ctor, Node node) {
object value = ctor.ConstructScalar(node);
if (value == null) {
return value;
}
string str = value as string;
if (str != null) {
return MutableString.Create(str);
}
return value;
}