<?xml version='1.0' encoding='utf-8'?>
<ncx xmlns:ncx="http://www.daisy.org/z3986/2005/ncx/"
     xmlns="http://www.daisy.org/z3986/2005/ncx/"
     version="2005-1"
     xml:lang="en">
  <head>
    <meta name="dtb:uid" content="urn:uuid:0cc33cbd-94e2-49c1-909a-72ae16bc2658"/>
    <meta name="dtb:depth" content="1"/>
    <meta name="dtb:totalPageCount" content="0"/>
    <meta name="dtb:maxPageNumber" content="0"/>
  </head>
  <docTitle>
    <text><%= config.project %> - <%= config.version %></text>
  </docTitle>
  <navMap>
    <navPoint id="navpoint-1" playOrder="1">
      <navLabel>
        <text>Book cover</text>
      </navLabel>
      <content src="title.html"/>
    </navPoint>
    <%= for {node, index} <- Enum.with_index(nodes) do %>
      <navPoint id="<%= valid_id node.id %>" playOrder="<%= index + 2 %>">
      <navLabel>
        <text>Module: <%= node.id %></text>
      </navLabel>
      <content src="modules/<%= node.id %>.html"/>
    </navPoint>
    <% end %>
  </navMap>
</ncx>

Remove module prefix in TOC

<?xml version='1.0' encoding='utf-8'?>
<ncx xmlns:ncx="http://www.daisy.org/z3986/2005/ncx/"
     xmlns="http://www.daisy.org/z3986/2005/ncx/"
     version="2005-1"
     xml:lang="en">
  <head>
    <meta name="dtb:uid" content="urn:uuid:0cc33cbd-94e2-49c1-909a-72ae16bc2658"/>
    <meta name="dtb:depth" content="1"/>
    <meta name="dtb:totalPageCount" content="0"/>
    <meta name="dtb:maxPageNumber" content="0"/>
  </head>
  <docTitle>
    <text><%= config.project %> - <%= config.version %></text>
  </docTitle>
  <navMap>
    <navPoint id="navpoint-1" playOrder="1">
      <navLabel>
        <text>Book cover</text>
      </navLabel>
      <content src="title.html"/>
    </navPoint>
    <%= for {node, index} <- Enum.with_index(nodes) do %>
      <navPoint id="<%= valid_id node.id %>" playOrder="<%= index + 2 %>">
      <navLabel>
        <text><%= node.id %></text>
      </navLabel>
      <content src="modules/<%= node.id %>.html"/>
    </navPoint>
    <% end %>
  </navMap>
</ncx>


<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">

  <title><%= title() %></title>

  <link rel="stylesheet" href="<%= Routes.static_path(@conn, "/css/app.css") %>">

  <%= render "favicons.html", conn: @conn %>
  <%= render "analytics.html" %>
</head>

Clean up partial template variable

<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">

  <title><%= title() %></title>

  <link rel="stylesheet" href="<%= Routes.static_path(@conn, "/css/app.css") %>">

  <%= render "favicons.html" %>
  <%= render "analytics.html" %>
</head>


Tags

	 <%= Enum.map(@content, fn(tag) -> %>
		<a class="round tag-cloud" href="/tags/<%= tag %>.html"><%= tag %>
	 <% end) %>

Tag index template for poole theme updated to handle tag names with spaces

Tags

	 <%= Enum.map(@content, fn(tag) -> %>
		<a class="round tag-cloud" href="/tags/<%= Dnevnik.Utils.IO.url_slug(tag) %>.html"><%= tag %>
	 <% end) %>


<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <title>Signin Template for Bootstrap</title>

    <link href="<%= static_path(@conn, "/css/vendor.css") %>" rel="stylesheet">
    <link href="<%= static_path(@conn, "/css/app.css") %>" rel="stylesheet">
  </head>

  <body>
    <div class="container">
      <%= render @view_module, @view_template, assigns %>
    </div>
  </body>
</html>

Fix title of login page

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <title>ExMoney Signin</title>

    <link href="<%= static_path(@conn, "/css/vendor.css") %>" rel="stylesheet">
    <link href="<%= static_path(@conn, "/css/app.css") %>" rel="stylesheet">
  </head>

  <body>
    <div class="container">
      <%= render @view_module, @view_template, assigns %>
    </div>
  </body>
</html>


<div
  class="schedule-item"
  title="<%= appearances_info(@performance) %>"
  data-cc-id="<%= @performance.contest_category.id %>"
  data-id="<%= @performance.id %>"
  data-minutes="<%= scheduled_minutes(@performance) %>"
  style="height: <%= item_height(@performance) %>"
  >

    <%= format_datetime(@performance.stage_time, :time) %>

        <%= short_category_info(@performance) %>

        <%= formatted_duration(@performance) %>

    <%= if scheduled_minutes(@performance) >= 10 and @round > 0 do %>

        <%= short_participant_info(@performance) %>

    <% end %>

  <div
    class="playtime-bar"
    style="height: <%= playtime_percentage(@performance) %>"
    >

Make participant info smaller in schedule performance items


<%= render HexFaktor.ComponentView, "project-title.html", project: @project, branch: @project.git_repo_branches |> Enum.find(&(&1.name == @project.default_branch)) %>

    <a href="/<%= @project.provider %>/<%= @project.name %>">← back to project

<%= render HexFaktor.ProjectView, "_tab_nav_edit.html", assigns %>

<%= render HexFaktor.ComponentView, "alert.html", text: get_flash(@conn, :info) %>

<%= render HexFaktor.ProjectView, "_edit.#{@current_section}.html", assigns %>

Fix broken settings page for projects

<%= render HexFaktor.ComponentView, "project-title.html", conn: @conn, project: @project, branch: @project.git_repo_branches |> Enum.find(&(&1.name == @project.default_branch)) %>

    <a href="/<%= @project.provider %>/<%= @project.name %>">← back to project

<%= render HexFaktor.ProjectView, "_tab_nav_edit.html", assigns %>

<%= render HexFaktor.ComponentView, "alert.html", text: get_flash(@conn, :info) %>

<%= render HexFaktor.ProjectView, "_edit.#{@current_section}.html", assigns %>


RemoteRetroBETA

Built by

Add 'Connecting...' + loading indicator while waiting to render retro state

RemoteRetroBETA

Built by

    Connecting...


<%= for item <- @search.results do %>
  <%= if @type == "posts" do %>
    <%= render Ello.Serve.Webapp.PostView, "summary.html", Map.put(assigns, :post, item) %>
  <% else %>
    <%= render Ello.Serve.Webapp.UserView, "summary.html", Map.put(assigns, :user, item) %>
  <% end %>
<% end %>

<%= if @search.total_pages_remaining > 0 do %>
  <%= link "Next Page", to: next_search_page_url(@search, @type) %>
<% end %>

Add search form to search page.

<%= if @type == "posts" do %>

Post Search

  <form method="GET" action="<%= webapp_url("/search") %>">
    <input type="search" name="terms" />
    <button type="submit">Search</button>
  </form>
  <%= link "User Search", to: webapp_url("/search", type: "users") %>
<% else %>

User Search

  <form method="GET" action="<%= webapp_url("/search") %>">
    <input type="hidden" name="type" value="users" />
    <input type="search" name="terms" />
    <button type="submit">Search</button>
  </form>
  <%= link "Post Search", to: webapp_url("/search") %>
<% end %>

<%= for item <- @search.results do %>
  <%= if @type == "posts" do %>
    <%= render Ello.Serve.Webapp.PostView, "summary.html", Map.put(assigns, :post, item) %>
  <% else %>
    <%= render Ello.Serve.Webapp.UserView, "summary.html", Map.put(assigns, :user, item) %>
  <% end %>
<% end %>

<%= if @search.total_pages_remaining > 0 do %>
  <%= link "Next Page", to: next_search_page_url(@search, @type) %>
<% end %>


<%= if @host do %>

実験記号: <%= @x_token %>

    実験記号を表示

<% end %>

Change UI while JS-file loading

<%= if @host do %>

実験記号: <%= @x_token %>

      実験記号を表示

<% end %>

実験プログラムをダウンロードしています。

このまましばらくお待ちください。


Landeswettbewerbe 2021

Die Landeswettbewerbe finden dieses Jahr in San Sebastián, in Kopenhagen (digital) und in Rom (digital) statt.

Genauere Infos zum Hochladen der Vorspiele zu den digitalen Wettbewerben folgen in den nächsten Wochen.

Aktuelle Infos

Vorspielpläne und Ergebnisse findest du rund um den jeweiligen Wettbewerb in der Jumu-App:

      <%= app_link :ios %> <%= app_link :android %>

Update LW text on home page

Landeswettbewerbe 2021

Die Landeswettbewerbe werden dieses Jahr digital von den Deutschen Schulen in San Sebastián, Kopenhagen und Rom ausgerichtet.

       In Nord- und Osteuropa jährt sich der Landeswettbewerb zum 25. Mal. Alle Vorspiele könnt ihr auf dem <%= link "YouTube-Kanal des LW Kopenhagen", to: "https://www.youtube.com/channel/UCHyE0dEyWcoy982_JquySjw" %> live mitverfolgen. Viel Spaß dabei!

Aktuelle Infos

Vorspielpläne und Ergebnisse findest du rund um den jeweiligen Wettbewerb in der Jumu-App:

      <%= app_link :ios %> <%= app_link :android %>


login

<%= form_for @conn, session_path(@conn, :create), [as: :session], fn f -> %>
  <%= text_input f, :user_name, placeholder: "username" %>
  <%= text_input f, :password, placeholder: "password" %>
  <%= submit "login" %>
<% end %>

Change `text_input` to `password_input` in login form.

login

<%= form_for @conn, session_path(@conn, :create), [as: :session], fn f -> %>
  <%= text_input f, :user_name, placeholder: "username" %>
  <%= password_input f, :password, placeholder: "password" %>
  <%= submit "login" %>
<% end %>


title

  <% width = @world.width %>
  <% height = @world.height %>

  <%= content_tag :svg, height: "100%", width: "100%", viewBox: "0 0 #{width} #{height}" do %>
    <%# background %>
    <%= content_tag :rect, "", y: 0, x: 0, width: width, height: height, fill: "lightgrey" %>

    <%= for snake <- @world.snakes, point <- snake.coords do %>
      <%=
        content_tag :rect, "",
        y: point.y,
        x: point.x,
        width: 1,
        height: 1,
        fill: :red
      %>
    <% end %>

    <%= for food <- @world.food do %>
      <%=
        content_tag :rect, "",
        y: food.y,
        x: food.x,
        width: 1,
        height: 1,
        fill: :green
      %>
    <% end %>
  <% end %>

Add a snake listing on the board

<% alias BattleSnake.Snake %>

  <% width = @world.width %>
  <% height = @world.height %>

    <%= content_tag :svg, height: "100%", width: "100%", viewBox: "0 0 #{width} #{height}" do %>
      <%# background %>
      <%= content_tag :rect, "", y: 0, x: 0, width: width, height: height, fill: "lightgrey" %>

      <%= for snake <- @world.snakes, point <- snake.coords do %>
        <%=
          content_tag :rect, "",
          y: point.y,
          x: point.x,
          width: 1,
          height: 1,
          fill: :red
        %>
      <% end %>

      <%= for food <- @world.food do %>
        <%=
          content_tag :rect, "",
          y: food.y,
          x: food.x,
          width: 1,
          height: 1,
          fill: :green
        %>
      <% end %>
    <% end %>

      <%= for snake <- @world.snakes do %>

url

          <%= content_tag :dt, snake.url %>

length

          <%= content_tag :dt, Snake.len(snake) %>

      <% end %>


<!DOCTYPE html>
<html>
<head>
  <title><%= content_for(:title) || "Cheko" %></title>
  <script type="text/javascript" src="/static/assets/application.js"></script>
  <link rel="stylesheet" href="/static/assets/application.css"/>
  <link rel="shortcut icon" href="/static/favicon.ico" />
</head>
<body>
  <%= content_for(:template) %>
</body>
</html>

Add necessary viewport and notranslate meta tags to layout

<!DOCTYPE html>
<html>
<head>
  <title><%= content_for(:title) || "Cheko" %></title>
  <meta content="True" name="HandheldFriendly"/>
  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"/>
  <meta name="viewport" content="width=device-width"/>
  <meta name="google" value="notranslate" />

  <script type="text/javascript" src="/static/assets/application.js"></script>
  <link rel="stylesheet" href="/static/assets/application.css"/>
  <link rel="shortcut icon" href="/static/favicon.ico" />
</head>
<body>
  <%= content_for(:template) %>
</body>
</html>


Band Indigo — instrumental rock from Siberia

Get our music on iTunes, Google play or Amazon.

