Skip to content

Commit

Permalink
Fri Dec 1 07:40:40 AM EST 2023
Browse files Browse the repository at this point in the history
  • Loading branch information
ingydotnet committed Dec 1, 2023
1 parent 0a73d7d commit f509f25
Show file tree
Hide file tree
Showing 6 changed files with 35 additions and 6 deletions.
2 changes: 1 addition & 1 deletion blog/index.html
Original file line number Diff line number Diff line change
@@ -1 +1 @@
<!doctype html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="canonical" href="https://yamlscript.org/blog/"><link href="/assets/main.8884b854956ffa796bf2.css" rel="stylesheet"><link rel="preconnect" href="https://fonts.gstatic.com"><link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Sans&display=swap" rel="stylesheet"><title>YAMLScript</title><link rel="icon" type="“image/x-icon”" href="/images/favicon.ico"><meta property="og:title" content="YAMLScript"><meta property="og:site_name" content="YAMLScript"><meta property="og:type" content="website"><meta property="og:url" content="https://yamlscript.org/blog/"><meta name="twitter:card" content="summary_large_image"><meta name="description" content="All Posts #blog #about #advent-2023 01 Dec 2023 | 3 min read #blog #advent-2023 YAMLScript Advent 2023 Seasons Greetings, my YAML friends!..."><meta property="og:description" content="All Posts #blog #about #advent-2023 01 Dec 2023 | 3 min read #blog #advent-2023 YAMLScript Advent 2023 Seasons Greetings, my YAML friends!..."><meta name="description" content="All Posts #blog #about #advent-2023 01 Dec 2023 | 3 min read #blog #advent-2023 YAMLScript Advent 2023 Seasons Greetings, my YAML friends!..."><script src="https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js"></script><script>mermaid.initialize({startOnLoad:true});</script></head><body><div class="layout-wrapper"><header class="header"><div class="header__content"><h1 class="site-title"><a href="/"><img src="/images/yamlscript.svg"></a></h1><nav class="nav"><ul class="nav__list"><li class="nav-item"><a href="/doc">Docs</a></li><li class="nav-item"><a href="/blog">Blog</a></li><li class="nav-item"><a href="/about">About</a></li></ul></nav></div></header><main class="main"><h1>All Posts</h1><div class="tags"><a href="/tags/blog/" class="post-tag">#blog</a> <a href="/tags/about/" class="post-tag">#about</a> <a href="/tags/advent-2023/" class="post-tag">#advent-2023</a></div><ul class="post-list"><li class="post-list__item"><div><div class="post-list__meta"><time datetime="2023-12-01">01 Dec 2023 </time><span>| </span><span>3 min read</span></div><div class="post-list__tags"><a href="/tags/blog/">#blog</a> <a href="/tags/advent-2023/">#advent-2023</a></div></div><h3 class="post-list__title"><a href="/posts/advent-2023/dec-01/">YAMLScript Advent 2023</a></h3><p class="post-list__excerpt">Seasons Greetings, my YAML friends! What if I told you that you could write a program in YAML that would generate a Christmas tree? Well, you can! Here's how: #!/usr/bin/env ys-0# tree.ys -- Generate...</p><a class="post-list__read-more" href="/posts/advent-2023/dec-01/">read article</a></li><li class="post-list__item"><div><div class="post-list__meta"><time datetime="2023-10-26">26 Oct 2023 </time><span>| </span><span>1 min read</span></div><div class="post-list__tags"><a href="/tags/blog/">#blog</a> <a href="/tags/about/">#about</a></div></div><h3 class="post-list__title"><a href="/posts/welcome-to-the-yamlscript-blog/">Welcome to the YAMLScript Blog</a></h3><p class="post-list__excerpt">Greetings! Welcome to the YAMLScript blog. This is where we will introduce you to novel concepts about YAMLScript as the language...</p><a class="post-list__read-more" href="/posts/welcome-to-the-yamlscript-blog/">read article</a></li></ul></main><footer class="footer"><div class="footer__content"><ul class="hero__social-links"><li><a href="https://github.com/yaml/yamlscript" target="_blank" rel="noopener noreferrer">GitHub</a></li><li><a href="/feed.xml" target="_blank" rel="noopener noreferrer">RSS</a></li></ul><p class="footer__attribution">Powered by <a href="https://www.11ty.dev" target="_blank" rel="noopener">Eleventy</a>. Theme: <a href="https://github.com/yinkakun/eleventy-duo" target="_blank" rel="noopener noreferrer">Eleventy Duo</a>.</p></div></footer></div><script src="/assets/main.31d6cfe0d16ae931b73c.js"></script></body></html>
<!doctype html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="canonical" href="https://yamlscript.org/blog/"><link href="/assets/main.8884b854956ffa796bf2.css" rel="stylesheet"><link rel="preconnect" href="https://fonts.gstatic.com"><link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Sans&display=swap" rel="stylesheet"><title>YAMLScript</title><link rel="icon" type="“image/x-icon”" href="/images/favicon.ico"><meta property="og:title" content="YAMLScript"><meta property="og:site_name" content="YAMLScript"><meta property="og:type" content="website"><meta property="og:url" content="https://yamlscript.org/blog/"><meta name="twitter:card" content="summary_large_image"><meta name="description" content="All Posts #blog #about #advent-2023 01 Dec 2023 | 3 min read #blog #advent-2023 YAMLScript Advent 2023 Seasons Greetings, my YAML friends!..."><meta property="og:description" content="All Posts #blog #about #advent-2023 01 Dec 2023 | 3 min read #blog #advent-2023 YAMLScript Advent 2023 Seasons Greetings, my YAML friends!..."><meta name="description" content="All Posts #blog #about #advent-2023 01 Dec 2023 | 3 min read #blog #advent-2023 YAMLScript Advent 2023 Seasons Greetings, my YAML friends!..."><script src="https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js"></script><script>mermaid.initialize({startOnLoad:true});</script></head><body><div class="layout-wrapper"><header class="header"><div class="header__content"><h1 class="site-title"><a href="/"><img src="/images/yamlscript.svg"></a></h1><nav class="nav"><ul class="nav__list"><li class="nav-item"><a href="/doc">Docs</a></li><li class="nav-item"><a href="/blog">Blog</a></li><li class="nav-item"><a href="/about">About</a></li></ul></nav></div></header><main class="main"><h1>All Posts</h1><div class="tags"><a href="/tags/blog/" class="post-tag">#blog</a> <a href="/tags/about/" class="post-tag">#about</a> <a href="/tags/advent-2023/" class="post-tag">#advent-2023</a></div><ul class="post-list"><li class="post-list__item"><div><div class="post-list__meta"><time datetime="2023-12-01">01 Dec 2023 </time><span>| </span><span>3 min read</span></div><div class="post-list__tags"><a href="/tags/blog/">#blog</a> <a href="/tags/advent-2023/">#advent-2023</a></div></div><h3 class="post-list__title"><a href="/posts/advent-2023/dec-01/">YAMLScript Advent 2023</a></h3><p class="post-list__excerpt">Seasons Greetings, my YAML friends! What if I told you that you could write a program in YAML that would generate a Christmas tree? Well, you can! Here's how: #!/usr/bin/env ys-0defn...</p><a class="post-list__read-more" href="/posts/advent-2023/dec-01/">read article</a></li><li class="post-list__item"><div><div class="post-list__meta"><time datetime="2023-10-26">26 Oct 2023 </time><span>| </span><span>1 min read</span></div><div class="post-list__tags"><a href="/tags/blog/">#blog</a> <a href="/tags/about/">#about</a></div></div><h3 class="post-list__title"><a href="/posts/welcome-to-the-yamlscript-blog/">Welcome to the YAMLScript Blog</a></h3><p class="post-list__excerpt">Greetings! Welcome to the YAMLScript blog. This is where we will introduce you to novel concepts about YAMLScript as the language...</p><a class="post-list__read-more" href="/posts/welcome-to-the-yamlscript-blog/">read article</a></li></ul></main><footer class="footer"><div class="footer__content"><ul class="hero__social-links"><li><a href="https://github.com/yaml/yamlscript" target="_blank" rel="noopener noreferrer">GitHub</a></li><li><a href="/feed.xml" target="_blank" rel="noopener noreferrer">RSS</a></li></ul><p class="footer__attribution">Powered by <a href="https://www.11ty.dev" target="_blank" rel="noopener">Eleventy</a>. Theme: <a href="https://github.com/yinkakun/eleventy-duo" target="_blank" rel="noopener noreferrer">Eleventy Duo</a>.</p></div></footer></div><script src="/assets/main.31d6cfe0d16ae931b73c.js"></script></body></html>
31 changes: 30 additions & 1 deletion feed.xml
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,36 @@
<p>What if I told you that you could write a <strong>program in YAML</strong> that would
generate a Christmas tree?</p>
<p>Well, you can! Here's how:</p>
<pre class="language-yaml"><code class="language-yaml"><span class="token comment">#!/usr/bin/env ys-0</span><br><br><span class="token comment"># tree.ys -- Generate a Christmas tree of width n * 2 - 1</span><br><br><span class="token key atrule">defn main(width=5)</span><span class="token punctuation">:</span><br> <span class="token key atrule">say</span><span class="token punctuation">:</span> tree(width)<br><br><span class="token key atrule">defn tree(width)</span><span class="token punctuation">:</span><br> <span class="token key atrule">stars =</span><span class="token punctuation">:</span> \("<span class="token important">*"</span> * %)<br> <span class="token key atrule">spaces =</span><span class="token punctuation">:</span> \(" " * %)<br> <span class="token key atrule">line =</span><span class="token punctuation">:</span><br> <span class="token key atrule">fn(num)</span><span class="token punctuation">:</span><br> spaces(width <span class="token punctuation">-</span> 1) +<br> stars(1 + (2 * (num <span class="token punctuation">-</span> width))) +<br> "\n"<br> <span class="token key atrule">trunk =</span><span class="token punctuation">:</span> \(spaces(%) + "<span class="token important">*\n")</span><br><br> <span class="token key atrule">join</span><span class="token punctuation">:</span><br> <span class="token key atrule">map line</span><span class="token punctuation">:</span> (width .. <span class="token punctuation">-</span>1)<br> <span class="token key atrule">trunk</span><span class="token punctuation">:</span> width<br> <span class="token key atrule">trunk</span><span class="token punctuation">:</span> width</code></pre>
<pre class="language-yaml"><code class="language-yaml"><span class="token comment">#!/usr/bin/env ys-0</span><br><br>defn main(&amp;<span class="token punctuation">[</span>width<span class="token punctuation">]</span>)<span class="token punctuation">:</span><br> <span class="token key atrule">say</span><span class="token punctuation">:</span><br> <span class="token key atrule">tree</span><span class="token punctuation">:</span><br> <span class="token key atrule">or</span><span class="token punctuation">:</span> width<span class="token punctuation">,</span> <span class="token number">5</span><br><br><span class="token key atrule">defn tree(width)</span><span class="token punctuation">:</span><br> ( join("" map(fn(<span class="token punctuation">[</span>n<span class="token punctuation">]</span> line(width<span class="token punctuation">,</span> n)) (width .. 0)))<br> + (trunk(width) * 2))<br><br><span class="token key atrule">defn stars(num)</span><span class="token punctuation">:</span> ("<span class="token important">*"</span> * inc(num))<br><span class="token key atrule">defn spaces(num)</span><span class="token punctuation">:</span> (" " * num)<br><span class="token key atrule">defn trunk(num)</span><span class="token punctuation">:</span> (spaces(num) + "<span class="token important">*\n")</span><br><br>defn line(width<span class="token punctuation">,</span> <span class="token key atrule">num)</span><span class="token punctuation">:</span><br> ( spaces(num)<br> + stars(((width <span class="token punctuation">-</span> num) * 2))<br> + "\n")</code></pre>
<details><summary><strong style="color:green">Secret Santa Surprise!</strong></summary>
<p>Here's the slightly better version of the program that I was planning to give
you today, but the elves are still working on it:</p>
<pre class="language-yaml"><code class="language-yaml"><span class="token comment">#!/usr/bin/env ys-0</span><br><br><span class="token key atrule">defn main(width=5)</span><span class="token punctuation">:</span><br> <span class="token key atrule">say</span><span class="token punctuation">:</span><br> <span class="token key atrule">tree</span><span class="token punctuation">:</span> width<br><br><span class="token key atrule">defn tree(width)</span><span class="token punctuation">:</span><br> <span class="token key atrule">join +</span><span class="token punctuation">:</span><br> <span class="token key atrule">join</span><span class="token punctuation">:</span><br> map \(line(width<span class="token punctuation">,</span> %))<span class="token punctuation">:</span> width .. 0<br> <span class="token key atrule">trunk</span><span class="token punctuation">:</span> width<br> <span class="token key atrule">trunk</span><span class="token punctuation">:</span> width<br><br><span class="token key atrule">defn stars(num)</span><span class="token punctuation">:</span> inc(num) * "<span class="token important">*"</span><br><span class="token key atrule">defn spaces(num)</span><span class="token punctuation">:</span> num * " "<br><span class="token key atrule">defn trunk(num)</span><span class="token punctuation">:</span> spaces(num) + "<span class="token important">*\n"</span><br><br>defn line(width<span class="token punctuation">,</span> <span class="token key atrule">num)</span><span class="token punctuation">:</span><br> <span class="token key atrule">join +</span><span class="token punctuation">:</span><br> <span class="token key atrule">spaces</span><span class="token punctuation">:</span> num<br> <span class="token key atrule">stars</span><span class="token punctuation">:</span> (width <span class="token punctuation">-</span> num) * 2<br> <span class="token key atrule">=></span><span class="token punctuation">:</span> <span class="token string">"\n"</span></code></pre>
<p>I'll continue to update this post as the elves make progress.</p>
<!--
```yaml
#!/usr/bin/env ys-0
defn main(width=5):
say: tree(width)
defn tree(width):
stars =: \("*" * %)
spaces =: \(" " * %)
line =:
fn(num):
spaces(width - 1) +
stars(1 + (2 * (num - width))) +
"\n"
trunk =: \(spaces(%) + "*\n")
join:
map line: (width .. -1)
trunk: width
trunk: width
```
-->
</details>
<p>Let's get a tree!</p>
<pre class="language-bash"><code class="language-bash">$ ys tree.ys<br> *<br> ***<br> *****<br> *******<br> *********<br> *<br> *</code></pre>
<p>That's a pretty nice tree, but it's a little small. Let's make it bigger!</p>
Expand Down
Loading

0 comments on commit f509f25

Please sign in to comment.