Skip to content

Instantly share code, notes, and snippets.

@Merovex
Created November 11, 2024 15:14
Show Gist options
  • Save Merovex/54ff8aa63c3011140f6e109153cd761a to your computer and use it in GitHub Desktop.
Save Merovex/54ff8aa63c3011140f6e109153cd761a to your computer and use it in GitHub Desktop.
A simple Rails Concern to add sensoring to content (remove profanity)
PROFANITY_LIST = [
"aclit", "adick", "aids", "alabama porch monkey", "anal intruder",
"anal invader", "analicker", "anus", "4r5e", "5h1t", "5hit", "a55",
"anal", "ar5e", "arrse", "arse", "ass", "as$", "ass bandit", "ass clown",
"ass face", "ass fucker", "ass hole", "ass load", "ass much", "ass out",
"ass packer", "ass reamer", "ass whacker", "ass wipe", "assbandit",
"assclown", "asscrack", "assed out", "assface", "assfucker", "asshole",
"asslicker", "assload", "assmunch", "assout", "asspacker", "assreamer",
"asswhacker", "asswipe", "baby batter", "babybatter", "ball breaker",
"ball buster", "baller", "balling", "bat shit", "batshit", "bearded clam",
"bearded taco", "beardedclam", "beardedtaco", "beaver", "beavershot",
"beeatch", "beener", "biatch", "big baller", "bigballer", "bimbo", "bitch", "bite me", "biteme", "blewinski", "blood fart", "bloodfart", "blow job", "blow me", "blow my pole", "blowjob", "blowme", "blue ball", "blue balls", "blueball", "blueballs", "boner", "bull dike", "bull shit", "bulldike", "bullshit", "bung hole", "bunghole", "butt bandit", "butt banger", "butt buddy", "butt crust", "butt nugger", "butt pirate",
"butt plug", "buttbandit", "buttbanger", "buttcrack", "buttfuck", "buttfucker", "butthump", "buttnugger", "buttpirate", "buttplug", "buttporn", "c0ck", "camel jockey", "camel toe", "cameltoe", "carpet eater", "carpeteater", "cherry popper", "cherrypopper", "chinc", "chink", "choad", "chode", "choke my chicken", "choking the chicken", "cocaine", "cock jockey", "cock knocker", "cock lord", "cock ring", "cock smoker", "cock sucker", "cock tease", "cockass", "cockblocker", "cockjockey", "cocklord", "cocknocker", "cockring", "cocksmoker", "cocksucker", "cocktease", "condom", "coochie", "coon", "cootch", "cooze", "corn hole", "cornhole", "crack ho", "crack spackler", "crackbitch", "cracker", "crackspacker", "crackspackler", "crakker", "crap", "crap face", "crap head", "crapface", "craphead", "crapper", "cum", "cum belch", "cum belcher", "cum bubble", "cum dumpster", "cum guzzle", "cum guzzler", "cum lapper", "cum licker", "cum stain", "cum sucker", "cumbelch", "cumbelcher", "cumbeltch", "cumbeltcher", "cumbubble", "cumdumpster", "cumguzzle", "cumguzzler", "cumlapper", "cumlicker", "cumm", "cumm bubble", "cumm dumpster", "cumm guzzler", "cumm stain", "cumm sucker", "cummbubble", "cummdumpster", "cummguzzler", "cummstain", "cummsucker", "cumstain", "cumsucker", "cumsuker", "cumwad", "cunt", "cunt hair", "cunt whisker", "cunthair", "cuntwhisker", "cuntwisker", "cuze", "d i c k", "daisy chain", "daisy gang", "dangelberry", "dangleberry", "deez nuts", "devil", "dick breath", "dick fiend", "dick head", "dick nose", "dick wad", "dick weed", "dickbreath", "dickface", "dickfiend", "dickhead", "dicknose", "dickwad", "dickweed", "dik breath", "dik fiend", "dik head", "dikbreath", "dike", "dikfiend", "dikhead", "dildo", "dingelberry", "dingleberry", "dipstick", "douche", "douche bag", "drain the lizard", "drugs", "dune coon", "dunecoon", "earning red wings", "eat me", "eat my shorts", "eatme", "ecstacy", "eggplant", "ejaculate", "fagg", "faggot", "faghump", "fagmunch", "felch", "felcher", "feltch", "feltcher", "finger bang", "finger banged", "finger banger", "finger fuck", "fingerbang", "fingerbanged", "fingerbanger", "fingerfuck", "flamer", "flip", "flogging the bishop", "fore skin", "foreskin", "fuck", "fuck face", "fucked", "fucker", "fuckers", "fuckface", "fucking", "fucknut", "fucknuts", "fucks", "fuckshit", "fuckstick", "fudge packer", "fudgepacker", "fuk", "fuk you", "fuker", "fukkhead", "fur burger", "furbuger", "furry burger", "fury burger", "fvck", "fvck you", "fvcker", "fvckface", "fvcking", "fvcknut", "fvcknuts", "gang bang", "gangbang", "genocide", "gniga", "gook", "hairy hatchet wound", "hairy taco", "hairyhatchetwound", "hairytaco", "half breed", "halfbreed", "hardon", "hell", "hermaphrodite", "herpes", "ho", "hoes", "hommo", "homo", "honkey", "honky", "hoochie mama", "hooker", "horse shit", "horseshit", "hot beef injection", "incest", "jacking off", "jap", "jerking off", "jiz", "jiz muffin", "jiz sandwich", "jizer", "jizm", "jizmuffin", "jizz", "jizz muffin", "jizz sandwich", "jizzer", "jizzm", "jizzmuffin", "jungle bunny", "junglebunny", "kike", "kill", "koochie", "koochy", "kootch", "kootchie", "kootchy", "kum", "kumm", "lesbo", "lettuce picker", "lettucepicker", "lezbo", "lick my nuts", "lickcock", "licknipple", "limpdick", "love canal", "lsd", "man whore", "mangina", "manwhore", "marijuana", "masturbate", "mick", "monkeydick", "monkeyhumper", "mooli", "mother fucker", "motherfucker", "mud people", "mud person", "mudpeople", "mudperson", "muff", "muff diver", "muffdiver", "muli", "murder", "nazi", "niger", "nigga", "niggah", "nigger", "nip", "nipple", "nutted", "nutter", "nutting", "one way pipe cleaner", "panocha", "pcp", "pecker", "pecker head", "pecker nose", "peckerhead", "peckernose", "pedophile", "penis breath", "penisbreath", "phelch", "phelcher", "pheltch", "pheltcher", "phlip", "pillow biter", "pillowbiter", "pimp", "pinis wrinkle", "piniswrinkle", "pipe hitter", "pipehitter", "piss", "pissdrinker", "pisslicker", "pito", "pole sitter", "pole smoker", "polesitter", "polesmoker", "polish the bishop", "polishing the torpedo", "polock", "poon tang", "poontang", "poop chute", "poop stain", "poopchute", "poopstain", "popped cherry", "poppedcherry", "prick", "psilocybin", "pu55y", "pussie", "pussy", "pussy juice", "pussy juiced", "pussy juicer", "pussy juicing", "pussy pounder", "pussy pounding", "pussy whipped", "pussy whipper", "pussy wiped", "pussyjuice", "pussyjuicer", "pussywhipped", "pussywhipper", "pussywiped", "puta", "pv55ie", "pv55y", "rag head", "raghead", "rectal", "rectum", "redneck", "retard", "retarded", "rim job", "rimjob", "rug munch", "rug munched", "rug muncher", "rugmuncher", "rump ranger", "rumpranger", "rumpshaker", "sachamo", "sambo", "sand niggah", "sand nigger", "sandniggah", "sandnigger", "satanic", "schlong", "scrubbing the carrot", "shit", "shits", "shit eater", "shit face", "shit faced", "shit head", "shit kicker", "shit pusher", "shit shover", "shiteater", "shitface", "shitfaced", "shitfucker", "shithead", "shitkicker", "shitpusher", "shitshover", "skank", "skin flute", "skullfuck", "skullfucked", "skullfucker", "skullfucks", "slap the salami", "slaping the sausage", "slit licker", "slitlicker", "slope", "slut", "slut bag", "slutbag", "smegma", "snog", "sodomise", "sodomised", "sodomiser", "sodomite", "sodomize", "sodomized", "sodomizer", "sodomy", "spank the monkey", "sphincter boy", "sphincter face", "sphincterboy", "sphincterface", "spic", "spick", "spik", "spunk monkey", "suicide", "taint", "tar baby", "tarbaby", "tard", "testes", "testicles", "testicular", "tip polisher", "tit", "tit fuck", "tit fucker", "titfuck", "titfucker", "tits", "titty", "titty twisted", "titty twister", "titty twisters", "titty twisting", "tity", "towel head", "towelhead", "trailer trash", "trailertrash", "transsexual", "transvestite", "twat", "uncle tom", "uplay wid dix", "vag", "vagina licker", "welfare rat", "wet back", "wetback", "whacking off", "white trash", "whore", "wop", "wrapping the weasel", "yclit", "affanculo", "bagascia", "bastarda", "bastardo", "bocchinara", "bocchinaro", "bocchini", "bocchino", "bokkinara", "bokkinaro", "bokkini", "bokkino", "cagare", "cagona", "cagone", "cazzata", "cazzo", "cazzone", "checca", "chiava", "chiavare", "chiavata", "chiavato", "chiavo", "ciucciami", "cogliona", "coglione", "cristo", "culattona", "culattone", "culo", "dio", "fanculo", "fica", "figa", "finocchio", "fottuta", "fottute", "fottuti", "fottuto", "frocetto", "frocio", "inculare", "inculata", "inculo", "kogliona", "koglione", "kristo", "kulattona", "kulattone", "kulo", "leccaculo", "leccamela", "leccamelo", "leccami", "madonna", "maiala", "maiale", "masturba", "masturbarsi", "masturbati", "merda", "merdosa", "merdoso", "mignotta", "minchia", "minchiona", "minchione", "minkia", "minkiona", "minkione", "pedofila", "pedofilo", "pompinara", "pompinaro", "pompini", "pompino", "porca", "porco", "puttana", "puttanata", "puttanella", "puttanona", "sborra", "sborragli", "sborrale", "sborrami", "sborrare", "scopare", "scopata", "sega", "segaiola", "segaiolo", "seghe", "sfondami", "sfondatela", "sfondatelo", "sfondati", "sperma", "stronza", "stronzata", "stronzate", "stronze", "stronzetto", "stronzi", "stronzo", "stronzone", "terrona", "terrone", "terroni", "tette", "troia", "trombando", "trombare", "trombata", "trombato", "vacca", "vaccona", "vaccone", "vaffanculo", "vaffankulo", "vakka", "vakkona", "vakkone", "zoccola", "batard", "bite", "bouse", "burne", "bâtard", "caca", "charogne", "chier", "chiotte", "con", "connard", "connerie", "couille", "cul", "daube", "encule", "enculer", "enculé", "enflure", "enfoire", "enfoiré", "foutre", "gland", "merde", "nique", "pd", "pedale", "pede", "petasse", "pipe", "pipi", "pisse", "porc", "putain", "pute", "pédale", "pédé", "pétasse", "raclure", "salop", "salope", "sucer", "trouduc", "zob", "affenarsch", "affenarsche", "arsch", "arschficker", "arschgesicht", "arschgesichter", "arschloch", "arschlocher", "arschratte", "arschratten", "auslander raus", "bastard", "blasen", "blow job", "blowjob", "blode sau", "blode saue", "bumsen", "drecksack", "drecksau", "drecksacke", "drecksaue", "endloesung", "endlosung", "fettarsch", "fettarsche", "ficken", "ficker", "fickschnitte", "fickschnitten", "fickt", "fotze", "fotzen", "fotzenlecker", "geile sau", "geile saue", "genocide", "genozid", "heil hitler", "himmler", "hitler", "homo", "hure", "huren", "hurensohn", "hurensohne", "jihad", "judensau", "judensaue", "kanacke", "kanacken", "kanake", "kanaken", "leck mich", "missgeburt", "missgeburten", "mißgeburt", "mißgeburten", "motherfucker", "mutterficker", "mose", "mosen", "nigger", "nutte", "nutten", "penner", "pissnelke", "pissnelken", "polack", "polacken", "sackratte", "sackratten", "saddam", "scheissturke", "scheissturken", "scheißturke", "scheißturken", "schlampe", "schwanzlutscher", "schwuchtel", "schwule sau", "schwule saue", "sieg heil", "stricher", "tunte", "tunten", "vergasen", "vergast", "voelkermord", "votze", "votzen", "vogeln", "vogelt", "volkermord", "wichser", "wixer", "arsche", "acojonado", "acojonar", "asaltacunas", "bandarra", "bastardo", "bollera", "cabrito", "cabronazo", "cabron", "cagada", "cagado", "cagarse", "cagarse en", "cago en", "calamar", "calientapollas", "callo", "capullo", "caraculo", "cateto", "cerdo", "chacho", "chapero", "chingado", "chorra", "chuminada", "chumino", "chupaculos", "chupapollas", "cojones", "comemierda", "comenabos", "comepollas", "cornudo", "cono", "cretino", "desgraciado", "empalmado", "empalmarse", "encular", "entrunchar", "estupido", "follar", "gilipollas", "guarra", "hijo de puta", "hijoputa", "hostia", "huevos", "huevon", "jicho", "jincho", "joder", "julandron", "julay", "kinki", "lameculos", "lamepollas", "mamonazo", "mamoncete", "mamon", "maricon", "me cago en", "mecagoendios", "mecagoenlaputa", "mecagoenlaputadeoros", "mecagoenlaputavirgen", "mecagoenlavirgensanta", "memo", "meretriz", "miembro", "mierda", "mindundi", "minga", "mingafria", "mojon", "mongolo", "mongolico", "muerdealmohadas", "obsceno", "parrus", "pederasta", "pedofilo", "pelotas", "perra", "pervertido", "picha", "pichacorta", "pichafloja", "polla", "pollada", "porculero", "porculizar", "prostituta", "puerco", "puta", "puton", "ramera", "resoplanucas", "retardado", "retrasado", "salido", "salidorro", "sarasa", "soplanucas", "soplapollas", "subnormal", "tano", "tocapelotas", "tocavainas", "tolay", "tortillera", "tranca", "trempando", "tu puta madre", "verga", "zorra", "zorron", "ass-fucker", "asses", "assfukka", "assholes", "asswhole", "a_s_s", "b!tch", "b00bs", "b17ch", "b1tch", "ballbag", "balls", "ballsack", "bastard", "beastial", "beastiality", "bellend", "bestial", "bestiality", "bi+ch", "bitcher", "bitchers", "bitches", "bitchin", "bitching", "blowjob", "blowjobs", "boiolas", "bollock", "bollok", "boner", "boob", "boobs", "booobs", "boooobs", "booooobs", "booooooobs", "breasts", "buceta", "bugger", "bum", "bunny fucker", "butt", "butthole", "buttmuch", "buttplug", "c0ck", "c0cksucker", "carpet muncher", "cawk", "chink", "cipa", "cl1t", "clit", "clitoris", "clits", "cnut", "cock", "cock-sucker", "cockface", "cockhead", "cockmunch", "cockmuncher", "cocks", "cocksuck ", "cocksucked ", "cocksucker", "cocksucking", "cocksucks ", "cocksuka", "cocksukka", "cok", "cokmuncher", "coksucka", "coon", "cox", "crap", "cum", "cummer", "cumming", "cums", "cumshot", "cunilingus", "cunillingus", "cunnilingus", "cunt", "cuntlick ", "cuntlicker ", "cuntlicking ", "cunts", "cyalis", "cyberfuc", "cyberfuck ", "cyberfucked ", "cyberfucker", "cyberfuckers", "cyberfucking ", "d1ck", "damn", "dick", "dickhead", "dildo", "dildos", "dink", "dinks", "dirsa", "dlck", "dog-fucker", "doggin", "dogging", "donkeyribber", "doosh", "duche", "dyke", "ejaculate", "ejaculated", "ejaculates ", "ejaculating ", "ejaculatings", "ejaculation", "ejakulate", "f u c k", "f u c k e r", "f4nny", "fag", "fagging", "faggitt", "faggot", "faggs", "fagot", "fagots", "fags", "fanny", "fannyflaps", "fannyfucker", "fanyy", "fatass", "fcuk", "fcuker", "fcuking", "feck", "fecker", "felching", "fellate", "fellatio", "fingerfuck ", "fingerfucked ", "fingerfucker ", "fingerfuckers", "fingerfucking ", "fingerfucks ", "fistfuck", "fistfucked ", "fistfucker ", "fistfuckers ", "fistfucking ", "fistfuckings ", "fistfucks ", "flange", "fook", "fooker", "fuck", "fucka", "fucked", "fucker", "fuckers", "fuckhead", "fuckheads", "fuckin", "fucking", "fuckings", "fuckingshitmotherfucker", "fuckme ", "fucks", "fuckwhit", "fuckwit", "fudge packer", "fudgepacker", "fuk", "fuker", "fukker", "fukkin", "fuks", "fukwhit", "fukwit", "fux", "fux0r", "f_u_c_k", "gangbang", "gangbanged ", "gangbangs ", "gaylord", "gaysex", "goatse", "god", "god-dam", "god-damned", "goddamn", "goddamned", "hardcoresex ", "hell", "heshe", "hoar", "hoare", "hoer", "homo", "hore", "horniest", "horny", "hotsex", "jack-off ", "jackoff", "jap", "jerk-off ", "jism", "jiz ", "jizm ", "jizz", "kawk", "knob", "knobead", "knobed", "knobend", "knobhead", "knobjocky", "knobjokey", "kock", "kondum", "kondums", "kum", "kummer", "kumming", "kums", "kunilingus", "l3i+ch", "l3itch", "labia", "lmfao", "lust", "lusting", "m0f0", "m0fo", "m45terbate", "ma5terb8", "ma5terbate", "masochist", "master-bate", "masterb8", "masterbat*", "masterbat3", "masterbate", "masterbation", "masterbations", "masturbate", "mo-fo", "mof0", "mofo", "mothafuck", "mothafucka", "mothafuckas", "mothafuckaz", "mothafucked ", "mothafucker", "mothafuckers", "mothafuckin", "mothafucking ", "mothafuckings", "mothafucks", "mother fucker", "motherfuck", "motherfucked", "motherfucker", "motherfuckers", "motherfuckin", "motherfucking", "motherfuckings", "motherfuckka", "motherfucks", "muff", "mutha", "muthafecker", "muthafuckker", "muther", "mutherfucker", "n1gga", "n1gger", "nazi", "nigg3r", "nigg4h", "nigga", "niggah", "niggas", "niggaz", "nigger", "niggers ", "nob", "nob jokey", "nobhead", "nobjocky", "nobjokey", "numbnuts", "nutsack", "orgasim ", "orgasims ", "orgasm", "orgasms ", "p0rn", "pawn", "pecker", "penis", "penisfucker", "phonesex", "phuck", "phuk", "phuked", "phuking", "phukked", "phukking", "phuks", "phuq", "pigfucker", "pimpis", "piss", "pissed", "pisser", "pissers", "pisses ", "pissflaps", "pissin ", "pissing", "pissoff ", "poop", "porn", "porno", "pornography", "pornos", "prick", "pricks ", "pron", "pube", "pusse", "pussi", "pussies", "pussy", "pussys ", "rectum", "retard", "rimjaw", "rimming", "s hit", "s.o.b.", "sadist", "schlong", "screwing", "scroat", "scrote", "scrotum", "semen", "sex", "sh!+", "sh!t", "sh1t", "shag", "shagger", "shaggin", "shagging", "shemale", "shi+", "shit", "shitdick", "shite", "shited", "shitey", "shitfuck", "shitfull", "shithead", "shiting", "shitings", "shits", "shitted", "shitter", "shitters ", "shitting", "shittings", "shitty ", "skank", "slut", "sluts", "smegma", "smut", "snatch", "son-of-a-bitch", "spac", "spunk", "s_h_i_t", "t1tt1e5", "t1tties", "teets", "teez", "testical", "testicle", "tit", "titfuck", "tits", "titt", "tittie5", "tittiefucker", "titties", "tittyfuck", "tittywank", "titwank", "tosser", "turd", "tw4t", "twat", "twathead", "twatty", "twunt", "twunter", "v14gra", "v1gra", "vagina", "viagra", "vulva", "w00se", "wang", "wank", "wanker", "wanky", "whoar", "whore", "willies", "willy"
].freeze
module Censorable
extend ActiveSupport::Concern
included do
# PROFANITY_LIST = YAML.load_file(Rails.root.join("app", "assets", "data", "profanity.yml")).map(&:downcase)
end
class_methods do
# Checks if the given text contains any profane words
def obscene?(text)
words = text.downcase.split(/\W+/)
(words & PROFANITY_LIST).any?
end
# Sanitizes the given text by replacing profane words with garbled symbols
def sanitize(text)
sanitized_text = text.split(/\b/).map do |word|
PROFANITY_LIST.include?(word.downcase) ? garbled(word.length) : word
end
sanitized_text.join
end
def garbled(length)
symbols = %w[$ @ ! # % $ @ ! # % *]
Array.new(length) { symbols.sample }.join
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment