Fix TOML links.

This commit is contained in:
Sigilante 2022-06-27 14:38:32 -05:00
parent 9057158217
commit bf3f0c4784
21 changed files with 57 additions and 375 deletions

View File

@ -27,7 +27,7 @@ Its easy to see how Sail can directly translate to HTML:
- ```
;html
;head
;title: My page
;title = My page
;meta(charset "utf-8");
==
;body

View File

@ -1,318 +0,0 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 40,
"id": "f11e2531",
"metadata": {},
"outputs": [],
"source": [
"from glob import glob\n",
"\n",
"filenames = glob('*-*.md')\n",
"\n",
"import re"
]
},
{
"cell_type": "code",
"execution_count": 43,
"id": "4214fd19",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"A-intro.md\n",
"B-syntax.md\n",
"C-azimuth.md\n",
"D-gates.md\n",
"E-types.md\n",
"F-cores.md\n",
"G-trees.md\n",
"H-libraries.md\n",
"I-testing.md\n",
"J-stdlib-text.md\n",
"K-doors.md\n",
"L-struct.md\n",
"L2-struct.md\n",
"M-logic.md\n",
"N-subject.md\n",
"O-stdlib-io.md\n",
"P-func.md\n",
"Q-metals.md\n",
"R-math.md\n"
]
}
],
"source": [
"for filename in sorted(filenames):\n",
" with open(filename, 'r') as f:\n",
" text = f.read()\n",
" text = text.replace('nodes: ', 'nodes: [')\n",
" sol = text.find('nodes: [')\n",
" eol = text[sol:].find('\\n') + sol\n",
" text = text[:eol]+']'+text[eol:]\n",
" \n",
" text = text.replace('objectives:\\n - ', 'objectives: [')\n",
" sol = text.find('objectives: [')\n",
" eol = text[sol:].find('---') + sol\n",
" text = text[:eol]+']'+text[eol:]\n",
" i = sol\n",
" while text[i:i+3] != '---':\n",
" if text[i:i+5] == '\\n - ':\n",
" text = text[:i]+\", \"+text[i+5:]\n",
" i += 1\n",
" \n",
" text = text.replace('\\n]---\\n', ']\\n+++\\n')\n",
" text = text.replace('---\\n', '+++\\n')\n",
" \n",
" with open(filename, 'w') as f:\n",
" f.write(text)\n",
" print(filename)"
]
},
{
"cell_type": "code",
"execution_count": 44,
"id": "bb5f47b2",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"A-intro.md\n",
"B-syntax.md\n",
"C-azimuth.md\n",
"D-gates.md\n",
"E-types.md\n",
"F-cores.md\n",
"G-trees.md\n",
"H-libraries.md\n",
"I-testing.md\n",
"J-stdlib-text.md\n",
"K-doors.md\n",
"L-struct.md\n",
"L2-struct.md\n",
"M-logic.md\n",
"N-subject.md\n",
"O-stdlib-io.md\n",
"P-func.md\n",
"Q-metals.md\n",
"R-math.md\n"
]
}
],
"source": [
"for filename in sorted(filenames):\n",
" with open(filename, 'r') as f:\n",
" text = f.read()\n",
" text = text.replace('\"], [\"', '\", \"')\n",
" with open(filename, 'w') as f:\n",
" f.write(text)\n",
" print(filename)"
]
},
{
"cell_type": "code",
"execution_count": 45,
"id": "9399188a",
"metadata": {},
"outputs": [],
"source": [
"!git mv R-math.md S-math.md"
]
},
{
"cell_type": "code",
"execution_count": 46,
"id": "07dae118",
"metadata": {},
"outputs": [],
"source": [
"!git mv Q-metals.md R-metals.md"
]
},
{
"cell_type": "code",
"execution_count": 48,
"id": "a7e31ca0",
"metadata": {},
"outputs": [],
"source": [
"!git mv R-fund.md R-func.md"
]
},
{
"cell_type": "code",
"execution_count": 49,
"id": "25bb6d78",
"metadata": {},
"outputs": [],
"source": [
"!git mv R-func.md Q-func.md"
]
},
{
"cell_type": "code",
"execution_count": 50,
"id": "5a97e7f7",
"metadata": {},
"outputs": [],
"source": [
"!git mv O-stdlib-io.md P-stdlib-io.md"
]
},
{
"cell_type": "code",
"execution_count": 51,
"id": "5063edea",
"metadata": {},
"outputs": [],
"source": [
"!git mv N-subject.md O-subject.md"
]
},
{
"cell_type": "code",
"execution_count": 52,
"id": "4fef1acd",
"metadata": {},
"outputs": [],
"source": [
"!git mv M-logic.md N-logic.md"
]
},
{
"cell_type": "code",
"execution_count": 53,
"id": "e875e80e",
"metadata": {},
"outputs": [],
"source": [
"!git mv L2-struct.md M-struct.md"
]
},
{
"cell_type": "code",
"execution_count": 54,
"id": "a54b515d",
"metadata": {},
"outputs": [],
"source": [
"!sed -i 's/R-math.md/S-math.md/g' *.md"
]
},
{
"cell_type": "code",
"execution_count": 55,
"id": "4271af78",
"metadata": {},
"outputs": [],
"source": [
"!sed -i 's/Q-metals.md/R-metals.md/g' *.md"
]
},
{
"cell_type": "code",
"execution_count": 56,
"id": "0ca7cd68",
"metadata": {},
"outputs": [],
"source": [
"!sed -i 's/P-func.md/Q-func.md/g' *.md"
]
},
{
"cell_type": "code",
"execution_count": 57,
"id": "ecb03df8",
"metadata": {},
"outputs": [],
"source": [
"!sed -i 's/O-stdlib-io.md/P-stdlib-io.md/g' *.md"
]
},
{
"cell_type": "code",
"execution_count": 58,
"id": "92d1eb7b",
"metadata": {},
"outputs": [],
"source": [
"!sed -i 's/N-subject.md/O-subject.md/g' *.md"
]
},
{
"cell_type": "code",
"execution_count": 59,
"id": "04de4f25",
"metadata": {},
"outputs": [],
"source": [
"!sed -i 's/M-logic.md/N-logic.md/g' *.md"
]
},
{
"cell_type": "code",
"execution_count": 60,
"id": "5bc1bfa2",
"metadata": {},
"outputs": [],
"source": [
"!sed -i 's/L2-struct.md/M-struct.md/g' *.md"
]
},
{
"cell_type": "code",
"execution_count": 61,
"id": "daf9b75e",
"metadata": {},
"outputs": [],
"source": [
"!git mv M-struct.md M-typecheck.md"
]
},
{
"cell_type": "code",
"execution_count": 62,
"id": "264f0e44",
"metadata": {},
"outputs": [],
"source": [
"!sed -i 's/M-struct.md/M-typecheck.md/g' *.md"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "b64a8014",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.7"
}
},
"nbformat": 4,
"nbformat_minor": 5
}

View File

@ -1,8 +1,8 @@
+++
title = "Introduction to Hoon"
weight = 10
nodes: [100, 103]
objectives: ["Explain what an Urbit ship is.", "Distinguish a fakeship from a liveship.", "Pronounce ASCII characters per standard Hoon developer practice."
nodes = [100, 103]
objectives = ["Explain what an Urbit ship is.", "Distinguish a fakeship from a liveship.", "Pronounce ASCII characters per standard Hoon developer practice."
+++
# Introduction to Hoon

View File

@ -1,7 +1,7 @@
+++
title: Hoon Syntax
nodes: [110, 113]
objectives: ["Distinguish nouns, cells, and atoms.", "Apply auras to transform an atom.", "Identify common Hoon molds, such as cells, lists, and tapes.", "Pin a face to the subject.", "Make a decision at a branch point.", "Distinguish loobean from boolean operations.", "Slam a gate (call a function)."]
title = Hoon Syntax
nodes = [110, 113]
objectives = ["Distinguish nouns, cells, and atoms.", "Apply auras to transform an atom.", "Identify common Hoon molds, such as cells, lists, and tapes.", "Pin a face to the subject.", "Make a decision at a branch point.", "Distinguish loobean from boolean operations.", "Slam a gate (call a function)."]
+++
# Hoon Syntax

View File

@ -1,7 +1,7 @@
+++
title: Azimuth (Urbit ID)
nodes: [102, 112]
objectives: ["Understand the role of the public-key infrastructure in Urbit.", "Describe the high-level architecture of the Urbit ID address space and distinguish types of points.", "Interpret and apply the Azimuth point naming scheme.", "Identify point features such as activity.", "List at least two services/roles provided by a galaxy for the network.", "List at least two services provided by a star for its planets.", "Use Hoon to map the Azimuth address space domains and boundaries.", "Identify points, sponsors, neighbors, etc. from `@p` identifiers and simple operations."]
title = Azimuth (Urbit ID)
nodes = [102, 112]
objectives = ["Understand the role of the public-key infrastructure in Urbit.", "Describe the high-level architecture of the Urbit ID address space and distinguish types of points.", "Interpret and apply the Azimuth point naming scheme.", "Identify point features such as activity.", "List at least two services/roles provided by a galaxy for the network.", "List at least two services provided by a star for its planets.", "Use Hoon to map the Azimuth address space domains and boundaries.", "Identify points, sponsors, neighbors, etc. from `@p` identifiers and simple operations."]
+++
# Azimuth (Urbit ID)

View File

@ -1,7 +1,7 @@
+++
title: Gates (Functions)
nodes: [111, 115, 120]
objectives: ["Use the `+ls` generator to show a directory's contents.", "`|mount` and `|commit` a desk.", "Identify current known irregular syntax.", "Convert between regular and irregular forms of runes to date.", "Employ a gate to defer a computation.", "Produce a gate as a generator.", "Annotate Hoon code with comments.", "Produce a generator to convert a value between auras."]
title = Gates (Functions)
nodes = [111, 115, 120]
objectives = ["Use the `+ls` generator to show a directory's contents.", "`|mount` and `|commit` a desk.", "Identify current known irregular syntax.", "Convert between regular and irregular forms of runes to date.", "Employ a gate to defer a computation.", "Produce a gate as a generator.", "Annotate Hoon code with comments.", "Produce a generator to convert a value between auras."]
+++
# Gates (Functions)

View File

@ -1,7 +1,7 @@
+++
title: Molds (Types)
nodes: [125]
objectives: ["Identify a mold in the hierarchy of Urbit types (nouns, molds, marks).", "Understand how type inference and type checking takes place.", "Bunt a mold.", "Produce a type union.", "Produce a named tuple.", "Identify type using `!>`."]
title = Molds (Types)
nodes = [125]
objectives = ["Identify a mold in the hierarchy of Urbit types (nouns, molds, marks).", "Understand how type inference and type checking takes place.", "Bunt a mold.", "Produce a type union.", "Produce a named tuple.", "Identify type using `!>`."]
+++
# Molds (Types)

View File

@ -1,7 +1,7 @@
+++
title: Cores
nodes: [130, 133]
objectives: ["Employ a trap to produce a reentrant block of code.", "Produce a recursive gate.", "Distinguish head and tail recursion.", "Consider Hoon structures as cores.", "Identify the special role of the `$` buc arm in many cores.", "Order neighboring cores within the subject for addressibility.", "Produce a type arm."]
title = Cores
nodes = [130, 133]
objectives = ["Employ a trap to produce a reentrant block of code.", "Produce a recursive gate.", "Distinguish head and tail recursion.", "Consider Hoon structures as cores.", "Identify the special role of the `$` buc arm in many cores.", "Order neighboring cores within the subject for addressibility.", "Produce a type arm."]
+++
# Cores

View File

@ -1,7 +1,7 @@
+++
title: Trees, Addressing, and Lists
nodes: [135, 140, 156]
objectives: ["Address nodes in a tree using numeric notation.", "Address nodes in a tree using lark notation.", "Address data in a tree using faces.", "Distinguish `.` and `:` notation.", "Diagram Hoon structures such as gates into the corresponding abstract syntax tree.", "Use lists to organize data.", "Convert between kinds of lists (e.g. tapes).", "Diagram lists as binary trees.", "Operate on list elements using `snag`, `find`, `weld`, etc.", "Explain how Hoon manages the subject and wing search paths.", "Explain how to skip to particular matches in a wing search path through the subject.", "Identify common Hoon patterns: batteries, and doors, arms, wings, and legs."]
title = Trees, Addressing, and Lists
nodes = [135, 140, 156]
objectives = ["Address nodes in a tree using numeric notation.", "Address nodes in a tree using lark notation.", "Address data in a tree using faces.", "Distinguish `.` and `:` notation.", "Diagram Hoon structures such as gates into the corresponding abstract syntax tree.", "Use lists to organize data.", "Convert between kinds of lists (e.g. tapes).", "Diagram lists as binary trees.", "Operate on list elements using `snag`, `find`, `weld`, etc.", "Explain how Hoon manages the subject and wing search paths.", "Explain how to skip to particular matches in a wing search path through the subject.", "Identify common Hoon patterns: batteries, and doors, arms, wings, and legs."]
+++
# Trees, Addressing, and Lists

View File

@ -1,7 +1,7 @@
+++
title: Libraries
nodes: [145, 153, 175]
objectives: ["Import a library using `/+` faslus.", "Create a new library in `/lib`.", "Identify the role of a desk in the Clay filesystem.", "Identify the components of a beak.", "Identify filesystem locations (including desks).", "Identify the components of a path.", "Build code samples with `-build-file` thread.", "Discuss Ford import runes."]
title = Libraries
nodes = [145, 153, 175]
objectives = ["Import a library using `/+` faslus.", "Create a new library in `/lib`.", "Identify the role of a desk in the Clay filesystem.", "Identify the components of a beak.", "Identify filesystem locations (including desks).", "Identify the components of a path.", "Build code samples with `-build-file` thread.", "Discuss Ford import runes."]
+++
# Libraries

View File

@ -1,7 +1,7 @@
+++
title: Testing Code
nodes: [170, 190]
objectives: ["Run existing unit tests.", "Produce a unit test.", "Employ a debugging strategy to identify and correct errors in Hoon code."]
title = Testing Code
nodes = [170, 190]
objectives = ["Run existing unit tests.", "Produce a unit test.", "Employ a debugging strategy to identify and correct errors in Hoon code."]
+++
# Testing Code

View File

@ -1,7 +1,7 @@
+++
title: Text Processing I
nodes: [160, 163]
objectives: ["Review Unicode text structure.", "Distinguish cords and tapes and their characteristics.", "Transform and manipulate text using text conversion arms.", "Interpolate text.", "Employ sigpam logging levels.", "Create a `%say` generator.", "Identify how Dojo sees and interprets a generator as a cell with a head tag.", "Identify the elements of a `sample` for a `%say` generator.", "Produce a `%say` generator with optional arguments."]
title = Text Processing I
nodes = [160, 163]
objectives = ["Review Unicode text structure.", "Distinguish cords and tapes and their characteristics.", "Transform and manipulate text using text conversion arms.", "Interpolate text.", "Employ sigpam logging levels.", "Create a `%say` generator.", "Identify how Dojo sees and interprets a generator as a cell with a head tag.", "Identify the elements of a `sample` for a `%say` generator.", "Produce a `%say` generator with optional arguments."]
+++
# Text Processing I

View File

@ -1,7 +1,7 @@
+++
title: Cores and Doors
nodes: [150, 155]
objectives: ["Identify the structure of a door and relate it to a core.", "Pull an arm in a door.", "Build cores for later use and with custom samples.", "Identify the `$` buc arm in several structures and its role."]
title = Cores and Doors
nodes = [150, 155]
objectives = ["Identify the structure of a door and relate it to a core.", "Pull an arm in a door.", "Build cores for later use and with custom samples.", "Identify the `$` buc arm in several structures and its role."]
+++
# Cores and Doors

View File

@ -1,7 +1,7 @@
+++
title: Data Structures
nodes: [183]
objectives: ["Identify units, sets, maps, and compound structures like jars and jugs.", "Explain why units and vases are necessary.", "Use helper arms and syntax: `` ` ``, `biff`, `some`, etc."]
title = Data Structures
nodes = [183]
objectives = ["Identify units, sets, maps, and compound structures like jars and jugs.", "Explain why units and vases are necessary.", "Use helper arms and syntax: `` ` ``, `biff`, `some`, etc."]
+++
# Data Structures

