{"id":21108523,"url":"https://github.com/televisionninja/profanity-filter","last_synced_at":"2026-05-17T20:34:04.641Z","repository":{"id":204366426,"uuid":"711458173","full_name":"TelevisionNinja/profanity-filter","owner":"TelevisionNinja","description":"A profanity filter that handles character variations","archived":false,"fork":false,"pushed_at":"2023-10-30T00:09:49.000Z","size":7,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-01-21T03:45:02.124Z","etag":null,"topics":["automata","filter","javascript","profanity","regex"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TelevisionNinja.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-10-29T10:31:06.000Z","updated_at":"2024-04-29T05:38:41.000Z","dependencies_parsed_at":null,"dependency_job_id":"cf6f0108-9c78-4075-a84f-f35bed9f07a9","html_url":"https://github.com/TelevisionNinja/profanity-filter","commit_stats":null,"previous_names":["televisionninja/profanity-filter"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TelevisionNinja%2Fprofanity-filter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TelevisionNinja%2Fprofanity-filter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TelevisionNinja%2Fprofanity-filter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TelevisionNinja%2Fprofanity-filter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TelevisionNinja","download_url":"https://codeload.github.com/TelevisionNinja/profanity-filter/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243552903,"owners_count":20309637,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automata","filter","javascript","profanity","regex"],"created_at":"2024-11-20T00:47:22.481Z","updated_at":"2025-12-29T20:04:54.255Z","avatar_url":"https://github.com/TelevisionNinja.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# profanity-filter\n\nA profanity filter that handles character variations. It builds a regex using a list of blacklisted strings and a character mapping. A whitelist regex is used to remove and then add back in whitelisted strings. This filter encounters the Scunthorpe problem which can be mitigated by the whitelist.\n\n## Examples:\n```bash\ntest: @ss       censored string: ***\ntest: $h1+      censored string: ****\ntest: fuck      censored string: ****\ntest: ffuucckk  censored string: ********\ntest: a s s     censored string: *****\ntest: a z z     censored string: *****\ntest: @ s s     censored string: *****\ntest: * s s     censored string: *****\ntest: * z z     censored string: *****\ntest: as s      censored string: ****\ntest: az s      censored string: ****\ntest: a ss      censored string: ****\ntest: a-ss      censored string: ****\ntest: a-s-s     censored string: *****\ntest: a ss word         censored string: **** word  \ntest: as s word         censored string: **** word  \ntest: as $ word         censored string: **** word  \ntest: assass    censored string: ******\ntest: assassass         censored string: *********  \ntest: assasass  censored string: ***as***\ntest: assasassas        censored string: ***as***as \ntest: assa$assas        censored string: ***a$***as \ntest: assa$zassas       censored string: *********as\ntest: assa$as   censored string: ***a$as\ntest: assa$zas  censored string: ******as\ntest: assasswww         censored string: ******www  \ntest: f-word    censored string: ******\ntest: f word    censored string: ******\ntest: bitch     censored string: *****\ntest: bitkh     censored string: *****\ntest: b1tch     censored string: *****\ntest: batch     censored string: batch\ntest: b*tch     censored string: *****\ntest: b*tkh     censored string: *****\ntest: batch b*tch       censored string: batch *****\ntest: stop being ab itch        censored string: stop being a******\ntest: stopbeingabitch   censored string: stopbeinga*****\ntest: stopbeingab itch  censored string: stopbeinga******\ntest: your assis trash  censored string: your ***is trash\ntest: as suspected      true outcome: false     tested outcome: true    censored string: ****uspected\ntest: polish it         true outcome: false     tested outcome: true    censored string: poli*****\ntest: sh ithead         censored string: *****head\ntest: slab itch         true outcome: false     tested outcome: true    censored string: sla******\ntest: stab itch         true outcome: false     tested outcome: true    censored string: sta******\ntest: dab itch  true outcome: false     tested outcome: true    censored string: da******\ntest: pleb itch         true outcome: false     tested outcome: true    censored string: ple******\ntest: fib itch  true outcome: false     tested outcome: true    censored string: fi******\ntest: slob itch         true outcome: false     tested outcome: true    censored string: slo******\ntest: dub itch  true outcome: false     tested outcome: true    censored string: du******\ntest: ab itch   censored string: a******\ntest: compass   true outcome: false     tested outcome: true    censored string: comp***\ntest: bass      true outcome: false     tested outcome: true    censored string: b***\ntest: assassinate       true outcome: false     tested outcome: true    censored string: ******inate\ntest: assassin  true outcome: false     tested outcome: true    censored string: ******in\ntest: assessment        true outcome: false     tested outcome: true    censored string: ***essment\ntest: assemble  true outcome: false     tested outcome: true    censored string: ***emble\ntest: assume    true outcome: false     tested outcome: true    censored string: ***ume\ntest: a$$emble  censored string: ***emble\ntest: comp@ss   censored string: comp***\ntest: dam n     censored string: *****\ntest: dam nobody        true outcome: false     tested outcome: true    censored string: *****obody\ntest: adam nice         true outcome: false     tested outcome: true    censored string: a*****ice\ntest: pen is    censored string: ******\ntest: the pen is red    true outcome: false     tested outcome: true    censored string: the ****** red\ntest: pen island        true outcome: false     tested outcome: true    censored string: ******land\ntest: open island       true outcome: false     tested outcome: true    censored string: o******land\ntest: dampen island     true outcome: false     tested outcome: true    censored string: dam******land\ntest: happen island     true outcome: false     tested outcome: true    censored string: ha*******land\ntest: happen issue      true outcome: false     tested outcome: true    censored string: ha********ue\ntest: happen isolate    true outcome: false     tested outcome: true    censored string: ha*******olate\ntest: happen isotope    true outcome: false     tested outcome: true    censored string: ha*******otope\ntest: scunthorpe        censored string: scunthorpe\ntest: nigeria   censored string: nigeria\ntest: penistone         censored string: penistone\ntest: fuck penistone fuck       censored string: **** penistone ****\ntest: fuck penistone fuck penistone nigeria scunthorpe  censored string: **** penistone **** penistone nigeria scunthorpe\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftelevisionninja%2Fprofanity-filter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftelevisionninja%2Fprofanity-filter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftelevisionninja%2Fprofanity-filter/lists"}