Check-in by ben on 2025-04-11 21:05:49
Simplify periodic table display when multiple elements are
selected. Blur out the de-selected symbols by replacing letters
with . characters. Bump version to 3
INSERTED DELETED
23 59 periodic.awk
23 59 TOTAL over 1 changed file
Index: periodic.awk
==================================================================
--- periodic.awk
+++ periodic.awk
@@ -1,6 +1,6 @@
-# periodic.awk version 2 by Ben Collver
+# periodic.awk version 3 by Ben Collver
#
# Generate static gopher content for the periodic table of elements.
#
# Edit gopher_dir, gopher_host, and gopher_port in function main()
#
@@ -757,12 +757,12 @@
close(f)
return
}
-function print_table(f, col, cols, element, i, key, \
- row, rows, sel, sel_l, sel_r, symbol)
+function print_table(f, col, cols, element, key, row, rows, sel, \
+ symbol)
{
cols = table["cols"]
rows = table["rows"]
for (row = 1; row <= rows; row++) {
@@ -769,66 +769,26 @@
for (col = 1; col <= cols; col++) {
key = row "_" col
element = table[key]
sel = selection[key]
key = element "_Symbol"
- symbol = sprintf("%-2s", elements[key])
- if (sel) {
- sub(/ /, "_", symbol)
- }
- if (col == 1) {
- key = row "_" (col + 1)
- sel_r = selection[key]
- if (sel) {
- if (sel_r) {
- printf "[%s", symbol >>f
- } else {
- printf "[%s]", symbol >>f
- }
- } else {
- printf " %s", symbol >>f
- }
- } else if (col == cols) {
- key = row "_" (col - 1)
- sel_l = selection[key]
- if (sel) {
- if (sel_l) {
- printf "_%s]", symbol >>f
- } else {
- printf "[%s]", symbol >>f
- }
- } else {
- if (sel_l) {
- printf "%s", symbol >>f
- } else {
- printf " %s", symbol >>f
- }
- }
- } else {
- key = row "_" (col - 1)
- sel_l = selection[key]
- key = row "_" (col + 1)
- sel_r = selection[key]
- if (sel) {
- if (sel_l) {
- if (sel_r) {
- printf "_%s", symbol >>f
- } else {
- printf "_%s]", symbol >>f
- }
- } else {
- if (sel_r) {
- printf "[%s", symbol >>f
- } else {
- printf "[%s]", symbol >>f
- }
- }
- } else {
- if (sel_l) {
- printf "%s", symbol >>f
- } else {
- printf " %s", symbol >>f
+ symbol = elements[key]
+ if (selected > 1) {
+ if (!sel) {
+ gsub(/./, ".", symbol)
+ }
+ printf " %-2s", symbol >>f
+ } else {
+ if (sel) {
+ printf "[%-2s]", symbol >>f
+ } else {
+ key = row "_" (col - 1)
+ sel = selection[key]
+ if (sel) {
+ printf "%-2s", symbol >>f
+ } else {
+ printf " %-2s", symbol >>f
}
}
}
}
printf "\n" >>f
@@ -873,16 +833,20 @@
function select_atom(element, col, key, row) {
col = table_col[element]
row = table_row[element]
key = row "_" col
+ if (selection[key] != 1) {
+ selected++
+ }
selection[key] = 1
return
}
function select_clear() {
delete selection
+ selected = 0
return
}
function select_family(family_id, i, key, len) {
len = elements["length"]