Read Write Doc

Rediscover the beauty of HTML

by Read Write Tools

Read Write Doc is a distraction-free desktop app built on top of BLUEPHRASE. It is used for creating declarative templates and authoring HTML documents.

Why bother? Well, let's face it. HTML is not pretty.

Reading an HTML document is not for the faint-hearted. All those tags clutter things up. Fishing the author's words out of the tag soup is a challenge. And writing an HTML document is no better. Who wants to subject themselves to that torturous mix of <tag>...</tag> for every highlighted word in their composition. It's slow and clumsy.

I'll show you how BLUEPHRASE cleans up the mess, and makes declarative templating and content authoring less of a chore.

Getting rid of tag soup

Take a look at this sample, written using BLUEPHRASE notation. Notice how the semantic meaning is still obvious, but the tags have mostly disappeared. The remainder is called semantax, which in this case is h1, article, ul, b, blockquote, h2, and a.

h1 Mythical Sea Creatures

article {
Elusifaun and spanovert sightings are uncommon.
ul {
<<b elusifaun>> — a furtive water mammal, seen occasionally on moonlit nights.
<<b spanovert>> — a marine reptile with a periodic, seven year rhythm.
}
blockquote {
Early that morning, I caught a glimpse of the elusifaun.
}
}

h2 See Also
<<a `http://bathypelagic.com` Creatures of the Deep Sea>>
Sample 1 in BLUE-PHRASE mode

When Read Write Doc is switched into preview mode, we can see how the browser renders it.

Sample 1 in browser preview mode

And in the source code view, we see how our BLUEPHRASE manuscript was compiled into HTML. It's straightforward and matches our expectations. Notice though, how the compiler generated the list items <li>...</li> and paragraphs <p>...</p> without requiring the author to be explicit. This is called implied semantax.

<h1>Mythical Sea Creatures</h1>

<article>
<p>Elusifaun and spanovert sightings are uncommon.</p>
<ul>
<li><b>elusifaun</b> — a furtive water mammal, seen occasionally on moonlit nights.</li>
<li><b>spanovert</b> — a marine reptile with a periodic, seven year rhythm.</li>
</ul>
<blockquote>
<p>Early that morning, I caught a glimpse of the elusifaun.</p>
</blockquote>
</article>

<h2>See Also</h2>
<p><a href='http://bathypelagic.com'>Creatures of the Deep Sea</a></p>
Sample 1 in HTML source mode

Declarative Templating

What I've demonstrated, in this first simple example, is an HTML fragment. We can expand it into a full document by enclosing it in a template.

Here's a bare bones template to get started. It provides a title, description, and keywords which search engines will use, and a link to an external CSS style sheet to enhance the document's appearance, and a JavaScript file for scripting. I'm using substitution variables to make the enclosure generic. This way, it can be used for other documents too. Also, note the all important !target-matter pragma, which is the insertion point for our HTML fragment.

html {
head {
title $TITLE
meta *name=description *content='$DESCRIPTION'
meta *name=keywords *content='$KEYWORDS'
link `my-website.css` *rel=stylesheet *type=text/css
}
body {
!target-matter
}
script `my-website.js`
}
my-enclosure.blue

In order to wrap our sample fragment with this enclosure, we amend the original sample with an !enclosure pragma specifying the filename for the enclosure, and we identify a selector that triggers its use. In this case I've arbitrarily chosen the identifier #story as the target matter to be wrapped.

!enclosure #story `my-enclosure.blue`
$TITLE="Mythical Sea Creatures"
$DESCRIPTION="Elusifaun and spanovert sightings are uncommon."
$KEYWORDS="sea creatures, elusifaun, spanovert, bathypelagic"

main #story {
h1 $TITLE

article {
$DESCRIPTION
ul {
<<b elusifaun>> — a furtive water mammal, seen occasionally on moonlit nights.
<<b spanovert>> — a marine reptile with a periodic, seven year rhythm.
}
blockquote {
Early that morning, I caught a glimpse of the elusifaun.
}
}

h2 See Also
<<a `http://bathypelagic.com` Creatures of the Deep Sea>>
}
sample2.blue

We can examine the combined result when we switch Read Write Doc to HTML mode. Our document fragment is wrapped by our simple enclosure into a fully compliant HTML document ready for the internet.

<html>
<head>
<title>Mythical Sea Creatures</title>
<meta name=description content='Elusifaun and spanovert sightings are uncommon.' />
<meta name=keywords content='sea creatures, elusifaun, spanovert, bathypelagic' />
<link href='my-website.css' rel=stylesheet type=text/css />
</head>
<body>
<main id=story>
<h1>Mythical Sea Creatures</h1>

<article>
<p>Elusifaun and spanovert sightings are uncommon.</p>
<ul>
<li><b>elusifaun</b> — a furtive water mammal, seen occasionally on moonlit nights.</li>
<li><b>spanovert</b> — a marine reptile with a periodic, seven year rhythm.</li>
</ul>
<blockquote>
<p>Early that morning, I caught a glimpse of the elusifaun.</p>
</blockquote>
</article>

<h2>See Also</h2>
<p><a href='http://bathypelagic.com'>Creatures of the Deep Sea</a></p>
</main>
</body>
<script src='my-website.js'></script>
</html>
sample2.html

Shorthand notation

