<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Needs Improvement</title>
<link>http://www.jtleigh.com/people/colin/blog/</link>
<description>Colin Coller&apos;s Blog</description>
<copyright>Copyright 2007</copyright>
<lastBuildDate>Sun, 11 Jun 2006 21:35:22 -0600</lastBuildDate>
<generator>http://www.movabletype.org/?v=3.11</generator>
<docs>http://blogs.law.harvard.edu/tech/rss</docs> 

<item>
<title>CopySourceAsHtml 2.0.0</title>
<description><![CDATA[<p>I got an email the other day:</p>
<blockquote>
&lt;paraphrased&gt;<br/>
Hi Colin, I've been using your excellent tool CopySourceCodeAsHtml for some time to post code to my blog.  It's brilliant, and it keeps popping up in places such as the Visual Studio Hacks book, and at hanselman.com.  Is it possible to use this tool in Visual Studio 2005? If not are there any plans to get this working?<br/>&lt;/paraphrased&gt;</blockquote>
<p>The answer is finally "Yes." :)</p>
<p>I've just uploaded the first official release of <a href="http://www.jtleigh.com/people/colin/software/CopySourceAsHtml/">CopySourceAsHtml</a> for Microsoft Visual Studio 2005. This release has a leaner, meaner, refactored codebase that fixes a few minor defects and takes advantage of new features in Visual Studio 2005 and .NET 2.0. This will be the codebase that future releases will be built from.</p>
<p>I have to give credit for this release to <a href="http://www.avocadosoftware.com/csblogs/dredge/default.aspx">Derick Bailey</a> and <a href="http://jasonhaley.com/blog/default.aspx">Jason Haley</a> for releasing their port of CopySourceAsHtml many months ago, filling the gap between my releases, and taking the pressure off of me.  Thanks guys.</p>
<p>I've been getting a ton of comment spam lately, so much that moderating comments is becoming a pain.  If you'd like to contact me about CopySourceAsHtml, but find comments on my blog are disabled, use the contact information in Support.txt or on the About tab of the add-in.</p>
<p>Colin</p>]]></description>
<link>http://www.jtleigh.com/people/colin/blog/archives/2006/06/copysourceashtm_9.html</link>
<guid>http://www.jtleigh.com/people/colin/blog/archives/2006/06/copysourceashtm_9.html</guid>
<category>.NET</category>
<pubDate>Sun, 11 Jun 2006 21:35:22 -0600</pubDate>
</item>
<item>
<title>CopySourceAsHtml News</title>
<description><![CDATA[<p><a href="http://www.jtleigh.com/CopySourceAsHtml/">CopySourceAsHtml</a> News:</p>
<p><a href="http://www.dotavery.com/blog/">James Avery</a> mentioned CopySourceAsHtml in "<a href="http://msdn.microsoft.com/msdnmag/issues/05/12/VisualStudioAddins/default.aspx">Visual Studio Add-Ins Every Developer Should Download Now</a>" in the December 2005 edition of MSDN Magazine.  It's arguably the least useful add-in on the list, but it's great to be mentioned.  Thanks James!</p>
<p><a href="http://www.avocadosoftware.com/csblogs/">Derick Bailey</a> ported CopySourceAsHtml to VS2005.  I hope to release a version with VS2005 support and several improvements this week as a result.  Thanks Derick!</p>
<p><a href="http://www.codinghorror.com/blog/">Jeff Atwood</a> has been working on his <a href="http://www.codinghorror.com/blog/archives/000429.html">macro to copy source as HTML</a>, provoking an arms race in copying-source-as-HTML, a race I intend to win. <i>(OK, just kidding, there's room for both solutions.)</i></p>
]]></description>
<link>http://www.jtleigh.com/people/colin/blog/archives/2005/11/copysourceashtm_8.html</link>
<guid>http://www.jtleigh.com/people/colin/blog/archives/2005/11/copysourceashtm_8.html</guid>
<category>.NET</category>
<pubDate>Sun, 13 Nov 2005 23:15:58 -0600</pubDate>
</item>
<item>
<title>CopySourceAsHtml (Updated)</title>
<description><![CDATA[<p>I've released CopySourceAsHtml version 1.2.4.</p>

<p><a href="http://www.jtleigh.com/people/colin/software/CopySourceAsHtml/CopySourceAsHtml-1.2.4-Installer.zip">CopySourceAsHtml 1.2.4 Installer</a> (280 KB) (built and tested on VS.NET 2003)<br/>
<a href="http://www.jtleigh.com/people/colin/software/CopySourceAsHtml/CopySourceAsHtml-1.2.4-Source.zip">CopySourceAsHtml 1.2.4 Source</a> (38 KB)</p>

<p>CSAH 1.2.4 allows you to copy single-byte, double-byte, and Unicode characters from VS.NET.  Previous versions only allowed you to copy single-byte and Unicode characters, and converted multi-byte characters to question marks.  The new version should work properly for any DBCS codepage.  Much of the credit for the new version goes to Qingbo Zhou for his suggestions, help debugging, and testing.</p>]]></description>
<link>http://www.jtleigh.com/people/colin/blog/archives/2005/07/copysourceashtm.html</link>
<guid>http://www.jtleigh.com/people/colin/blog/archives/2005/07/copysourceashtm.html</guid>
<category>.NET</category>
<pubDate>Mon, 04 Jul 2005 07:52:42 -0600</pubDate>
</item>
<item>
<title>Visual Studio Hacks</title>
<description><![CDATA[<p>What a great way to end the week!  <a href="http://www.amazon.com/exec/obidos/ASIN/0596008473/infozerk-20">Visual Studio Hacks</a> is out, <a href="http://www.jtleigh.com/CopySourceAsHtml/">CopySourceAsHtml</a> is in it (pages 435 and 436; that's the old user interface), and I have a copy to read on my flight.  I've only flipped through it, but the book looks great, and I can't wait to dig into it.</p>

<p>I'm pretty sure this is the first time my software has been mentioned in a book.  It's incredibly gratifying. :) :) :)</p>

<p>Colin</p>]]></description>
<link>http://www.jtleigh.com/people/colin/blog/archives/2005/04/visual_studio_h.html</link>
<guid>http://www.jtleigh.com/people/colin/blog/archives/2005/04/visual_studio_h.html</guid>
<category>.NET</category>
<pubDate>Fri, 01 Apr 2005 20:10:18 -0600</pubDate>
</item>
<item>
<title>CopySourceAsHtml (Updated)</title>
<description><![CDATA[<p>
I've released CopySourceAsHtml version 1.2.3, but it's a bit of a step backward, so don't upgrade until you read the comments below.
</p>
<p>
<b>Update:</b> Fixed the links.
</p>
<p>
<a href="http://www.jtleigh.com/people/colin/software/CopySourceAsHtml/CopySourceAsHtml-1.2.3-Installer.zip">CopySourceAsHtml 1.2.3 Installer</a> (280 KB) (built and tested on VS.NET 2003)<br/>
<a href="http://www.jtleigh.com/people/colin/software/CopySourceAsHtml/CopySourceAsHtml-1.2.3-Source.zip">CopySourceAsHtml 1.2.3 Source</a> (38 KB)
</p>
<p>
CSAH 1.2.3 generates heavier HTML than CSAH 1.2.2.  I'm releasing 1.2.3 now because at least two popular blog engines (<a href="http://www.dasblog.net/">dasBlog</a> and <a href="http://www.blogger.com/">Blogger</a>) introduce spaces, line breaks, and other formatting errors when converting the lighter 1.2.2-produced HTML to XHTML for their feeds.  If you're experiencing these errors, you should upgrade to 1.2.3.  If not, you should wait for 1.2.4.
</p>
<p>
Credits:
<ul>
<li><a href="http://www.danielmoth.com/Blog/">Daniel Moth</a> for reporting, reproducing, and diagnosing the problem with Blogger, and for testing 1.2.3.</li>
<li><a href="http://www.hanselman.com/blog/">Scott Hanselman</a> for diagnosing the problem with dasBlog.</li>
<li><a href="http://davidkean.net/">David Kean</a> for reporting several UI errors fixed in 1.2.3.</li>
</ul>
Thanks guys!
</p>
<p>
Colin
</p>]]></description>
<link>http://www.jtleigh.com/people/colin/blog/archives/2005/01/copysourceashtm_6.html</link>
<guid>http://www.jtleigh.com/people/colin/blog/archives/2005/01/copysourceashtm_6.html</guid>
<category>.NET</category>
<pubDate>Sun, 02 Jan 2005 14:30:43 -0600</pubDate>
</item>
<item>
<title>CopySourceAsHtml (Updated)</title>
<description><![CDATA[<p>I've released CopySourceAsHtml version 1.2.2 with changes suggested by <a href="http://www.danielmoth.com/Blog/">Daniel Moth</a>.</p>
<p>
<a href="http://www.jtleigh.com/people/colin/software/CopySourceAsHtml/CopySourceAsHtml-1.2.2-Installer.zip">CopySourceAsHtml 1.2.2 Installer</a> (287 KB) (built and tested on VS.NET 2003)<br/>
<a href="http://www.jtleigh.com/people/colin/software/CopySourceAsHtml/CopySourceAsHtml-1.2.2-Source.zip">CopySourceAsHtml 1.2.2 Source</a> (36 KB)
</p>
<p>
I've also set up a <a href="http://workspaces.gotdotnet.com/CopySourceAsHtml">GotDotNet workspace</a> for the project, in case anyone wants an older version of the tool.
<p>
CSAH now generates lighter HTML in all cases and much, much, much lighter HTML if word wrapping is disabled.  For example, <a href="http://www.danielmoth.com/Blog/2004/11/dont-poll.html">this block of code</a> that previously weighed in at ~20KB now weighs in at ~10KB.  That's good news if you're bandwidth-conscious.
</p>
<p>
I also fixed a few minor bugs that nobody reported.
</p>
<p>
Cheers,
</p>
<p>
Colin
</p>]]></description>
<link>http://www.jtleigh.com/people/colin/blog/archives/2004/11/copysourceashtm_5.html</link>
<guid>http://www.jtleigh.com/people/colin/blog/archives/2004/11/copysourceashtm_5.html</guid>
<category>.NET</category>
<pubDate>Tue, 30 Nov 2004 23:34:12 -0600</pubDate>
</item>
<item>
<title>CopySourceAsHtml (Updated)</title>
<description><![CDATA[<p>I've released CopySourceAsHtml version 1.2.1 with a change suggested by <a href="http://www.msmvps.com/jonathangreensted/">Jonathan Greensted</a> and with a lot of little fixes for myself.</p>
<p>
<a href="http://www.jtleigh.com/people/colin/software/CopySourceAsHtml/CopySourceAsHtml-1.2.1-Installer.zip">CopySourceAsHtml 1.2.1 Installer</a> (284 KB) (built and tested on VS.NET 2003)<br/>
<a href="http://www.jtleigh.com/people/colin/software/CopySourceAsHtml/CopySourceAsHtml-1.2.1-Source.zip">CopySourceAsHtml 1.2.1 Source</a> (33 KB)
</p>
<p>
CSAH now has a "Remove Indentation" checkbox on the "General" tab.  If it's checked, CSAH will remove unnecessary indentation from the copied code, leaving it flush against the left border.  CSAH now also:
<ul>
<li>adds itself to the Edit menu.  This is configurable through the "Add-In" tab.</li>
<li>adds itself to the Edit and context menus underneath the Copy command.</li>
<li>generates cleaner, lighter HTML in a few common cases, saving bandwidth.</li>
<li>handles invalid VS.NET-produced RTF without crashing.</li>
<li>handles background colors correctly.</li>
<li>has hotkeys on most items in the dialog.</li>
<li>has cleaner code.</li>
</ul>
</p>
<p>
Besides "Remove Indentation", I'm most excited about fixing the problems with background colors, because it means I can stop testing with these colors and change my settings back to the defaults:
</p>
<p><b>Visual Studio .NET:</b></p>
<p><img src="http://www.jtleigh.com/people/colin/CopySourceAsHtml/backgroundcolors.gif" alt="Ugly Background Colors" border="1"/></p>
<p><b>HTML:</b></p>
<div style="font-family: Courier New; font-size: 10pt; color: #000000; background: #00ffff; border-top: windowtext 1pt solid; padding-top: 0pt; border-left: windowtext 1pt solid; padding-left: 0pt; border-right: windowtext 1pt solid; padding-right: 0pt; border-bottom: windowtext 1pt solid; padding-bottom: 0pt;">
<p style="margin: 0px;"><span style="color: #008080; background: #ff00ff;">&nbsp;&nbsp;&nbsp;32</span>&nbsp;<span style="color: #0000ff; background: #00ffff;">&nbsp;&nbsp;&nbsp; #region</span><span style="background: #00ffff;"> Configuration Class Definitions</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ff00ff;">&nbsp;&nbsp;&nbsp;33</span>&nbsp;<span style="color: #0000ff; background: #00ffff;">&nbsp;&nbsp;&nbsp; #region</span><span style="background: #00ffff;"> Enum Definitions</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ff00ff;">&nbsp;&nbsp;&nbsp;34</span>&nbsp;<span style="background: #00ffff;">&nbsp;&nbsp;&nbsp; </span><span style="color: #808080; background: #00ffff;">///</span><span style="color: #008000; background: #00ffff;"> </span><span style="color: #808080; background: #00ffff;">&lt;summary&gt;</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ff00ff;">&nbsp;&nbsp;&nbsp;35</span>&nbsp;<span style="background: #00ffff;">&nbsp;&nbsp;&nbsp; </span><span style="color: #808080; background: #00ffff;">///</span><span style="color: #008000; background: #00ffff;"> Enum containing the mode options for the exceptionManagement tag.</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ff00ff;">&nbsp;&nbsp;&nbsp;36</span>&nbsp;<span style="background: #00ffff;">&nbsp;&nbsp;&nbsp; </span><span style="color: #808080; background: #00ffff;">///</span><span style="color: #008000; background: #00ffff;"> </span><span style="color: #808080; background: #00ffff;">&lt;/summary&gt;</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ff00ff;">&nbsp;&nbsp;&nbsp;37</span>&nbsp;<span style="background: #00ffff;">&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff; background: #808000;">public</span><span style="background: #00ffff;"> </span><span style="color: #0000ff; background: #808000;">enum</span><span style="background: #00ffff;"> </span><span style="color: #ff0000; background: #800000;">ExceptionManagementMode</span><span style="background: #00ffff;"> </span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ff00ff;">&nbsp;&nbsp;&nbsp;38</span>&nbsp;<span style="background: #00ffff;">&nbsp;&nbsp;&nbsp; {</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ff00ff;">&nbsp;&nbsp;&nbsp;39</span>&nbsp;<span style="background: #00ffff;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><span style="color: #808080; background: #00ffff;">///</span><span style="color: #008000; background: #00ffff;"> </span><span style="color: #808080; background: #00ffff;">&lt;summary&gt;</span><span style="color: #008000; background: #00ffff;">The ExceptionManager should not process exceptions.</span><span style="color: #808080; background: #00ffff;">&lt;/summary&gt;</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ff00ff;">&nbsp;&nbsp;&nbsp;40</span>&nbsp;<span style="background: #00ffff;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><span style="color: #ff0000; background: #800000;">Off</span><span style="background: #00ffff;">,</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ff00ff;">&nbsp;&nbsp;&nbsp;41</span>&nbsp;<span style="background: #00ffff;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><span style="color: #808080; background: #00ffff;">///</span><span style="color: #008000; background: #00ffff;"> </span><span style="color: #808080; background: #00ffff;">&lt;summary&gt;</span><span style="color: #008000; background: #00ffff;">The ExceptionManager should process exceptions. This is the default.</span><span style="color: #808080; background: #00ffff;">&lt;/summary&gt;</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ff00ff;">&nbsp;&nbsp;&nbsp;42</span>&nbsp;<span style="background: #00ffff;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><span style="color: #ff0000; background: #800000;">On</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ff00ff;">&nbsp;&nbsp;&nbsp;43</span>&nbsp;<span style="background: #00ffff;">&nbsp;&nbsp;&nbsp; }</span></p>
</div>
<br/>
<p>
Ugh! :)
</p>
<p>
Colin
</p>]]></description>
<link>http://www.jtleigh.com/people/colin/blog/archives/2004/11/copysourceashtm_4.html</link>
<guid>http://www.jtleigh.com/people/colin/blog/archives/2004/11/copysourceashtm_4.html</guid>
<category>.NET</category>
<pubDate>Thu, 11 Nov 2004 22:38:31 -0600</pubDate>
</item>
<item>
<title>CopySourceAsHtml (Updated)</title>
<description><![CDATA[<p>I've released CopySourceAsHtml version 1.2.0 with changes suggested by <a href="http://www.mostlylucid.co.uk/">Scott Galloway</a>, <a href="http://haacked.com/">Phil Haack</a>, <a href="http://www.lobrecht.com/rick+main.html">Rick Lobrecht</a>, <a href="http://www.dotnetjunkies.com/weblog/fredd/">Geoff Appleby</a>, and others.</p>
<p>
<a href="http://www.jtleigh.com/people/colin/software/CopySourceAsHtml/CopySourceAsHtml-1.2.0-Installer.zip">CopySourceAsHtml 1.2.0 Installer</a> (283 KB) (built and tested on VS.NET 2003)<br/>
<a href="http://www.jtleigh.com/people/colin/software/CopySourceAsHtml/CopySourceAsHtml-1.2.0-Source.zip">CopySourceAsHtml 1.2.0 Source</a> (32 KB)
</p>
<p><b>Update:</b> I forgot to say anything about how to use CSAH.  See <a href="http://www.jtleigh.com/people/colin/blog/archives/2004/10/copysourceashtm_1.html">this post</a> and <a href="http://www.jtleigh.com/people/colin/blog/archives/2004/10/copysourceashtm.html">this post</a> for background.</p>

<p>The biggest change in this release is that CSAH uses VS.NET's syntax highlighting and VS.NET's font and color settings automatically.  If VS.NET can highlight it, CSAH can copy it, and your code should look the same in your browser as it does in your editor.  Here are some examples:</p>

<div style="font-family: Courier New; font-size: 10pt; color: #000000; background: #ffffff; overflow: auto; max-height: 200px; line-height: 125%; border-top: windowtext 1pt solid; border-left: windowtext 1pt solid; border-right: windowtext 1pt solid; border-bottom: windowtext 0.5pt solid;">
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;&nbsp;1</span>&nbsp;<span style="background: #ffff00;">&lt;%@ Page Language="c#" Inherits="WebApplication1.WebForm1" AutoEventWireup="false" %&gt;</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;&nbsp;2</span>&nbsp;<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">html</span><span style="color: #0000ff;">&gt;</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;&nbsp;3</span>&nbsp;<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">body</span><span style="color: #0000ff;">&gt;</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;&nbsp;4</span>&nbsp;<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">a</span><span style="color: #ff0000;"> href</span><span style="color: #0000ff;">="</span><span style="background: #ffff00;">&lt;%</span><span>=Something</span><span style="background: #ffff00;">%&gt;</span><span style="color: #0000ff;">"</span><span style="color: #ff0000;"> target</span><span style="color: #0000ff;">="_new"&gt;</span><span>Something</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">a</span><span style="color: #0000ff;">&gt;</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;&nbsp;5</span>&nbsp;<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">body</span><span style="color: #0000ff;">&gt;</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;&nbsp;6</span>&nbsp;<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">html</span><span style="color: #0000ff;">&gt;</span></p>
</div>
<br/>
<div style="font-family: Courier New; font-size: 10pt; color: #000000; background: #ffffff; overflow: auto; max-height: 200px; line-height: 125%; border-top: windowtext 1pt solid; border-left: windowtext 1pt solid; border-right: windowtext 1pt solid; border-bottom: windowtext 1pt solid;">
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;&nbsp;1</span>&nbsp;<span style="color: #800000;">BODY</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;&nbsp;2</span>&nbsp;<span>{</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;&nbsp;3</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; </span><span style="color: #ff0000;">padding</span><span>: </span><span style="color: #0000ff;">5px</span><span>;</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;&nbsp;4</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; </span><span style="color: #ff0000;">overflow</span><span>: </span><span style="color: #0000ff;">auto</span><span>;</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;&nbsp;5</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; </span><span style="color: #ff0000;">width</span><span>: </span><span style="color: #0000ff;">95%</span><span>;</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;&nbsp;6</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; </span><span style="color: #ff0000;">max-height</span><span>: </span><span style="color: #0000ff;">450px</span><span>;</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;&nbsp;7</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; </span><span style="color: #ff0000;">margin</span><span>: </span><span style="color: #0000ff;">0px</span><span style="color: #0000ff;"> auto</span><span>;</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;&nbsp;8</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; </span><span style="color: #ff0000;">line-height</span><span>: </span><span style="color: #0000ff;">125%</span><span>;</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;&nbsp;9</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; </span><span style="color: #ff0000;">border</span><span>: </span><span style="color: #0000ff;">silver</span><span style="color: #0000ff;"> 2px</span><span style="color: #0000ff;"> dotted</span><span>;</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;10</span>&nbsp;<span>}</span></p>
</div>
<br/>
<div style="font-family: Courier New; font-size: 10pt; color: #000000; background: #ffffff; overflow: auto; max-height: 200px; line-height: 125%; border-top: windowtext 1pt solid; border-left: windowtext 1pt solid; border-right: windowtext 1pt solid; border-bottom: windowtext 1pt solid;">
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;12</span>&nbsp;<span style="color: #0000ff;">protected</span><span style="color: #0000ff;"> void</span><span style="color: #008000;"> ParseRtf</span><span>( </span><span style="color: #0000ff;">string</span><span style="color: #008000;"> rtf</span><span> )</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;13</span>&nbsp;<span>{</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;14</span>&nbsp;&nbsp;</p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;15</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">int</span><span style="color: #008000;"> first</span><span>;</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;16</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">int</span><span style="color: #008000;"> last</span><span>;</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;17</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">int</span><span style="color: #008000;"> index</span><span>;</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;18</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">int</span><span style="color: #008000;"> mark</span><span>;</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;19</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">string</span><span style="color: #008000;"> controlWord</span><span>;</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;20</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">bool</span><span style="color: #008000;"> hasParameter</span><span>;</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;21</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">long</span><span style="color: #008000;"> parameter</span><span>;</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;22</span>&nbsp;&nbsp;</p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;23</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; </span><span style="color: #008000;">first</span><span style="color: #000080;"> =</span><span> 1;</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;24</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; </span><span style="color: #008000;">last</span><span style="color: #000080;"> =</span><span style="color: #008000;"> rtf</span><span style="color: #000080;">.</span><span style="color: #008000;">Length</span><span style="color: #000080;"> -</span><span> 1;</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;25</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">for</span><span> ( </span><span style="color: #008000;">index</span><span style="color: #000080;"> =</span><span style="color: #008000;"> first</span><span> ; </span><span style="color: #008000;">index</span><span style="color: #000080;"> &lt;</span><span style="color: #008000;"> last</span><span> ; </span><span style="color: #008000;">index</span><span style="color: #000080;">++</span><span> )</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;26</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; {</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;27</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;28</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">switch</span><span> ( </span><span style="color: #008000;">rtf</span><span>[</span><span style="color: #008000;">index</span><span>] )</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;29</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;30</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">case</span><span> '{':</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;31</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><span style="color: #008000;">index</span><span style="color: #000080;"> +=</span><span style="color: #008000;"> ParseOpeningBrace</span><span>( </span><span style="color: #008000;">rtf</span><span> , </span><span style="color: #008000;">index</span><span style="color: #000080;"> +</span><span> 1 );</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;32</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">break</span><span>;</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;33</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">case</span><span> '}':</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;34</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><span style="color: #008000;">index</span><span style="color: #000080;"> +=</span><span style="color: #008000;"> ParseClosingBrace</span><span>( </span><span style="color: #008000;">rtf</span><span> , </span><span style="color: #008000;">index</span><span style="color: #000080;"> +</span><span> 1 );</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;35</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">break</span><span>;</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;36</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">case</span><span> '\\':</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;37</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><span style="color: #008000;">index</span><span style="color: #000080;">++</span><span>;</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;38</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">if</span><span> ( </span><span style="color: #0000ff;">char</span><span style="color: #000080;">.</span><span style="color: #008000;">IsLetter</span><span>( </span><span style="color: #008000;">rtf</span><span>[</span><span style="color: #008000;">index</span><span>] ) )</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;39</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;40</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><span style="color: #008000;">mark</span><span style="color: #000080;"> =</span><span style="color: #008000;"> index</span><span>;</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;41</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">while</span><span> ( ( </span><span style="color: #008000;">index</span><span style="color: #000080;"> &lt;</span><span style="color: #008000;"> last</span><span> ) </span><span style="color: #000080;">&amp;&amp;</span><span> ( </span><span style="color: #0000ff;">char</span><span style="color: #000080;">.</span><span style="color: #008000;">IsLetter</span><span>( </span><span style="color: #008000;">rtf</span><span>[</span><span style="color: #008000;">index</span><span>] ) ) )</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;42</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;43</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><span style="color: #008000;">index</span><span style="color: #000080;">++</span><span>;</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;44</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;45</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><span style="color: #008000;">controlWord</span><span style="color: #000080;"> =</span><span style="color: #008000;"> rtf</span><span style="color: #000080;">.</span><span style="color: #008000;">Substring</span><span>( </span><span style="color: #008000;">mark</span><span> , </span><span style="color: #008000;">index</span><span style="color: #000080;"> -</span><span style="color: #008000;"> mark</span><span> );</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;46</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">if</span><span> ( ( </span><span style="color: #008000;">index</span><span style="color: #000080;"> &lt;</span><span style="color: #008000;"> last</span><span> ) </span><span style="color: #000080;">&amp;&amp;</span><span> ( ( </span><span style="color: #0000ff;">char</span><span style="color: #000080;">.</span><span style="color: #008000;">IsDigit</span><span>( </span><span style="color: #008000;">rtf</span><span>[</span><span style="color: #008000;">index</span><span>] ) ) </span><span style="color: #000080;">||</span><span> ( </span><span style="color: #008000;">rtf</span><span>[</span><span style="color: #008000;">index</span><span>] </span><span style="color: #000080;">==</span><span> '-' ) ) )</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;47</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;48</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><span style="color: #008000;">mark</span><span style="color: #000080;"> =</span><span style="color: #008000;"> index</span><span>;</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;49</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">while</span><span> ( ( </span><span style="color: #008000;">index</span><span style="color: #000080;"> &lt;</span><span style="color: #008000;"> last</span><span> ) </span><span style="color: #000080;">&amp;&amp;</span><span> ( ( </span><span style="color: #0000ff;">char</span><span style="color: #000080;">.</span><span style="color: #008000;">IsDigit</span><span>( </span><span style="color: #008000;">rtf</span><span>[</span><span style="color: #008000;">index</span><span>] ) ) </span><span style="color: #000080;">||</span><span> ( </span><span style="color: #008000;">rtf</span><span>[</span><span style="color: #008000;">index</span><span>] </span><span style="color: #000080;">==</span><span> '-' ) ) )</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;50</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;51</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><span style="color: #008000;">index</span><span style="color: #000080;">++</span><span>;</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;52</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;53</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><span style="color: #008000;">hasParameter</span><span style="color: #000080;"> =</span><span style="color: #0000ff;"> true</span><span>;</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;54</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><span style="color: #008000;">parameter</span><span style="color: #000080;"> =</span><span style="color: #008000;"> Int64</span><span style="color: #000080;">.</span><span style="color: #008000;">Parse</span><span>( </span><span style="color: #008000;">rtf</span><span style="color: #000080;">.</span><span style="color: #008000;">Substring</span><span>( </span><span style="color: #008000;">mark</span><span> , </span><span style="color: #008000;">index</span><span style="color: #000080;"> -</span><span style="color: #008000;"> mark</span><span> ) );</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;55</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;56</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">else</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;57</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;58</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><span style="color: #008000;">hasParameter</span><span style="color: #000080;"> =</span><span style="color: #0000ff;"> false</span><span>;</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;59</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><span style="color: #008000;">parameter</span><span style="color: #000080;"> =</span><span> 0;</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;60</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;61</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">if</span><span> ( </span><span style="color: #008000;">rtf</span><span>[</span><span style="color: #008000;">index</span><span>] </span><span style="color: #000080;">!=</span><span> ' ' )</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;62</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;63</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><span style="color: #008000;">index</span><span style="color: #000080;">--</span><span>;</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;64</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;65</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><span style="color: #008000;">index</span><span style="color: #000080;"> +=</span><span style="color: #008000;"> ParseControlWord</span><span>( </span><span style="color: #008000;">rtf</span><span> , </span><span style="color: #008000;">index</span><span style="color: #000080;"> +</span><span> 1 , </span><span style="color: #008000;">controlWord</span><span> , </span><span style="color: #008000;">hasParameter</span><span> , </span><span style="color: #008000;">parameter</span><span> );</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;66</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;67</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">else</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;68</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;69</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><span style="color: #008000;">index</span><span style="color: #000080;"> +=</span><span style="color: #008000;"> ParseControlSymbol</span><span>( </span><span style="color: #008000;">rtf</span><span> , </span><span style="color: #008000;">index</span><span style="color: #000080;"> +</span><span> 1 , </span><span style="color: #008000;">rtf</span><span>[</span><span style="color: #008000;">index</span><span>] );</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;70</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;71</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">break</span><span>;</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;72</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">case</span><span> '\r':</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;73</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">case</span><span> '\n':</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;74</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">break</span><span>;</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;75</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">default</span><span>:</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;76</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><span style="color: #008000;">index</span><span style="color: #000080;"> +=</span><span style="color: #008000;"> ParseLiteralText</span><span>( </span><span style="color: #008000;">rtf</span><span> , </span><span style="color: #008000;">index</span><span style="color: #000080;"> +</span><span> 1 , </span><span style="color: #008000;">rtf</span><span>[</span><span style="color: #008000;">index</span><span>] );</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;77</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">break</span><span>;</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;78</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;79</span>&nbsp;<span>&nbsp;&nbsp;&nbsp; }</span></p>
<p style="margin: 0px;"><span style="color: #008080; background: #ffffff;">&nbsp;&nbsp;&nbsp;80</span>&nbsp;<span>}</span></p>
</div>
<br/>
<p>Other changes:</p>
<ul>
<li>You can turn word wrapping on and off.  If "wrap words" is checked, lines are rendered in &lt;p&gt; blocks.  Otherwise, lines are rendered in &lt;pre&gt; blocks.  Check this if your blog layout isn't wide enough for your code.</li>
<li>You can strip line breaks from the generated HTML.  Handy if your blog software converts newlines automatically.</li>
<li>You can add additional RSS rules to the file, line, and block styles.  Use this to add borders, scroll bars, etc. to your code.</li>
<li>You can embed styles or use a stylesheet.  If "embed styles" is checked, tags have style attributes.  If "embed styles" is unchecked, tags have class attributes, and the generated HTML includes a style block.</li>
<li>You can change which menu items are added to the context menus from within the add-in.</li>
<li>The generated HTML is copied to the clipboard in text and CF_HTML formats.</li>
<li>The code is cleaner and more modular, and the object model should make it easy to add new features in future versions.</li>
<li>There's an "About" tab with the version, copyright, license, my contact information, and my Amazon.com wish list (just kidding :).</li>
</ul>

<p>If you find CSAH useful, find a bug, have a suggestion, or want to review or contribute code, please let me know.  I'd really like it if someone reviewed the code, actually, and helped me improve on it.</p>

<p>Cheers,</p>

<p>Colin</p>]]></description>
<link>http://www.jtleigh.com/people/colin/blog/archives/2004/11/copysourceashtm_2.html</link>
<guid>http://www.jtleigh.com/people/colin/blog/archives/2004/11/copysourceashtm_2.html</guid>
<category>.NET</category>
<pubDate>Tue, 02 Nov 2004 20:32:41 -0600</pubDate>
</item>
<item>
<title>CopySourceAsHtml (Updated)</title>
<description><![CDATA[<p>
I've updated 
<a href="http://www.jtleigh.com/people/colin/blog/archives/2004/10/visual_studio_a.html">CopySourceAsHtml</a>
based on suggestions from
<a href="http://haacked.com/archive/2004/10/13/1345.aspx">Phil Haack</a>
and <a href="http://www.randomtree.org/eric/">Eric Means</a>,
and on something 
<a href="http://whoisjake.com/blog/archive/0001/01/01/693.aspx">Jake Good</a> 
said about polluting his IDE. :)
</p>

<p>
<b>Update:</b> This version is no longer available for download.  Download a newer version from <a href="http://www.jtleigh.com/CopySourceAsHtml/">this page</a>.
</p>

<p>
After you install CopySourceAsHtml, two new commands will appear in the Options dialog under Environment > Keyboard:
</p>

<p><img src="http://www.jtleigh.com/people/colin/CopySourceAsHtml/options.gif"/></p>

<p>
and in the Customize dialog under Commands > Addins:
</p>

<p><img src="http://www.jtleigh.com/people/colin/CopySourceAsHtml/customize.gif"/></p>

<p>
Copy ("Copy Source As HTML...") lets you select your language and formatting preferences before copying.  CopyNow ("Copy Source As HTML") uses your previously selected preferences and copies immediately.  If the active document's language isn't known, however, CopyNow simply calls Copy.
</p>

<p>
Copy ("Copy Source As HTML...") is added to the code window's context menu by default, but you can change which commands are added to the context menu in the registry (no editor, sorry) if you don't want to pollute your IDE:
<pre>
HKEY_CURRENT_USER\Software\J.T. Leigh & Associates\CopySourceAsHtml\
    AddCopyToContextMenu
    AddCopyNowToContextMenu
</pre>
</p>
<p>
If you find CopySourceAsHtml useful, find a bug, see room for improvement, or know of an existing add-in that provides the same functionality, please let me know.
</p>
<p>
Thanks,
</p>
<p>
Colin
</p>]]></description>
<link>http://www.jtleigh.com/people/colin/blog/archives/2004/10/copysourceashtm_1.html</link>
<guid>http://www.jtleigh.com/people/colin/blog/archives/2004/10/copysourceashtm_1.html</guid>
<category>.NET</category>
<pubDate>Sat, 16 Oct 2004 18:45:11 -0600</pubDate>
</item>
<item>
<title>CopySourceAsHtml</title>
<description><![CDATA[<p>
<a href="http://blogs.msdn.com/brada/archive/2004/10/05/238427.aspx">Brad Abrams</a>, 
<a href="http://blogs.msdn.com/jaybaz_ms/archive/2004/03/30/103505.aspx">Jay Bazuzi</a>, 
<a href="http://weblogs.asp.net/rosherove/archive/2004/02/05/67957.aspx">Roy Osherove</a>, 
and what seems like the majority of .NET bloggers use Word, Word macros, or Visual Studio macros that use Word 
in some way to format their code.  A few use 
<a href="http://www.manoli.net/">Jean-Claude Manoli</a>'s 
<a href="http://www.manoli.net/csharpformat/">CSharpFormat</a>
tool.  Each solution has drawbacks (opening Word, opening another browser window, copying and pasting, extra steps, 
terrible HTML, etc), and formatting code is still painful, so I've written a simple Visual Studio add-in that allows you to copy source as HTML suitable for pasting into blogs:
</p>

<p>
<b>Update:</b> This version is no longer available for download.  Download a newer version from <a href="http://www.jtleigh.com/CopySourceAsHtml/">this page</a>.
</p>

<p>
After you install CopySourceAsHtml, "Copy Source As HTML..." will appear in the code window's context menu:
</p>
<p><img src="http://www.jtleigh.com/people/colin/CopySourceAsHtml/menu.gif"/></p>
<p>
When you click "Copy Source As HTML...", you'll be asked for language and formatting preferences.  "Language", 
"Number From", and "Tab Width" are taken from the document.  "Line Numbers", "Alternate Line Background", and 
"Embed Stylesheet" are stored in the registry.
</p>
<p><img src="http://www.jtleigh.com/people/colin/CopySourceAsHtml/dialog.gif"/></p>
<p>
When you click "OK", the source will be formatted according to your preferences and copied to the clipboard, 
ready to be pasted into your blog.
</p>
<p>
CopySourceAsHtml extends <a href="http://www.manoli.net/csharpformat/">CSharpFormat</a>, and I'm grateful to Jean-Claude for his excellent work.  If you find CopySourceAsHtml useful, find a bug, see room for improvement, or know of an existing add-in that provides the same functionality, please let me know.
</p>
<p>
Thanks,
</p>
<p>
Colin
</p>]]></description>
<link>http://www.jtleigh.com/people/colin/blog/archives/2004/10/copysourceashtm_3.html</link>
<guid>http://www.jtleigh.com/people/colin/blog/archives/2004/10/copysourceashtm_3.html</guid>
<category>.NET</category>
<pubDate>Wed, 13 Oct 2004 16:40:41 -0600</pubDate>
</item>


</channel>
</rss>