BetweenFlags.jl

BetweenFlags.jl is a text-grepping tool that can be used with greedy or scope-aware configurations.

Greedy

using BetweenFlags

flag_set = FlagSet([
            FlagPair{GreedyType}(
                StartFlag("{", [""], [""]),
                StopFlag("}", [""], [""])
            )
          ]);

text = "Foo, {bar {foobar} baz}, foobaz...";

token_stream = TokenStream(text, flag_set);

token_stream("{-}")
"{bar {foobar}"

Scope-aware

using BetweenFlags

flag_set = FlagSet([
            FlagPair{ScopeType}(
                StartFlag("{", [""], [""]),
                StopFlag("}", [""], [""])
            )
          ]);

text = "Foo, {bar {foobar} baz}, foobaz...";

token_stream = TokenStream(text, flag_set);

token_stream("{-}")
"{bar {foobar} baz}"