Index: compiled/filter/RegExpFilter.cpp |
=================================================================== |
--- a/compiled/filter/RegExpFilter.cpp |
+++ b/compiled/filter/RegExpFilter.cpp |
@@ -10,17 +10,19 @@ |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
* GNU General Public License for more details. |
* |
* You should have received a copy of the GNU General Public License |
* along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. |
*/ |
+#include <cctype> |
#include <climits> |
+#include <cstdio> |
#include <emscripten.h> |
#include "RegExpFilter.h" |
#include "../StringScanner.h" |
#include "../StringMap.h" |
namespace |
@@ -337,21 +339,36 @@ void RegExpFilter::ParseSitekeys(const S |
{ |
if (scanner.position() > start) |
AddSitekey(DependentString(sitekeys, start, scanner.position() - start)); |
start = scanner.position() + 1; |
} |
} |
} |
-void RegExpFilter::InitJSTypes() |
+void RegExpFilter::GenerateCustomBindings() |
{ |
- EM_ASM(exports.RegExpFilter.typeMap = {};); |
+ printf("exports.RegExpFilter.typeMap = {\n"); |
+ |
+ OwnedString type; |
+ char type_cstr[256]; |
for (auto it = typeMap.begin(); it != typeMap.end(); ++it) |
hub
2017/03/31 02:57:22
Shouldn't we use a range iterator here (with const
Wladimir Palant
2017/04/04 14:26:01
Done.
|
- EM_ASM_ARGS(exports.RegExpFilter.typeMap[readString($0).replace("-", "_").toUpperCase()] = $1, &(it->first), it->second); |
+ { |
+ type = it->first; |
+ for (int i = 0; i < type.length(); i++) |
+ { |
+ if (type[i] == '-') |
+ type_cstr[i] = '_'; |
+ else |
+ type_cstr[i] = toupper(type[i]); |
+ } |
hub
2017/03/31 02:57:22
Also we don't check that i or type.length() is < 2
Wladimir Palant
2017/04/04 14:26:01
I didn't really want to bother but let's do a prop
|
+ type_cstr[type.length()] = 0; |
+ printf(" %s: %i,\n", type_cstr, it->second); |
+ } |
+ printf("};\n"); |
} |
RegExpFilter::DomainMap* RegExpFilter::GetDomains() const |
{ |
if (!mData.DomainsParsingDone()) |
{ |
ParseDomains(mData.GetDomainsSource(mText), u'|'); |
mData.SetDomainsParsingDone(); |