Commit 53b6fbaa68ee754ade082cfb0c3944ddfd6df0cb
1 parent
66d70ca8
make Smalltalk code pretty
Showing
1 changed file
with
25 additions
and
32 deletions
src/squeaknim.nim
... | ... | @@ -80,14 +80,13 @@ template setModulename*(s, prefix: string) = |
80 | 80 | |
81 | 81 | template writeExternalLibrary*() = |
82 | 82 | static: |
83 | - addf(stCode, """ExternalLibrary subclass: #$1 | |
84 | - instanceVariableNames: '' | |
85 | - classVariableNames: '' | |
86 | - poolDictionaries: '' | |
87 | - category: '$1'! | |
88 | - | |
89 | -!$1 class methodsFor: 'primitives' stamp: 'SqueakNim'! | |
90 | -""", gPrefix & capitalize(dllName)) | |
83 | + addf(stCode, "ExternalLibrary subclass: #$1\C" & | |
84 | + "\tinstanceVariableNames: ''\C" & | |
85 | + "\tclassVariableNames: ''\C" & | |
86 | + "\tpoolDictionaries: ''\C" & | |
87 | + "\tcategory: '$1'!\C" & | |
88 | + "!$1 class methodsFor: 'primitives' stamp: 'SqueakNim'!\C", | |
89 | + gPrefix & capitalize(dllName)) | |
91 | 90 | |
92 | 91 | template writeSmallTalkCode*(filename: string) = |
93 | 92 | ## You need to invoke this template to write the produced SmallTalk code to |
... | ... | @@ -162,9 +161,9 @@ macro exportSt*(body: stmt): stmt = |
162 | 161 | st.addf(" $1: $1", name) |
163 | 162 | apicall.add(mapTypeToC(typ)) |
164 | 163 | inc counter |
165 | - apicall.add(") module: '" & dllName & "'>\n" & | |
166 | - "\t^self externalCallFailed.\n!\n\n") | |
167 | - stCode.add(st & "\n\t\"Generated by NimSqueak\"\n\t" & apicall) | |
164 | + apicall.add(") module: '" & dllName & "'>\C" & | |
165 | + "\t^self externalCallFailed\C!\C\C") | |
166 | + stCode.add(st & "\C\t\"Generated by NimSqueak\"\C\t" & apicall) | |
168 | 167 | |
169 | 168 | macro wrapObject*(typ: stmt): stmt = |
170 | 169 | ## Declares a SmallTalk wrapper class. |
... | ... | @@ -181,26 +180,20 @@ macro wrapObject*(typ: stmt): stmt = |
181 | 180 | var fields = "" |
182 | 181 | for i in 0.. < t.len: |
183 | 182 | expectKind t[i], nnkSym |
184 | - fields.addf "\t($# '$#')\n", $t[i], mapTypeToC(t[i]) | |
185 | - | |
186 | - let st = """ExternalStructure subclass: #$1 | |
187 | - instanceVariableNames: '' | |
188 | - classVariableNames: '' | |
189 | - poolDictionaries: 'FFIConstants' | |
190 | - category: '$2'! | |
191 | - | |
192 | -$1 class | |
193 | - instanceVariableNames: ''! | |
194 | - | |
195 | - !$1 class methodsFor: 'field definition' stamp: 'SqueakNim'! | |
196 | - fields | |
197 | - ^#( | |
198 | -$3 | |
199 | - )! ! | |
200 | - | |
201 | - $1 defineFields. | |
202 | - | |
203 | -""" % [name, dllName, fields] | |
183 | + fields.addf "\t\t($# '$#')\C", $t[i], mapTypeToC(t[i]) | |
184 | + | |
185 | + let st = ("ExternalStructure subclass: #$1\C" & | |
186 | + "\tinstanceVariableNames: ''\C" & | |
187 | + "\tclassVariableNames: ''\C" & | |
188 | + "\tpoolDictionaries: 'FFIConstants'\C" & | |
189 | + "\tcategory: '$2'!\C\C" & | |
190 | + "$1 class\C" & | |
191 | + "\tinstanceVariableNames: ''!\C\C" & | |
192 | + "!$1 class methodsFor: 'field definition' stamp: 'SqueakNim'!\C" & | |
193 | + "\tfields\C" & | |
194 | + "\t^#(\C" & | |
195 | + "$3\C" & | |
196 | + "\t)! !\C" & | |
197 | + "$1 defineFields.\C!\C\C") % [name, dllName, fields] | |
204 | 198 | stCode.add(st) |
205 | 199 | result = newStmtList() |
206 | - | ... | ... |