]> git.saurik.com Git - cycript.git/blob - Filter.sh
Cycript's lexer does not need to be "interactive".
[cycript.git] / Filter.sh
1 #!/usr/bin/env bash
2
3 # Cycript - Optimizing JavaScript Compiler/Runtime
4 # Copyright (C) 2009-2013 Jay Freeman (saurik)
5
6 # GNU General Public License, Version 3 {{{
7 #
8 # Cycript is free software: you can redistribute it and/or modify
9 # it under the terms of the GNU General Public License as published
10 # by the Free Software Foundation, either version 3 of the License,
11 # or (at your option) any later version.
12 #
13 # Cycript is distributed in the hope that it will be useful, but
14 # WITHOUT ANY WARRANTY; without even the implied warranty of
15 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 # GNU General Public License for more details.
17 #
18 # You should have received a copy of the GNU General Public License
19 # along with Cycript. If not, see <http://www.gnu.org/licenses/>.
20 # }}}
21
22 filters=("$@")
23
24 while IFS= read -r line; do
25 if [[ ${line} = @if* ]]; then
26 line=${line#@if }
27 for name in "${filters[@]}"; do
28 if [[ ${line} = ${name}' '* ]]; then
29 echo "${line#${name} }"
30 fi
31 done
32 elif [[ ${line} = @begin* ]]; then
33 set ${line}; shift
34 filter=
35 for name in "${filters[@]}"; do
36 for side in "$@"; do
37 if [[ ${name} == ${side} ]]; then
38 unset filter
39 fi
40 done
41 done
42 elif [[ ${line} = @end ]]; then
43 unset filter
44 elif [[ -z ${filter+@} ]]; then
45 echo "${line}"
46 fi
47 done