Add stores links on index page


ReadErl

An RSS feed aggregator written in Elixir/Phoenix

I'm working on it: github.com/billstclair/readerl

Add version info at bottom of home page.

ReadErl

An RSS feed aggregator written in Elixir/Phoenix

I'm working on it: github.com/billstclair/readerl

  <%= :erlang.system_info(:system_version) %>

  Elixir: <%= System.version %>, Phoenix: <%= Phoenix.Mixfile.project[:version] %>


	<%= for {posting, index} <- Enum.with_index(@postings) do %>

 <img src="<%= posting.picture %>" style="width: 48px; height: 48px;" width=48 height=48>

<a target="blank" href="<%= posting.uri %>" class=""><%= posting.title %>

				 Elixir
				 Pi

<%= posting.description %>

				<a target="blank" href="<%= posting.uri %>" class="btn btn-primary">Visit→
				<button class="btn btn-primary">♥</button>

  <% end %>

      <%= paginate @conn, @kerosene %>

Move to 100% client side


    <%= for user <- Map.keys(@prs) do %>
      <%= for commit <- @prs[user] do %>

            <img src="<%= commit.github_user_avatar %>" style="width: 32px; height: 32px;" />
            <%= user %>

          <%= link("Travis", to: commit.travis_url) %>
          <%= link("Github", to: commit.pr.html_url) %>

            <span class="label label-<%= status_class(commit.status) %> text-uppercase">
              <%= to_string(commit.status) %>

      <% end %>
    <% end %>

Add title field to show PR title.

    <%= for user <- Map.keys(@prs) do %>
      <%= for commit <- @prs[user] do %>

            <img src="<%= commit.github_user_avatar %>" style="width: 32px; height: 32px;" />
            <%= user %>

            <%= commit.pr.title %>

          <%= link("Travis", to: commit.travis_url) %>
          <%= link("Github", to: commit.pr.html_url) %>

            <span class="label label-<%= status_class(commit.status) %> text-uppercase">
              <%= to_string(commit.status) %>

      <% end %>
    <% end %>


<%= gettext("Publish a job offer") %>

<%= render "_form.html",
  changeset: @changeset,
  action: offer_path(@conn, :create),
  conn: @conn,
  css_class: "offer-new" %>

Add information to submit new offers

<%= gettext("Hire a great Elixir/Erlang developer") %>

<%= raw gettext("Elixir/Erlang community is in a very vibrant moment. Start looking for your next hiring in the right place.") %>

<%= gettext("How does this works?") %>

<%= raw gettext("Once you submit your offer, we will review it to avoid SPAM or dead links and, if everything is correct, we will publish it as son as possible!") %>

<%= raw gettext("Publishing an offer on ElixirJobs is free and will be also posted to our Twitter account, so feel free of %{follow_link} and retweet your offer when published!", follow_link: "#{gettext("follow us")}") %>

<%= render "_form.html",
  changeset: @changeset,
  action: offer_path(@conn, :create),
  conn: @conn,
  css_class: "offer-new" %>


Sitzungsprotokolle

  Hier findest du die Protokolle der Konferenzen beim Landeswettbewerb.

    <%= document_link("LW 2014 Kopenhagen", Routes.static_path(Endpoint, "/resources/LW-Protokoll 2014.pdf")) %>

    <%= document_link("LW 2015 Paris", Routes.static_path(Endpoint, "/resources/LW-Protokoll 2015.pdf")) %>

    <%= document_link("LW 2016 Helsinki", Routes.static_path(Endpoint, "/resources/LW-Protokoll 2016.pdf")) %>

    <%= document_link("LW 2017 Brüssel", Routes.static_path(Endpoint, "/resources/LW-Protokoll 2017.pdf")) %>

    <%= document_link("LW 2018 Stockholm", Routes.static_path(Endpoint, "/resources/LW-Protokoll 2018.pdf")) %>

    <%= document_link("LW 2019 Prag", Routes.static_path(Endpoint, "/resources/LW-Protokoll 2019.pdf")) %>

Add grouping info to meeting minutes page

Sitzungsprotokolle

  Hier findest du die Protokolle der LW-Konferenzen.

Verbund 2 (ehemals “Nord- und Osteuropa”)

    <%= document_link("LW 2019 Prag", Routes.static_path(Endpoint, "/resources/LW-Protokoll 2019.pdf")) %>

    <%= document_link("LW 2018 Stockholm", Routes.static_path(Endpoint, "/resources/LW-Protokoll 2018.pdf")) %>

    <%= document_link("LW 2017 Brüssel", Routes.static_path(Endpoint, "/resources/LW-Protokoll 2017.pdf")) %>

    <%= document_link("LW 2016 Helsinki", Routes.static_path(Endpoint, "/resources/LW-Protokoll 2016.pdf")) %>

    <%= document_link("LW 2015 Paris", Routes.static_path(Endpoint, "/resources/LW-Protokoll 2015.pdf")) %>

    <%= document_link("LW 2014 Kopenhagen", Routes.static_path(Endpoint, "/resources/LW-Protokoll 2014.pdf")) %>


  <%= render ExMoney.SharedView, "dashboard_navbar.html", conn: @conn, navigation: @navigation %>

Dashboard

      <%= for account <- @accounts do %>

<%= account.balance %> <%= account.currency_label %>

          <%= account.name %>

      <% end %>

Recent transactions

      <%= for {date, transactions} <- @recent_transactions do %>

<%= date %>

                <%= balance(transactions) %> <%= List.first(transactions).account.currency_label %>

            <%= for transaction <- transactions do %>

                <%= description(transaction) %>
                <%= transaction.category.humanized_name %>
                <%= transaction.amount %>

            <% end %>

      <% end %>

Remove daily sum spent, add currency for transaction in desktop version

  <%= render ExMoney.SharedView, "dashboard_navbar.html", conn: @conn, navigation: @navigation %>

Dashboard

      <%= for account <- @accounts do %>

<%= account.balance %> <%= account.currency_label %>

          <%= account.name %>

      <% end %>

Recent transactions

      <%= for {date, transactions} <- @recent_transactions do %>

<%= date %>

            <%= for transaction <- transactions do %>

                <%= description(transaction) %>
                <%= transaction.category.humanized_name %>
                <%= transaction.amount %> <%= transaction.account.currency_label %>

            <% end %>

      <% end %>


<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link href="https://fonts.googleapis.com/css?family=Open+Sans" rel="stylesheet">
    <meta name="description" content="">
    <meta name="author" content="">

    <title>What3things</title>
    <link rel="stylesheet" href="<%= static_path(@conn, "/css/app.css") %>">
  </head>

  <body>

      <main>
        <%= render @view_module, @view_template, assigns %>
      </main>

    <script src="<%= static_path(@conn, "/js/elm.js") %>"></script>
    <script src="<%= static_path(@conn, "/js/app.js") %>"></script>
  </body>
</html>

Add google analytics tracking code.

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link href="https://fonts.googleapis.com/css?family=Open+Sans" rel="stylesheet">
    <meta name="description" content="">
    <meta name="author" content="">

    <title>What3things</title>
    <link rel="stylesheet" href="<%= static_path(@conn, "/css/app.css") %>">
  </head>

  <body>

      <main>
        <%= render @view_module, @view_template, assigns %>
      </main>

    <script src="<%= static_path(@conn, "/js/elm.js") %>"></script>
    <script src="<%= static_path(@conn, "/js/app.js") %>"></script>
    <script>
      (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
      (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
      m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
      })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

      ga('create', 'UA-4855628-20', 'auto');
      ga('send', 'pageview');
    </script>
  </body>
</html>


<%= form_for @changeset, @action, fn f -> %>
  <%= if @changeset.action do %>

Oops, something went wrong! Please check the errors below:

        <%= for {attr, message} <- f.errors do %>

<%= humanize(attr) %> <%= message %>

        <% end %>

  <% end %>

    <%= submit "Submit", class: "btn btn-primary" %>

<% end %>

Add a form for adding a new couple

<%= form_for @changeset, @action, fn f -> %>
  <%= if @changeset.action do %>

Oops, something went wrong! Please check the errors below:

        <%= for {attr, message} <- f.errors do %>

<%= humanize(attr) %> <%= message %>

        <% end %>

  <% end %>

    <%= label f, :name, "Partner1", class: "control-label" %>
    <%= text_input f, :partner1_id, class: "form-control" %>

    <%= label f, :name, "Partner2", class: "control-label" %>
    <%= text_input f, :partner2_id, class: "form-control" %>

    <%= submit "Submit", class: "btn btn-primary" %>

<% end %>


<!DOCTYPE html>

    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="description" content="">
    <meta name="author" content="">

    <title>Hello MenuPlanner!</title>
    <link rel="stylesheet" href="<%= static_path(@conn, "/css/app.css") %>">

Get Started

<%= get_flash(@conn, :info) %>

<%= get_flash(@conn, :error) %>

        <%= render @view_module, @view_template, assigns %>

Add registration link in layout

<!DOCTYPE html>

    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="description" content="">
    <meta name="author" content="">

    <title>Hello MenuPlanner!</title>
    <link rel="stylesheet" href="<%= static_path(@conn, "/css/app.css") %>">

<%= link "Register", to: user_path(@conn, :new) %>

<%= get_flash(@conn, :info) %>

<%= get_flash(@conn, :error) %>

        <%= render @view_module, @view_template, assigns %>


<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Today I Learned</title>
    <description>TIL is an open-source project by Hashrocket that exists to catalogue the sharing & accumulation of knowledge as it happens day-to-day.
    </description>
    <link><%= post_url(@conn, :index) %></link>
    <%= for post <- @items do %>
      <item>
        <title>
          <![CDATA[<%= post.title %>]]>
        </title>
        <link><%= post_url(@conn, :show, post) %></link>
        <description>
          <![CDATA[<%= Tilex.Markdown.to_html(post.body) %>]]>
        </description>
        <pubDate><%= Tilex.SharedView.rss_date(post) %></pubDate>
        <guid isPermaLink="true"><%= post_url(@conn, :show, post) %></guid>
      </item>
    <% end %>
  </channel>
</rss>

Add atom link and XML standard

<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Today I Learned</title>
    <description>TIL is an open-source project by Hashrocket that exists to catalogue the sharing & accumulation of knowledge as it happens day-to-day.
    </description>
    <link><%= post_url(@conn, :index) %></link>
    <atom:link href="https://til.hashrocket.com/rss" rel="self" type="application/rss+xml" />
    <%= for post <- @items do %>
      <item>
        <title>
          <![CDATA[<%= post.title %>]]>
        </title>
        <link><%= post_url(@conn, :show, post) %></link>
        <description>
          <![CDATA[<%= Tilex.Markdown.to_html(post.body) %>]]>
        </description>
        <pubDate><%= Tilex.SharedView.rss_date(post) %></pubDate>
        <guid isPermaLink="true"><%= post_url(@conn, :show, post) %></guid>
      </item>
    <% end %>
  </channel>
</rss>


Landeswettbewerb <%= year(@contest) %>

      Der Landeswettbewerb findet dieses Jahr an der <%= @contest.host.name %> statt.

Add app links to LW phase panel on home page

Landeswettbewerb <%= year(@contest) %>

      Der Landeswettbewerb findet dieses Jahr an der <%= @contest.host.name %> statt.

Aktuelle Infos

Vorspielpläne und Ergebnisse findest du ab Mitte März in der Jumu-App:

      <%= app_link :ios %> <%= app_link :android %>


<!DOCTYPE html>

    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="description" content="">
    <meta name="author" content="">

    <title>Hello Wiki!</title>
    <link rel="stylesheet" href="<%= static_path(@conn, "/css/app.css") %>">

<%= get_flash(@conn, :info) %>

<%= get_flash(@conn, :error) %>

Change the Title of the Wiki

<!DOCTYPE html>

    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="description" content="">
    <meta name="author" content="">

    <title>Fhtagn's private Wiki on Phoenix</title>
    <link rel="stylesheet" href="<%= static_path(@conn, "/css/app.css") %>">

<%= get_flash(@conn, :info) %>

<%= get_flash(@conn, :error) %>


    <%= for user <- Map.keys(@prs) do %>
      <%= for commit <- @prs[user] do %>

            <img src="<%= commit.github_user_avatar %>" style="width: 32px; height: 32px;" />
            <%= user %>

          <%= link "Travis", [{:to, commit.travis_url}] %>
          <%= link "Github", [{:to, commit.pr.html_url}] %>

            <span class="label label-<%= status_class(commit.status) %> text-uppercase">
              <%= to_string(commit.status) %>

      <% end %>
    <% end %>

