{"id":9219,"date":"2025-08-08T09:30:47","date_gmt":"2025-08-07T23:30:47","guid":{"rendered":"https:\/\/kijo.flickdevs.com\/?page_id=9219"},"modified":"2025-08-08T09:30:49","modified_gmt":"2025-08-07T23:30:49","slug":"excluder-analyser","status":"publish","type":"page","link":"https:\/\/kijo.flickdevs.com\/es\/excluder-analyser\/","title":{"rendered":"Excluder Analyser"},"content":{"rendered":"\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Excluder Conflict Checker<\/title>\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n  <!-- Bootstrap CSS for WordPress compatibility (optional, can be removed if not wanted) -->\n  <link href=\"https:\/\/cdn.jsdelivr.net\/npm\/bootstrap@5.3.0\/dist\/css\/bootstrap.min.css\" rel=\"stylesheet\">\n  <style>\n    body { background: #f8f9fa; }\n    .container { max-width: 800px; margin: 40px auto; background: #fff; padding: 2rem 2.5rem; border-radius: 12px; box-shadow: 0 2px 12px rgba(0,0,0,0.07);}\n    textarea { font-family: monospace; }\n    .result-section { margin-top: 2rem; }\n    .conflict-list { font-size: 1rem; }\n    .conflict-list li { margin-bottom: 0.5rem; }\n    .summary { font-size: 1.1rem; margin-top: 1.5rem; }\n    .cleaned-list, .removed-list { word-break: break-all; font-size: 0.95rem; background: #f1f3f4; padding: 0.75rem; border-radius: 6px; }\n    .alert { margin-top: 1.5rem; }\n    .footer { margin-top: 2.5rem; font-size: 0.95rem; color: #888; text-align: center; }\n  <\/style>\n<\/head>\n<body>\n  <div class=\"container\">\n    <h1 class=\"mb-4\">Excluder Conflict Checker<\/h1>\n    <p>\n      Paste your <b>comma-separated excluder list<\/b> and <b>comma-separated target items<\/b> below. This tool will check for conflicts and help you clean your excluder list.\n    <\/p>\n    <form id=\"excluderForm\">\n      <div class=\"mb-3\">\n        <label for=\"excluders\" class=\"form-label\">Excluder List (comma-separated):<\/label>\n        <textarea class=\"form-control\" id=\"excluders\" rows=\"3\" placeholder=\"e.g. 190d, 190e, 4runner, ...\"><\/textarea>\n      <\/div>\n      <div class=\"mb-3\">\n        <label for=\"targets\" class=\"form-label\">Target Items (comma-separated):<\/label>\n        <textarea class=\"form-control\" id=\"targets\" rows=\"3\" placeholder=\"e.g. Chevrolet Silverado 1500, Ford F-150, ...\"><\/textarea>\n      <\/div>\n      <button type=\"submit\" class=\"btn btn-primary\">Analyze<\/button>\n    <\/form>\n    <div id=\"results\" class=\"result-section\"><\/div>\n    <div class=\"footer\">\n      &copy; 2025 Excluder Conflict Checker &mdash; WordPress Compatible HTML\n    <\/div>\n  <\/div>\n  <script>\n    function escapeRegExp(string) {\n      return string.replace(\/[.*+?^${}()|[\\]\\\\]\/g, '\\\\$&');\n    }\n\n    function analyzeConflicts(excludersText, targetsText) {\n      \/\/ Parse excluders\n      const excluders = excludersText\n        .split(',')\n        .map(term => term.trim().toLowerCase())\n        .filter(term => term.length > 0);\n\n      \/\/ Parse targets\n      const targets = targetsText\n        .split(',')\n        .map(item => item.trim())\n        .filter(item => item.length > 0);\n\n      if (!excluders.length) {\n        return { error: \"Please enter a comma-separated excluder list.\" };\n      }\n      if (!targets.length) {\n        return { error: \"Please enter a comma-separated target items list.\" };\n      }\n\n      let conflicts = [];\n      let allConflictingExcluders = new Set();\n\n      for (const target of targets) {\n        const targetText = ` ${target.toLowerCase()} `;\n        let conflictingExcluders = [];\n\n        for (const excluder of excluders) {\n          if (!excluder) continue;\n\n          \/\/ Build regex patterns for word boundary and pluralization\n          const excluderPattern = new RegExp(\n            `(\\\\s${escapeRegExp(excluder)}\\\\s)|(\\\\s${escapeRegExp(excluder)}$)|(^${escapeRegExp(excluder)}\\\\s)|(^${escapeRegExp(excluder)}$)`,\n            'i'\n          );\n          const excluderPluralPattern = new RegExp(\n            `(\\\\s${escapeRegExp(excluder)}s\\\\s)|(\\\\s${escapeRegExp(excluder)}s$)|(^${escapeRegExp(excluder)}s\\\\s)|(^${escapeRegExp(excluder)}s$)`,\n            'i'\n          );\n          const excluderEsPattern = new RegExp(\n            `(\\\\s${escapeRegExp(excluder)}es\\\\s)|(\\\\s${escapeRegExp(excluder)}es$)|(^${escapeRegExp(excluder)}es\\\\s)|(^${escapeRegExp(excluder)}es$)`,\n            'i'\n          );\n\n          if (\n            excluderPattern.test(targetText) ||\n            excluderPluralPattern.test(targetText) ||\n            excluderEsPattern.test(targetText)\n          ) {\n            conflictingExcluders.push(excluder);\n          }\n        }\n\n        if (conflictingExcluders.length) {\n          conflicts.push({ target, conflictingExcluders });\n          conflictingExcluders.forEach(e => allConflictingExcluders.add(e));\n        }\n      }\n\n      \/\/ Cleaned excluder list\n      const cleanedExcluders = excluders.filter(e => !allConflictingExcluders.has(e));\n      const removedExcluders = Array.from(allConflictingExcluders).sort();\n\n      return {\n        conflicts,\n        cleanedExcluders,\n        removedExcluders,\n        excludersCount: excluders.length,\n        targetsCount: targets.length\n      };\n    }\n\n    document.getElementById('excluderForm').addEventListener('submit', function(e) {\n      e.preventDefault();\n      const excludersText = document.getElementById('excluders').value;\n      const targetsText = document.getElementById('targets').value;\n      const resultsDiv = document.getElementById('results');\n      resultsDiv.innerHTML = '';\n\n      const result = analyzeConflicts(excludersText, targetsText);\n\n      if (result.error) {\n        resultsDiv.innerHTML = `<div class=\"alert alert-danger\">${result.error}<\/div>`;\n        return;\n      }\n\n      \/\/ Summary\n      let summaryHtml = `\n        <div class=\"summary\">\n          <b>Analyzed:<\/b> ${result.excludersCount} excluder terms<br>\n          <b>Checked:<\/b> ${result.targetsCount} target items<br>\n          <b>Found:<\/b> ${result.conflicts.length} potential conflicts<br>\n          <b>Removed:<\/b> ${result.removedExcluders.length} conflicting excluders<br>\n          <b>Cleaned list contains:<\/b> ${result.cleanedExcluders.length} excluders\n        <\/div>\n      `;\n\n      \/\/ Conflicts\n      let conflictsHtml = '';\n      if (result.conflicts.length) {\n        conflictsHtml += `\n          <div class=\"alert alert-warning\">\n            <b>?? Potential Conflicts Detected!<\/b><br>\n            The following target items may be inadvertently filtered out by excluder terms:\n          <\/div>\n          <ul class=\"conflict-list\">\n        `;\n        for (const { target, conflictingExcluders } of result.conflicts) {\n          conflictsHtml += `<li><b>? ${target}:<\/b> Conflicts with excluder(s): <code>${conflictingExcluders.join(', ')}<\/code><\/li>`;\n        }\n        conflictsHtml += '<\/ul>';\n      } else {\n        conflictsHtml += `\n          <div class=\"alert alert-success\">\n            ? Analysis complete - <b>no conflicts found!<\/b><br>\n            All target items should pass through the excluder filter without issues.\n          <\/div>\n        `;\n      }\n\n      \/\/ Cleaned excluder list\n      let cleanedListHtml = `\n        <div class=\"result-section\">\n          <h5>CLEANED EXCLUDER LIST (conflicts removed):<\/h5>\n          <div class=\"cleaned-list\">${result.cleanedExcluders.join(', ') || '<i>None<\/i>'}<\/div>\n        <\/div>\n      `;\n\n      \/\/ Removed excluders\n      let removedListHtml = '';\n      if (result.removedExcluders.length) {\n        removedListHtml = `\n          <div class=\"result-section\">\n            <h5>REMOVED CONFLICTING EXCLUDERS:<\/h5>\n            <div class=\"removed-list\">${result.removedExcluders.join(', ')}<\/div>\n          <\/div>\n        `;\n      }\n\n      resultsDiv.innerHTML = summaryHtml + conflictsHtml + cleanedListHtml + removedListHtml;\n    });\n  <\/script>\n<\/body>\n<\/html>\n\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Excluder Conflict Checker Excluder Conflict Checker Paste your comma-separated excluder list and comma-separated target items below. This tool will check for conflicts and help you clean your excluder list. Excluder List (comma-separated): Target Items (comma-separated): Analyze &copy; 2025 Excluder Conflict Checker &mdash; WordPress Compatible HTML<\/p>","protected":false},"author":108378207,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"class_list":["post-9219","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v28.7 (Yoast SEO v28.7) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Excluder Analyser - Swoopa<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kijo.flickdevs.com\/es\/excluder-analyser\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Excluder Analyser\" \/>\n<meta property=\"og:description\" content=\"Excluder Conflict Checker Excluder Conflict Checker Paste your comma-separated excluder list and comma-separated target items below. This tool will check for conflicts and help you clean your excluder list. Excluder List (comma-separated): Target Items (comma-separated): Analyze &copy; 2025 Excluder Conflict Checker &mdash; WordPress Compatible HTML\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kijo.flickdevs.com\/es\/excluder-analyser\/\" \/>\n<meta property=\"og:site_name\" content=\"Swoopa\" \/>\n<meta property=\"article:modified_time\" content=\"2025-08-07T23:30:49+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kijo.flickdevs.com\/wp-content\/uploads\/2024\/01\/swoopappicon_144x144.png\" \/>\n\t<meta property=\"og:image:width\" content=\"512\" \/>\n\t<meta property=\"og:image:height\" content=\"512\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minuto\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/kijo.flickdevs.com\\\/excluder-analyser\\\/\",\"url\":\"https:\\\/\\\/kijo.flickdevs.com\\\/excluder-analyser\\\/\",\"name\":\"Excluder Analyser - Swoopa\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/kijo.flickdevs.com\\\/#website\"},\"datePublished\":\"2025-08-07T23:30:47+00:00\",\"dateModified\":\"2025-08-07T23:30:49+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/kijo.flickdevs.com\\\/excluder-analyser\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/kijo.flickdevs.com\\\/excluder-analyser\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/kijo.flickdevs.com\\\/excluder-analyser\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/kijo.flickdevs.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Excluder Analyser\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/kijo.flickdevs.com\\\/#website\",\"url\":\"https:\\\/\\\/kijo.flickdevs.com\\\/\",\"name\":\"Swoopa\",\"description\":\"Instant Marketplace Notifications\",\"publisher\":{\"@id\":\"https:\\\/\\\/kijo.flickdevs.com\\\/#organization\"},\"alternateName\":\"Marketplace Notifications\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/kijo.flickdevs.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/kijo.flickdevs.com\\\/#organization\",\"name\":\"Swoopa\",\"alternateName\":\"Marketplace Notifications\",\"url\":\"https:\\\/\\\/kijo.flickdevs.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/kijo.flickdevs.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/getswoopa.com\\\/wp-content\\\/uploads\\\/2024\\\/01\\\/swoopappicon_144x144.png?fit=512%2C512&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/getswoopa.com\\\/wp-content\\\/uploads\\\/2024\\\/01\\\/swoopappicon_144x144.png?fit=512%2C512&ssl=1\",\"width\":512,\"height\":512,\"caption\":\"Swoopa\"},\"image\":{\"@id\":\"https:\\\/\\\/kijo.flickdevs.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Excluder Analyser - Swoopa","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kijo.flickdevs.com\/es\/excluder-analyser\/","og_locale":"es_ES","og_type":"article","og_title":"Excluder Analyser","og_description":"Excluder Conflict Checker Excluder Conflict Checker Paste your comma-separated excluder list and comma-separated target items below. This tool will check for conflicts and help you clean your excluder list. Excluder List (comma-separated): Target Items (comma-separated): Analyze &copy; 2025 Excluder Conflict Checker &mdash; WordPress Compatible HTML","og_url":"https:\/\/kijo.flickdevs.com\/es\/excluder-analyser\/","og_site_name":"Swoopa","article_modified_time":"2025-08-07T23:30:49+00:00","og_image":[{"width":512,"height":512,"url":"https:\/\/kijo.flickdevs.com\/wp-content\/uploads\/2024\/01\/swoopappicon_144x144.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_misc":{"Tiempo de lectura":"1 minuto"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/kijo.flickdevs.com\/excluder-analyser\/","url":"https:\/\/kijo.flickdevs.com\/excluder-analyser\/","name":"Excluder Analyser - Swoopa","isPartOf":{"@id":"https:\/\/kijo.flickdevs.com\/#website"},"datePublished":"2025-08-07T23:30:47+00:00","dateModified":"2025-08-07T23:30:49+00:00","breadcrumb":{"@id":"https:\/\/kijo.flickdevs.com\/excluder-analyser\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kijo.flickdevs.com\/excluder-analyser\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/kijo.flickdevs.com\/excluder-analyser\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kijo.flickdevs.com\/"},{"@type":"ListItem","position":2,"name":"Excluder Analyser"}]},{"@type":"WebSite","@id":"https:\/\/kijo.flickdevs.com\/#website","url":"https:\/\/kijo.flickdevs.com\/","name":"Swoopa","description":"Notificaciones instant\u00e1neas del mercado","publisher":{"@id":"https:\/\/kijo.flickdevs.com\/#organization"},"alternateName":"Marketplace Notifications","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kijo.flickdevs.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/kijo.flickdevs.com\/#organization","name":"Swoopa","alternateName":"Marketplace Notifications","url":"https:\/\/kijo.flickdevs.com\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kijo.flickdevs.com\/#\/schema\/logo\/image\/","url":"https:\/\/i0.wp.com\/getswoopa.com\/wp-content\/uploads\/2024\/01\/swoopappicon_144x144.png?fit=512%2C512&ssl=1","contentUrl":"https:\/\/i0.wp.com\/getswoopa.com\/wp-content\/uploads\/2024\/01\/swoopappicon_144x144.png?fit=512%2C512&ssl=1","width":512,"height":512,"caption":"Swoopa"},"image":{"@id":"https:\/\/kijo.flickdevs.com\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/kijo.flickdevs.com\/es\/wp-json\/wp\/v2\/pages\/9219","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kijo.flickdevs.com\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/kijo.flickdevs.com\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/kijo.flickdevs.com\/es\/wp-json\/wp\/v2\/users\/108378207"}],"replies":[{"embeddable":true,"href":"https:\/\/kijo.flickdevs.com\/es\/wp-json\/wp\/v2\/comments?post=9219"}],"version-history":[{"count":0,"href":"https:\/\/kijo.flickdevs.com\/es\/wp-json\/wp\/v2\/pages\/9219\/revisions"}],"wp:attachment":[{"href":"https:\/\/kijo.flickdevs.com\/es\/wp-json\/wp\/v2\/media?parent=9219"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}