Index: compiled/filter/RegExpFilter.cpp |
=================================================================== |
--- a/compiled/filter/RegExpFilter.cpp |
+++ b/compiled/filter/RegExpFilter.cpp |
@@ -10,17 +10,20 @@ |
* 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 <string> |
#include <emscripten.h> |
#include "RegExpFilter.h" |
#include "../StringScanner.h" |
#include "../StringMap.h" |
namespace |
@@ -341,21 +344,28 @@ 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 = {};); |
- for (auto it = typeMap.begin(); it != typeMap.end(); ++it) |
- EM_ASM_ARGS(exports.RegExpFilter.typeMap[readString($0).replace("-", "_").toUpperCase()] = $1, &(it->first), it->second); |
+ printf("exports.RegExpFilter.typeMap = {\n"); |
+ |
+ for (const auto& item : typeMap) |
+ { |
+ std::string type(item.first.length(), '\0'); |
+ for (int i = 0; i < item.first.length(); i++) |
+ type[i] = (item.first[i] == '-' ? '_' : toupper(item.first[i])); |
+ printf(" %s: %i,\n", type.c_str(), item.second); |
+ } |
+ printf("};\n"); |
} |
RegExpFilter::DomainMap* RegExpFilter::GetDomains() const |
{ |
if (!mData.DomainsParsingDone()) |
{ |
ParseDomains(mData.GetDomainsSource(mText), u'|'); |
mData.SetDomainsParsingDone(); |