View File

@ -1,7 +1,7 @@
+++
title: Type Checking
nodes: [183]
objectives: ["Use assertions to enforce type constraints."]
title = Type Checking
nodes = [183]
objectives = ["Use assertions to enforce type constraints."]
+++
# Type Checking

View File

@ -1,7 +1,7 @@
+++
title: Conditional Logic
nodes: [184]
objectives: ["Produce loobean expressions.", "Reorder conditional arms.", "Switch against a union with or without default."]
title = Conditional Logic
nodes = [184]
objectives = ["Produce loobean expressions.", "Reorder conditional arms.", "Switch against a union with or without default."]
+++
# Conditional Logic

View File

@ -1,7 +1,7 @@
+++
title: Subject-Oriented Programming
nodes: [165, 180]
objectives: ["Review subject-oriented programming as a design paradigm.", "Discuss stateful v. stateless applications and path dependence.", "Enumerate Hoon's tools for dealing with state: `=.` tisdot, `=^` tisket, `;<` micgal, `;~` micsig.", "Defer a computation."]
title = Subject-Oriented Programming
nodes = [165, 180]
objectives = ["Review subject-oriented programming as a design paradigm.", "Discuss stateful v. stateless applications and path dependence.", "Enumerate Hoon's tools for dealing with state: `=.` tisdot, `=^` tisket, `;<` micgal, `;~` micsig.", "Defer a computation."]
+++
# Subject-Oriented Programming

