-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathmarkup.fs
91 lines (78 loc) · 1.57 KB
/
markup.fs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
\ Markup language for text
\ (c)copyright 2014 by Gerald Wodni
: markup-char ( x -- )
case
[char] r of $2F0000 text-color ! endof
[char] g of $002F00 text-color ! endof
[char] b of $00002F text-color ! endof
[char] c of $002828 text-color ! endof
[char] m of $280028 text-color ! endof
[char] y of $282800 text-color ! endof
[char] w of $282828 text-color ! endof
[char] : of bold endof
[char] . of regular endof
[char] 1 of 8px font ! endof
[char] 2 of 8px-cond font ! endof
endcase
;
: m-length ( c-addr n -- )
0 -rot
bounds ?do
i c@ c-pos c@ 1+ ." L:" . cr
loop ;
: m-length ( c-addr n -- )
0 -rot
bounds ?do
\ control sequence
i c@ dup [char] \ = if
drop \ drop backspace
i 1+ c@
markup-char
2
\ normal char, get length
else
\ dup emit
c-pos c@
\ ." L:" dup . cr
1+ boldness @ *
+
1
then
+loop ;
: markup ( c-addr n -- )
bounds ?do
\ control sequence
i c@ dup [char] \ = if
drop \ drop backspace
i 1+ c@
markup-char
2
\ normal char
else
d-emit 1
then
+loop ;
: m( [char] ) parse markup flush immediate ;
: m" postpone s" postpone markup flush immediate ;
: >m-scroll ( c-addr n -- )
2dup m-length 1+ 0 do
i 0 offset-column
buffer-off
2dup markup flush
100 ms
loop 2drop ;
: ms( [char] ) parse >m-scroll immediate ;
: hallo s" \w\2h\ra\b\1al\:l\.\co" ;
: mcr ( c-addr n -- )
2dup type cr m-length cr . cr ;
: test
clear
hallo markup flush
s" h" mcr
s" \w\2h" mcr
s" \w\2\rh" mcr
s" \w\2\rh\ra" mcr
s" \w\2\rh\ra\b\1a" mcr
s" \w\2\rh\ra\b\1al" mcr
hallo >m-scroll
;