Skip to content

Commit 66d8e1d

Browse files
committed
use peeks in dynamic ref
1 parent 808ea83 commit 66d8e1d

File tree

3 files changed

+37
-10
lines changed

3 files changed

+37
-10
lines changed

elixir/api.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,14 +46,15 @@ def on_get(self, req, resp, project, ident):
4646
if version == 'latest':
4747
version = query.query('latest')
4848

49-
symbol_definitions, symbol_references, symbol_doccomments = query.query('ident', version, ident, family)
49+
symbol_definitions, symbol_references, symbol_doccomments, peaks = query.query('ident', version, ident, family)
5050

5151
resp.status = falcon.HTTP_200
5252
resp.content_type = falcon.MEDIA_JSON
5353
resp.media = {
5454
'definitions': [sym.__dict__ for sym in symbol_definitions],
5555
'references': [sym.__dict__ for sym in symbol_references],
56-
'documentations': [sym.__dict__ for sym in symbol_doccomments]
56+
'documentations': [sym.__dict__ for sym in symbol_doccomments],
57+
'peeks': peaks
5758
}
5859

5960
query.close()

static/dynamic-references.js

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ function identUrl(project, ident, version, family) {
2828
]
2929
*/
3030

31-
function generateSymbolDefinitionsHTML(symbolDefinitions, project, version) {
31+
function generateSymbolDefinitionsHTML(symbolDefinitions, peeks, project, version) {
3232
let result = "";
3333
let typesCount = {};
3434
let previous_type = "";
@@ -55,7 +55,7 @@ function generateSymbolDefinitionsHTML(symbolDefinitions, project, version) {
5555
previous_type = sd.type;
5656
}
5757
let ln = sd.line.toString().split(',');
58-
if (ln.length == 1) {
58+
if (ln.length == 1 && !peeks) {
5959
let n = ln[0];
6060
result += `<li><a href="/${project}/${version}/source/${sd.path}#L${n}"><strong>${sd.path}</strong>, line ${n} <em>(as a ${sd.type})</em></a>`;
6161
} else {
@@ -66,7 +66,14 @@ function generateSymbolDefinitionsHTML(symbolDefinitions, project, version) {
6666
result += `<li><a href="/${project}/${version}/source/${sd.path}#L${ln[0]}"><strong>${sd.path}</strong> <em>(as a ${sd.type})</em></a>`;
6767
result += '<ul>';
6868
for(let n of ln) {
69-
result += `<li><a href="/${project}/${version}/source/${sd.path}#L${n}">line ${n}</a></li>`;
69+
result += `<li><a href="/${project}/${version}/source/${sd.path}#L${n}"><span>line ${n}</span>`;
70+
let srcLine = peeks?.[sd.path]?.[n];
71+
if(srcLine) {
72+
let tag = document.createElement("pre");
73+
tag.textContent = srcLine;
74+
result += tag.outerHTML;
75+
}
76+
result += '</a></li>'
7077
}
7178
result += '</ul>';
7279
}
@@ -77,7 +84,7 @@ function generateSymbolDefinitionsHTML(symbolDefinitions, project, version) {
7784
return result;
7885
}
7986

80-
function generateSymbolReferencesHTML(symbolReferences, project, version) {
87+
function generateSymbolReferencesHTML(symbolReferences, peeks, project, version) {
8188
let result = "";
8289

8390
if(symbolReferences.length == 0) {
@@ -88,7 +95,7 @@ function generateSymbolReferencesHTML(symbolReferences, project, version) {
8895
result += '<ul>';
8996
for (let sr of symbolReferences) {
9097
let ln = sr.line.split(',');
91-
if (ln.length == 1) {
98+
if (ln.length == 1 && !peeks) {
9299
let n = ln[0];
93100
result += `<li><a href="/${project}/${version}/source/${sr.path}#L${n}"><strong>${sr.path}</strong>, line ${n}</a>`;
94101
} else {
@@ -99,7 +106,14 @@ function generateSymbolReferencesHTML(symbolReferences, project, version) {
99106
result += `<li><a href="/${project}/${version}/source/${sr.path}#L${ln[0]}"><strong>${sr.path}</strong></a>`;
100107
result += '<ul>'
101108
for(let n of ln) {
102-
result += `<li><a href="/${project}/${version}/source/${sr.path}#L${n}">line ${n}</a>`
109+
result += `<li><a href="/${project}/${version}/source/${sr.path}#L${n}"><span>line ${n}</span>`
110+
let srcLine = peeks?.[sr.path]?.[n];
111+
if (srcLine) {
112+
let tag = document.createElement("pre");
113+
tag.textContent = srcLine;
114+
result += tag.outerHTML;
115+
}
116+
result += '</a></li>'
103117
}
104118
result += '</ul>'
105119
}
@@ -143,10 +157,11 @@ function generateReferencesHTML(data, project, version) {
143157
let symbolDefinitions = data["definitions"];
144158
let symbolReferences = data["references"];
145159
let symbolDocumentations = data["documentations"];
160+
let peeks = data["peeks"];
146161
return '<div class="lxrident">' +
147162
generateDocCommentsHTML(symbolDocumentations, project, version) +
148-
generateSymbolDefinitionsHTML(symbolDefinitions, project, version) +
149-
generateSymbolReferencesHTML(symbolReferences, project, version) +
163+
generateSymbolDefinitionsHTML(symbolDefinitions, peeks, project, version) +
164+
generateSymbolReferencesHTML(symbolReferences, peeks, project, version) +
150165
'</div>';
151166
}
152167

static/style.css

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -693,6 +693,12 @@ h2 {
693693
font-weight: 400;
694694
color: #000;
695695
}
696+
697+
.lxrident a span {
698+
width: 8em;
699+
display: inline-block;
700+
}
701+
696702
.lxrident li li::before {
697703
color: #444;
698704
}
@@ -714,6 +720,11 @@ h2 {
714720
content: '└╴';
715721
}
716722

723+
.lxrident li pre {
724+
display: inline-block;
725+
margin: auto;
726+
}
727+
717728

718729
/* tree */
719730

0 commit comments

Comments
 (0)