Check-in by ben on 2025-04-11 21:24:26
Make sure to create output directories before using them. Link
to source code on chiselapp.com instead of a local .zip file.
Bump to version 4
INSERTED DELETED
74 33 periodic.awk
74 33 TOTAL over 1 changed file
Index: periodic.awk
==================================================================
--- periodic.awk
+++ periodic.awk
@@ -1,6 +1,6 @@
-# periodic.awk version 3 by Ben Collver
+# periodic.awk version 4 by Ben Collver
#
# Generate static gopher content for the periodic table of elements.
#
# Edit gopher_dir, gopher_host, and gopher_port in function main()
#
@@ -48,11 +48,11 @@
close(cmd)
FS = OLDFS
return
}
-function dir(str, retval) {
+function format_dir(str, retval) {
retval = tolower(str)
gsub(/ /, "-", retval)
return retval
}
@@ -143,14 +143,22 @@
table["cols"] = cols
table["rows"] = rows
return
}
-function print_element_gph(element, cmd, count, f, i, key, label, \
- mass, name, path, source_list, source, str, symbol)
+function mkdir(dir) {
+ system("mkdir -p \"" dir "\"")
+ return
+}
+
+function print_element_gph(element, cmd, count, dir, f, i, key, \
+ label, mass, name, path, source_list, source, str, symbol)
{
- f = outdir "/element/" element "/index.gph"
+ dir = outdir "/element/" element
+ mkdir(dir)
+
+ f = dir "/index.gph"
key = element "_Atomic Mass"
mass = elements[key]
key = element "_Name"
name = elements[key]
key = element "_Symbol"
@@ -258,11 +266,11 @@
print format_field(f, element, "Boiling Point") >>f
print format_field(f, element, "Density") >>f
str = format_field(f, element, "Family")
key = element "_Family"
- path = gopher_dir "/family/" dir(elements[key]) "/"
+ path = gopher_dir "/family/" format_dir(elements[key]) "/"
printf "[1|%s|%s|%s|%s]\n", str, path, gopher_host, gopher_port >>f
print format_field(f, element, "Year Discovered") >>f
print format_field(f, element, "Number of Neutrons") >>f
print format_field(f, element, "Number of Protons") >>f
@@ -375,20 +383,25 @@
print_element_txt(i)
}
return
}
-function print_families( family_id, fdir, i, key, len, name, outfile) {
- outfile = outdir "/family/index.gph"
+function print_families( dir, family_id, fdir, i, key, len, name, \
+ outfile)
+{
+ dir = outdir "/family"
+ mkdir(dir)
+
+ outfile = dir "/index.gph"
printf "# Families\n\n" >outfile
len = families["length"]
for (i = 1; i <= len; i++) {
key = i "_Family"
family_id = families[key]
key = i "_Name"
name = families[key]
- fdir = dir(family_id)
+ fdir = format_dir(family_id)
printf "[1|%s|%s/family/%s/|%s|%s]\n", name, gopher_dir, fdir, \
gopher_host, gopher_port >>outfile
select_clear()
select_family(family_id)
print_family_gph(i, family_id, name, fdir)
@@ -396,17 +409,20 @@
}
close(outfile)
return
}
-function print_family_gph(family, family_id, name, fdir, descr, i, \
- f, key, label, len, path, symbol)
+function print_family_gph(family, family_id, name, fdir, descr, \
+ dir, i, f, key, label, len, path, symbol)
{
key = family "_Description"
descr = families[key]
- f = outdir "/family/" fdir "/index.gph"
+ dir = outdir "/family/" fdir
+ mkdir(dir)
+
+ f = dir "/index.gph"
label = sprintf("Family: %s", name)
path = sprintf("%s/family/%s/index.txt", gopher_dir, fdir)
printf "[0|%s|%s|%s|%s]\n\n", label, path, gopher_host, gopher_port >f
@@ -469,12 +485,15 @@
close(f)
return
}
-function print_list_atomic( f, i, key, label, name, path, symbol) {
- f = outdir "/list/atomic/index.gph"
+function print_list_atomic( dir, f, i, key, label, name, path, symbol) {
+ dir = outdir "/list/atomic"
+ mkdir(dir)
+
+ f = dir "/index.gph"
printf "# List Elements By Atomic Number\n\n" >f
len = elements["length"]
for (i = 1; i <= len; i++) {
key = i "_Name"
name = elements[key]
@@ -498,16 +517,20 @@
close(f)
return
}
-function print_list_name( element, f, i, key, label, len, map, \
- name, order, path, symbol)
+function print_list_name( dir, element, f, i, key, label, len, \
+ map, name, order, path, symbol)
{
delete map
delete order
- f = outdir "/list/name/index.gph"
+
+ dir = outdir "/list/name"
+ mkdir(dir)
+
+ f = dir "/index.gph"
printf "# List Elements By Name\n\n" >f
len = elements["length"]
for (i = 1; i <= len; i++) {
key = i "_Name"
name = elements[key]
@@ -537,16 +560,20 @@
printf "[1|%s|%s|%s|%s]\n", label, path, gopher_host, gopher_port >>f
return
}
-function print_list_symbol( element, f, i, key, label, len, map, \
- name, order, path, symbol)
+function print_list_symbol( dir, element, f, i, key, label, len, \
+ map, name, order, path, symbol)
{
delete map
delete order
- f = outdir "/list/symbol/index.gph"
+
+ dir = outdir "/list/symbol"
+ mkdir(dir)
+
+ f = dir "/index.gph"
printf "# List Elements By Symbol\n\n" >f
len = elements["length"]
for (i = 1; i <= len; i++) {
key = i "_Symbol"
symbol = elements[key]
@@ -583,12 +610,15 @@
print_list_name()
print_list_symbol()
return
}
-function print_shells( i, key, len, name, outfile, shell_id) {
- outfile = outdir "/shell/index.gph"
+function print_shells( dir, i, key, len, name, outfile, shell_id) {
+ dir = outdir "/shell"
+ mkdir(dir)
+
+ outfile = dir "/index.gph"
printf "# Shells\n\n" >outfile
len = shells["length"]
for (i = 1; i <= len; i++) {
key = i "_Shell"
shell_id = shells[key]
@@ -603,17 +633,20 @@
}
close(outfile)
return
}
-function print_shell_gph(shell, shell_id, name, descr, i, \
- f, key, label, len, path, symbol)
+function print_shell_gph(shell, shell_id, name, descr, dir, i, f, \
+ key, label, len, path, symbol)
{
key = shell "_Description"
descr = shells[key]
- f = outdir "/shell/" shell_id "/index.gph"
+ dir = outdir "/shell/" shell_id
+ mkdir(dir)
+
+ f = dir "/index.gph"
label = sprintf("Shell: %s", name)
path = sprintf("%s/shell/%s/index.txt", gopher_dir, shell_id)
printf "[0|%s|%s|%s|%s]\n\n", label, path, gopher_host, gopher_port >f
@@ -676,12 +709,15 @@
close(f)
return
}
-function print_sources( i, key, len, name, outfile, source_id) {
- outfile = outdir "/source/index.gph"
+function print_sources( dir, i, key, len, name, outfile, source_id) {
+ dir = outdir "/source"
+ mkdir(dir)
+
+ outfile = dir "/index.gph"
printf "# Sources\n\n" >outfile
len = sources["length"]
for (i = 1; i <= len; i++) {
key = i "_Source"
source_id = sources[key]
@@ -696,14 +732,17 @@
}
close(outfile)
return
}
-function print_source_gph(source, source_id, name, i, \
- f, key, label, len, path, symbol)
+function print_source_gph(source, source_id, name, dir, i, f, key, \
+ label, len, path, symbol)
{
- f = outdir "/source/" source_id "/index.gph"
+ dir = outdir "/source/" source_id
+ mkdir(dir)
+
+ f = dir "/index.gph"
label = sprintf("Source: %s", name)
path = sprintf("%s/source/%s/index.txt", gopher_dir, source_id)
printf "[0|%s|%s|%s|%s]\n\n", label, path, gopher_host, gopher_port >f
@@ -794,20 +833,22 @@
printf "\n" >>f
}
return
}
-function print_top( f) {
+function print_top( f, uri) {
+ mkdir(outdir)
f = outdir "/index.gph"
+
+ uri = "
https://chiselapp.com/user/bencollver/repository/periodic/"
select_clear()
printf " Periodic Table Of The Elements\n\n" >f
print_table(f)
printf "\n" >>f
printf "[1|List All|%s/list/atomic/|%s|%s]\n", gopher_dir,
gopher_host, gopher_port >>f
- printf "[9|Code (.zip)|%s/periodic.zip|%s|%s]\n", gopher_dir,
- gopher_host, gopher_port >>f
+ printf "[h|Source Code|URL:%s|tilde.pink|70]\n", uri >>f
close(f)
return
}
function print_wiki_item(f, label, id) {