Skip to content

Commit 549b93a

Browse files
save file
1 parent 4e6acf9 commit 549b93a

1 file changed

Lines changed: 242 additions & 1 deletion

File tree

‎utils/editors/html/code-explorer/v1.0/code-explorer-v1.0.html‎

Lines changed: 242 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,34 @@
77

88
<style>
99

10+
:host
11+
{}
12+
13+
14+
#hdr
15+
{}
16+
17+
18+
#list
19+
{}
20+
.fn
21+
{}
22+
.label
23+
{}
24+
25+
1026
</style>
1127

28+
<div id=hdr>
29+
</div>
30+
31+
<div id=view>
32+
<div class=fn>
33+
</div>
34+
<div class=label>
35+
</div>
36+
</div>
37+
1238
</template>
1339

1440
<script>
@@ -21,7 +47,7 @@
2147

2248
var df=true,did='code-explorer';
2349

24-
var debug
50+
var debug,$,editor
2551
;
2652

2753
obj.initmod = function(...list){
@@ -31,6 +57,7 @@
3157
df = mod.rd(params,'df',df);
3258
debug = mod.rd(params,'debug',debug);
3359
$ = mod.rd(params,'$',$);
60+
editor = mod.rd(params,'editor',editor);
3461

3562
});
3663

@@ -43,6 +70,18 @@
4370
var shadow;
4471

4572

73+
var view;
74+
var ui = {};
75+
76+
77+
78+
79+
var sort = {};
80+
sort.alpha = {};
81+
sort.source = {};
82+
83+
84+
4685
//:
4786

4887

@@ -60,16 +99,218 @@
6099
shadow = host.shadowRoot;
61100

62101

102+
view = $(shadow,'#view');
103+
104+
ui.fn = $(shadow,'.fn');
105+
ui.fn.remove();
106+
107+
ui.label = $(shadow,'.label');
108+
ui.label.remove();
109+
110+
111+
63112
}//initdom
64113

65114

66115
//:
67116

68117

69118

119+
obj.update = update;
120+
121+
function update(){ //d
122+
//var d=debug('update');
123+
var txt = editor.getvalue();
124+
parse(txt);
125+
126+
console.log(list);
127+
128+
}//update
129+
130+
70131
//:
71132

72133

134+
135+
136+
function parse(txt){
137+
138+
list = {};
139+
list.fn = parse.fn(txt);
140+
list.label = parse.label(txt);
141+
142+
}//parse
143+
144+
145+
parse.fn = function(txt){
146+
147+
var list = [];
148+
var index = 0;
149+
var ec = true;
150+
while(ec){
151+
152+
var i1 = line.indexOf('function',index);
153+
if(i1==-1)break;
154+
155+
var o;
156+
157+
o = parse.type1(txt,i1);
158+
if(o){
159+
list.push(o);
160+
}
161+
o = parse.type2(txt,i1);
162+
if(o){
163+
list.push(o);
164+
}
165+
166+
}//while
167+
168+
return list;
169+
170+
}//fn
171+
172+
173+
parse.label = function(txt){
174+
175+
var list = [];
176+
var regex = /\/\/\s*([^:\r\n]+):/g;
177+
178+
var ec = true;
179+
while(ec){
180+
181+
var match = regex.exec(code);
182+
if(match===null)break;
183+
184+
var line = lineno(txt,match.index);
185+
var label = match[1].trim();
186+
187+
list.push({line,label});
188+
189+
}//while
190+
191+
return list;
192+
193+
}//label
194+
195+
196+
parse.type1 = function(txt,i1){
197+
198+
i1 += 8;
199+
var i2 = txt.indexOf('(',i1);
200+
var name = txt.slice(i1,i2).trim();
201+
if(!valid(name))return;
202+
203+
var args = parse.args(txt,i1);
204+
205+
var line = lineno(txt,i1);
206+
return {line,name,args};
207+
208+
}//type1
209+
210+
211+
parse.type2 = function(txt,i1){
212+
213+
var i2 = txt.lastIndexOf('=');
214+
if(i2==-1)return;
215+
216+
var str = txt.slice(i2+1,i1);
217+
if(!/^\s*$/.test(str))return;
218+
219+
for(var i3=i2-1;i3>=0;i3--){
220+
221+
var c = txt[i3];
222+
if(!/^\s*$/.test(c))break;
223+
224+
}//for
225+
226+
for(var i4=i3;i4>=0;i4--){
227+
228+
var c = txt[i4];
229+
if(/^\s*$/.test(c))break;
230+
231+
}//for
232+
233+
var name = txt.slice(i4+1,i3);
234+
if(!valid(name))return;
235+
236+
var args = parse.args(txt,i1);
237+
238+
var line = lineno(txt,i1);
239+
return {line,name,args};
240+
241+
}//type2
242+
243+
244+
parse.args = function(txt,i1){
245+
246+
var i2 = txt.indexOf('(',i1);
247+
var i3 = txt.indexOf(')',i2);
248+
var args = txt.slice(i2-1,i3+1);
249+
args = args.replace(' ','');
250+
return args;
251+
252+
}//args
253+
254+
255+
parse.label = function(txt){
256+
}//label
257+
258+
259+
//:
260+
261+
262+
function valid(str){
263+
264+
var regex = /^[a-zA-Z_$][0-9a-zA-Z_$]*$/
265+
var result = regex.test(str);
266+
return result;
267+
268+
}//valid
269+
270+
271+
function line(txt,i){
272+
273+
var start = 0;
274+
var end = i;
275+
var substring = str.slice(start,end);
276+
var newlines = substring.match(/\r\n|\n|\r/g);
277+
var count = newlines ? newlines.length : 0;
278+
return count;
279+
280+
}//line
281+
282+
283+
function ws(txt,i1){
284+
285+
var regex = /\s*/y;
286+
regex.lastIndex = index;
287+
var match = txt.match(regex);
288+
var n = math.length;
289+
return n;
290+
291+
}//ws
292+
293+
294+
295+
296+
297+
298+
299+
300+
301+
302+
303+
304+
305+
306+
307+
308+
309+
310+
311+
312+
313+
73314
return obj;
74315

75316
//code-explorer

0 commit comments

Comments
 (0)