Add parens to try to fix heroku problem.

    <%= for user <- Map.keys(@prs) do %>
      <%= for commit <- @prs[user] do %>

            <img src="<%= commit.github_user_avatar %>" style="width: 32px; height: 32px;" />
            <%= user %>

          <%= link("Travis", to: commit.travis_url) %>
          <%= link("Github", to: commit.pr.html_url) %>

            <span class="label label-<%= status_class(commit.status) %> text-uppercase">
              <%= to_string(commit.status) %>

      <% end %>
    <% end %>


Tags

	 <%= Enum.map(@content, fn(tag) -> %>
		<a class="round tag-cloud" href="/tags/<%= tag %>.html"><%= tag %>
	 <% end) %>

Revert "Revert "Tag index template for poole theme updated to handle tag names with spaces""

Tags

	 <%= Enum.map(@content, fn(tag) -> %>
		<a class="round tag-cloud" href="/tags/<%= Dnevnik.Utils.IO.url_slug(tag) %>.html"><%= tag %>
	 <% end) %>


  <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title> Configure Farmbot's Network </title>
    <link rel="stylesheet" href="/styles.css">

Configure your FarmBot

Network

        <form action="<%= post_action %>" id="interfaceSelectForm" method="post">
          <input id="interface" name="interface" value="" hidden/>
          <% # Main form stuff %>
          <%= for ifname <- interfaces do %>
            <label for='<%= ifname %>'> <%= ifname %>
            <input type="radio" id='<%= ifname %>' name="interfaceRadio" value=""/>
          <% end %>

          <% #/Main form stuff %>

 <input type=submit value="next" onclick="select_interface()">

        </form>

Update Network landing to use friendlier names.

  <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title> Configure Farmbot's Network </title>
    <link rel="stylesheet" href="/styles.css">

Configure your FarmBot

Network

        <form action="<%= post_action %>" id="interfaceSelectForm" method="post">
          <input id="interface" name="interface" value="" hidden/>
          <% # Main form stuff %>
          <%= for ifname <- interfaces do %>
            <label for='<%= ifname %>'> <%= if String.contains?(to_string(ifname), "w"), do: "WiFi", else: "Ethernet"%> (<%= ifname %>)
            <input type="radio" id='<%= ifname %>' name="interfaceRadio" value=""/>
          <% end %>

          <% #/Main form stuff %>

 <input type=submit value="next" onclick="select_interface()">

        </form>


<!DOCTYPE html>

    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="description" content="">
    <meta name="author" content="">

    <title>Hello Wiki!</title>
    <link rel="stylesheet" href="<%= static_path(@conn, "/css/app.css") %>">

Get Started

<%= get_flash(@conn, :info) %>

<%= get_flash(@conn, :error) %>

        <%= render @view_module, @view_template, assigns %>

Remove the default front page style

<!DOCTYPE html>

    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="description" content="">
    <meta name="author" content="">

    <title>Hello Wiki!</title>
    <link rel="stylesheet" href="<%= static_path(@conn, "/css/app.css") %>">

<%= get_flash(@conn, :info) %>

<%= get_flash(@conn, :error) %>


Pages

<%= for page <- @pages do %>

<%= link page.title, to: page.title %> - <%= link "[Edit]", to: page.title<>"/edit" %>

<% end %>

Change the unordered List to ordered List


<%= gettext "Welcome to %{name}", name: "Chatroom!" %>

The world's simplest chat application.

    <input type='text' id='name' class='form-control' placeholder='Name' />

    <input type='text' id='message' class='form-control' placeholder='Message' />

Modify basic template with divs for video objects

<%= gettext "Welcome to %{name}", name: "Chatroom!" %>

The world's simplest chat application.

  <video id="localVideo" autoplay></video>
  <video id="remoteVideo" autoplay></video>

  <button id="connect">Connect</button>
  <button id="call">Call</button>
  <button id="hangup">Hangup</button>


Listing door groups

      Name

<%= for door_group <- @door_groups do %>

      <%= door_group.name %>

        <%= link "Show", to: door_group_path(@conn, :show, door_group), class: "btn btn-default btn-xs" %>
        <%= link "Edit", to: door_group_path(@conn, :edit, door_group), class: "btn btn-default btn-xs" %>
        <%= link "Delete", to: door_group_path(@conn, :delete, door_group), method: :delete, data: [confirm: "Are you sure?"], class: "btn btn-danger btn-xs" %>

<% end %>

<%= link "New door group", to: door_group_path(@conn, :new) %>

Use consistent name-as-link for show

Listing door groups

      Name

<%= for door_group <- @door_groups do %>

      <%= link door_group.name, to: door_group_path(@conn, :show, door_group) %>

        <%= link "Edit", to: door_group_path(@conn, :edit, door_group), class: "btn btn-default btn-xs" %>
        <%= link "Delete", to: door_group_path(@conn, :delete, door_group), method: :delete, data: [confirm: "Are you sure?"], class: "btn btn-danger btn-xs" %>

<% end %>

<%= link "New door group", to: door_group_path(@conn, :new) %>


    <%= @chamber %>

Recent Bills Passed

  <%= for bill <- @bills_passed do %>

      <a href="<%= bill["congressdotgov_url"] %>">
        <%= bill["title"] %>

  <% end %>

Members

  <%= for member <- @members do %>

<%= member["first_name"] %> <%= member["last_name"] %>

  <% end %>

Interpolate name, title, state and part of bill sponsor

    <%= @chamber %>

Recent Bills Passed

  <%= for bill <- @bills_passed do %>

      <a href="<%= bill["congressdotgov_url"] %>">
        <%= bill["title"] %>

      <%= gettext("%{title} %{sponsor_name} (%{party} - %{state})", title: bill["sponsor_title"], sponsor_name: bill["sponsor_name"], party: bill["sponsor_party"] , state: bill["sponsor_state"]) %>

  <% end %>

Recent Bills Introduced

  <%= for bill <- @bills_introduced do %>

      <a href="<%= bill[" congressdotgov_url "] %>">
        <%= bill["title"] %>

    <% end %>

Members

  <%= for member <- @members do %>

<%= member["first_name"] %> <%= member["last_name"] %>

  <% end %>


<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE ncx PUBLIC "-//NISO//DTD ncx 2005-1//EN"
                 "http://www.daisy.org/z3986/2005/ncx-2005-1.dtd">
<ncx xmlns="http://www.daisy.org/z3986/2005/ncx/" version="2005-1">
  <head>
    <meta name="dtb:uid"
content="urn:uuid:0cc33cbd-94e2-49c1-909a-72ae16bc2658"/>
    <meta name="dtb:depth" content="1"/>
    <meta name="dtb:totalPageCount" content="0"/>
    <meta name="dtb:maxPageNumber" content="0"/>
  </head>
  <docTitle>
    <text>Hello World: My First EPUB</text>
  </docTitle>
  <navMap>
    <navPoint id="navpoint-1" playOrder="1">
      <navLabel>
        <text>Book cover</text>
      </navLabel>
      <content src="title.html"/>
    </navPoint>
    <navPoint id="navpoint-2" playOrder="2">
      <navLabel>
        <text>Contents</text>
      </navLabel>
      <content src="module.html"/>
    </navPoint>
  </navMap>
</ncx>

Add initial parameters for TOC template

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE ncx PUBLIC "-//NISO//DTD ncx 2005-1//EN"
                 "http://www.daisy.org/z3986/2005/ncx-2005-1.dtd">
<ncx xmlns="http://www.daisy.org/z3986/2005/ncx/" version="2005-1">
  <head>
    <meta name="dtb:uid" content="urn:uuid:0cc33cbd-94e2-49c1-909a-72ae16bc2658"/>
    <meta name="dtb:depth" content="1"/>
    <meta name="dtb:totalPageCount" content="0"/>
    <meta name="dtb:maxPageNumber" content="0"/>
  </head>
  <docTitle>
    <text><%= config.project %> - <%= config.version %></text>
  </docTitle>
  <navMap>
    <navPoint id="navpoint-1" playOrder="1">
      <navLabel>
        <text>Book cover</text>
      </navLabel>
      <content src="title.html"/>
    </navPoint>
    <navPoint id="navpoint-2" playOrder="2">
      <navLabel>
        <text>Contents</text>
      </navLabel>
      <content src="module.html"/>
    </navPoint>
  </navMap>
</ncx>


  <%= for post <- @posts do %>
    <article id='<%= "post_#{post.id}" %>' class='post'>

<a href='<%= page_path(@conn, :show, post.permalink) %>'><%= post.title %>

      By Michelada.io
      <%= human_date(post.published_at) %>

<%= post.summary %>

  <% end %>

Change home to show full post

  <%= for post <- @posts do %>
    <article id='<%= "post_#{post.id}" %>' class='post'>

<a href='<%= page_path(@conn, :show, post.permalink) %>'><%= post.title %>

      By Michelada.io
      <%= human_date(post.published_at) %>

<%= markdown_to_html(post.body) %>

  <% end %>


<% alias BattleSnake.Snake %>

  <% width = @world.width %>
  <% height = @world.height %>

    <%= content_tag :svg, height: "100%", width: "100%", viewBox: "0 0 #{width} #{height}" do %>
      <%# background %>
      <%= content_tag :rect, "", y: 0, x: 0, width: width, height: height, fill: "lightgrey" %>

      <%= for snake <- @world.snakes, point <- snake.coords do %>
        <%=
          content_tag :rect, "",
          y: point.y,
          x: point.x,
          width: 1,
          height: 1,
          fill: :red
        %>
      <% end %>

      <%= for food <- @world.food do %>
        <%=
          content_tag :rect, "",
          y: food.y,
          x: food.x,
          width: 1,
          height: 1,
          fill: :green
        %>
      <% end %>
    <% end %>

      <%= for snake <- @world.snakes do %>

url

          <%= content_tag :dt, snake.url %>

length

          <%= content_tag :dt, Snake.len(snake) %>

move

          <%= content_tag :dt, @world.moves[snake.name] %>

      <% end %>

Use snake's color on the board

<% alias BattleSnake.Snake %>

  <% width = @world.width %>
  <% height = @world.height %>

    <%= content_tag :svg, height: "100%", width: "100%", viewBox: "0 0 #{width} #{height}" do %>
      <%# background %>
      <%= content_tag :rect, "", y: 0, x: 0, width: width, height: height, fill: "lightgrey" %>

      <%= for snake <- @world.snakes, point <- snake.coords do %>
        <%=
          content_tag :rect, "",
          y: point.y,
          x: point.x,
          width: 1,
          height: 1,
          fill: snake.color
        %>
      <% end %>

      <%= for food <- @world.food do %>
        <%=
          content_tag :rect, "",
          y: food.y,
          x: food.x,
          width: 1,
          height: 1,
          fill: :green
        %>
      <% end %>
    <% end %>

      <%= for snake <- @world.snakes do %>

url

          <%= content_tag :dt, snake.url %>

length

          <%= content_tag :dt, Snake.len(snake) %>

move

          <%= content_tag :dt, @world.moves[snake.name] %>

      <% end %>


:: Discover the current release directory from the directory
:: of this script and the start_erl.data file
@set script_dir=%~dp0
@for %%A in ("%script_dir%\..") do @(
  set release_root_dir=%%~fA
)
@set rel_vsn=TODO
@set boot_script=%release_root_dir%\releases\%rel_vsn%\boot_win.bat
%boot_script% "%1"

Fix win32 boot loader script

:: Discover the current release directory from the directory
:: of this script and the start_erl.data file
@set script_dir=%~dp0
@for %%A in ("%script_dir%\..") do @(
  set release_root_dir=%%~fA
)
@set rel_name=<%= release_name %>
@set rel_vsn=<%= release_version %>
@set boot_script=%release_root_dir%\releases\%rel_vsn%\%rel_name%.bat
@%boot_script% "%1"


<!DOCTYPE html>

    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="description" content="">
    <meta name="author" content="">

    <title>Hello Phoenix!</title>
    <link rel="stylesheet" href="<%%= static_path(@conn, "/css/app.css") %>">

Get Started

<%%= get_flash(@conn, :info) %>

<%%= get_flash(@conn, :error) %>

      <%%= @inner %>

phoenixframework.org

Use bootstrap classes for flash messages


      <s class='bar'></s>
      <s class='bar'></s>

Services

<%= link("Blog", to: page_path(@conn, :index)) %>

About Us

Get in Touch

Change Urls to static references

          <img class='logo' src="<%= static_url(@conn, "/images/michelada-white-logo.svg") %>" />
          <img class='text' src="<%= static_url(@conn, "/images/michelada-white-text.svg") %>" />

      <s class='bar'></s>
      <s class='bar'></s>

Services

<%= link("Blog", to: page_path(@conn, :index)) %>

About Us

Get in Touch


