Flesh out landing page copy
This commit is contained in:
parent
cee091893a
commit
4b487e7a38
@ -5,6 +5,13 @@ html {
|
|||||||
font-size: 18px;
|
font-size: 18px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* blocks.css bug shim */
|
||||||
|
|
||||||
|
.fixed.inline.block {
|
||||||
|
pointer-events: none;
|
||||||
|
line-height: 1.5em;
|
||||||
|
}
|
||||||
|
|
||||||
/* resets */
|
/* resets */
|
||||||
|
|
||||||
html,
|
html,
|
||||||
@ -58,15 +65,21 @@ footer {
|
|||||||
|
|
||||||
nav {
|
nav {
|
||||||
margin: .8em 0;
|
margin: .8em 0;
|
||||||
|
width: 96%;
|
||||||
|
max-width: 400px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
}
|
}
|
||||||
|
|
||||||
nav a {
|
nav a {
|
||||||
color: var(--block-accent-color);
|
color: var(--block-accent-color);
|
||||||
margin: 0 1em;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
header .subtitle {
|
header .subtitle {
|
||||||
font-size: 1.2em;
|
font-size: 1.2em;
|
||||||
|
line-height: 1.5em;
|
||||||
}
|
}
|
||||||
|
|
||||||
header .lang.block {
|
header .lang.block {
|
||||||
@ -77,7 +90,7 @@ header .lang.block {
|
|||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
display: inline-block; /* for transforms */
|
display: inline-block; /* for transforms */
|
||||||
transform: rotate(-10deg);
|
transform: rotate(-10deg) translateY(6px);
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -92,7 +105,7 @@ header .lang.block {
|
|||||||
.editor .output,
|
.editor .output,
|
||||||
.editor .errors {
|
.editor .errors {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
padding: .5em 1em;
|
padding: .8em 1em;
|
||||||
border-bottom: 3px solid var(--block-text-color);
|
border-bottom: 3px solid var(--block-text-color);
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
}
|
}
|
||||||
@ -103,6 +116,7 @@ header .lang.block {
|
|||||||
|
|
||||||
.editor.block {
|
.editor.block {
|
||||||
padding: 0;
|
padding: 0;
|
||||||
|
padding-top: 24px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.editor .controls {
|
.editor .controls {
|
||||||
@ -118,6 +132,11 @@ header .lang.block {
|
|||||||
justify-content: flex-end;
|
justify-content: flex-end;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.editor .code {
|
||||||
|
padding: 0;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
.editor .output {
|
.editor .output {
|
||||||
min-height: 5em;
|
min-height: 5em;
|
||||||
display: flex;
|
display: flex;
|
||||||
@ -130,11 +149,6 @@ header .lang.block {
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.editor .code {
|
|
||||||
padding: 0;
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
.editor .errors {
|
.editor .errors {
|
||||||
color: var(--block-accent-color);
|
color: var(--block-accent-color);
|
||||||
}
|
}
|
||||||
@ -178,6 +192,40 @@ textarea.editor-input:focus {
|
|||||||
color: #777;
|
color: #777;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
main > h2 {
|
||||||
|
margin-top: 1.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
main > p,
|
||||||
|
main > ul li {
|
||||||
|
line-height: 1.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
main > ul li {
|
||||||
|
margin-bottom: .5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
main > p a {
|
||||||
|
color: var(--block-accent-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
footer {
|
||||||
|
margin-top: 2em;
|
||||||
|
}
|
||||||
|
|
||||||
footer a {
|
footer a {
|
||||||
color: var(--block-accent-color);
|
color: var(--block-accent-color);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@media only screen and (max-width: 600px) {
|
||||||
|
header .subtitle {
|
||||||
|
line-height: 1.7em;
|
||||||
|
}
|
||||||
|
header .lang.block {
|
||||||
|
transform: rotate(-5deg) translateY(4px);
|
||||||
|
}
|
||||||
|
.filler,
|
||||||
|
textarea.editor-input {
|
||||||
|
font-size: .8em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
const PROG_DEFAULT = `DISCOVER HOW TO factorial WITH n
|
const PROG_DEFAULT = `YOU WON'T WANT TO MISS 'Hello, World!'
|
||||||
|
|
||||||
|
DISCOVER HOW TO factorial WITH n
|
||||||
WE SAID
|
WE SAID
|
||||||
WHAT IF n IS ACTUALLY 0
|
WHAT IF n IS ACTUALLY 0
|
||||||
WE SAID
|
WE SAID
|
||||||
@ -10,7 +12,7 @@ WE SAID
|
|||||||
END OF STORY
|
END OF STORY
|
||||||
|
|
||||||
EXPERTS CLAIM result TO BE factorial OF 10
|
EXPERTS CLAIM result TO BE factorial OF 10
|
||||||
YOU WON'T WANT TO MISS 'RESULT IS'
|
YOU WON'T WANT TO MISS 'Result is'
|
||||||
YOU WON'T WANT TO MISS result
|
YOU WON'T WANT TO MISS result
|
||||||
|
|
||||||
PLEASE LIKE AND SUBSCRIBE`;
|
PLEASE LIKE AND SUBSCRIBE`;
|
||||||
@ -21,6 +23,7 @@ const HEADLINES = [
|
|||||||
`Shocking New Programming Language Bewilders Programmers at Google and Facebook!`,
|
`Shocking New Programming Language Bewilders Programmers at Google and Facebook!`,
|
||||||
`Programmer Who Made Everything Now Predicts the Next Big Language!`,
|
`Programmer Who Made Everything Now Predicts the Next Big Language!`,
|
||||||
`The Secret Programming Language Every 10x Programmer Recommends!`,
|
`The Secret Programming Language Every 10x Programmer Recommends!`,
|
||||||
|
`Programmers at Microsoft Hate This One Trick to Get Good at that Code Thing!`,
|
||||||
];
|
];
|
||||||
|
|
||||||
function randomHeadline() {
|
function randomHeadline() {
|
||||||
@ -56,7 +59,7 @@ class Editor extends Component {
|
|||||||
const nodes = new Parser(tokens).parse();
|
const nodes = new Parser(tokens).parse();
|
||||||
const env = new Environment({
|
const env = new Environment({
|
||||||
print: s => {
|
print: s => {
|
||||||
this.output += s.toString() + '\n';
|
this.output += s.toString().toUpperCase() + '!\n';
|
||||||
this.render();
|
this.render();
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
@ -73,7 +76,7 @@ class Editor extends Component {
|
|||||||
jdom`<button class="block"
|
jdom`<button class="block"
|
||||||
onclick=${this.handleReset}>Reset</button>`}
|
onclick=${this.handleReset}>Reset</button>`}
|
||||||
<button class="accent block"
|
<button class="accent block"
|
||||||
onclick=${this.handleRun}>Run!</button>
|
onclick=${this.handleRun}>Run this!</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="code">
|
<div class="code">
|
||||||
<div class="filler">
|
<div class="filler">
|
||||||
@ -109,6 +112,10 @@ class App extends Component {
|
|||||||
<nav>
|
<nav>
|
||||||
<a href="https://github.com/thesephist/tabloid"
|
<a href="https://github.com/thesephist/tabloid"
|
||||||
target="_blank" noopener noreferer>GitHub</a>
|
target="_blank" noopener noreferer>GitHub</a>
|
||||||
|
<a href="#" onclick=${evt => {
|
||||||
|
evt.preventDefault();
|
||||||
|
this.render();
|
||||||
|
}}>Rewrite headline!</a>
|
||||||
<a href="https://dotink.co/posts/tabloid/"
|
<a href="https://dotink.co/posts/tabloid/"
|
||||||
target="_blank" noopener noreferer>Blog post</a>
|
target="_blank" noopener noreferer>Blog post</a>
|
||||||
</nav>
|
</nav>
|
||||||
@ -118,11 +125,92 @@ class App extends Component {
|
|||||||
</header>
|
</header>
|
||||||
${this.editor.node}
|
${this.editor.node}
|
||||||
<h2>What?</h2>
|
<h2>What?</h2>
|
||||||
|
<p>
|
||||||
|
<strong>Tabloid</strong> is a turing-complete programming
|
||||||
|
language for writing programs in the style of clickbait news
|
||||||
|
headlines.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Here are <strike>a few things</strike>${' '}<strong>the Top Five
|
||||||
|
Most Popular Quirks and Features</strong> of the Tabloid
|
||||||
|
programming language <strong>(Number Four Will Shock You!)</strong>
|
||||||
|
</p>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
Print output with the keywords <code class="inline
|
||||||
|
fixed block">YOU WON'T WANT TO MISS</code> followed by an
|
||||||
|
expression. Everything printed by Tabloid is
|
||||||
|
<strong>automatically capitalized, and an exclamation point is
|
||||||
|
added.</strong> Why would you want anything else?
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
Declare a function by writing <code class="inline fixed
|
||||||
|
block">DISCOVER HOW TO ... WITH</code>. Truly, a more
|
||||||
|
gripping way to declare a function can't possibly exist!
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
Assign to a variable by writing <code class="inline fixed
|
||||||
|
block">EXPERTS CLAIM ... TO BE</code>. On the Internet,
|
||||||
|
anyone can be an expert, and Tabloid gives YOU the power to
|
||||||
|
wield that responsibility and declare anything you'd like!
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
To return from a function, simply write <code class="inline
|
||||||
|
fixed block">SHOCKING DEVELOPMENT</code>! You're going
|
||||||
|
to—gasp!—<strong>return</strong>? How shocking!
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
Every program must end with <code
|
||||||
|
class="inline fixed block">PLEASE LIKE AND
|
||||||
|
SUBSCRIBE</code>, because you have to grow your audience! <strong>Hashtag hustle</strong>.
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
<h2>But why?</h2>
|
<h2>But why?</h2>
|
||||||
|
<p>
|
||||||
|
Didn't want to do homework for my
|
||||||
|
<a href="https://cs186berkeley.net/" target="_blank">database
|
||||||
|
systems class</a>, and needed something to do to procrastinate.
|
||||||
|
Will I finish the homework? Did I get enough sleep?
|
||||||
|
</p>
|
||||||
|
<p>Stay tuned to find out!</p>
|
||||||
<h2>Does it actually work?</h2>
|
<h2>Does it actually work?</h2>
|
||||||
|
<p>
|
||||||
|
Yes. Tabloid is a <strong>fully functioning, turing complete
|
||||||
|
programming language with an interpreter</strong> written in
|
||||||
|
JavaScript. Tabloid currently only supports numbers, strings,
|
||||||
|
and booleans, but with these elements, you can write any
|
||||||
|
program you'd want to write. You can edit and run the program above, or
|
||||||
|
<a href="https://github.com/thesephist/tabloid">see how it works for yourself</a>.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Before making Tabloid, I also created a more <strike>useful and
|
||||||
|
well-designed</strike>${' '}<strong>boring and unpopular</strong>
|
||||||
|
programming language, called <a href="https://dotink.co/"
|
||||||
|
target="_blank">Ink</a>.
|
||||||
|
</p>
|
||||||
|
<h2>How much is there?</h2>
|
||||||
|
<p>
|
||||||
|
Here's the full list of non-standard keywords that Tabloid
|
||||||
|
currently uses, in addition to standard operators like <code
|
||||||
|
class="inline fixed block">PLUS</code> and <code class="inline
|
||||||
|
fixed block">MINUS</code>.
|
||||||
|
</p>
|
||||||
|
<ul>
|
||||||
|
<li><code class="inline fixed block">DISCOVER HOW TO...WITH</code> declare a function</li>
|
||||||
|
<li><code class="inline fixed block">WE SAID</code> begin a block scope</li>
|
||||||
|
<li><code class="inline fixed block">A OF B, C</code> call function A with arguments B, C</li>
|
||||||
|
<li><code class="inline fixed block">WHAT IF...LIES!</code> an if-else expression</li>
|
||||||
|
<li><code class="inline fixed block">END OF STORY</code> end a block scope</li>
|
||||||
|
<li><code class="inline fixed block">EXPERTS CLAIM...TO BE</code> declare or assign to a variable</li>
|
||||||
|
<li><code class="inline fixed block">YOU WON'T WANT TO MISS</code> print output</li>
|
||||||
|
<li><code class="inline fixed block">IS ACTUALLY</code> is equal to</li>
|
||||||
|
<li><code class="inline fixed block">BEATS / SMALLER THAN</code> greater than / less than</li>
|
||||||
|
<li><code class="inline fixed block">SHOCKING DEVELOPMENT</code> return from a function</li>
|
||||||
|
<li><code class="inline fixed block">PLEASE LIKE AND SUBSCRIBE</code> end of program</li>
|
||||||
|
</ul>
|
||||||
<footer>
|
<footer>
|
||||||
<p>
|
<p>
|
||||||
Tabloid is a project by
|
Tabloid is an overnight hack by
|
||||||
<a href="https://thesephist.com/">@thesephist</a>,
|
<a href="https://thesephist.com/">@thesephist</a>,
|
||||||
website built with
|
website built with
|
||||||
<a href="https://github.com/thesephist/torus">Torus</a>
|
<a href="https://github.com/thesephist/torus">Torus</a>
|
||||||
|
Loading…
Reference in New Issue
Block a user