View File

@ -1,7 +1,7 @@
+++
title: Text Processing II
nodes: [185]
objectives: ["Identify tanks, tangs, wains, walls, and similar formatted printing data structures.", "Interpret logging message structures (`%leaf`, `$rose`, `$palm`).", "Interpolate to tanks with `><` syntax.", "Produce useful error annotations using `~|` sigbar."]
title = Text Processing II
nodes = [185]
objectives = ["Identify tanks, tangs, wains, walls, and similar formatted printing data structures.", "Interpret logging message structures (`%leaf`, `$rose`, `$palm`).", "Interpolate to tanks with `><` syntax.", "Produce useful error annotations using `~|` sigbar."]
+++
# Text Processing II

View File

@ -1,7 +1,7 @@
+++
title: Functional Programming
nodes: [233, 283, 383]
objectives: ["Reel, roll, turn a list." ], ["Curry, cork functions." ], ["Change arity of a gate.", "Tokenize text simply using `find` and `trim`.", "Identify elements of parsing: `nail`, `rule`, etc.", "Use `++scan` to parse `tape` into atoms.", "Construct new rules and parse arbitrary text fields."]
title = Functional Programming
nodes = [233, 283, 383]
objectives = ["Reel, roll, turn a list." ], ["Curry, cork functions." ], ["Change arity of a gate.", "Tokenize text simply using `find` and `trim`.", "Identify elements of parsing: `nail`, `rule`, etc.", "Use `++scan` to parse `tape` into atoms.", "Construct new rules and parse arbitrary text fields."]
+++
# Functional Programming

