doc/HelloWorld.spec in gerbil-3.0.2 vs doc/HelloWorld.spec in gerbil-3.1.0
- old
+ new
@@ -1,66 +1,62 @@
-desc: A illustrative format.
+desc: An example format.
code: |
- # Returns a random, but pronounceable, name.
+ # Returns a random, yet pronounceable, name.
def generate_name
letters = ('a'..'z').to_a - %w[ c q w x ] # redundant sounds
vowels = %w[a e i o u]
consonants = letters - vowels
sets = [consonants, vowels]
length = 3 + rand(5)
- name = ''
- length.times do |i|
+ name = (0...length).map do |i|
+ # alternate between consonants and vowels
set = sets[i % sets.length]
- name << set[rand(set.length)]
- end
+ # choose a random letter from the set
+ set[rand(set.length)]
+ end.join
+
name
end
class Node
def name
+ # dynamically compute (and store)
+ # the name of this node on demand
@name ||= generate_name
end
end
nodes:
hello:
index: true
number: true
silent: false
output: |
- <h1><%= @node.type %> #<%= @node.index %>: <%= @node.name.inspect %></h1>
+ <h3><%= @node.type %> #<%= @node.index %>: <%= @node.name.inspect %></h3>
+
My name is <%= @node.name.inspect %> and these are my properties:
- <table>
- <tr>
- <th>Property</th>
- <th>Value</th>
- </tr>
- <tr>
- <td>args</td>
- <td><%= @node.args.inspect %></td>
- </tr>
- <tr>
- <td>index</td>
- <td><%= @node.index.inspect %></td>
- </tr>
- <tr>
- <td>number</td>
- <td><%= @node.number.inspect %></td>
- </tr>
- <tr>
- <td>trace</td>
- <td><ul><%= @node.trace.map {|s| "<li>#{s}</li>"} %></ul></td>
- </tr>
- <tr>
- <td>content</td>
- <td><%= @node.content %></td>
- </tr>
- </table>
+ <dl style="<%= $style %>">
+ <dt>args</dt>
+ <dd><code><%= @node.args.inspect %></code></dd>
+
+ <dt>index</dt>
+ <dd><code><%= @node.index.inspect %></code></dd>
+
+ <dt>number</dt>
+ <dd><code><%= @node.number.inspect %></code></dd>
+
+ <dt>trace</td>
+ <dd><pre><%= @node.trace.join("\n") %></pre></dd>
+
+ <dt>content</dt>
+ <dd><%= @node.content %></dd>
+ </dl>
+
output: |
Welcome to the "<%= @spec[:name] %>" format.
- <div style="<%= $style %>"><%= @content %></div>
+ <%= @content %>
That's all folks!