<div id="app" data-game-id="<%= @game.id %>">
</div>

Add link back to games

<%= link "Back to games", to: game_path(@conn, :index) %>

<div id="app" data-game-id="<%= @game.id %>">


<!DOCTYPE html>

    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="description" content="">
    <meta name="author" content="">

    <title>ReadErl</title>
    <link rel="stylesheet" href="<%= static_path(@conn, "/css/app.css") %>">

<%= get_flash(@conn, :info) %>

<%= get_flash(@conn, :error) %>

      <%= @inner %>

Add icon to page head

<!DOCTYPE html>

    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="description" content="">
    <meta name="author" content="">
    <link rel="icon" type="image/png" href="'<%= static_path(@conn, "/images/readerl-icon.png") %>" sizes="180x95" />

    <title>ReadErl</title>
    <link rel="stylesheet" href="<%= static_path(@conn, "/css/app.css") %>">

<%= get_flash(@conn, :info) %>

<%= get_flash(@conn, :error) %>

      <%= @inner %>


:: Discover the current release directory from the directory
:: of this script and the start_erl.data file
@echo off
set script_dir=%~dp0
for %%A in ("%script_dir%\..") do (
  set release_root_dir=%%~fA
)
set rel_name=<%= release_name %>
set rel_vsn=<%= release_version %>
set boot_script=%release_root_dir%\releases\%rel_vsn%\%rel_name%.ps1
powershell -NonInteractive -NoProfile -ExecutionPolicy Bypass -Command "& "%boot_script%" @args" %*

Update exec script to use pwsh over powershell, when available

:: Discover the current release directory from the directory
:: of this script and the start_erl.data file
@echo off
set script_dir=%~dp0
for %%A in ("%script_dir%\..") do (
  set release_root_dir=%%~fA
)
set rel_name=<%= release_name %>
set rel_vsn=<%= release_version %>
set boot_script=%release_root_dir%\releases\%rel_vsn%\%rel_name%.ps1

:: Use pwsh.exe rather than powershell.exe if available
set prog=powershell
where pwsh
if %ERRORLEVEL% eq 0 (
  set prog=pwsh
)
%prog% -NonInteractive -NoProfile -ExecutionPolicy Bypass -Command "& "%boot_script%" @args" %*


<%= gettext "Register" %>

  <%= form_for @changeset, registration_path(@conn, :create), [class: "create-registration"], fn f -> %>
    <%= if @changeset.action do %>

          <%= gettext "Oops, something went wrong! Please check the errors below." %>

    <% end %>

        <%= input f, :name %>

        <%= input f, :email, as: :email %>

        <%= input f, :password, as: :password %>

      <%= submit gettext("Register"), class: "btn btn-primary" %>

  <% end %>

Add simple email privacy message

<%= gettext "Register" %>

  <%= form_for @changeset, registration_path(@conn, :create), [class: "create-registration"], fn f -> %>
    <%= if @changeset.action do %>

          <%= gettext "Oops, something went wrong! Please check the errors below." %>

    <% end %>

        <%= input f, :name %>

        <%= input f, :email, as: :email %>

<%= gettext("Your email address will only ever be used to send you notifications of new games and moves.") %>

        <%= input f, :password, as: :password %>

      <%= submit gettext("Register"), class: "btn btn-primary" %>

  <% end %>


<!DOCTYPE html>

    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="description" content="">
    <meta name="author" content="">

    <title>Hello Who!</title>
    <link rel="stylesheet" href="<%= static_path(@conn, "/css/app.css") %>">

Get Started

<%= get_flash(@conn, :info) %>

<%= get_flash(@conn, :error) %>

        <%= render @view_module, @view_template, assigns %>

Update app layout title tag

<!DOCTYPE html>

    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="description" content="">
    <meta name="author" content="">

    <title>Who Speaks for Us?</title>
    <link rel="stylesheet" href="<%= static_path(@conn, "/css/app.css") %>">

Get Started

<%= get_flash(@conn, :info) %>

<%= get_flash(@conn, :error) %>

        <%= render @view_module, @view_template, assigns %>


#!/usr/bin/env sh

<%= if @docker do %>mix deps.get

<%= if @node_assets do %>(cd lib/<%= @name %>/www ; npm install)
<% end %>
<%= if @ecto do %>mix do ecto.create, ecto.migrate
<% end %>
elixir --sname app -S mix run --no-halt
<% end %>

Write beautiful race condition protection when db comes up slow.

#!/usr/bin/env sh
set -eu

<%= if @docker do %>mix deps.get
<%= if @node_assets do %>
(cd lib/<%= @name %>/www ; npm install)<% end %>
<%= if @ecto do %>
# NOTE there is a race condition between the db service starting
# and the project itself starting. This code will retry until the db can be connected to.
attempts=20
for i in `seq $attempts`; do
    mix ecto.create >/dev/null && break
    echo "Attempt $i / $attempts - failed to create db for the Repo"
    sleep 1
done

if [ $i -eq $attempts ]; then
    echo "Could not connect to the database, exiting"
    exit 2;
fi

mix ecto.migrate
<% end %>
elixir --sname app -S mix run --no-halt
<% end %>


<% alias BattleSnakeServer.Snake %>
<% snake = %Snake{} %>

Edit game

<%= form_for @changeset, game_path(@conn, :update, @game), [method: :put], fn f -> %>

  <%= label :f, :width %>
  <%= number_input f, :width %>

  <%= label f, :height %>
  <%= number_input f, :height %>

<%= inputs_for f, :snakes, [append: [snake]], fn g -> %>

  <%= label g, :url %>
  <%= url_input g, :url %>

  <%= label g, :delete %>
  <%= checkbox g, :delete %>

<% end %>

  <%= submit "Update game" %>

<% end %>

<%= link "Back", to: game_path(@conn, :index) %>

Add links to play and show from edit page

<% alias BattleSnakeServer.Snake %>
<% snake = %Snake{} %>

Edit game

<%= form_for @changeset, game_path(@conn, :update, @game), [method: :put], fn f -> %>

  <%= label :f, :width %>
  <%= number_input f, :width %>

  <%= label f, :height %>
  <%= number_input f, :height %>

<%= inputs_for f, :snakes, [append: [snake]], fn g -> %>

  <%= label g, :url %>
  <%= url_input g, :url %>

  <%= label g, :delete %>
  <%= checkbox g, :delete %>

<% end %>

  <%= submit "Update game" %>

<% end %>

  <%= link "Play", to: play_path(@conn, :show, @game) %>

  <%= link "Show", to: game_path(@conn, :show, @game) %>

  <%= link "Back", to: game_path(@conn, :index) %>


<!DOCTYPE html>

<meta charset="utf-8">
<title>Index of <%= Plug.HTML.html_escape(basepath) %></title>

Index of <%= Plug.HTML.html_escape(basepath) %>

Parent Directory

Add base path to template

<!DOCTYPE html>

<meta charset="utf-8">
<title>Index of <%= Plug.HTML.html_escape(basepath) %></title>

<base href="<%= Plug.HTML.html_escape(basepath) %>">

Index of <%= Plug.HTML.html_escape(basepath) %>

Parent Directory


<img src='<%= static_path(@conn, "/images/readerl-icon-text.png") %>' alt='ReadErl' width='227' height='48'/>™

An RSS feed aggregator written in Elixir/Phoenix

I'm working on it: github.com/billstclair/readerl

  <%= :erlang.system_info(:system_version) %>

  Elixir: <%= System.version %>, Phoenix: <%= {:ok, vsn} = :application.get_key(:phoenix, :vsn); vsn %>

Add Erlang version number to home page.

<img src='<%= static_path(@conn, "/images/readerl-icon-text.png") %>' alt='ReadErl' width='227' height='48'/>™

An RSS feed aggregator written in Elixir/Phoenix

I'm working on it: github.com/billstclair/readerl

  <%= :erlang.system_info(:system_version) %>

  Erlang: <%= {:ok, version} = :file.read_file(:filename.join([:code.root_dir(), "releases", :erlang.system_info(:otp_release), "OTP_VERSION"])); version %>,
  Elixir: <%= System.version %>, Phoenix: <%= {:ok, vsn} = :application.get_key(:phoenix, :vsn); vsn %>


    <%= if @title_link do %>
    <%= link(@offer.title, to: offer_path(@conn, :show, @offer.slug)) %>
    <% else %>
    <%= @offer.title%>
    <% end %>

      <%= @offer.company %>

        <%= if @offer.published_at do %>
        <%= human_readable_date(@offer.published_at) %>
        <% else %>
        <%= human_readable_date(@offer.inserted_at) %>
        <% end %>

      <%= @offer.location %>

        <%= human_get_place(@offer.job_place, gettext("Unknown")) %>

        <%= human_get_type(@offer.job_type, gettext("Unknown")) %>

    <%= sanitized_markdown(@offer.description) %>

Use generators and link badges

    <%= if @title_link do %>
    <%= link(@offer.title, to: offer_path(@conn, :show, @offer.slug)) %>
    <% else %>
    <%= @offer.title%>
    <% end %>

      <%= @offer.company %>

        <%= if @offer.published_at do %>
        <%= human_readable_date(@offer.published_at) %>
        <% else %>
        <%= human_readable_date(@offer.inserted_at) %>
        <% end %>

      <%= @offer.location %>

        <%= link(human_get_place(@offer.job_place, gettext("Unknown")),
              to: offer_path(@conn, :search, filters: [job_place: @offer.job_place]),
              class: "badge badge-success") %>

        <%= link(human_get_type(@offer.job_type, gettext("Unknown")),
              to: offer_path(@conn, :search, filters: [job_type: @offer.job_type]),
              class: "badge badge-primary") %>

    <%= sanitized_markdown(@offer.description) %>


<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title><%= gettext("ElixirJobs") %></title>
    <description><%= gettext "Find your next Elixir job." %></description>
    <link><%= offer_url(@conn, :index) %></link>
    <%= for offer <- @offers do %>
      <item>
        <title><![CDATA[<%= xml_strip_tags(offer.title) %>]]></title>
        <description><![CDATA[

              <%= gettext "Job place:" %> <%= human_get_place(offer.job_place, gettext("Unknown")) %>

              <%= gettext "Job type:" %> <%= human_get_type(offer.job_type, gettext("Unknown")) %>

          <%= xml_sanitized_markdown(offer.description) %>
        ]]></description>
        <pubDate><%= xml_readable_date(offer.inserted_at) %></pubDate>
        <link><%= offer.url %></link>
        <guid><%= offer.url %></guid>
      </item>
    <% end %>
  </channel>
</rss>

Add location to RSS feed

<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title><%= gettext("ElixirJobs") %></title>
    <description><%= gettext "Find your next Elixir job." %></description>
    <link><%= offer_url(@conn, :index) %></link>
    <%= for offer <- @offers do %>
      <item>
        <title><![CDATA[<%= xml_strip_tags(offer.title) %>]]></title>
        <description><![CDATA[

              <%= gettext "Job place:" %> <%= human_get_place(offer.job_place, gettext("Unknown")) %>

              <%= gettext "Job type:" %> <%= human_get_type(offer.job_type, gettext("Unknown")) %>

              <%= gettext "Job location:" %> <%= xml_strip_tags(offer.location) %>

          <%= xml_sanitized_markdown(offer.description) %>
        ]]></description>
        <pubDate><%= xml_readable_date(offer.inserted_at) %></pubDate>
        <link><%= offer.url %></link>
        <guid><%= offer.url %></guid>
      </item>
    <% end %>
  </channel>
</rss>


<% parsed = URI.parse(@wg.meta.public_calendar) %>
<% webcal = parsed.host <> parsed.path %>

<%= @wg.name %> Working Group

Public Calendar

        <a href="webcal://<%= webcal %>">Subscribe to this calendar

          <%= link "Back to #{@wg.name}", to: Routes.working_group_path(@conn, :show, @wg.slug) %>

<%= calendar(@wg.meta.public_calendar) %>

Add missing closing div tag


Welcome to Phoenix!

A productive web framework that
does not compromise speed and maintainability.

Resources

        Guides

        Docs

        Source

Help

        Mailing list

        #elixir-lang on freenode IRC

        @elixirphoenix

Add welcome page jumbotron changes

Welcome to Battletracker!

A tabletop roleplaying game
campaign management system.

Resources

        Guides

        Docs

        Source

Help

        Mailing list

        #elixir-lang on freenode IRC

        @elixirphoenix


    <%= link(@offer.title, to: offer_path(@conn, :show, @offer.slug)) %>

      <%= @offer.company %>

      <%= human_readable_date(@offer.inserted_at) %>
      <%= @offer.location %>

        <%= human_get_place(@offer.job_place) %>

        <%= human_get_type(@offer.job_type) %>

    <%= sanitized_markdown(@offer.description) %>

