Updated a6 ideas.
[artemus.git] / misc / art6_ideas.txt
blobee2bfb98b1359a16b2320a03d439c44c11a4667f
1 'navigator'
2 ''
4 'or'
5 %num
6 cfg_index_num
10 [ {or %offset 0} {or %num cfg_index_num} '' 'navigator' $ &#
12 [ { [ 0 'offset' % 'or' $ &# } { [ 'cfg_index_num' $ 'num' % 'or' $ &# }
13     '' 'navigator' $ &#
15 MARK
16 MARK, CALL n
17 MARK, CALL n, CALL m
18 MARK, CALL n, CALL m, LITERAL
19 MARK, CALL n, CALL m, LITERAL, LITERAL
20 MARK, CALL n, CALL m, LITERAL, ADDRESS
22 {'navigator'
23     { " '' }
24     { 'or' { % 'num' & 'cfg_index_num' }}
25     { 'or' { % 'num' " 0}}
28 & 'navigator' 3 & 'or' 2 
30 '<div class = navigator>' ?
31 '0' 'offset' % or
32 'cfg_index_num' & 'num' % or
33 '' '3' 'navigator' &#
34 '</div>' ?
36 navigator
37 ---------
40     '<span class = prev>' ?
42     'Newer posts' @
44     $1 $2 sub
45     'offset'
46     $0
47     'topic'
48     't' % 'INDEX' or
49     5 'url' &#
51     2 'link' &#
53     '</span>' ?
56     $2
57 } if
60     '<span class = next>' ?
62     'Older posts' @
64     $1 $2 add
65     'offset'
66     $0
67     'topic'
68     't' % 'INDEX' or
69     5 'url' &#
71     2 'link' &#
73     '</span>' ?
76     $1 $2 add
77     $1
78     $0 'cfg_index_topics' $ or
79     3 'stories_by_date' &#
80     size
81 } if
84     '<a href = "' ?
85     $0 ?
86     '">' ?
87     $1 ?
89 'link' def
91 304 1 'set_http_status' &#
93 'sid' $ "sid=" . 1 'set_cookie' &#
95 {set_cookie {. "sid=" sid}}
97 {foreach
98     {stories_by_date %topic 0 0}
99     {
100     }
103 { 0 0 'topic' % 3 'stories_by_date' &# } foreach
105 {stories_by_date {or $0 cfg_index_topics} $1 {add $2 $1}
106     {
107         '<url><loc>' ?
108         {aurl 'STORY' 'topic' $0 'id' $1} ?
109         '</loc></url>' ?
110     }
113 {topics {
114     '<url><loc>'
115     {aurl 'TOPIC' 'topic' $0}
116     '</loc></url>'
117     }
121     '<url><loc>' ?
122     $0 'topic' 'TOPIC' 3 'aurl' &# ?
123     '</loc></url>' ?
124 } 1 'topics' &#
128     [
129     '</loc></url>'
130     [ $1 'id' $0 'topic' 'TOPIC' 'aurl' &
131     '<url><loc>'
132     ?
133 } 'stories_by_date' &
135 out(
136     '<url><loc>',
137     aurl('TOPIC', 'topic', $0),
138     '</loc></url>'
141 if($2,
142     out(
143         '<span class = prev>',
144         link(
145             url(
146                 or(%t, 'INDEX'),
147                 'topic',
148                 $0,
149                 'offset',
150                 sub($2, $1)
151             ),
152             @("Newer posts")
153         ),
154         '</span>'
155     )
159     size(stories_by_date(or($0, cfg_index_topics), $1, add($2, $1))),
160     out(
161         '<span class = next',
162         link(
163             url(
164                 or(%t, 'INDEX'),
165                 'topic',
166                 $0,
167                 'offset'
168                 add($2, $1)
169             ),
170             @("Older posts")
171         ),
172         '</span>'
173     )
177 size
178 stories_by_date
182 cfg_index_topics
190 '<span class = next>'
191 link
196 'INDEX'
197 'topic'
199 'offset'
205 "Older posts"
207 '<span>'
212     '</span>'
213     [
214         "Older posts" @
215         [
216             $1 $2 add 'offset' $0 'topic' 'INDEX' 't' % or
217         'url' &
218     'link' &
219     '<span class = next>'
223     $1 $2 add
224     $1
225     [
226     'cfg_index_topics' & $0 or
227 'stories_by_date' &
228 size
231 stories_by_date(
232     &out(
233         '<url><loc>',
234         aurl('STORY', 'topic', $0, 'id', $1),
235         '</loc></url>'
236     )
239     &out(
240         '<url><loc>',
241         aurl('STORY', 'id', $0),
242         '</loc></url>'
243     )
246 SITEMAP:
249     content_type("application/rss+xml")
251     transfer_encoding("chunked")
253     out(
254         '<?xml version="1.0" encoding="UTF-8?>',
255         '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">',
257         '<url><loc>',
258         aurl,
259         '</loc></url>',
261         stories_by_date(
262             &out(
263                 '<url><loc>',
264                 aurl('STORY', 'id', $0),
265                 '</loc></url>'
266             )
267         ),
269         topics(
270             &out(
271                 '<url><loc>',
272                 aurl('TOPIC', 'id', $0),
273                 '</loc></url>'
274             )
275         ),
277         '</urlset>'
278     )
282     let('count', 0)
284     channel(
285         borodin,
286         &out(
287             '<url><loc>',
288             aurl('STORY', 'id', $0),
289             '</loc></url>'
290         ),
291         'cmd',      'stories_by_date'
292     )
294 channel
295 borodin
299     '<url><loc>',
300     aurl
301         'STORY'
302         'id'
303         $0
304     [
305     '</loc></url>'
308 'cmd'
309 'stories_by_date'
312 [ 'stories_by_date' 'cmd'
313     { [ '</loc></url>' [ $0 'id' 'STORY' 'aurl' & '<url><loc>' out }
314 [ 'borodin' &
315 channel
317 channel_send(borofd, 'cmd', 'topics')
319 channel_recv(borofd,
320     &out(
321         '<url><loc>',
322         aurl('STORY', 'id', $0),
323         '</loc></url>'
324     )
327 [ 'topics' 'cmd' 'borofd' & channel_send
329 { [ '</loc></url>' [ $0 'id' 'STORY' 'aurl' &] '<url><loc>' out }
330 'borofd' & channel_recv
332 SEARCH_IMAGE
333 ------------
336     assert_admin()
338     out(
339         header,
340         column1,
341         column2,
342         '<div class = main>'
343         main_top,
344         '<h1>',
345         @("Search image by name"),
346         '</h1>',
347         search_image_form,
348         add(1, 2)
349     )
351     out
352         'header' &
353         'column1' &
354         'column2' &
355         '<div class = main>'
356         'main_top' &
357         '<h1>'
358         'Search image by name' @
359         '</h1>'
360         'search_image_form' &
361         2 1 add
362     [
364     search_image(
365         &out(
366             '<p><b>',
367             $0,
368             '</b><br><img src = "http://',
369             cfg_host_name,
370             '/img/',
371             $0,
372             '" alt = "',
373             $0,
374             '" title = "',
375             $0,
376             '"></p>'
377         ),
378         %query
379     )
381     out(
382         search_hits,
383         main_bottom,
384         'div',
385         footer
386     );
389     channel_send(
390         borodb,
391         'cmd',          'search_image',
392         'query',        %query
393     )
395     [ 'query' % 'query' 'search_image' 'cmd' 'borodb' & channel_send
397     channel_recv(
398         borodb,
399         &out(
400             '<p><b>',
401             $0,
402             '</b><br><img src = "http://',
403             cfg_host_name,
404             '/img/',
405             $0,
406             '" alt = "',
407             $0,
408             '" title = "',
409             $0,
410             '"></p>'
411         )
412     )
414     [ { [ '</b><br><img src = "http://' $0 '<p><b>' out } 'borodb' & channel_recv
416     if (eq(HTTP_REQUEST_METHOD, 'GET'),
417         out(coco)
418         foreach(array, out($0))
419     )
421     { [ 'coco' & out { [ $0 out } 'array' & foreach}
422         'HTTP_REQUEST_METHOD' & 'GET' eq if
424     set('link',
425         &out(
426             '<a href = "',
427             $0,
428             '">',
429             $1,
430             '</a>'
431         )
432     )
434     { [ '</a>' $1 '">' $0 '<a href = "' out } 'link' set
436     def('link',
437         out($0)
438         out($1)
439         out("---")
440     )
442     { [ $0 out [ $1 out [ "---" out } 'link' =
444     set('link',
445         out($0)
446         out($1)
447         out("---")
448     )
450     [ $0 out [ $1 out [ "---" out 'link' =
452     set('v', 10)
454     10 'v' =
456     local('v', 10)
458 init
459 ----
461 <{ open('borodb', 'localhost', '1234') cgi_init() }>
463 header
464 ------
466 <{init}><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
467        "http://www.w3.org/TR/REC-html40/loose.dtd">
468 <html>
473 INDEX
474 -----
476 #!/usr/bin/env art6
478     header
479     column1
480     column2
483 <div class = 'main'>
485     <{
486         main_top
488         if (story_exists('info', 'index'),
489             story_body('info', 'index'),
490             index()
491         )
493         main_bottom
494     }>
496 </div>
498 <{footer}>
500 story_exists
501 ------------
505     chan_send('borodb',
506         'cmd',              'story_exists',
507         'topic',            $0,
508         'id'                $1
509     )
511     chan_recv('borodb',
512         return($1)
513     )
517 story_body
518 ----------
521     send('borodb',
522         'cmd',          'story_body',
523         'topic',        $0,
524         'id',           $1
525     )
527     recv('borodb', return($1))
530 def('story_body',
531     send('borodb',
532         'cmd',          'story_body',
533         'topic',        $0,
534         'id',           $1
535     )
537     recv('borodb', return($1))
540 send('borodb',
541     'cmd',      'topics',
542     'key',      'id',
543     'key',      'title'
546 out('<ul>')
548 recv('borodb',
549     out(
550         '<li>',
551         link(
552             url(
553                 'TOPIC', 'topic', id
554             ),
555             title
556         ),
557         '</li>'
558     )
561 def('link',
562     cat('<a href = "', $0, '">', $1, '</a>')
565 <a href = "<{$0}>"><{$1}></a>
567 out('</ul>')
570     [
571         '</li>'
572         [
573             'title' $
574             [
575                 'id' $
576                 'topic'
577                 'TOPIC'
578             'url' &
579         'link' &
580         '<li>'
581     out
582 } 'borodb' recv
584 set('n', 0)
586 while (lt(n, 100),
587     out('value: ')
588     out(n)
589     set('n', add(n, 1))
592 if (ne(HTTP_COOKIE, ''),
593     send('db',
594         'cmd',      'user_by_sid',
595         'sid',      sid
596     )
598     recv('db',
599         set_logged_user(user)
600     )
603 set(etag, cat('"', out_crc16, '"'))
605 if (eq(HTTP_IF_NONE_MATCH, out_crc16),
606     http_status(304)
607     set('body', ''),
609     http_headers(
610         'ETag',             etag,
611         'Cache-Control',    'max-age=300'
612     )
616 foreach (http_headers,
617     out($0, ': ', $1, "\n")
619 out("\n")
621 if (use_gzip,
623 C API
624 -----
626     struct a6_m a6m;
628     char *prg = "{[@0?[@1?['---\0?}'link\0=";
630     a6_prog(a6m, prg);
632     a6_run(a6m, 150);
634     char *prg2 = "['Triptico\0'http://triptico.com\0\0'link\0&?";
636     /* even variables are programs */
637     char *prg3 = "{'angel\0}'user\0='user&?";
639     char *prg4 = "{['</a>\0$1'">\0$0'<a href = "\0?}'link\0=";
641     [ 'Triptico 'http://triptico.com [ '</a> $1 '"> $0 '<a href = "
643     ?('result is: ', /(10, 2), '!!!')
644     def('link', ~('<a href = "', $0, '">', $1, '"</a>'))
645     def('url', ~('http://', $0))
646     link(url('triptico.com'), 'Triptico')
648     ['!!!\0['2\0'10\0/'Result is: \0?
650     ['Triptico\0['triptico.com\0'url\0&'link\0&
652     {['<a href =\0$0'">\0$1'"</a>\0~}'link\0=
653     {[$0'http://\0~}'url\0=
655 ARCfour
656 -------
659     arcfour_byte, {
660         /* i = (i + 1) & 0xff; */
661         =(i, &(+(i, 1), 0xff))
662         /* j = (j + S[i]) & 0xff; */
663         =(j, &(+(j, .(S, i)), 0xff))
664         /* t = S[i]; S[i] = S[j]; S[j] = t; */
665         =(t, .(S, i)) =(.(S, i), .(S, j)) =(.(S, j), t)
666         /* t = (S[i] + S[j]) & 0xff; */
667         =(t, &(+(.(S, i), .(S, j)), 0xff))
668         /* K = S[t]; */
669         =(K, .(S, t))
670     }
673 =(i, and(add(i, 1), 0xff))
674 i = and(add(i, 1), 0xff)
676     ['i\000[['i\000$'1\000+'0xff\000&=Z
677     ['K\000['S\000't\000$.=
679     ['arcfour_byte\000{['i\000[['i\000'1\000+'0xff\000&=Z'S\000't\000$.}=Z
681 =(c,^(get_char(f), arcfour_byte()))
683     ['c\000[['f\000$'get_char\000$&['arcfour_byte\000$&^=Z
685 =(.(S, j), t)
686 =(S, j, t)