View File

@ -1,7 +1,7 @@
+++
title: Generic and Variant Cores
nodes: [288, 299]
objectives: ["Distinguish dry and wet cores.", "Describe use cases for wet gates (using genericity).", "Enumerate and distinguish use cases for dry cores (using variance):", "- Covariant (`%zinc`)", "- Contravariant (`%iron`)", "- Bivariant (`%lead`)", "- Invariant (`%gold`)"]
title = Generic and Variant Cores
nodes = [288, 299]
objectives = ["Distinguish dry and wet cores.", "Describe use cases for wet gates (using genericity).", "Enumerate and distinguish use cases for dry cores (using variance):", "- Covariant (`%zinc`)", "- Contravariant (`%iron`)", "- Bivariant (`%lead`)", "- Invariant (`%gold`)"]
+++
# Adaptive Cores

View File

@ -1,7 +1,7 @@
+++
title: Mathematics
nodes: [234, 236, 284]
objectives: ["Review floating-point mathematics including IEEE-754.", "Examine `@r` atomic representation of floating-point values.", "Manipulate and convert floating-point values using the `@r` operations.", "Examine `@s` atomic representation of signed integer values.", "Use `+si` to manipulate `@s` signed integer values.", "Define entropy and its source.", "Utilize `eny` in a random number generator (`og`).", "Distinguish insecure hashing (`mug`) from secure hashing (`shax` and friends)."]
title = Mathematics
nodes = [234, 236, 284]
objectives = ["Review floating-point mathematics including IEEE-754.", "Examine `@r` atomic representation of floating-point values.", "Manipulate and convert floating-point values using the `@r` operations.", "Examine `@s` atomic representation of signed integer values.", "Use `+si` to manipulate `@s` signed integer values.", "Define entropy and its source.", "Utilize `eny` in a random number generator (`og`).", "Distinguish insecure hashing (`mug`) from secure hashing (`shax` and friends)."]
+++
# Mathematics