Allow title with and without link

    <%= if @title_link do %>
    <%= link(@offer.title, to: offer_path(@conn, :show, @offer.slug)) %>
    <% else %>
    <%= @offer.title%>
    <% end %>

      <%= @offer.company %>

      <%= human_readable_date(@offer.published_at) %>
      <%= @offer.location %>

        <%= human_get_place(@offer.job_place) %>

        <%= human_get_type(@offer.job_type) %>

    <%= sanitized_markdown(@offer.description) %>


<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="description" content="">
    <meta name="author" content="">

    <title>Hello RemoteRetro!</title>
    <link rel="stylesheet" href="<%= static_path(@conn, "/css/semantic-ui/semantic.min.css") %>">
    <link rel="stylesheet" href="<%= static_path(@conn, "/css/app.css") %>">
  </head>

  <body class="<%= if @view_module.include_backdrop, do: "photo-backdrop" %>">
    <main role="main">
      <%= render @view_module, @view_template, assigns %>
    </main>

    <%= if @view_module.include_js do %>
      <script>window.userToken = "<%= assigns[:user_token] %>"</script>
      <script>window.retroUUID = "<%= assigns[:retro_uuid] %>"</script>
      <script src="<%= static_path(@conn, "/js/dll/dll.vendor.js") %>"></script>
      <script src="<%= static_path(@conn, "/js/app.js") %>"></script>
    <% end %>
  </body>
</html>

Update page title from Phoenix default

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="description" content="">
    <meta name="author" content="">
    <title>RemoteRetro</title>
    <link rel="stylesheet" href="<%= static_path(@conn, "/css/semantic-ui/semantic.min.css") %>">
    <link rel="stylesheet" href="<%= static_path(@conn, "/css/app.css") %>">
  </head>

  <body class="<%= if @view_module.include_backdrop, do: "photo-backdrop" %>">
    <main role="main">
      <%= render @view_module, @view_template, assigns %>
    </main>

    <%= if @view_module.include_js do %>
      <script>window.userToken = "<%= assigns[:user_token] %>"</script>
      <script>window.retroUUID = "<%= assigns[:retro_uuid] %>"</script>
      <script src="<%= static_path(@conn, "/js/dll/dll.vendor.js") %>"></script>
      <script src="<%= static_path(@conn, "/js/app.js") %>"></script>
    <% end %>
  </body>
</html>


Landeswettbewerbe 2020

Der Landeswettbewerb des Verbunds 1 fand dieses Jahr in Valencia statt.

      Der Landeswettbewerb in Warschau musste wegen der derzeitigen COVID-19-Pandemie leider abgesagt werden.

Aktuelle Infos

Vorspielpläne und Ergebnisse findest du rund um den jeweiligen Wettbewerb in der Jumu-App:

      <%= app_link :ios %> <%= app_link :android %>

Update LW cancellation note on home page

Landeswettbewerbe 2020

Der Landeswettbewerb des Verbunds 1 fand dieses Jahr in Valencia statt.

      Die Landeswettbewerbe in Warschau und Rom mussten wegen der derzeitigen COVID-19-Pandemie leider abgesagt werden.

Aktuelle Infos

Vorspielpläne und Ergebnisse findest du rund um den jeweiligen Wettbewerb in der Jumu-App:

      <%= app_link :ios %> <%= app_link :android %>


Listing builds

      Project
      Number
      Log
      Coordinate
      Config

<%= for build <- @builds do %>

      <%= build.project_id %>
      <%= build.number %>
      <%= build.log %>
      <%= build.coordinate %>
      <%= build.config %>

        <%= link "Show", to: build_path(@conn, :show, build), class: "btn btn-default btn-xs" %>
        <%= link "Edit", to: build_path(@conn, :edit, build), class: "btn btn-default btn-xs" %>
        <%= link "Delete", to: build_path(@conn, :delete, build), method: :delete, data: [confirm: "Are you sure?"], class: "btn btn-danger btn-xs" %>

<% end %>

<%= link "New build", to: build_path(@conn, :new) %>

Remove invalid links and add a message box.

Listing builds

      Project
      Number
      Log
      Coordinate
      Config

<%= for build <- @builds do %>

      <%= build.project_id %>
      <%= build.number %>
      <%= build.log %>
      <%= build.coordinate %>
      <%= build.config %>

        <%= link "Show", to: build_path(@conn, :show, build), class: "btn btn-default btn-xs" %>

<% end %>


# Usage
# tcl synth_generic.tcl {K} {out.json}

set LUT_K 4
if {$argc > 0} { set LUT_K [lindex $argv 0] }
yosys read_verilog -lib [file dirname [file normalize $argv0]]/prims.v
yosys hierarchy -check
yosys proc
yosys flatten
yosys tribuf -logic
yosys deminout
yosys synth -run coarse
yosys memory_map
yosys opt -full
yosys techmap -map +/techmap.v
yosys opt -fast
yosys abc -lut $LUT_K -dress
yosys clean
yosys techmap -D LUT_K=$LUT_K -map [file dirname [file normalize $argv0]]/cells_map.v
yosys clean
yosys hierarchy -check
yosys stat

if {$argc > 1} { yosys write_json [lindex $argv 1] }

Update generic synth script for dfflegalize changes

# Usage
# tcl synth_generic.tcl {K} {out.json}

set LUT_K 4
if {$argc > 0} { set LUT_K [lindex $argv 0] }
yosys read_verilog -lib [file dirname [file normalize $argv0]]/prims.v
yosys hierarchy -check
yosys proc
yosys flatten
yosys tribuf -logic
yosys deminout
yosys synth -run coarse
yosys memory_map
yosys opt -full
yosys techmap -map +/techmap.v
yosys opt -fast
yosys dfflegalize -cell \$_DFF_P_ 0
yosys abc -lut $LUT_K -dress
yosys clean
yosys techmap -D LUT_K=$LUT_K -map [file dirname [file normalize $argv0]]/cells_map.v
yosys clean
yosys hierarchy -check
yosys stat

if {$argc > 1} { yosys write_json [lindex $argv 1] }


for {set i  0} {$i < [expr $argc - 1]} {incr i} {
   if {[lindex $argv $i] == "-A"} {
      set auto_path "$auto_path [lindex $argv [expr $i +1]]"
   }
}

package require vtk

vtkObject a
a GlobalWarningDisplayOff
a Delete

proc rtOtherTest { fileid } {
#actual test
    set all [lsort [info command vtk*]]
    foreach a $all {
  if {$a == "vtkIndent"} {
      continue
  }
  if {$a == "vtkOutputPort"} {
      continue
  }
  if {$a == "vtkTimeStamp"} {
      continue
  }
        if {$a == "vtkOutputWindow"} {
           continue
        }
  catch {
           $a b
           b Print
           if {[b IsA $a] == 0} {puts stderr "$a failed IsA test!!!"}
           if {[b IsA "vtkObject"] == 0} {puts stdout "$a is not a sub-class of vtkObject"}
           b GetClassName
           b Delete
        }
  catch {
           $a b
           $a c
           set d [b SafeDownCast c]
           b Delete
           c Delete
        }
  catch {
           b Delete
           c Delete
        }
    }
}

# All tests should end with the following...

rtOtherTest stdout

exit

Add some output to the test about what objects we are attempting to Print so that when it crashes, it is easier way to figure out who is responsible. Now we will be able to tell by inspection on the dashboard test output which class is crashing the test.

for {set i  0} {$i < [expr $argc - 1]} {incr i} {
   if {[lindex $argv $i] == "-A"} {
      set auto_path "$auto_path [lindex $argv [expr $i +1]]"
   }
}

package require vtk

vtkObject a
a GlobalWarningDisplayOff
a Delete

proc rtOtherTest { fileid } {
#actual test
    set all [lsort [info command vtk*]]
    foreach a $all {
  if {$a == "vtkIndent"} {
      continue
  }
  if {$a == "vtkOutputPort"} {
      continue
  }
  if {$a == "vtkTimeStamp"} {
      continue
  }
        if {$a == "vtkOutputWindow"} {
           continue
        }
  catch {
           $a b
           puts "calling [b GetClassName]::Print"
           b Print
           if {[b IsA $a] == 0} {puts stderr "$a failed IsA test!!!"}
           if {[b IsA "vtkObject"] == 0} {puts stdout "$a is not a sub-class of vtkObject"}
           b GetClassName
           b Delete
        }
  catch {
           $a b
           $a c
           set d [b SafeDownCast c]
           b Delete
           c Delete
        }
  catch {
           b Delete
           c Delete
        }
    }
}

# All tests should end with the following...

rtOtherTest stdout

exit


#!/usr/bin/tclsh
# /etc/ports.conf options
package provide darwinports 1.0

namespace eval darwinports {
	proc portpath {args} {
		global portpath
		set portpath $args
	}

	proc distpath {args} {
		global distpath
		set distpath $args
	}

	proc readconf {args} {
		global portpath distpath
		if [file isfile /etc/ports.conf] {
			source /etc/ports.conf
		}
	}

	proc init {args} {
		global portpath distpath libpath auto_path
		# Defaults

		set portpath /usr/darwinports
		darwinports::readconf

		# Prefer the PORTPATH environment variable
		upvar env env
		if {[llength [array names env PORTPATH]] > 0} {
			set portpath [lindex [array get env PORTPATH] 1]
		}

		if ![info exists distpath] {
			set distpath $portpath/distfiles
		}
		if ![info exists libpath] {
			set libpath $portpath/Tcl
		}

		if [file isdirectory $libpath] {
			if [catch {pkg_mkIndex $libpath *.tcl *.so *.dylib} result] {
				return -1
			} else {
				lappend auto_path $libpath
			}
		} else {
			return -1
		}
		return 0
	}
}

Use global instead of upvar. Much nicer.

#!/usr/bin/tclsh
# /etc/ports.conf options
package provide darwinports 1.0

namespace eval darwinports {
	proc portpath {args} {
		global portpath
		set portpath $args
	}

	proc distpath {args} {
		global distpath
		set distpath $args
	}

	proc readconf {args} {
		global portpath distpath
		if [file isfile /etc/ports.conf] {
			source /etc/ports.conf
		}
	}

	proc init {args} {
		global portpath distpath libpath auto_path env
		# Defaults

		set portpath /usr/darwinports
		darwinports::readconf

		# Prefer the PORTPATH environment variable
		if {[llength [array names env PORTPATH]] > 0} {
			set portpath [lindex [array get env PORTPATH] 1]
		}

		if ![info exists distpath] {
			set distpath $portpath/distfiles
		}
		if ![info exists libpath] {
			set libpath $portpath/Tcl
		}

		if [file isdirectory $libpath] {
			if [catch {pkg_mkIndex $libpath *.tcl *.so *.dylib} result] {
				return -1
			} else {
				lappend auto_path $libpath
			}
		} else {
			return -1
		}
		return 0
	}
}


source lognorm.tcl
package require lognorm

foreach mu [ list -9 -8.5 -8 -7.5 -7 ] {
  foreach sigma [ list 1 ] {
    set mean [ lognorm::mean $mu $sigma ]
    set stdev [ lognorm::stdev $mu $sigma ]
    puts [ format "mu: %f sigma %f mean: %.2fms stdev: %.2fms"  \
           $mu $sigma [ expr {${mean}*1000}] [ expr {${stdev}*1000} ] ]
  }
}

Add param search script for log normal

source lib/lognorm.tcl
package require lognorm

foreach mu [ list -8.515 -8.51 -8.505 ] {
  foreach sigma [ list 1 ] {
    set mean [ lognorm::mean $mu $sigma ]
    set stdev [ lognorm::stdev $mu $sigma ]
    puts [ format "mu: %f sigma %f mean: %.4fms stdev: %.2fms"  \
           $mu $sigma [ expr {${mean}*1000}] [ expr {${stdev}*1000} ] ]
  }
}


#!/bin/sh
# vim: set filetype=tcl : \
exec tclsh "$0" ${1+"$@"}

package require Tcl 8.5

proc shift {var n} {
    upvar $var list
    set list [lrange $list $n end]
}

while {true} {
    lassign $argv first
    if {![string match {-*} $first]} break
    shift argv 1
    if {$first == "--"} {
        break
    } elseif {$first == "-encoding"} {
        lassign $argv encoding
        shift argv 1
    } elseif {$first == "-translation"} {
        lassign $argv translation
        shift argv 1
    } else {
        puts "unknown option: $first"
        exit 1
    }
}

chan configure stdout -encoding utf-8

