本文整理汇总了C#中MutableString.IsAscii方法的典型用法代码示例。如果您正苦于以下问题:C# MutableString.IsAscii方法的具体用法?C# MutableString.IsAscii怎么用?C# MutableString.IsAscii使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MutableString
的用法示例。
在下文中一共展示了MutableString.IsAscii方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Parse
public static IOInfo Parse(RubyContext/*!*/ context, MutableString/*!*/ modeAndEncoding) {
if (!modeAndEncoding.IsAscii()) {
throw IOModeEnum.IllegalMode(modeAndEncoding.ToAsciiString(false));
}
string[] parts = modeAndEncoding.ToString().Split(':');
return new IOInfo(
IOModeEnum.Parse(parts[0]),
(parts.Length > 1) ? TryParseEncoding(context, parts[1]) : null,
(parts.Length > 2) ? TryParseEncoding(context, parts[2]) : null
);
}
示例2: Create
public static CharacterMap/*!*/ Create(MutableString/*!*/ from, MutableString/*!*/ to) {
Debug.Assert(!from.IsEmpty);
int fromLength = from.GetCharCount();
bool complemental = from.StartsWith('^') && fromLength > 1;
// TODO: kcodings
// TODO: surrogates
// TODO: max - min > threshold
int min, max;
if (from.IsBinaryEncoded || from.IsAscii()) {
min = 0;
max = 255;
} else {
min = Int32.MaxValue;
max = -1;
for (int i = (complemental ? 1 : 0); i < fromLength; i++) {
int c = from.GetChar(i);
if (c < min) {
min = c;
}
if (c > max) {
max = c;
}
}
}
BitArray map;
char[] image;
if (complemental || to.IsEmpty) {
image = null;
map = MakeBitmap(from, fromLength, complemental, min, max);
} else {
map = null;
image = new char[max - min + 1];
// no need to initialize the array:
Debug.Assert(Unmapped == 0);
bool needMap = false;
var toEnum = ExpandRanges(to, 0, to.GetCharCount(), true).GetEnumerator();
foreach (var f in ExpandRanges(from, 0, fromLength, false)) {
toEnum.MoveNext();
needMap |= (image[f - min] = toEnum.Current) == Unmapped;
}
if (needMap) {
map = MakeBitmap(from, fromLength, false, min, max);
}
}
return new CharacterMap(map, image, complemental ? to.GetLastChar() : -1, complemental, min, max);
}
示例3: Join
public static MutableString/*!*/ Join(ConversionStorage<MutableString>/*!*/ tosConversion, IList/*!*/ self, MutableString/*!*/ separator) {
var parts = new List<MutableString>(self.Count);
bool partTainted = false;
bool? isBinary = (separator != null) ? separator.IsBinary : (bool?)null;
Dictionary<object, bool> seen = null;
JoinRecursive(tosConversion, self, parts, ref isBinary, ref partTainted, ref seen);
if (parts.Count == 0) {
return MutableString.CreateEmpty();
}
if (separator != null && separator.IsBinary != isBinary && !separator.IsAscii()) {
isBinary = true;
}
MutableString any = separator;
int length = (separator != null) ? (isBinary.Value ? separator.GetByteCount() : separator.GetCharCount()) * (parts.Count - 1) : 0;
foreach (MutableString part in parts) {
if (part != null) {
length += (isBinary.Value) ? part.GetByteCount() : part.GetCharCount();
if (any == null) {
any = part;
}
}
}
if (any == null) {
return MutableString.CreateEmpty();
}
var result = isBinary.Value ?
MutableString.CreateBinary(length, any.Encoding) :
MutableString.CreateMutable(length, any.Encoding);
for (int i = 0; i < parts.Count; i++) {
if (separator != null && i > 0) {
result.Append(separator);
}
result.Append(parts[i]);
}
result.IsTainted |= partTainted;
if (!result.IsTainted && (separator != null && separator.IsTainted || tosConversion.Context.IsObjectTainted(self))) {
result.IsTainted = true;
}
return result;
}
示例4: AddEncoding
public IOInfo AddEncoding(RubyContext/*!*/ context, MutableString/*!*/ encoding) {
if (!encoding.IsAscii()) {
context.ReportWarning(String.Format("Unsupported encoding {0} ignored", encoding.ToAsciiString(false)));
return this;
}
if (HasEncoding) {
throw RubyExceptions.CreateArgumentError("encoding specified twice");
}
string[] parts = encoding.ToString().Split(':');
return new IOInfo(
_mode,
TryParseEncoding(context, parts[0]),
(parts.Length > 1) ? TryParseEncoding(context, parts[1]) : null
);
}
示例5: LastIndexOf
public static object LastIndexOf(MutableString/*!*/ self,
int character, [DefaultProtocol, DefaultParameterValue(Int32.MaxValue)]int start) {
if (!self.IsBinaryEncoded && !self.Encoding.IsKCoding && !self.IsAscii()) {
throw RubyExceptions.CreateTypeError("type mismatch: Fixnum given");
}
int byteCount = self.GetByteCount();
start = IListOps.NormalizeIndex(byteCount, start);
if (start < 0 || character < 0 || character > 255) {
return null;
}
if (start >= byteCount) {
start = byteCount - 1;
}
int result = self.LastIndexOf((byte)character, start);
return (result != -1) ? ScriptingRuntimeHelpers.Int32ToObject(result) : null;
}
示例6: Index
public static object Index(MutableString/*!*/ self,
int character, [DefaultProtocol, Optional]int start) {
if (!self.IsBinaryEncoded && !self.Encoding.IsKCoding && !self.IsAscii()) {
throw RubyExceptions.CreateTypeError("type mismatch: Fixnum given");
}
if (!NormalizeStart(self.GetByteCount(), ref start) || character < 0 || character > 255) {
return null;
}
int result = self.IndexOf((byte)character, start);
return (result != -1) ? ScriptingRuntimeHelpers.Int32ToObject(result) : null;
}
示例7: Join
public static MutableString/*!*/ Join(JoinConversionStorage/*!*/ conversions, IList/*!*/ self, MutableString separator) {
var parts = new List<MutableString>(self.Count);
bool? isBinary = (separator != null) ? separator.IsBinary : (bool?)null;
Dictionary<object, bool> seen = null;
// build a list of strings to join:
JoinRecursive(conversions, self, parts, ref isBinary, ref seen);
if (parts.Count == 0) {
return MutableString.CreateEmpty();
}
if (separator != null && separator.IsBinary != isBinary && !separator.IsAscii()) {
isBinary = true;
}
// calculate length:
MutableString any = separator;
int length = (separator != null) ? (isBinary.HasValue && isBinary.Value ? separator.GetByteCount() : separator.GetCharCount()) * (parts.Count - 1) : 0;
for (int i = 0, n = parts.Count; i < n; i++) {
var part = parts[i];
if (part != null) {
length += (isBinary.HasValue && isBinary.Value) ? part.GetByteCount() : part.GetCharCount();
if (any == null) {
any = part;
}
}
}
if (any == null) {
return MutableString.CreateEmpty();
}
var result = isBinary.HasValue && isBinary.Value ?
MutableString.CreateBinary(length, any.Encoding) :
MutableString.CreateMutable(length, any.Encoding);
for (int i = 0, n = parts.Count; i < n; i++) {
var part = parts[i];
if (separator != null && i > 0) {
result.Append(separator);
}
if (part != null) {
result.Append(part);
result.TaintBy(part);
}
}
if (separator != null) {
result.TaintBy(separator);
}
if (!result.IsTainted || !result.IsUntrusted) {
result.TaintBy(self, conversions.Context);
}
return result;
}
示例8: IsAscii
public static bool IsAscii(MutableString/*!*/ self) {
return self.IsAscii();
}
示例9: ContainsBinaryData
/// <summary>
/// Returns true if the string binary representation contains bytes from set: 0..0x1f + 0x7f..0xff - [0x0a, 0x0d].
/// </summary>
internal static bool ContainsBinaryData(MutableString/*!*/ str)
{
if (!str.IsAscii()) {
return true;
}
// for ascii strings we can iterate over bytes or characters without converting the string repr:
for (int i = 0; i < str.GetByteCount(); i++) {
byte b = str.GetByte(i);
if (b < 0x20 && b != 0x0a && b != 0x0d || b >= 0x7f) {
return true;
}
}
return false;
}
示例10: ToYamlNode
public static Node ToYamlNode(MutableString/*!*/ self, [NotNull]RubyRepresenter/*!*/ rep)
{
if (!self.IsEmpty && ContainsBinaryData(self)) {
return rep.BaseCreateNode(self.ToByteArray());
}
Debug.Assert(self.IsAscii());
string str = self.ToString();
ScalarQuotingStyle style = ScalarQuotingStyle.None;
if (str.StartsWith(":", StringComparison.Ordinal)) {
style = ScalarQuotingStyle.Double;
} else {
style = rep.GetYamlStyle(self);
}
var tag = rep.GetTagUri(self, Tags.Str, typeof(MutableString));
IList instanceVariableNames = rep.ToYamlProperties(self);
if (instanceVariableNames.Count == 0) {
return rep.Scalar(tag, str, style);
}
var map = new Dictionary<object, object>();
rep.AddYamlProperties(map, self, instanceVariableNames, false);
return rep.Map(
new Dictionary<Node, Node> {
{ rep.Scalar(null, "str", style), rep.Scalar(null, str, style) }
},
tag,
map,
FlowStyle.Block
);
}