Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataWeb / Server / System / Data / Services / Serializers / IndentedTextWriter.cs / 1305376 / IndentedTextWriter.cs
//---------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // //// Provides a writer implementation for Json format // // // @owner [....] //--------------------------------------------------------------------- namespace System.Data.Services.Serializers { using System; using System.Diagnostics; using System.Globalization; using System.IO; using System.Text; ///Writes the Json text in indented format. ////// There are many more methods implemented in previous versions /// of this file to handle more type and newline cases. /// internal sealed class IndentedTextWriter : TextWriter { ///writer to which Json text needs to be written private TextWriter writer; ///keeps track of the indentLevel private int indentLevel; ///keeps track of pending tabs private bool tabsPending; ///string representation of tab private string tabString; ////// Creates a new instance of IndentedTextWriter over the given text writer /// /// writer which IndentedTextWriter wraps public IndentedTextWriter(TextWriter writer) : base(CultureInfo.InvariantCulture) { this.writer = writer; this.tabString = " "; } ///Returns the Encoding for the given writer public override Encoding Encoding { get { return this.writer.Encoding; } } ///Returns the new line character public override string NewLine { get { return this.writer.NewLine; } } ///returns the current indent level public int Indent { get { return this.indentLevel; } set { Debug.Assert(value >= 0, "value >= 0"); if (value < 0) { value = 0; } this.indentLevel = value; } } ///Closes the underlying writer public override void Close() { // This is done to make sure we don't accidently close the underlying stream. // Since we don't own the stream, we should never close it. throw new NotImplementedException(); } ///Clears all the buffer of the current writer public override void Flush() { this.writer.Flush(); } ////// Writes the given string value to the underlying writer /// /// string value to be written public override void Write(string s) { this.OutputTabs(); this.writer.Write(s); } ////// Writes the given char value to the underlying writer /// /// char value to be written public override void Write(char value) { this.OutputTabs(); this.writer.Write(value); } ////// Writes the trimmed text if minimizeWhiteSpeace is set to true /// /// string value to be written public void WriteTrimmed(string text) { this.Write(text); } ///Writes the tabs depending on the indent level private void OutputTabs() { if (this.tabsPending) { for (int i = 0; i < this.indentLevel; i++) { this.writer.Write(this.tabString); } this.tabsPending = false; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //---------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // //// Provides a writer implementation for Json format // // // @owner [....] //--------------------------------------------------------------------- namespace System.Data.Services.Serializers { using System; using System.Diagnostics; using System.Globalization; using System.IO; using System.Text; ///Writes the Json text in indented format. ////// There are many more methods implemented in previous versions /// of this file to handle more type and newline cases. /// internal sealed class IndentedTextWriter : TextWriter { ///writer to which Json text needs to be written private TextWriter writer; ///keeps track of the indentLevel private int indentLevel; ///keeps track of pending tabs private bool tabsPending; ///string representation of tab private string tabString; ////// Creates a new instance of IndentedTextWriter over the given text writer /// /// writer which IndentedTextWriter wraps public IndentedTextWriter(TextWriter writer) : base(CultureInfo.InvariantCulture) { this.writer = writer; this.tabString = " "; } ///Returns the Encoding for the given writer public override Encoding Encoding { get { return this.writer.Encoding; } } ///Returns the new line character public override string NewLine { get { return this.writer.NewLine; } } ///returns the current indent level public int Indent { get { return this.indentLevel; } set { Debug.Assert(value >= 0, "value >= 0"); if (value < 0) { value = 0; } this.indentLevel = value; } } ///Closes the underlying writer public override void Close() { // This is done to make sure we don't accidently close the underlying stream. // Since we don't own the stream, we should never close it. throw new NotImplementedException(); } ///Clears all the buffer of the current writer public override void Flush() { this.writer.Flush(); } ////// Writes the given string value to the underlying writer /// /// string value to be written public override void Write(string s) { this.OutputTabs(); this.writer.Write(s); } ////// Writes the given char value to the underlying writer /// /// char value to be written public override void Write(char value) { this.OutputTabs(); this.writer.Write(value); } ////// Writes the trimmed text if minimizeWhiteSpeace is set to true /// /// string value to be written public void WriteTrimmed(string text) { this.Write(text); } ///Writes the tabs depending on the indent level private void OutputTabs() { if (this.tabsPending) { for (int i = 0; i < this.indentLevel; i++) { this.writer.Write(this.tabString); } this.tabsPending = false; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- FormsAuthenticationCredentials.cs
- XmlSerializerAssemblyAttribute.cs
- ToolStripSeparator.cs
- ValidationSummaryDesigner.cs
- CultureMapper.cs
- ListViewInsertedEventArgs.cs
- OracleDataReader.cs
- ArithmeticException.cs
- SettingsProviderCollection.cs
- MsmqEncryptionAlgorithm.cs
- SuppressMessageAttribute.cs
- SchemaComplexType.cs
- XmlSchemaAttributeGroup.cs
- DuplexClientBase.cs
- XhtmlBasicSelectionListAdapter.cs
- BinaryFormatterWriter.cs
- XamlVector3DCollectionSerializer.cs
- CompoundFileReference.cs
- Facet.cs
- KeyMatchBuilder.cs
- WebPartEditorCancelVerb.cs
- ElementMarkupObject.cs
- WorkflowMessageEventArgs.cs
- ValueSerializer.cs
- Queue.cs
- precedingsibling.cs
- _NestedSingleAsyncResult.cs
- CachingHintValidation.cs
- SecureUICommand.cs
- EditCommandColumn.cs
- TrackPointCollection.cs
- BypassElement.cs
- ToolStripDesigner.cs
- QueryStringParameter.cs
- HtmlEncodedRawTextWriter.cs
- DBConcurrencyException.cs
- ColorComboBox.cs
- PropertyValue.cs
- MediaSystem.cs
- WebPartTransformerAttribute.cs
- ResourceIDHelper.cs
- NameTable.cs
- LazyTextWriterCreator.cs
- RangeContentEnumerator.cs
- PageRouteHandler.cs
- Message.cs
- CategoryGridEntry.cs
- dataSvcMapFileLoader.cs
- RepeaterItem.cs
- BaseAutoFormat.cs
- PointCollectionConverter.cs
- TdsParameterSetter.cs
- DefaultMergeHelper.cs
- CursorInteropHelper.cs
- DiscoveryClientDocuments.cs
- NoneExcludedImageIndexConverter.cs
- SqlUserDefinedAggregateAttribute.cs
- IgnoreSection.cs
- ViewStateChangedEventArgs.cs
- EndpointConfigContainer.cs
- _ScatterGatherBuffers.cs
- XmlBoundElement.cs
- XmlToDatasetMap.cs
- EntityDesignerDataSourceView.cs
- DnsPermission.cs
- SQLMoney.cs
- SingleObjectCollection.cs
- MasterPageCodeDomTreeGenerator.cs
- XmlDataDocument.cs
- CodeAttributeDeclaration.cs
- MonthChangedEventArgs.cs
- PointValueSerializer.cs
- WebPartManagerInternals.cs
- InteropBitmapSource.cs
- Polygon.cs
- SafeViewOfFileHandle.cs
- DbCommandTree.cs
- XmlChildNodes.cs
- NativeCppClassAttribute.cs
- ChildTable.cs
- HtmlInputImage.cs
- AssertSection.cs
- MoveSizeWinEventHandler.cs
- RoleServiceManager.cs
- TrackingStringDictionary.cs
- GlobalizationSection.cs
- ServiceKnownTypeAttribute.cs
- WizardPanelChangingEventArgs.cs
- CellTreeNode.cs
- CellTreeNode.cs
- TheQuery.cs
- InvokeBinder.cs
- Geometry3D.cs
- EntityTransaction.cs
- ListenerSessionConnectionReader.cs
- ProcessModule.cs
- TextBoxRenderer.cs
- SystemPens.cs
- Merger.cs
- Aes.cs