OSDN Git Service

Merge branch 'kitagawa_test' into kitagawa_nfss
[luatex-ja/luatexja.git] / tool / table_jisx0208.tex
1 %#! euptex -shell-escape
2 \catcode`\!=1
3 \catcode`\?=2
4 \immediate\openout1=jisx0208_1.lua
5 \def\OUT{\immediate\write1}
6 \catcode`@11
7 \def\@firstoftwo#1#2{#1}
8 \def\@secondoftwo#1#2{#2}
9 \def\ifnumcomp#1#2#3{%
10         \ifnum\numexpr#1\relax#2\numexpr#3\relax
11                 \expandafter\@firstoftwo
12         \else
13                 \expandafter\@secondoftwo
14         \fi
15 }
16 \def\truncdiv#1#2{%
17         \ifnumcomp{#1}<{(#1)/(#2)*(#2)}{%
18                 \numexpr(#1)/(#2)-1%
19         }{%
20                 \numexpr(#1)/(#2)%
21         }%
22 }
23 \def\hex#1{%
24         \ifnumcomp{#1}<0{}{\hn@i{#1}{}}%
25 }
26 \def\hn@i#1#2{%
27         \ifnumcomp{#1}<{16}
28         {%
29                 \hn@digit{#1}#2%
30         }{%
31                 \expandafter\hn@ii\expandafter{%
32                         \the\numexpr\truncdiv{#1}{16}%
33                 }{#1}{#2}%
34         }%
35 }
36 \def\hn@ii#1#2#3{%
37         \expandafter\hn@i\expandafter{%
38                 \number\numexpr#1\expandafter\expandafter\expandafter
39                 \expandafter\expandafter\expandafter\expandafter}%
40                 \expandafter\expandafter\expandafter\expandafter
41                 \expandafter\expandafter\expandafter{%
42                         \hn@digit{(#2)-16*(#1)}#3}%
43 }
44 \begingroup
45 \catcode`012\catcode`112\catcode`212\catcode`312\catcode`412
46 \catcode`512\catcode`612\catcode`712\catcode`812\catcode`912
47 \catcode`A12\catcode`B12\catcode`C12\catcode`D12\catcode`E12
48 \catcode`F12
49 \gdef\hn@digit#1{%
50         \ifcase\numexpr#1\relax 0%
51         \or \expandafter 1%
52         \or \expandafter 2%
53         \or \expandafter 3%
54         \or \expandafter 4%
55         \or \expandafter 5%
56         \or \expandafter 6%
57         \or \expandafter 7%
58         \or \expandafter 8%
59         \or \expandafter 9%
60         \or \expandafter A%
61         \or \expandafter B%
62         \or \expandafter C%
63         \or \expandafter D%
64         \or \expandafter E%
65         \or \expandafter F%
66         \fi
67 }
68 \endgroup
69
70
71 \catcode`\{=12
72 \catcode`\}=12
73 \def\folio!?
74
75 \newcount\ku
76 \newcount\ten
77 \newcount\tmp
78 \newcount\tmpa
79 \newcount\tmpb
80 \font\tt=cmtt10 at 10pt\tt\baselineskip=12pt\parindent=0pt\parskip=0pt
81
82 \catcode`\_=12
83 \OUT!return {?
84 \OUT!version = 3,?
85 \OUT!table_jisx0208_uptex = {?
86
87 \ku=1
88 \loop 
89   \tmp=\ku \multiply\tmp"100 \advance\tmp"2020 %"
90   ! \ten=1
91     \loop
92     \advance\tmp1 
93     \tmpa=\jis\tmp \tmpb=\tmp\advance\tmpb-"2020%"
94     \ifnum\tmpa>0
95        \OUT!  0x\hex\tmpa,?
96     \else       
97        \OUT!  false, -- 0x\hex\tmpb?
98     \fi
99     \advance\ten 1
100     \ifnum\ten<95\relax\repeat
101   ?
102   \advance\ku 1
103 \ifnum\ku<95\relax\repeat
104
105 \OUT!}}?
106 \immediate\closeout1
107 \catcode`\#=12
108 \immediate\openout1=jisx0208_2.tmp
109 \OUT!kpse.set_program_name("luatex")?
110 \OUT!require('lualibs')?
111 \OUT!local t=require('jisx0208_1.lua')?
112 \OUT!local s=t.table_jisx0208_uptex?
113 \OUT!for i=#s,1,-1 do if type(s[i])=='number' then a=i;break end end?
114 \OUT!for i=a+1,#s do s[i]=nil end?
115 \OUT!local f = io.open('ltj-jisx0208.lua', 'w')?
116 \OUT!f:write(table.serialize(t, 'return'))?
117 \OUT!f:close()?
118 \immediate\closeout1
119 \immediate\write18!texlua jisx0208_2.tmp?
120 \immediate\write18!rm jisx0208_2.tmp?
121 \immediate\write18!rm jisx0208_1.lua?
122
123 \end