User Tools

Site Tools


Passage markup










data structure

date and time

game state






showing and hiding





Types of data

Special keywords

Special passage tags


String data

A string is just a block of text - a bunch of text characters strung together.

When making a story, you'll mostly work with strings that you intend to insert into the passage source. If a string contains markup, then the markup will be processed when it's inserted. For instance, "The ''biiiiig'' bellyblob" will print as “The <b>biiiiig</b> bellyblob”. Even macro calls inside strings will be processed: printing "The (print:2*3) bears" will print “The 6 bears”. If you wish to avoid this, simply include the verbatim markup inside the string:"`It's (exactly: as planned)`" will print “It's (exactly: as planned)”.

You can add strings together to join them: "The" + ' former ' + "Prime Minister's" pushes the strings together, and evaluates to “The former Prime Minister's”. Notice that spaces had to be added between the words in order to produce a properly spaced final string. Also, notice that you can only add strings together. You can't subtract them, much less multiply or divide them.

Strings are similar to Array, in that their individual characters can be accessed: "ABC"'s 1st evaluates to “A”, "Gosh"'s 2ndlast evaluates to “s”, and "Exeunt"'s last evaluates to “t”. They, too, have a “length”: "Marathon"'s length is 8. If you don't know the exact position of a character, you can use an expression, in brackers, after it: $string's ($pos - 3). And, you can access a substring by providing an array of positions in place of a single position: "Dog"'s (a: 2,3) is “og”.

Also, you can use the contains and is in operators to see if a certain string is contained within another: "mother" contains "moth" is true, as is "a" is in "a". Again, like arrays, strings have special any and all data names which can be used with contains and is in to check all their characters - all of $string is not "w" is true if the string doesn't contain “w”, and $string contains any of "aeiou" is true if the string contains those five letters.

To summarise, here are the operations you can perform on strings.

Operator Meaning Example
+ Joining. “A” + “Z” (is “AZ”)
is Evaluates to boolean true if both sides are equal, otherwise false. $name is “Frederika”, any of “Buxom” is “x”
is not Evaluates to boolean true if both sides are not equal, otherwise false. $friends is not $enemies, all of “Gadsby” is not “e”
contains Evaluates to boolean true if the left side contains the right side, otherwise false. “Fear” contains “ear”
is in Checking if the right string contains the left string, otherwise false. “ugh” is in “Through”
's Obtaining the character or substring at the right numeric position. “YO”'s 1st (is “Y”), “PS”'s (2) (is “S”), “ear”'s (a: 2,3) (is “ar”)
of Obtaining the character at the left numeric position. 1st of “YO” (is “Y”), (2) of “PS” (is “S”), (a: 2,3) of “ear” (is “ar”)
harlowe/string.txt · Last modified: 2017/10/09 20:39 (external edit)