BLUEPHRASE uses shorthand notation to specify attributes.

You've already seen one type of shorthand in action. It's the backtick delimiters `` used with the !enclosure pragma, the link to a CSS style sheet, and the anchor tag a hyperlink destination. BLUEPHRASE understands these to be filename references or href attributes or src attributes based on their context within the document.

Another type of shorthand is a named attribute, which uses asterisk notation. You may have noticed its use in the meta tag *name and *content attributes.

Two other commonly used shorthand symbols will be familiar to anyone that knows CSS. They are hashtag notation # for identifiers, and fullstop notation . for classnames. For example, we could modify our sample fragment to make use of #story-title, .bullets and .pull-quote to look something like this.

h1 #story-title $TITLE

article {
$DESCRIPTION
ul .bullets {
<<b elusifaun>> — a furtive water mammal, seen occasionally on moonlit nights.
<<b spanovert>> — a marine reptile with a periodic, seven year rhythm.
}
blockquote .pull-quote {
Early that morning, I caught a glimpse of the elusifaun.
}
}

h2 See Also
<<a `http://bathypelagic.com` Creatures of the Deep Sea>>
sample3.blue

And the compiled HTML output would be as expected:

<h1 id=story-title>Mythical Sea Creatures</h1>

<article>
<p>Elusifaun and spanovert sightings are uncommon.</p>
<ul class=bullets>
<li><b>elusifaun</b> — a furtive water mammal, seen occasionally on moonlit nights.</li>
<li><b>spanovert</b> — a marine reptile with a periodic, seven year rhythm.</li>
</ul>
<blockquote class=pull-quote>
<p>Early that morning, I caught a glimpse of the elusifaun.</p>
</blockquote>
</article>

<h2>See Also</h2>
<p><a href='http://bathypelagic.com'>Creatures of the Deep Sea</a></p>
sample3.html

Product comparison

Read Write Doc is more than just a BLUEPHRASE wrapper. It also has syntax highlighting, HTML source code mode, spell-checking, PDF exports, and preview style-sheets. And BLUEPHRASE has much more than just declarative templating and shorthand notation. Together, they can be used to compose sophisticated documents for print or Web.

If your needs are simple, and you want a no-frills notepad-style templating app, you may be happy with Read Write Note. It has the same distraction-free authoring interface, and full BLUEPHRASE capabilities, including enclosures and shorthand notation.

You can also use Read Write View, a free app that lets you switch between BLUEPHRASE and browser preview mode. If you don't need syntax highlighting, you can create plain-text .blue files in your favorite text editor, and compile them into HTML with Read Write View.

License and availability

See Read Write Tools Pricing to learn about 21-day trials and licensed versions. See Read Write Doc to register and download now.

Read Write Doc is available for Windows, Mac and Linux.

Read Write Doc Software License Agreement

Copyright © 2020 Read Write Tools.

  1. This Software License Agreement ("Agreement") is a legal contract between you and Read Write Tools ("RWT"). The "Materials" subject to this Agreement include the software app "Read Write Doc" and its associated documentation.
  2. By installing, copying or otherwise using the Materials, you agree to abide by the terms of this Agreement. If you choose not to agree with these provisions, you must uninstall and delete all copies of the Materials.
  3. The Materials are protected by United States copyright law, patent law, and trade secret law, as well as international treaties on intellectual property rights. The Materials are licensed, not sold to you, and can only be used in accordance with the terms of this Agreement. RWT is and remains the owner of all titles, rights and interests in the Materials, and RWT reserves all rights not specifically granted under this Agreement.
  4. Subject to the terms of this Agreement, RWT hereby grants to you a limited, non-exclusive license to use the Materials subject to the following conditions:
    • You are allowed to install the Materials on more than one computer or device, as long as the Materials will not be used on more than one computer or device simultaneously. You may make additional copies of the Materials for backup purposes only.
    • You may not distribute, publish, make publicly available, sub-license, sell, rent, or lease the Materials.
    • You may not extract, decompile, or reverse engineer any binary or source code included in the Materials. Your license to use the Materials is limited to its use in its original packaged format, and does not include permission to extract or use parts on a separate basis.
  5. THE MATERIALS ARE PROVIDED BY READ WRITE TOOLS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL READ WRITE TOOLS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  6. Portions of the Material are covered by third-party software license agreements. Those agreements have their own terms and conditions, which may include restrictions and limitations on intellectual property use, distribution, publication, and modification that differ from this Agreement. Those agreements are:
    1. Node.js License
    2. V8 License
    3. Chromium License
    4. Electron License
    5. Ace License
    6. Joezone License
    7. Blue Phrase Processor Software License Agreement

    The terms and conditions of those third-party agreements apply to the respective intellectual property covered by those software license agreements, and do not extend to any Material owned by Read Write Tools.

  7. This license is effective until terminated. Without prejudice to any other rights, RWT may terminate your right to use the Materials if you fail to comply with the terms of this Agreement. In such event, you shall uninstall and delete all copies of the Materials.
  8. This Agreement is governed by and interpreted in accordance with the laws of the State of California. If for any reason a court of competent jurisdiction finds any provision of the Agreement to be unenforceable, that provision will be enforced to the maximum extent possible to effectuate the intent of the parties and the remainder of the Agreement shall continue in full force and effect.

Read Write Doc — Rediscover the beauty of HTML

🔎