RosettaCodeData/Task/Mad-Libs/Tbas/mad-libs.tbas
2023-07-01 13:44:08 -04:00

49 lines
1 KiB
Text

SUB BETWEEN$(TXT$, LHS$, RHS$, AFTER)
LET LHS = POS(TXT$, LHS$, AFTER)
IF LHS = 0 THEN
'LHS$ NOT FOUND IN TXT$. RETURN EMPTY STRING
RETURN ""
EXIT SUB
END IF
LET RHS = POS(TXT$, RHS$, LHS + LEN(LHS$))
IF RHS = 0 THEN
'NO RHS$ FOUND IMMEDIATELY AFTER LHS$ IN TXT$. RETURN EMPTY STRING.
RETURN ""
EXIT SUB
END IF
RETURN SEG$(TXT$, LHS + LEN(LHS$), RHS-1)
END SUB
DECLARE SUB REPLACE$(INTHIS$, FINDTHIS$, WITHTHIS$)
LET T = POS(INTHIS$, FINDTHIS$)
RETURN INTHIS$
IF T <> 0 THEN
MID$(INTHIS$, T, LEN(FINDTHIS$)) = WITHTHIS$
RETURN INTHIS$
END IF
END SUB
LET STORY$ = ""
LET STORYLINE$ = ""
WHILE TRUE
LINE INPUT "Enter line of story (empty line to stop)"; STORYLINE$
IF STORYLINE$ = "" THEN
EXIT WHILE
END IF
STORY$ = STORY$ + " " + STORYLINE$
END WHILE
WHILE TRUE
LET TXT$ = ""
LET KEY$ = BETWEEN$(STORY$, "<", ">", 0)
IF KEY$ <> "" THEN
PRINT "PLEASE ENTER A " + KEY$;
LINE INPUT TXT$
LET SRCH$ = "<" + KEY$ + ">"
STORY$ = REPLACE$(STORY$, SRCH$, TXT$)
ELSE
EXIT WHILE
END IF
END WHILE
PRINT STORY$