diff options
| author | Marshall Lochbaum <mwlochbaum@gmail.com> | 2021-01-06 13:26:30 -0500 |
|---|---|---|
| committer | Marshall Lochbaum <mwlochbaum@gmail.com> | 2021-01-06 13:26:30 -0500 |
| commit | 1a7d407ce2c5be64711686c94528ae31adaea400 (patch) | |
| tree | 9d16d9283db13a52dbbb16d6bdadd8124fc61e9c /docs | |
| parent | e4fb816e77a852230490817bb53aa6f9ceb3725e (diff) | |
Add hovertext to primitives in syntax explainer
Diffstat (limited to 'docs')
| -rw-r--r-- | docs/repl.js | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/docs/repl.js b/docs/repl.js index 976882b8..2fc88caa 100644 --- a/docs/repl.js +++ b/docs/repl.js @@ -65,7 +65,15 @@ if (doc.doexplain) doc.doexplain.onclick = () => { ,[[0,1,0,31],[0,0,516,4],[0,0,603,8],[0,0,723,3],[0,0,736,10],[0,0,987,3],[0,0,997,3],[0,0,1007,3],[0,0,1023,4],[0,0,1074,3],[1,1,1099,2],[0,0,1129,3],[0,0,1143,33],[0,0,2052,3],[1,0,2095,5],[0,0,2107,3],[0,0,2146,4],[0,0,2236,4],[1,1,2337,2],[0,1,2367,2],[0,0,2469,22],[0,0,2999,5],[0,0,3081,3]] ); explain = (s,c) => { - doc.explain.innerHTML = s?drawEval(s,c).map(l=>l.join("")).join("\n"):''; + let e = doc.explain; + e.innerHTML = s?drawEval(s,c).map(l=>l.join("")).join("\n"):''; + setTimeout(() => { + e.querySelectorAll('tspan').forEach(t => { + let h = primhelp[t.textContent]; + if (!h) return; + t.innerHTML = t.textContent+'<title>'+h+'</title>'; + }); + }, 0); } } explain(); // Clear @@ -104,13 +112,14 @@ let syncls={ v:"Value", f:"Function", m:"Modifier", d:"Modifier2", n:"Number", g let keydesc='f+Conjugate;Add_f-Negate;Subtract_f×Sign;Multiply_f÷Reciprocal;Divide_f⋆Exponential;Power_f√Square Root;Root_f⌊Floor;Minimum_f⌈Ceiling;Maximum_f∧Sort Up;And_f∨Sort Down;Or_f¬Not;Span_f|Absolute Value;Modulus_f≤Less Than or Equal to_f<Enclose;Less Than_f>Merge;Greater Than_f≥Greater Than or Equal to_f=Rank;Equals_f≠Length;Not Equals_f≡Depth;Match_f≢Shape;Not Match_f⊣Identity;Left_f⊢Identity;Right_f⥊Deshape;Reshape_f∾Join;Join to_f≍Solo;Couple_f↑Prefixes;Take_f↓Suffixes;Drop_f↕Range;Windows_f«Shift Before_f»Shift After_f⌽Reverse;Rotate_f⍉Transpose;Reorder axes_f/Indices;Replicate_f⍋Grade Up;Bins Up_f⍒Grade Down;Bins Down_f⊏First Cell;Select_f⊑First;Pick_f⊐Index of_f⊒Occurrence Count;Progressive Index of_f∊Unique Mask;Member of_f⍷Deduplicate;Find_f⊔Group Indices;Group_f!Assert;Assert with message_m˙Constant_m˜Self/Swap_d∘Atop_d○Over_d⊸Before/Bind_d⟜After/Bind_d⌾Under_d⊘Valences_d◶Choose_d⎉Rank_m˘Cells_d⚇Depth_m¨Each_m⌜Table_d⍟Repeat_m⁼Undo_m´Fold_m˝Insert_m`Scan_g←Define_g⇐Export_g↩Change_g→Return_s⋄Separator_s,Separator_p(Begin expression_p)End expression_k{Begin block_k}End block_b⟨Begin list_b⟩End list_l‿Strand_n·Nothing_v•System_v𝕨Left argument_f𝕎Left argument (as function)_v𝕩Right argument_f𝕏Right argument (as function)_v𝕗Modifier left operand (as subject)_f𝔽Modifier left operand_v𝕘2-modifier right operand (as subject)_f𝔾2-modifier right operand_v𝕤Current function (as subject)_f𝕊Current function_m𝕣Current modifier_n¯Minus_nπPi_n∞Infinity_a@Null character_c#Comment'.split(/[\n_]/); let kk=Array.from('`123456890-=~!@#$%^&*()_+qwertuiop[]QWERTIOP{}asdfghjkl;ASFGHKL:"zxcvbm,./XVBM<>? \''); let kv=Array.from('˜˘¨⁼⌜´˝∞¯•÷׬⎉⚇⍟◶⊘⎊⍎⍕⟨⟩√⋆⌽𝕨∊↑∧⊔⊏⊐π←→↙𝕎⍷𝕣⍋⊑⊒⍳⊣⊢⍉𝕤↕𝕗𝕘⊸∘○⟜⋄↖𝕊𝔽𝔾«⌾»·˙⥊𝕩↓∨⌊≡∾≍≠𝕏⍒⌈≢≤≥⇐‿↩'); -let keys={}, revkeys={}; +let keys={}, revkeys={}, primhelp={}; kk.map((k,i)=>{keys[k]=kv[i];revkeys[kv[i]]=k;}); doc.kb.innerHTML = keydesc.map(d=>{ let s = syncls[d[0]]; let c = Array.from(d)[1]; let t = d.slice(1+c.length).replace(';','\n'); let k = revkeys[c]; if (k) t += '\n\\ '+(k==='"'?'"':k); + primhelp[c] = t; return '<span title="'+t+'" class="'+s+'">'+c+'</span>' }).join("​"); // zero-width space doc.kb.onmousedown = ev => { |