proc readIn {f} {
    global encoding
    global translation
    if {[info exists encoding] && [info exists translation]} {
        chan configure $f -encoding ${encoding} -translation ${translation}
    } elseif {[info exists encoding]} {
        chan configure $f -encoding ${encoding}
    } elseif {[info exists translation]} {
        chan configure $f -translation ${translation}
    }
    chan copy $f stdout
}

if {[llength $argv] > 0} {
    foreach filename $argv {
        set f [open $filename]
        readIn $f
        close $f
    }
} else {
    readIn stdin
}

Make shift proc return the first element

#!/bin/sh
# vim: set filetype=tcl : \
exec tclsh "$0" ${1+"$@"}

package require Tcl 8.5

proc shift {var} {
    upvar $var list
    set list [lassign $list first]
    return $first
}

while {true} {
    lassign $argv first
    if {![string match {-*} $first]} break
    shift argv
    if {$first == "--"} {
        break
    } elseif {$first == "-encoding"} {
        set encoding [shift argv]
    } elseif {$first == "-translation"} {
        set translation [shift argv]
    } else {
        puts "unknown option: $first"
        exit 1
    }
}

chan configure stdout -encoding utf-8

proc readIn {f} {
    global encoding
    global translation
    if {[info exists encoding] && [info exists translation]} {
        chan configure $f -encoding ${encoding} -translation ${translation}
    } elseif {[info exists encoding]} {
        chan configure $f -encoding ${encoding}
    } elseif {[info exists translation]} {
        chan configure $f -translation ${translation}
    }
    chan copy $f stdout
}

if {[llength $argv] > 0} {
    foreach filename $argv {
        set f [open $filename]
        readIn $f
        close $f
    }
} else {
    readIn stdin
}


set gitexecdir {@@gitexecdir@@}
set gitguilib  {@@GITGUI_LIBDIR@@}
set env(PATH) "$gitexecdir:$env(PATH)"

if {[string first -psn [lindex $argv 0]] == 0} {
	lset argv 0 [file join $gitexecdir git-gui]
}

if {[file tail [lindex $argv 0]] eq {gitk}} {
	set argv0 [lindex $argv 0]
	set AppMain_source $argv0
} else {
	set argv0 [file join $gitexecdir [file tail [lindex $argv 0]]]
	set AppMain_source [file join $gitguilib git-gui.tcl]
	if {[pwd] eq {/}} {
		cd $env(HOME)
	}
}

unset gitexecdir gitguilib
set argv [lrange $argv 1 end]
source $AppMain_source

Use PWD if it exists on Mac OS X

set gitexecdir {@@gitexecdir@@}
set gitguilib  {@@GITGUI_LIBDIR@@}
set env(PATH) "$gitexecdir:$env(PATH)"

if {[string first -psn [lindex $argv 0]] == 0} {
	lset argv 0 [file join $gitexecdir git-gui]
}

if {[file tail [lindex $argv 0]] eq {gitk}} {
	set argv0 [lindex $argv 0]
	set AppMain_source $argv0
} else {
	set argv0 [file join $gitexecdir [file tail [lindex $argv 0]]]
	set AppMain_source [file join $gitguilib git-gui.tcl]
	if {[info exists env(PWD)]} {
		cd $env(PWD)
	} elseif {[pwd] eq {/}} {
		cd $env(HOME)
	}
}

unset gitexecdir gitguilib
set argv [lrange $argv 1 end]
source $AppMain_source


set gitexecdir {@@gitexecdir@@}
set gitguilib  {@@GITGUI_LIBDIR@@}
set env(PATH) "$gitexecdir:$env(PATH)"

if {[string first -psn [lindex $argv 0]] == 0} {
	lset argv 0 [file join $gitexecdir git-gui]
}

if {[file tail [lindex $argv 0]] eq {gitk}} {
	set argv0 [file join $gitexecdir gitk]
	set AppMain_source $argv0
} else {
	set argv0 [file join $gitexecdir [file tail [lindex $argv 0]]]
	set AppMain_source [file join $gitguilib git-gui.tcl]
	if {[pwd] eq {/}} {
		cd $env(HOME)
	}
}

unset gitexecdir gitguilib
set argv [lrange $argv 1 end]
source $AppMain_source

Correct 'Visualize Branches' on Mac OS X to start gitk

set gitexecdir {@@gitexecdir@@}
set gitguilib  {@@GITGUI_LIBDIR@@}
set env(PATH) "$gitexecdir:$env(PATH)"

if {[string first -psn [lindex $argv 0]] == 0} {
	lset argv 0 [file join $gitexecdir git-gui]
}

if {[file tail [lindex $argv 0]] eq {gitk}} {
	set argv0 [lindex $argv 0]
	set AppMain_source $argv0
} else {
	set argv0 [file join $gitexecdir [file tail [lindex $argv 0]]]
	set AppMain_source [file join $gitguilib git-gui.tcl]
	if {[pwd] eq {/}} {
		cd $env(HOME)
	}
}

unset gitexecdir gitguilib
set argv [lrange $argv 1 end]
source $AppMain_source


# Copyright lowRISC contributors.
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
# SPDX-License-Identifier: Apache-2.0

# Change the severity of some messages.

# Abort if the boot ROM init file cannot be found. This is normally just a critical warning
# which is easily overlooked. The bitstream can still be generated but is not functional.
set_msg_config -id {[Synth 8-4445]} -new_severity ERROR

# Abort upon inferring latches. This is normally just a warning. We want to avoid that
# code inferring latches ends up in the repo in the first place.
set_msg_config -id {[Synth 8-327]} -new_severity ERROR

Raise severity of create_clock failures to error

# Copyright lowRISC contributors.
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
# SPDX-License-Identifier: Apache-2.0

# Change the severity of some messages.

# Abort if the boot ROM init file cannot be found. This is normally just a critical warning
# which is easily overlooked. The bitstream can still be generated but is not functional.
set_msg_config -id {[Synth 8-4445]} -new_severity ERROR

# Abort upon inferring latches. This is normally just a warning. We want to avoid that
# code inferring latches ends up in the repo in the first place.
set_msg_config -id {[Synth 8-327]} -new_severity ERROR

# Abort if a create_clock command fails. This typically happens if anchor points for clock
# constraints inside the design change. The failure is normally just reported as a critical
# warning in batch mode which is easily overlooked. The design might still work but some clocks
# will be unconstrained which can lead to other problems later on.
set_msg_config -id {[Vivado 12-4739]} -new_severity ERROR


package require vtk
package require vtkinteraction

vtkConeSource cone

vtkReflectionFilter reflect
reflect SetInput [cone GetOutput]
reflect SetPlaneToXMax

vtkReflectionFilter reflect2
reflect2 SetInput [reflect GetOutput]
reflect2 SetPlaneToYMax

vtkReflectionFilter reflect3
reflect3 SetInput [reflect2 GetOutput]
reflect3 SetPlaneToZMax

vtkPolyDataMapper mapper
mapper SetInput [reflect3 GetOutput]

vtkActor actor
actor SetMapper mapper

vtkRenderer ren1
ren1 AddActor actor

vtkRenderWindow renWin
renWin AddRenderer ren1
renWin SetSize 200 200

vtkRenderWindowInteractor iren
iren SetRenderWindow renWin
iren AddObserver UserEvent {wm deiconify .vtkInteract}
iren Initialize

renWin Render

wm withdraw .

Change reflect to have ugrid output.

package require vtk
package require vtkinteraction

vtkConeSource cone

vtkReflectionFilter reflect
reflect SetInput [cone GetOutput]
reflect SetPlaneToXMax

vtkReflectionFilter reflect2
reflect2 SetInput [reflect GetOutput]
reflect2 SetPlaneToYMax

vtkReflectionFilter reflect3
reflect3 SetInput [reflect2 GetOutput]
reflect3 SetPlaneToZMax

vtkDataSetMapper mapper
mapper SetInput [reflect3 GetOutput]

vtkActor actor
actor SetMapper mapper

vtkRenderer ren1
ren1 AddActor actor

vtkRenderWindow renWin
renWin AddRenderer ren1
renWin SetSize 200 200

vtkRenderWindowInteractor iren
iren SetRenderWindow renWin
iren AddObserver UserEvent {wm deiconify .vtkInteract}
iren Initialize

renWin Render

wm withdraw .


proc handleKey {key} {
  switch -regexp -- $key {
    .*Up$ {ball up}
    .*Down$ {ball down}
    .*Left$ {ball left}
    .*Right$ {ball right}
  }
}

wm title . {Demo of using SDL embedded in a Tk Window}
wm protocol . WM_DELETE_WINDOW {destroy_window}

frame .screen -width 400 -height 400
pack .screen

frame .buttons
frame .buttons.lr
ttk::button .buttons.up -text {Up} -command {ball up}
ttk::button .buttons.down -text {Down} -command {ball down}
ttk::button .buttons.lr.left -text {Left} -command {ball left}
ttk::button .buttons.lr.right -text {Right} -command {ball right}
ttk::button .quit -text {Quit} -command {destroy_window}

pack .buttons.lr.left -side left -expand 1 -fill both
pack .buttons.lr.right -side left -expand 1 -fill both

pack .buttons.up -side top -expand 1 -fill both
pack .buttons.lr -side top -expand 1 -fill both
pack .buttons.down -side top -expand 1 -fill both
pack .buttons -side left -expand 1 -fill both
pack .quit -side left -expand 1 -fill both

bind all <KeyRelease> {handleKey %K}
bind . <FocusIn> {screen_refresh}

Fix Tk frame redraw bug, when SDL surface covered

proc handleKey {key} {
  switch -regexp -- $key {
    .*Up$ {ball up}
    .*Down$ {ball down}
    .*Left$ {ball left}
    .*Right$ {ball right}
  }
}

wm title . {Demo of using SDL embedded in a Tk Window}
wm protocol . WM_DELETE_WINDOW {destroy_window}

frame .screen -width 400 -height 400 -background ""
pack .screen

frame .buttons
frame .buttons.lr
ttk::button .buttons.up -text {Up} -command {ball up}
ttk::button .buttons.down -text {Down} -command {ball down}
ttk::button .buttons.lr.left -text {Left} -command {ball left}
ttk::button .buttons.lr.right -text {Right} -command {ball right}
ttk::button .quit -text {Quit} -command {destroy_window}

pack .buttons.lr.left -side left -expand 1 -fill both
pack .buttons.lr.right -side left -expand 1 -fill both

pack .buttons.up -side top -expand 1 -fill both
pack .buttons.lr -side top -expand 1 -fill both
pack .buttons.down -side top -expand 1 -fill both
pack .buttons -side left -expand 1 -fill both
pack .quit -side left -expand 1 -fill both

bind all <KeyRelease> {handleKey %K}
bind . <Expose> {screen_refresh}


proc test_memory_efficiency {range} {
    r flushall
    set base_mem [s used_memory]
    set written 0
    for {set j 0} {$j < 10000} {incr j} {
        set key key:$j
        set val [string repeat A [expr {int(rand()*$range)}]]
        r set $key $val
        incr written [string length $key]
        incr written [string length $val]
        incr written 2 ;# A separator is the minimum to store key-value data.
    }
    set current_mem [s used_memory]
    set used [expr {$current_mem-$base_mem}]
    set efficiency [expr {double($written)/$used}]
    return $efficiency
}

start_server {tags {"memefficiency"}} {
    foreach {size_range expected_min_efficiency} {
        32    0.15
        64    0.25
        128   0.35
        1024  0.75
        16384 0.90
    } {
        test "Memory efficiency with values in range $size_range" {
            set efficiency [test_memory_efficiency $size_range]
            assert {$efficiency >= $expected_min_efficiency}
        }
    }
}

Fix false positive in memory efficiency test.

proc test_memory_efficiency {range} {
    r flushall
    set base_mem [s used_memory]
    set written 0
    for {set j 0} {$j < 10000} {incr j} {
        set key key:$j
        set val [string repeat A [expr {int(rand()*$range)}]]
        r set $key $val
        incr written [string length $key]
        incr written [string length $val]
        incr written 2 ;# A separator is the minimum to store key-value data.
    }
    set current_mem [s used_memory]
    set used [expr {$current_mem-$base_mem}]
    set efficiency [expr {double($written)/$used}]
    return $efficiency
}

start_server {tags {"memefficiency"}} {
    foreach {size_range expected_min_efficiency} {
        32    0.15
        64    0.25
        128   0.35
        1024  0.75
        16384 0.82
    } {
        test "Memory efficiency with values in range $size_range" {
            set efficiency [test_memory_efficiency $size_range]
            assert {$efficiency >= $expected_min_efficiency}
        }
    }
}


# Copyright lowRISC contributors.
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
# SPDX-License-Identifier: Apache-2.0

# This file sets common message configurations for all JasperGold tcl files.

