1if not modules then modules = { } end modules [ ' syst-con ' ] = {
2 version = 1 . 001 ,
3 comment = " companion to syst-con.mkiv " ,
4 author = " Hans Hagen, PRAGMA-ADE, Hasselt NL " ,
5 copyright = " PRAGMA ADE / ConTeXt Development Team " ,
6 license = " see context related readme files "
7}
8
9local tonumber = tonumber
10local math = math
11local utfchar = utf . char
12local gsub = string . gsub
13
14converters = converters or { }
15local converters = converters
16
17local context = context
18local commands = commands
19local implement = interfaces . implement
20
21local formatters = string . formatters
22
23
27
28function converters . hexstringtonumber ( n ) tonumber ( n , 16 ) end
29function converters . octstringtonumber ( n ) tonumber ( n , 8 ) end
30
31function converters . rawcharacter ( n ) utfchar ( 0x110000 + n ) end
32
33local lchexnumber = formatters [ " %x " ]
34local uchexnumber = formatters [ " %X " ]
35local lchexnumbers = formatters [ " %02x " ]
36local uchexnumbers = formatters [ " %02X " ]
37local octnumber = formatters [ " %03o " ]
38local nicenumber = formatters [ " %0.6F " ]
39
40converters . lchexnumber = lchexnumber
41converters . uchexnumber = uchexnumber
42converters . lchexnumbers = lchexnumbers
43converters . uchexnumbers = uchexnumbers
44converters . octnumber = octnumber
45converters . nicenumber = nicenumber
46
47implement { name = " hexstringtonumber " , actions = { tonumber , context } , arguments = { " integer " , 16 } }
48implement { name = " octstringtonumber " , actions = { tonumber , context } , arguments = { " integer " , 8 } }
49
50implement { name = " rawcharacter " , actions = function ( n ) context ( utfchar ( 0x110000 + n ) ) end , arguments = " integer " }
51
52implement { name = " lchexnumber " , actions = { lchexnumber , context } , arguments = " integer " }
53implement { name = " uchexnumber " , actions = { uchexnumber , context } , arguments = " integer " }
54implement { name = " lchexnumbers " , actions = { lchexnumbers , context } , arguments = " integer " }
55implement { name = " uchexnumbers " , actions = { uchexnumbers , context } , arguments = " integer " }
56implement { name = " octnumber " , actions = { octnumber , context } , arguments = " integer " }
57
58implement { name = " sin " , actions = { math . sin , nicenumber , context } , arguments = " number " }
59implement { name = " cos " , actions = { math . cos , nicenumber , context } , arguments = " number " }
60implement { name = " tan " , actions = { math . tan , nicenumber , context } , arguments = " number " }
61
62implement { name = " sind " , actions = { math . sind , nicenumber , context } , arguments = " number " }
63implement { name = " cosd " , actions = { math . cosd , nicenumber , context } , arguments = " number " }
64implement { name = " tand " , actions = { math . tand , nicenumber , context } , arguments = " number " }
65
66
67
68function commands . format ( fmt , ... ) context ( ( gsub ( fmt , " @ " , " %% " ) ) , ... ) end
69
70implement {
71 name = " formatone " ,
72 public = true ,
73 protected = true ,
74 arguments = " 2 strings " ,
75 actions = function ( f , s ) context ( ( gsub ( f , " @ " , " %% " ) ) , s ) end ,
76}
77 |