aboutsummaryrefslogtreecommitdiff
path: root/src/interp/io.boot
diff options
context:
space:
mode:
Diffstat (limited to 'src/interp/io.boot')
-rw-r--r--src/interp/io.boot16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/interp/io.boot b/src/interp/io.boot
index c9fdb800..1e94a4be 100644
--- a/src/interp/io.boot
+++ b/src/interp/io.boot
@@ -55,6 +55,9 @@ macro tabChar? c ==
blankChar? c ==
spaceChar? c or tabChar? c
+carriageRetChar? c ==
+ c = abstractChar 13
+
--%
--% String manipulation routines.
@@ -76,3 +79,16 @@ trimTrailingBlank line ==
n := n - 1
n = sz => line
subString(line,0,n)
+
+trimCarriageReturn line ==
+ carriageRetChar? line.maxIndex(line) =>
+ subString(line,0,maxIndex line)
+ line
+
+expandLeadingTabs line ==
+ not string? line or #line = 0 => line
+ line := trimCarriageReturn line
+ nbLoc := firstNonblankCharPosition line
+ indLoc := indentationLocation line
+ nbLoc = indLoc => line
+ strconc(makeString(indLoc,char " "), subString(line,nbLoc))