# Save debug effort to escalate the following error messages
# Error out on use of undeclared signals
set_message -error VERI-9030

# Error out when a parameter is defined twice for an instance
set_message -error VERI-1402

# Disabling warnings:
# We use parameter instead of localparam in packages to allow redefinition
# at elaboration time.
# Formal isunknown does not support non-constant.
# Formal will skip initial construct.

# "parameter declared inside package XXX shall be treated as localparam"
set_message -disable VERI-2418

# "system function call isunknown with non-constant argument is not synthesizable"
set_message -disable VERI-1796

# "initial construct ignored"
set_message -disable VERI-1060

Downgrade an error to a warning

# Copyright lowRISC contributors.
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
# SPDX-License-Identifier: Apache-2.0

# This file sets common message configurations for all JasperGold tcl files.

# Save debug effort to escalate the following error messages
# Error out on use of undeclared signals
set_message -error VERI-9030

# Error out when a parameter is defined twice for an instance
set_message -error VERI-1402

# Downgrade the enum cast error to warnings.
# For example: JasperGold will throw an error and terminate if design assign an int to an enum
# type.
set_message -warning VERI-1348

# Disabling warnings:
# We use parameter instead of localparam in packages to allow redefinition
# at elaboration time.
# Formal isunknown does not support non-constant.
# Formal will skip initial construct.

# "parameter declared inside package XXX shall be treated as localparam"
set_message -disable VERI-2418

# "system function call isunknown with non-constant argument is not synthesizable"
set_message -disable VERI-1796

# "initial construct ignored"
set_message -disable VERI-1060


package provide spec 0.1

package require nx
package require nx::trait
package require at_exit
package require try

namespace eval Spec {
    namespace import ::tcl::control::*
    namespace import ::at_exit::*
}

source [file join [file dirname [info script]] "configuration.tcl"]
source [file join [file dirname [info script]] "dsl.tcl"]
source [file join [file dirname [info script]] "example.tcl"]
source [file join [file dirname [info script]] "example_group.tcl"]
source [file join [file dirname [info script]] "expectation_handler.tcl"]
source [file join [file dirname [info script]] "matchers.tcl"]
source [file join [file dirname [info script]] "mocks.tcl"]
source [file join [file dirname [info script]] "reporter.tcl"]
source [file join [file dirname [info script]] "runner.tcl"]
source [file join [file dirname [info script]] "world.tcl"]

nx::Class create Spec {
    :require namespace
    :class property [list world [::Spec::World new]]
    :class property [list configuration [Spec::Configuration new]]

    :public class method configure { block } {
        uplevel [list apply $block ${:configuration}]
    }

    :public class method require { filename } {
        if { ![info exists :sourced] } {
            set :sourced [list]
        }

        if { !($filename in ${:sourced}) } {
            uplevel [list source $filename]
            lappend :sourced $filename
        }
    }
}

Fix an issue when using TclSpec on Tcl 8.6.

package provide spec 0.1

package require nx
package require nx::trait
package require at_exit
package require try

namespace eval Spec {
    namespace import ::at_exit::*
}

source [file join [file dirname [info script]] "configuration.tcl"]
source [file join [file dirname [info script]] "dsl.tcl"]
source [file join [file dirname [info script]] "example.tcl"]
source [file join [file dirname [info script]] "example_group.tcl"]
source [file join [file dirname [info script]] "expectation_handler.tcl"]
source [file join [file dirname [info script]] "matchers.tcl"]
source [file join [file dirname [info script]] "mocks.tcl"]
source [file join [file dirname [info script]] "reporter.tcl"]
source [file join [file dirname [info script]] "runner.tcl"]
source [file join [file dirname [info script]] "world.tcl"]

nx::Class create Spec {
    :require namespace
    :class property [list world [::Spec::World new]]
    :class property [list configuration [Spec::Configuration new]]

    :public class method configure { block } {
        uplevel [list apply $block ${:configuration}]
    }

    :public class method require { filename } {
        if { ![info exists :sourced] } {
            set :sourced [list]
        }

        if { !($filename in ${:sourced}) } {
            uplevel [list source $filename]
            lappend :sourced $filename
        }
    }
}


# Common configuration parameters

    # set to 1 to see errorInfo in normal tracebacks
    set errorDebug 1

    # set to 0 to generate without the "-pipe" in the gcc command
    variable withPipe 1

    # set to 1 to build with debugging and link to tcl debugging libraries
    set genCompilerDebug 0
    # set to 1 to link to mem debug libraries
    set memDebug 0

    # set to 1 to show compiler commands
    set showCompilerCommands 0

    # set to 1 for pgTcl support
    set withPgtcl 1

# Less common parameters

    # set to 1 to run various sanity checks on rows
    set sanityChecks 0

    set withSharedTables 1
    set withSharedTclExtension 0
    # Either -none, -stderr, or the name of a file
    #set sharedTraceFile sharedebug.out
    set sharedTraceFile -none

    # either NULL or an absolute address
    set sharedBase 0xA0000000
    #set sharedBase NULL

    # approx number of ctable row pools required to fill all shared memory
    set poolRatio 16

    # Create and manage the "dirty" flag
    set withDirty 1

    # create files in a subdirectory
    set withSubdir 1

# OS-specific tweaks
    set sysFlags(Darwin) "-DCTABLE_NO_SYS_LIMITS"

    if {$tcl_platform(os) == "Darwin"} {
	set withPgtcl 0
    }

Generalize the "safety catch" test for withPgtcl.

# Common configuration parameters

    # set to 1 to see errorInfo in normal tracebacks
    set errorDebug 1

    # set to 0 to generate without the "-pipe" in the gcc command
    variable withPipe 1

    # set to 1 to build with debugging and link to tcl debugging libraries
    set genCompilerDebug 0
    # set to 1 to link to mem debug libraries
    set memDebug 0

    # set to 1 to show compiler commands
    set showCompilerCommands 0

    # set to 1 for pgTcl support
    set withPgtcl 1

# Less common parameters

    # set to 1 to run various sanity checks on rows
    set sanityChecks 0

    set withSharedTables 1
    set withSharedTclExtension 0
    # Either -none, -stderr, or the name of a file
    #set sharedTraceFile sharedebug.out
    set sharedTraceFile -none

    # either NULL or an absolute address
    set sharedBase 0xA0000000
    #set sharedBase NULL

    # approx number of ctable row pools required to fill all shared memory
    set poolRatio 16

    # Create and manage the "dirty" flag
    set withDirty 1

    # create files in a subdirectory
    set withSubdir 1

# OS-specific tweaks
    set sysFlags(Darwin) "-DCTABLE_NO_SYS_LIMITS"

# Last minute safety catch
    if {![info exists sysconfig(pgtclprefix)]} {
	set withPgtcl 0
    }


#!/usr/local/bin/tclsh

source [file dirname [info script]]/oslib.tcl
namespace import TB_OS::os

if {[llength $argv] != 1} {
    puts stderr "Syntax: $argv0 <node>"
    exit 1
}

os init

set dbstate [os querydb $argv]
if {[catch "os querynode $argv" nodestate]} {
    puts stderr "Error querying node: $argv"
    exit -1
}

set ret 0
if {[lindex $dbstate 0] != [lindex $nodestate 0]} {
    puts "OS mismatch: DB: [lindex $dbstate 0] Node: [lindex $nodestate 0]"
    set ret 1
}

foreach delta [lindex $nodestate 1] {
    set nodedelta($delta) 1
}
foreach delta [lindex $dbstate 1] {
    if {! [info exists nodedelta($delta)]} {
	puts "Node missing delta: $delta"
    } else {
	unset nodedelta($delta)
    }
}
foreach delta [array names nodedelta] {
    puts "Node has extra delta: $delta"
}

os end

Exit code is now 0 if ok and 1 if any differences found. -1 on error.

#!/usr/local/bin/tclsh

source [file dirname [info script]]/oslib.tcl
namespace import TB_OS::os

if {[llength $argv] != 1} {
    puts stderr "Syntax: $argv0 <node>"
    exit 1
}

os init

set dbstate [os querydb $argv]
if {[catch "os querynode $argv" nodestate]} {
    puts stderr "Error querying node: $argv"
    exit -1
}

set ret 0
if {[lindex $dbstate 0] != [lindex $nodestate 0]} {
    puts "OS mismatch: DB: [lindex $dbstate 0] Node: [lindex $nodestate 0]"
    set ret 1
}

foreach delta [lindex $nodestate 1] {
    set nodedelta($delta) 1
}
foreach delta [lindex $dbstate 1] {
    if {! [info exists nodedelta($delta)]} {
	puts "Node missing delta: $delta"
	set ret 1
    } else {
	unset nodedelta($delta)
    }
}
foreach delta [array names nodedelta] {
    puts "Node has extra delta: $delta"
    set ret 1
}

os end

exit $ret


package require vtkgraphics
package require vtkimaging

if {[catch {
    package require Tk
}]} {
    ::vtk::load_component tk
}

if {[info commands vtkRenderWindow] != "" ||
    [::vtk::load_component vtkRenderingTCL] == ""} {

    # Set the default exit method of vtkWin32RenderWindowInteractor to
    # call the Tcl 'exit' command

    if {[info commands vtkWin32RenderWindowInteractor] != ""} {
        if {[catch {
            vtkWin32RenderWindowInteractor __temp_vtkwin32iren__
            __temp_vtkwin32iren__ SetClassExitMethod exit
            __temp_vtkwin32iren__ Delete
        } errormsg ]} {
            puts $errormsg
        }
    }

    package provide vtkrendering 4.0
}

Fix crash in some config if Tk was not found. Complain more gracefully.

package require vtkgraphics
package require vtkimaging

catch {
    unset __tk_error
}

if {[catch {
    package require Tk
} errormsg]} {
    if {[::vtk::load_component tk] != ""} {
        puts $errormsg
        puts "Tk was not found: the VTK rendering package can not be used... Please check that your Tcl/Tk installation is correct. Windows users should also check that the program used to open/execute Tcl files is the Tk shell (wish), not the Tcl shell (tclsh)."
        set __tk_error 1
    }
}

if {![info exists __tk_error] && \
        ([info commands vtkRenderWindow] != "" || \
        [::vtk::load_component vtkRenderingTCL] == "")} {

    # Set the default exit method of vtkWin32RenderWindowInteractor to
    # call the Tcl 'exit' command

    if {[info commands vtkWin32RenderWindowInteractor] != ""} {
        if {[catch {
            vtkWin32RenderWindowInteractor __temp_vtkwin32iren__
            __temp_vtkwin32iren__ SetClassExitMethod exit
            __temp_vtkwin32iren__ Delete
        } errormsg]} {
            puts $errormsg
        }
    }

    package provide vtkrendering 4.0
}


namespace eval ::mug::autoloader {

    # Writes a sourceable script for using local packages
    proc provide_autoloader {path} {
        set destination [file join $path "mug_autoloader.tcl"]
        set mug_path [file join $path mug_packages]

        file mkdir $mug_path

        # List all subdirectories in the mug path
        set packages [glob -directory $mug_path -type d *]

        set first {set ::auto_path [linsert $::auto_path 0 }
        set last {]}

        set file_id [open $destination "w"]
        puts $file_id $first$packages$last
        close $file_id
    }

}

Handle initialization without any existing packages

namespace eval ::mug::autoloader {

    # Writes a sourceable script for using local packages
    proc provide_autoloader {path} {
        set destination [file join $path "mug_autoloader.tcl"]
        set mug_path [file join $path mug_packages]

        file mkdir $mug_path

        # List all existing subdirectories in the mug path, so we can keep them
        set packages [glob -directory $mug_path -type d -nocomplain *]
        if { $packages == "" } {
            set output {}
        } else {
            set first {set ::auto_path [linsert $::auto_path 0 }
            set last {]}
            set output $first$packages$last
        }

        set file_id [open $destination "w"]
        puts $file_id $output
        close $file_id
    }

}


#Design name ("system" recommended)
set design system

#Project directory ("." recommended)
set projdir ./

#Device name
set partname "xc7z020clg400-1"

#Paths to all IP blocks to use in Vivado "system.bd"

set ip_repos [list "../parallella_base" "../../../../../parallella-fpga/AdiHDLLib/library"]

#All source files
set hdl_files []

#All constraints files
set constraints_files [list \
			   ../parallella_timing.xdc \
			   ../parallella_io.xdc \
			   ../parallella_7020_io.xdc \
			  ]

###########################################################
# PREPARE FOR SYNTHESIS
###########################################################
set oh_verilog_define "CFG_ASIC=0 CFG_PLATFORM=\"ZYNQ\""

Use in-tree ADI IP repo

#Design name ("system" recommended)
set design system

#Project directory ("." recommended)
set projdir ./

