Skip to content

Commit 88e7ec7

Browse files
committed
- added multiline strings in text format that are indented with tab
1 parent 166ea9c commit 88e7ec7

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed

Common/Tracery.Text.swift

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,9 +134,11 @@ struct TextParser {
134134
var rule = ""
135135
var buffer = ""
136136
var inmulti = false
137+
var inmultiTab = false
137138

138139
for line in lines {
139140

141+
140142
// if line.hasPrefix("//") {
141143
//// let testString = "This string is a curse"
142144
// let expr = line.matches(for: "\\/\\/([^=]+)=([^=]+)")
@@ -146,6 +148,25 @@ struct TextParser {
146148
// }
147149
//// buffer = testString.replaceMatches(for: expr[0][1], template: expr[0][2])
148150
// }
151+
152+
if line.hasPrefix("\t") {
153+
inmultiTab = true
154+
if buffer.count > 0 {
155+
buffer = buffer + "\n" + line.trimmingCharacters(in: CharacterSet(charactersIn: "\t"))
156+
} else {
157+
buffer = line.trimmingCharacters(in: CharacterSet(charactersIn: "\t"))
158+
}
159+
continue
160+
} else {
161+
if inmultiTab {
162+
inmultiTab = false
163+
if rule != "" {
164+
ruleSet[rule]!.append(buffer)
165+
buffer = ""
166+
continue
167+
}
168+
}
169+
}
149170

150171
if line.hasPrefix("'''") {
151172
if !inmulti {
@@ -156,6 +177,7 @@ struct TextParser {
156177
inmulti = false
157178
if rule != "" {
158179
ruleSet[rule]!.append(buffer)
180+
buffer = ""
159181
continue
160182
} else {
161183
warn("line '\(buffer)' has no valid rule")
@@ -196,6 +218,12 @@ struct TextParser {
196218
}
197219
}
198220

221+
// if there is no newline after the last multiline element
222+
223+
if rule != "" && buffer != "" {
224+
ruleSet[rule]!.append(buffer)
225+
}
226+
199227
return ruleSet
200228
}
201229

0 commit comments

Comments
 (0)