📄 tostringtracer.cs
字号:
/*
Copyright 2006 Christian Gross http://www.devspace.com
From the book Ajax Patterns and Best Practices
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
using System;
using System.Text;
namespace Devspace.Commons.Tracer {
public interface IToStringFormat {
string FormatBuffer(string input);
}
public class FormatToSpaces : IToStringFormat {
string _inputBuffer;
private int _spaceCounter;
bool _needSpaces;
private StringBuilder _builder = new StringBuilder();
public FormatToSpaces() {
}
private void GenerateSpaces() {
for (int c1 = 0; c1 < _spaceCounter; c1 ++) {
_builder.Append(" ");
}
}
public string FormatBuffer(string inputBuffer) {
_inputBuffer = inputBuffer;
_needSpaces = false;
foreach (char character in _inputBuffer) {
switch (character) {
case '{':
_spaceCounter ++;
_needSpaces = true;
break;
case '}':
_spaceCounter --;
_needSpaces = true;
break;
default:
if (_needSpaces) {
_builder.Append('\n');
GenerateSpaces();
_needSpaces = false;
}
_builder.Append(character);
break;
}
}
return _builder.ToString();
}
}
public class ToStringFormatState {
private class DefaultFormatter : IToStringFormat {
public String FormatBuffer(String input) {
return input;
}
}
private static IToStringFormat _defaultFormat = new DefaultFormatter();
private static IToStringFormat _spacesFormat = new FormatToSpaces();
private static IToStringFormat _defaultState = _defaultFormat;
public static IToStringFormat DefaultFormat {
get {
return _defaultState;
}
}
public static void ToggleToDefault() {
_defaultState = _defaultFormat;
}
public static void ToggleToSpaces() {
_defaultState = _spacesFormat;
}
}
public delegate void ToStringTracerDelegate( ToStringTracer instance);
public class ToStringTracer {
private string _buffer;
public ToStringTracer() {
}
public ToStringTracer Start(string name) {
_buffer += "{Type: " + name + "";
return this;
}
public ToStringTracer Start( Object obj ) {
Start( obj.GetType().FullName );
return this;
}
public string End() {
_buffer += "}";
return _buffer;
}
public ToStringTracer StartArray( string buffer ) {
_buffer += "{Array " + buffer;
return this;
}
public ToStringTracer EndArray() {
_buffer += "}";
return this;
}
public ToStringTracer Variable(string identifier, int value) {
_buffer += "{Variable: " + identifier + " (" + value + ")}";
return this;
}
public ToStringTracer Variable(string identifier, string value) {
_buffer += "{Variable: " + identifier + " (" + value + ")}";
return this;
}
public ToStringTracer Variable( string identifier, bool value ) {
if( value ) {
_buffer += "{Variable: " + identifier + " (true)}";
}
else {
_buffer += "{Variable: " + identifier + " (false)}";
}
return this;
}
public ToStringTracer Base(string value) {
_buffer += "{Base " + value + "}";
return this;
}
public ToStringTracer Embedded(string value) {
_buffer += "{" + value + "}";
return this;
}
public ToStringTracer Delegated( ToStringTracerDelegate delegated) {
delegated( this);
return this;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -