Wait, wait, I'm confused


After years of working with HTML, coders know that hyperlinks are specified using an href attribute and images are specified using a src attribute, but c'mon who remembers what to use for objects, forms and blockquotes?

There are many places in HTML where external URLs are specified, but it's all too arbitrary how it's done. Consider all these HTML tags, and the attributes used for their external source files:

semantax attribute
a href
link href
area href
base href
img src
input src
source src
audio src
video src
embed src
track src
iframe src
img src
script src
object data
form action
blockquote cite
q cite

Sourceref syntax

Blue-phrase cleans this up by leveling the notation for URLs into sourceref notation: simply surround the path and file with grave accents ` ... `. When the blue processor's smart technology encounters this notation, it uses the current semantic context to determine which HTML attribute to emit.

Here's a sample ...

h1 Quote of the Day
blockquote `Yogi Berra` When you come to a fork in the road take it!
img `yogi-berra.png`

h1 Heard any Good Ones Lately?
form `api-v1/submit-form` {
p Have a funny quote you'd like to share? Tell us!
input *type=text *name=user-submission
input *type=image `submit.gif`

h1 Enough to Make You Cry
a `https://onion.com/` the Onion

and it's equivalent HTML ...

<h1>Quote of the Day</h1>
<blockquote cite='Yogi Berra'>When you come to a fork in the road take it!</blockquote>
<img src='yogi-berra.png' />

<h1>Heard any Good Ones Lately?</h1>
<form action='api-v1/submit-form'>
<p>Have a funny quote you'd like to share? Tell us!</p>
<input type=text name=user-submission />
<input src='submit.gif' type=image />

<h1>Enough to Make You Cry</h2>
<a href='https://onion.com/'>the Onion</a>

Pragmas with sourcerefs

The blue-phrase notation for sourcerefs extends to pragmas as well. The use, enclosure, and include pragmas all specify external files using sourcerefs.

!use `standard-vars.blue`
!enclosure `template.blue`
!include `menu.blue`

Using blue-phrase for config files

Software developers who develop configuration files will really appreciate how this consistency and ease of use works. The notation acts as both a delimiter — especially important when filename have spaces or special characters; and a syntactic shorthand — there's no need to specify a keyword for your key-value pairs.

Here's a real life example of an RWSERVE configuration file:

server {
port 7443
cache-control {
`favicon.ico` *instructions='public, max-age=86400'
plugins {
rwserve-visitor-count {
location `/srv/rwserve-plugins/node_modules/rwserve-visitor-count/dist/index.js`
config {
save-as `/var/log/rwserve/localhost.daily-counts.txt`
router {
`/favicon.ico` *methods=GET *plugin=rwserve-visitor-count
`*.blue` *methods=GET,HEAD *plugin=rwserve-blue

host {
hostname example.com
document-root `/rwserve/test/fixtures/public`
encoding-cache `/rwserve/test/fixtures/encoding-cache`
dynamic-cache `/rwserve/test/fixtures/dynamic-cache`

tls {
private-key `/etc/letsencrypt/live/example.com/privkey.pem`
certificate `/etc/letsencrypt/live/example.com/fullchain.pem`
Further Reading

BLUE-PHRASE Basics Getting started with symbolic endophrasing. Learn how to author documents with many of the commonly used typographic techniques found in word processors, by using BLUE-PHRASE symbolic endophrasing. There are only a few basic rules to learn.

BLUE-PHRASE Essentials A primer for effectively using BLUE-PHRASE. Learn the essentials necessary to effectively use BLUE-PHRASE, and discover techniques to perform commonly occurring tasks with greater ease using shorthand notation.

BLUE-PHRASE + CSS The fundamentals of styling Learn how to style BLUE-PHRASE with Cascading Style Sheets.

BLUE-PHRASE Quick Ref Syntax cheat sheet A quick reference to BLUE-PHRASE syntax.

Related Sites

BLUE-PHRASE HTML templating and blogging. A computer language for solving problems related to reading, writing, and publishing.

RWSERVE Caching HTTP/2 server with dynamic JavaScript plugins. HTTP/2 is all about speed: fewer bytes, reduced latency, longer connections, multiplexing and prioritization.

READ WRITE GROK A different take on a tech blog. Follow along as Tangled Web Services boldly goes where tech has gone before.

Contact Us

Read Write Tools is able to offer free and low-cost software products because it has low overhead and limited staff. We are happy to answer your customer service and technical support questions when our self-service options aren't able to meet your needs.

Many of the most common customer service issues can be resolved without our help. Check the licensing and accounts pages for ways to resolve issues related to registration, customer numbers, passwords and access keys.

Technical support issues can sometimes be resolved using one of the public forums like Stack Overflow, so search for error messages, blue-phrase syntax questions, and technical problems there. For best results include the name of the product in your search, like rwdoc, rwreuse, rwserve, etc.

For problems that you can't resolve yourself, ask for help.


Twitter @ReadWriteTools Latest announcements from our developer advocate.

Medium @joehonton Using distraction-free tools for better reading, writing and publishing, and loving it!


Copyright © 2020 Read Write Tools, All Rights Reserved.

Software Licensing

Read Write Tools Software License Agreement. The ReadWriteView, ReadWriteNote, ReadWriteDoc, and ReadWriteReuse desktop applications; and the ReadWriteServe server software may be used only in conjunction with the purchase of a software license.

BLUE PHRASE Software License Agreement. The Blue-phrase processor and Blue-phrase symbolic endophrasing may be used only in conjunction with the purchase of a software license.

Read Write Tools Open Source Software. Read Write Tools publishes some of its software portfolio under open source licenses, including RWSERVE plugins, web components, CSS style sheets, editor themes, command line build tools, and Node.js libraries. These are covered by two different open source licenses: the MIT license or the Creative Commons CC-BY-NC-ND 4.0 (Attribution-NonCommercial-NoDerivatives 4.0 International). See each individual file or its associated README file to learn which applies.

Privacy Policy

Data We Obtain From You

  • While you are browsing our website, we log all HTTPS requests from your browser and all responses by our servers.
  • Each time you use our software, we verify the authenticity of your license key using the device address of your computer, and the IP address of your computer network. We use this data to prevent piracy, and to block unlicensed use of our software.

Data Retention

  • We store site visitor log data for a minimum of 90 days.
  • We retain your customer number, license keys and purchase history for a minimum of three years.

Obtaining a copy of your data

  • You may login to your account using the customer number we assigned to you, and the password chosen by you, to view and print all of the data we retain about you.

Data sharing

  • When you purchase a license to any of our software products, we forward payment information from you to a PCI DSS compliant payment processing gateway.
  • We do not sell or share any information with third parties for the purpose of marketing.
Refund Policy

Refund Policy Our goal is customer satisfaction. If, in your opinion, we haven't met our goal, we will refund the unused, pro-rated portion of your license fee.

Wait, wait, I'm confused