#Device name
set partname "xc7z020clg400-1"

#Paths to all IP blocks to use in Vivado "system.bd"

set ip_repos [list "../parallella_base" "../../../adi/hdl/library"]

#All source files
set hdl_files []

#All constraints files
set constraints_files [list \
			   ../parallella_timing.xdc \
			   ../parallella_io.xdc \
			   ../parallella_7020_io.xdc \
			  ]

###########################################################
# PREPARE FOR SYNTHESIS
###########################################################
set oh_verilog_define "CFG_ASIC=0 CFG_PLATFORM=\"ZYNQ\""


# ex:ts=4
#
# Insert some license text here at some point soon.
#

package provide portinstall 1.0
package require portutil 1.0

register com.apple.install target install_main
register com.apple.install provides install
register com.apple.install requires main fetch extract checksum patch configure build
register com.apple.install swdep depends_run depends_lib

# define options
#options make.cmd make.type make.target.all make.target.install

set UI_PREFIX "---> "

proc install_main {args} {

    return 0
}

Add function for generating packing lists

# ex:ts=4
#
# Insert some license text here at some point soon.
#

package provide portinstall 1.0
package require portutil 1.0

register com.apple.install target install_main
register com.apple.install provides install
register com.apple.install requires main fetch extract checksum patch configure build
register com.apple.install swdep depends_run depends_lib

# define options
#options make.cmd make.type make.target.all make.target.install

set UI_PREFIX "---> "

proc fileinfo_for_index {flist} {
    set rval {}
    foreach fentry $flist {
	if ![catch {file stat $fentry statvar}] {
	    set md5regex "^(MD5)\[ \]\\(($fentry)\\)\[ \]=\[ \](\[A-Za-z0-9\]+)\n$"
	    set pipe [open "|md5 $fentry" r]
	    set line [read $pipe]
	    if {[regexp $md5regex $line match type filename sum] == 1} {
		lappend rval [list $fentry $statvar(uid) $statvar(gid) $statvar(mode) $statvar(size) $line]
	    }
	}
    }
    return $rval
}

proc install_main {args} {

    return 0
}


.TH gv 3[string tolower $lang] \"[clock format [clock seconds] -format "%d %B %Y"]\"

.SH NAME

gv_$lang \- graph manipulation in $lang

.SH SYNOPSIS

[gv_doc_synopsis]

.SH USAGE

[gv_doc_usage]

.SH INTRODUCTION

.B gv_$lang
is a dynamically loaded extension for
.B $lang
that provides access to the graph facilities of
.B graphviz.

.SH COMMANDS

[gv_doc_commands]

.SH KEYWORDS

graph, dot, neato, fdp, circo, twopi, $lang.

Allow to override build date

.TH gv 3[string tolower $lang] \"[
    set buildtime [clock seconds]
    if { [info exists ::env(SOURCE_DATE_EPOCH) ] } {
         set buildtime $::env(SOURCE_DATE_EPOCH)
    }
    clock format $buildtime -format "%d %B %Y"]\"

.SH NAME

gv_$lang \- graph manipulation in $lang

.SH SYNOPSIS

[gv_doc_synopsis]

.SH USAGE

[gv_doc_usage]

.SH INTRODUCTION

.B gv_$lang
is a dynamically loaded extension for
.B $lang
that provides access to the graph facilities of
.B graphviz.

.SH COMMANDS

[gv_doc_commands]

.SH KEYWORDS

graph, dot, neato, fdp, circo, twopi, $lang.


#!/usr/bin/tclsh
# Traverse through all ports running the supplied target.  If target is
# "index" then just print some useful information about each port.

package require darwinports
dportinit
package require Pextlib

global target

proc port_traverse {func {dir .}} {
    set pwd [pwd]
    if [catch {cd $dir} err] {
	ui_error $err
	return
    }
    foreach name [readdir .] {
	if {[string match $name .] || [string match $name ..]} {
	    continue
	}
	if [file isdirectory $name] {
	    port_traverse $func $name
	} else {
	    if [string match $name Portfile] {
		catch {eval $func {[file join $pwd $dir]}}
	    }
	}
    }
    cd $pwd
}

proc pindex {portdir} {
    global target
    set interp [dportopen $portdir]
    array set portinfo [dportinfo $interp]
    puts "Building port: $portinfo(portname)"
    dportexec $interp $target
    dportclose $interp
}

if { $argc < 1 } {
    set target build
} else {
    set target [lindex $argv 0]
}

port_traverse pindex software

Fix message to print proper action

#!/usr/bin/tclsh
# Traverse through all ports running the supplied target.  If target is
# "index" then just print some useful information about each port.

package require darwinports
dportinit
package require Pextlib

global target

proc port_traverse {func {dir .}} {
    set pwd [pwd]
    if [catch {cd $dir} err] {
	ui_error $err
	return
    }
    foreach name [readdir .] {
	if {[string match $name .] || [string match $name ..]} {
	    continue
	}
	if [file isdirectory $name] {
	    port_traverse $func $name
	} else {
	    if [string match $name Portfile] {
		catch {eval $func {[file join $pwd $dir]}}
	    }
	}
    }
    cd $pwd
}

proc pindex {portdir} {
    global target
    set interp [dportopen $portdir]
    array set portinfo [dportinfo $interp]
    puts "Doing $target for port: $portinfo(portname)"
    dportexec $interp $target
    dportclose $interp
}

if { $argc < 1 } {
    set target build
} else {
    set target [lindex $argv 0]
}

port_traverse pindex software


#!/usr/bin/tclsh
# Traverse through all ports running the supplied target.  If target is
# "index" then just print some useful information about each port.

package require darwinports
dportinit
package require Pextlib

global target

proc port_traverse {func {dir .}} {
    set pwd [pwd]
    if [catch {cd $dir} err] {
	ui_error $err
	return
    }
    foreach name [readdir .] {
	if {[string match $name .] || [string match $name ..]} {
	    continue
	}
	if [file isdirectory $name] {
	    port_traverse $func $name
	} else {
	    if [string match $name Portfile] {
		catch {eval $func {[file join $pwd $dir]}}
	    }
	}
    }
    cd $pwd
}

proc pindex {portdir} {
    global target
    set interp [dportopen file://$portdir]
    array set portinfo [dportinfo $interp]
    puts "Doing $target for port: $portinfo(portname)"
    dportexec $interp $target
    dportclose $interp
}

if { $argc < 1 } {
    set target build
} else {
    set target [lindex $argv 0]
}

port_traverse pindex software

Use the right base directory now that things have moved around.

#!/usr/bin/tclsh
# Traverse through all ports running the supplied target.  If target is
# "index" then just print some useful information about each port.

package require darwinports
dportinit
package require Pextlib

global target

proc port_traverse {func {dir .}} {
    set pwd [pwd]
    if [catch {cd $dir} err] {
	ui_error $err
	return
    }
    foreach name [readdir .] {
	if {[string match $name .] || [string match $name ..]} {
	    continue
	}
	if [file isdirectory $name] {
	    port_traverse $func $name
	} else {
	    if [string match $name Portfile] {
		catch {eval $func {[file join $pwd $dir]}}
	    }
	}
    }
    cd $pwd
}

proc pindex {portdir} {
    global target
    set interp [dportopen file://$portdir]
    array set portinfo [dportinfo $interp]
    puts "Doing $target for port: $portinfo(portname)"
    dportexec $interp $target
    dportclose $interp
}

if { $argc < 1 } {
    set target build
} else {
    set target [lindex $argv 0]
}

port_traverse pindex dports


#!/usr/bin/env tclsh
package require growl

growl register ExampleTclApp "warning error" pwrdLogo75.gif
growl post warning "TclGrowl launched" "Hi there!"
after 10000
growl post error "TclGrowl quitting" "Bye!" ../../images/icons/growl-icon-(png).png

Make this work regardless of cwd.

package require growl

set curdir [file dirname [info script]]
growl register ExampleTclApp "warning error" ${curdir}/pwrdLogo75.gif
growl post warning "TclGrowl launched" "Hi there!"
after 10000
growl post error "TclGrowl quitting" "Bye!" ${curdir}/../../images/icons/growl-icon-(png).png


package provide spec 0.1

package require XOTcl
package require at_exit
package require try

namespace eval Spec {
    namespace import ::xotcl::*
    namespace import ::tcl::control::*
    namespace import ::at_exit::*
}

::xotcl::Class create Spec
Spec proc world {} {
    if { ![::xotcl::my exists world ] } {
        ::xotcl::my set world [Spec::World new]
    }

    ::xotcl::my set world
}

source [file join [file dirname [info script]] "dsl.tcl"]
source [file join [file dirname [info script]] "example.tcl"]
source [file join [file dirname [info script]] "example_group.tcl"]
source [file join [file dirname [info script]] "expectation_handler.tcl"]
source [file join [file dirname [info script]] "matchers.tcl"]
source [file join [file dirname [info script]] "reporter.tcl"]
source [file join [file dirname [info script]] "runner.tcl"]
source [file join [file dirname [info script]] "world.tcl"]

Switch to XOTcl 2.0 (which in turn includes nx).

package provide spec 0.1

package require XOTcl 2.0
package require at_exit
package require try

namespace eval Spec {
    namespace import ::xotcl::*
    namespace import ::tcl::control::*
    namespace import ::at_exit::*
}

::xotcl::Class create Spec
Spec proc world {} {
    if { ![::xotcl::my exists world ] } {
        ::xotcl::my set world [Spec::World new]
    }

    ::xotcl::my set world
}

source [file join [file dirname [info script]] "dsl.tcl"]
source [file join [file dirname [info script]] "example.tcl"]
source [file join [file dirname [info script]] "example_group.tcl"]
source [file join [file dirname [info script]] "expectation_handler.tcl"]
source [file join [file dirname [info script]] "matchers.tcl"]
source [file join [file dirname [info script]] "reporter.tcl"]
source [file join [file dirname [info script]] "runner.tcl"]
source [file join [file dirname [info script]] "world.tcl"]


package provide funcs_5697 0.5

namespace eval funcs_5697 {
  package require turbine 0.3.0
  namespace import ::turbine::*

  proc copy_url5 { outputs inputs } {
    puts [ list Entering copy_url5 $outputs $inputs ]
    set outurl [ lindex $outputs 0 ]
    set inurl [ lindex $inputs 0 ]

    rule [ list [ get_file_status $inurl ] [ get_file_path $outurl ] ] \
         [ list funcs_5697::copy_url5_body $outurl $inurl ]
  }

  proc copy_url5_body { outurl inurl  } {
    puts [ list Entering copy_url5_body $outurl $inurl ]
    read_refcount_decr [ get_file_status $inurl ]
    set outpath [ retrieve_decr_string [ get_file_path $outurl ] ]
    set inpath [ retrieve_decr_string [ get_file_path $inurl ] ]

    copy_url5_impl $inpath $outpath
    store_void [ get_file_status $outurl ]
  }

  proc copy_url5_impl { inpath outpath } {
    puts [ list Entering copy_url5_impl $outpath $inpath ]
    puts [ list copy_url5 $inpath $outpath ]
  }
}

Fix test to not unnecessarily decrement output filename refcount

package provide funcs_5697 0.5

namespace eval funcs_5697 {
  package require turbine 0.3.0
  namespace import ::turbine::*

  proc copy_url5 { outputs inputs } {
    puts [ list Entering copy_url5 $outputs $inputs ]
    set outurl [ lindex $outputs 0 ]
    set inurl [ lindex $inputs 0 ]

    rule [ list [ get_file_status $inurl ] [ get_file_path $outurl ] ] \
         [ list funcs_5697::copy_url5_body $outurl $inurl ]
  }

  proc copy_url5_body { outurl inurl  } {
    puts [ list Entering copy_url5_body $outurl $inurl ]
    read_refcount_decr [ get_file_status $inurl ]
    set outpath [ retrieve_string [ get_file_path $outurl ] ]
    set inpath [ retrieve_decr_string [ get_file_path $inurl ] ]

    copy_url5_impl $inpath $outpath
    store_void [ get_file_status $outurl ]
  }

  proc copy_url5_impl { inpath outpath } {
    puts [ list Entering copy_url5_impl $outpath $inpath ]
    puts [ list copy_url5 $inpath $outpath ]
  }
}


# Flex Turbine+ADLB but do nothing
# Nice to have for quick manual experiments

package require turbine 0.1
turbine::init 1 1

turbine::finalize
puts OK

Update test wrt ADLB changes

# Flex ADLB but do nothing
# Nice to have for quick manual experiments

package require turbine 0.1
adlb::init 1 1

if [ adlb::amserver ] {
    adlb::server
} else
{}

adlb::finalize
puts OK