Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program Parser;
- function GetLevel(skill: string): string;
- begin
- case skill of
- 'ATTACK': Result := 'player''s attack';
- 'STRENGTH': Result := 'player''s strength';
- // etc
- else
- Result := ''
- end;
- end;
- function Parse(input: string): string;
- var
- s, r, tmp: string;
- t: Integer;
- skills: TStringArray;
- all: Boolean;
- begin
- repeat
- s := Between('{LVL_', '}', input);
- if s = '' then
- Break;
- all := True;
- if (Pos('+', s) <> 0) then
- skills := Explode('+', s)
- else if (Pos('-', s) <> 0) then
- begin
- skills := Explode('-', s);
- all := False;
- end
- else
- skills := [s];
- tmp := '';
- if all then
- begin
- for t := 0 to High(skills) do
- tmp := tmp + GetLevel(skills[t]) + ' ';
- end
- else
- tmp := GetLevel(skills[Random(Length(skills))]) + ' ';
- t := Pos('{LVL_', input);
- input := Copy(input, 1, t - 1) + tmp + Copy(input, Pos('}', input) + 1, Length(input));
- until False;
- repeat
- s := Between('{ANSWER_', '}', input);
- if s = '' then
- Break;
- if (Pos('~', s) <> 0) then
- skills := Explode('~', s)
- else
- skills := [s];
- tmp := skills[Random(Length(skills))] + ' ';
- t := Pos('{ANSWER_', input);
- input := Copy(input, 1, t - 1) + tmp + Copy(input, Pos('}', input) + 1, Length(input));
- until False;
- Result := input;
- end;
- begin
- ClearDebug;
- Writeln(Parse('Oh hey {ANSWER_meow~woof~bark}there!'));
- end.
Add Comment
Please, Sign In to add comment