Module:Message box and Mapmisia: Difference between pages

From MAP Wiki
(Difference between pages)
m 1 revision imported
 
Pappy (talk | contribs)
Restored from Wayback Machine.
 
Line 1: Line 1:
-- This is a meta-module for producing message box templates, including
Mapmisia denotes prejudice and hate towards [[MAP|maps]]. It can be institutional and manifest as mandatory report laws, e.g. where your doctor must treat disclosure of mapness as a threat to children, acceptance of [[Conversion therapy|conversion therapy]] for maps, and prioritization of non-map voices in map issues. It can also be perpetrated by individuals, in the form of verbal and physical abuse. Mapmisiac people can also be called anti maps, or antis.
-- {{mbox}}, {{ambox}}, {{imbox}}, {{tmbox}}, {{ombox}}, {{cmbox}} and {{fmbox}}.


-- Load necessary modules.
== History and significance of the term ==
require('strict')
The word “mapmisia” was coined in the first half of 2019 by paraphiliac activist Kamui. He used a Greek root “misos”, denoting hatred. This term replaced a slightly older version, “mapphobia”, spontaneously created by several bloggers analogously with “homophobia” and “transphobia”. Calling hate of maps “mapmisia” allowed to separate it from real phobias. For example, “pedophobia”, often used by online trolls as a fancy synonym for their prejudice, is a medical term that means a pathological fear of children.
local getArgs
local yesno = require('Module:Yesno')


-- Get a language object for formatDate and ucfirst.
== Mapmisia in society ==
local lang = mw.language.getContentLanguage()
In the most general sense, any assumption that a map is less capable or less trustworthy than a peer attracted person is mapmisiac. Such judgment of maps is a foundation for their mistreatment, because they're believed to not know what's best for them, and their attraction is seen as an inherent risk.
=== Social ===
Maps have virtually no opportunity to speak for themselves in society. The representation of mapness is done by peer attracted people, many of whom are ignorant and use mapness solely as a subplot for dramatic criminal stories. Scientific and educational materials on mapness (especially the ones that use the term "pedophilia") mostly describe how to single out and isolate maps, instead of the help and support a map might need. There exists a strong push against maps organizing and trying to help each other, as it is believed any map group is inherently sexual and focused on child abuse. Map advocacy groups and individual accounts on social media are frequently deleted in absence of any rule violation.
=== Medical ===
Historically, medical theory viewed mapness as a risk factor and a sexual perversion, and all therapy efforts were aimed at converting maps into peer attracted people. This therapy was often forceful and included elements of sexual assault, such as, demanding patients to masturbate to particular scenarios. Many male maps were put on libido-lowering medication, and the doctors treated loss of sex drive as a success, despite the fact that the attraction itself stayed <ref>[https://www.b4uact.org/know-the-facts/immutability/ Immutability], B4U-ACT’s Summary of MAP Research.</ref>. Nowadays there exist researchers and therapists who are much more humane and progressive. An example of this progress is [[B4U-ACT]], a collaboration between maps and doctors, which pushes for a more map-centric approach to map therapy <ref>[https://www.b4uact.org/gallery-2-columns-filter/psychotherapy-for-the-map/ Psychotherapy For Maps], B4U-ACT.</ref>. But choosing a doctor as a map is still a gamble.
=== Individual ===
A map's first exposure to mapmisia is most likely connected not to doctors and not to science, but to their own parents. Very few people in English speaking countries avoided warnings about pedophilia in youth, often with additional threats of violence towards pedophiles. Such threats are meant to make the child feel protected, but a map child will internalize a different message and believe their own family is unsafe for them. In case they try to seek support online, they will meet a range of bullies and stalkers. A number of young maps committed suicide as a result of such treatment.


-- Define constants
== Misdirected mapmisia ==
local CONFIG_MODULE = 'Module:Message box/configuration'
Some groups of peer attracted people are believed to be connected to maps and receive a portion of hate and pushback. These groups include LGBTQ people, neurodivergent people, and certain ethnicities. Their interactions with each other and with children are policed to a much larger degree than those of the privileged majority, and their self expression is often sexualized. In attempts to separate themselves from mapness, they often become the most violent perpetrators of individual mapmisia. Society as a whole becomes more mapmisiac because of their actions, and their own condition is worsened.
local DEMOSPACES = {talk = 'tmbox', image = 'imbox', file = 'imbox', category = 'cmbox', article = 'ambox', main = 'ambox'}
local TEMPLATE_STYLES = 'Module:Message box/%s.css'


--------------------------------------------------------------------------------
== Internalized mapmisia ==
-- Helper functions
After being exposed to mapmisia in society, a map may internalize this attitude. Internalized mapmisia can push a map to seek validation from peer attracted mapmisiacs, submit themselves to control and monitoring, and regard maps who don't follow their example as rapists in the making. Internalized mapmisia is one of the most common mechanisms behind [[Pedophilic disorder|pedophilic disorder]]. One of the dangerous cognitive distortions maps with internalized mapmisia resort to is that their mapmisia is a guarantee against sexual offending. However, there exist examples of extremely self hating maps with anti map views, who hid past contact offenses or [[Child sexual exploitation material|CSAM]] addiction.<br>
--------------------------------------------------------------------------------


local function getTitleObject(...)
Another important thing to note is that mapmisia in society is not the fault of mapmisiac maps, and the most hateful mapmisiacs are still more often peer attracted.
-- Get the title object, passing the function through pcall
-- in case we are over the expensive function count limit.
local success, title = pcall(mw.title.new, ...)
if success then
return title
end
end


local function union(t1, t2)
== Mapmisiac language ==
-- Returns the union of two arrays.
This is a short list of words and phrases that are frequently used as insults and slander against maps, regardless of the map's age, personal beliefs, and legal history.<br>
local vals = {}
for i, v in ipairs(t1) do
vals[v] = true
end
for i, v in ipairs(t2) do
vals[v] = true
end
local ret = {}
for k in pairs(vals) do
table.insert(ret, k)
end
table.sort(ret)
return ret
end


local function getArgNums(args, prefix)
* '''Chomo.''' A blend of "child molester", likely with an influence of "homo". [[Pedophilia#Other_examples_of_verbal_pedomisia|Homophobia and mapmisia in speech often overlap.]]
local nums = {}
for k, v in pairs(args) do
local num = mw.ustring.match(tostring(k), '^' .. prefix .. '([1-9]%d*)$')
if num then
table.insert(nums, tonumber(num))
end
end
table.sort(nums)
return nums
end


--------------------------------------------------------------------------------
* '''Groomer.''' In child sexual abuse prevention "grooming" is most frequently defined as "manipulative behaviors that the abuser uses to gain access to a potential victim, coerce them to agree to the abuse, and reduce the risk of being caught"<ref>[https://www.rainn.org/news/grooming-know-warning-signs Grooming: Know the Warning Signs], RAINN.</ref>. Map bloggers were always accused of being groomers, very often in absence of anyone antis could name as a plausible victim. 2022 saw a rise of grooming accusations against non-map queer people, which has led to this word being branded a homophobic slur<ref>[https://www.thepinknews.com/2022/08/12/lgbtq-groomer-slur-dont-say-gay/ Anti-LGBTQ+ ‘groomer’ slur explosion linked to ‘Don’t Say Gay’ law in eye-opening report], PinkNews.</ref>, while its widespread usage against maps still remains unaddressed.
-- Box class definition
--------------------------------------------------------------------------------


local MessageBox = {}
* '''Kiddie diddler.''' This is a synonym for a child molester that is often perceived as invalidating or disrespectful by many child sexual abuse survivors.  
MessageBox.__index = MessageBox


function MessageBox.new(boxType, args, cfg)
* '''Nonce.''' This British slang word may have originated from the culture of prison violence ("Not On Normal Communal Exercise" to denote a prisoner that can't be allowed near other prisoners for safety reasons) or come from a homophobic slur "nance"<ref>[https://en.wiktionary.org/wiki/nonce Nonce], Wiktionary.</ref>.
args = args or {}
local obj = {}


obj.boxType = boxType
* '''Pred, predo, ped.''' "Pred" is a word that appeared first as short for "predator". Predator hunters tend to call all maps "predators" and consider these groups synonymous; "predo" and "ped" emerged as a mix of "pred" and "pedo". This chain of words should not be confused with "ped" in "pedage", a transage term for people who identify as prepubescent children, which was independently coined<ref>[https://ghostiemogai.miraheze.org/wiki/Pedage Pedage], Radqueerz Wiki.</ref>. Some maps put "pedo" in this category too and consider it a slur because of how often it is used derogatorily. This is debated, however.


-- Set the title object and the namespace.
* '''Sexual urges.''' Mapmisiacs who don't want to acknowledge minor attraction as a real attraction with a possibility of clear preferences use these words to pose it as an urge to have sex with any random child instead.
obj.title = getTitleObject(args.page) or mw.title.getCurrentTitle()


-- Set the config for our box type.
* '''Sexualization of children.''' Maps are accused of sexualizing children due to a belief that you can only be sexually attracted to what is already inherently sexual. Sexualization of children is prohibited by Terms of Service of many social media platforms, and completely nonsexual map blogs were terminated with this accusation being listed as the reason.  
obj.cfg = cfg[boxType]
if not obj.cfg then
local ns = obj.title.namespace
-- boxType is "mbox" or invalid input
if args.demospace and args.demospace ~= '' then
-- implement demospace parameter of mbox
local demospace = string.lower(args.demospace)
if DEMOSPACES[demospace] then
-- use template from DEMOSPACES
obj.cfg = cfg[DEMOSPACES[demospace]]
obj.boxType = DEMOSPACES[demospace]
elseif string.find( demospace, 'talk' ) then
-- demo as a talk page
obj.cfg = cfg.tmbox
obj.boxType = 'tmbox'
else
-- default to ombox
obj.cfg = cfg.ombox
obj.boxType = 'ombox'
end
elseif ns == 0 then
obj.cfg = cfg.ambox -- main namespace
obj.boxType = 'ambox'
elseif ns == 6 then
obj.cfg = cfg.imbox -- file namespace
obj.boxType = 'imbox'
elseif ns == 14 then
obj.cfg = cfg.cmbox -- category namespace
obj.boxType = 'cmbox'
else
local nsTable = mw.site.namespaces[ns]
if nsTable and nsTable.isTalk then
obj.cfg = cfg.tmbox -- any talk namespace
obj.boxType = 'tmbox'
else
obj.cfg = cfg.ombox -- other namespaces or invalid input
obj.boxType = 'ombox'
end
end
end


-- Set the arguments, and remove all blank arguments except for the ones
== Day of Remembrance and Solidarity ==
-- listed in cfg.allowBlankParams.
The 14th of July was proposed as the "Day of Remembrance and Solidarity with the victims of pedophobia"<ref>[https://pedophobiavictims.wordpress.com/day-of-remembrance-and-solidarity/ Day of Remembrance and Solidarity], pedophobiavictims.</ref>. On that day Bijan Ebrahimi, a disabled Iranian person, was killed by neighbors over false child abuse suspicions. A site titled pedophobiavictims maintains a list of people who died because of stigma of minor attraction, ranging from a civil rights defender who fought for maps and committed suicide to a little child who behaved sexually and was killed by parents<ref>[https://pedophobiavictims.wordpress.com/ Memorial Book], pedophobiavictims.</ref>. 
do
== The Mapmisia Awareness Flag ==
local newArgs = {}
The flag is a slightly brighter version of the [[map flag]] with outer stripes blacked out and a blood drop slightly offcenter. It is based on how the map flag appeared in 2022 on r/place, a Reddit event where users create art by placing dots. The map flag was erased and painted over multiple times before the canvas finalized<ref>[https://place-atlas.stefanocoding.me/#tz0amd r/place atlas], 2022.</ref>, and the resilience in face of erasure is seen as symbolic.
for k, v in pairs(args) do
<gallery>
if v ~= '' then
File:Mapmisia awareness flag.png|The mapmisia awareness flag
newArgs[k] = v
File:Rplace.png|A screenshot from r/place.
end
</gallery>
end
for i, param in ipairs(obj.cfg.allowBlankParams or {}) do
newArgs[param] = args[param]
end
obj.args = newArgs
end


-- Define internal data structure.
== References ==
obj.categories = {}
<references />
obj.classes = {}
-- For lazy loading of [[Module:Category handler]].
obj.hasCategories = false
 
return setmetatable(obj, MessageBox)
end
 
function MessageBox:addCat(ns, cat, sort)
if not cat then
return nil
end
if sort then
cat = string.format('[[Category:%s|%s]]', cat, sort)
else
cat = string.format('[[Category:%s]]', cat)
end
self.hasCategories = true
self.categories[ns] = self.categories[ns] or {}
table.insert(self.categories[ns], cat)
end
 
function MessageBox:addClass(class)
if not class then
return nil
end
self.classes[class] = 1
end
 
function MessageBox:removeClass(class)
if not class then
return nil
end
self.classes[class] = nil
end
 
function MessageBox:setParameters()
local args = self.args
local cfg = self.cfg
 
-- Get type data.
self.type = args.type
local typeData = cfg.types[self.type]
self.invalidTypeError = cfg.showInvalidTypeError
and self.type
and not typeData
typeData = typeData or cfg.types[cfg.default]
self.typeClass = typeData.class
self.typeImage = typeData.image
 
-- Find if the box has been wrongly substituted.
self.isSubstituted = cfg.substCheck and args.subst == 'SUBST'
 
-- Find whether we are using a small message box.
self.isSmall = cfg.allowSmall and (
cfg.smallParam and args.small == cfg.smallParam
or not cfg.smallParam and yesno(args.small)
)
 
-- Add attributes, classes and styles.
self.id = args.id
self.name = args.name
for _, class in ipairs(cfg.classes or {}) do
self:addClass(class)
end
if self.name then
self:addClass('box-' .. string.gsub(self.name,' ','_'))
end
local plainlinks = yesno(args.plainlinks)
if plainlinks == true then
self:addClass('plainlinks')
elseif plainlinks == false then
self:removeClass('plainlinks')
end
if self.isSmall then
self:addClass(cfg.smallClass or 'mbox-small')
end
self:addClass(self.typeClass)
self:addClass(args.class)
self.style = args.style
self.attrs = args.attrs
 
-- Set text style.
self.textstyle = args.textstyle
 
-- Find if we are on the template page or not. This functionality is only
-- used if useCollapsibleTextFields is set, or if both cfg.templateCategory
-- and cfg.templateCategoryRequireName are set.
self.useCollapsibleTextFields = cfg.useCollapsibleTextFields
if self.useCollapsibleTextFields
or cfg.templateCategory
and cfg.templateCategoryRequireName
then
if self.name then
local templateName = mw.ustring.match(
self.name,
'^[tT][eE][mM][pP][lL][aA][tT][eE][%s_]*:[%s_]*(.*)$'
) or self.name
templateName = 'Template:' .. templateName
self.templateTitle = getTitleObject(templateName)
end
self.isTemplatePage = self.templateTitle
and mw.title.equals(self.title, self.templateTitle)
end
-- Process data for collapsible text fields. At the moment these are only
-- used in {{ambox}}.
if self.useCollapsibleTextFields then
-- Get the self.issue value.
if self.isSmall and args.smalltext then
self.issue = args.smalltext
else
local sect
if args.sect == '' then
sect = 'This ' .. (cfg.sectionDefault or 'page')
elseif type(args.sect) == 'string' then
sect = 'This ' .. args.sect
end
local issue = args.issue
issue = type(issue) == 'string' and issue ~= '' and issue or nil
local text = args.text
text = type(text) == 'string' and text or nil
local issues = {}
table.insert(issues, sect)
table.insert(issues, issue)
table.insert(issues, text)
self.issue = table.concat(issues, ' ')
end
 
-- Get the self.talk value.
local talk = args.talk
-- Show talk links on the template page or template subpages if the talk
-- parameter is blank.
if talk == ''
and self.templateTitle
and (
mw.title.equals(self.templateTitle, self.title)
or self.title:isSubpageOf(self.templateTitle)
)
then
talk = '#'
elseif talk == '' then
talk = nil
end
if talk then
-- If the talk value is a talk page, make a link to that page. Else
-- assume that it's a section heading, and make a link to the talk
-- page of the current page with that section heading.
local talkTitle = getTitleObject(talk)
local talkArgIsTalkPage = true
if not talkTitle or not talkTitle.isTalkPage then
talkArgIsTalkPage = false
talkTitle = getTitleObject(
self.title.text,
mw.site.namespaces[self.title.namespace].talk.id
)
end
if talkTitle and talkTitle.exists then
local talkText = 'Relevant discussion may be found on'
if talkArgIsTalkPage then
talkText = string.format(
'%s [[%s|%s]].',
talkText,
talk,
talkTitle.prefixedText
)
else
talkText = string.format(
'%s the [[%s#%s|talk page]].',
talkText,
talkTitle.prefixedText,
talk
)
end
self.talk = talkText
end
end
 
-- Get other values.
self.fix = args.fix ~= '' and args.fix or nil
local date
if args.date and args.date ~= '' then
date = args.date
elseif args.date == '' and self.isTemplatePage then
date = lang:formatDate('F Y')
end
if date then
self.date = string.format(" <small class='date-container'>''(<span class='date'>%s</span>)''</small>", date)
end
self.info = args.info
if yesno(args.removalnotice) then
self.removalNotice = cfg.removalNotice
end
end
 
-- Set the non-collapsible text field. At the moment this is used by all box
-- types other than ambox, and also by ambox when small=yes.
if self.isSmall then
self.text = args.smalltext or args.text
else
self.text = args.text
end
 
-- Set the below row.
self.below = cfg.below and args.below
 
-- General image settings.
self.imageCellDiv = not self.isSmall and cfg.imageCellDiv
self.imageEmptyCell = cfg.imageEmptyCell
if cfg.imageEmptyCellStyle then
self.imageEmptyCellStyle = 'border:none;padding:0px;width:1px'
end
 
-- Left image settings.
local imageLeft = self.isSmall and args.smallimage or args.image
if cfg.imageCheckBlank and imageLeft ~= 'blank' and imageLeft ~= 'none'
or not cfg.imageCheckBlank and imageLeft ~= 'none'
then
self.imageLeft = imageLeft
if not imageLeft then
local imageSize = self.isSmall
and (cfg.imageSmallSize or '30x30px')
or '40x40px'
self.imageLeft = string.format('[[File:%s|%s|link=|alt=]]', self.typeImage
or 'Information icon4.svg', imageSize)
end
end
 
-- Right image settings.
local imageRight = self.isSmall and args.smallimageright or args.imageright
if not (cfg.imageRightNone and imageRight == 'none') then
self.imageRight = imageRight
end
end
 
function MessageBox:setMainspaceCategories()
local args = self.args
local cfg = self.cfg
 
if not cfg.allowMainspaceCategories then
return nil
end
 
local nums = {}
for _, prefix in ipairs{'cat', 'category', 'all'} do
args[prefix .. '1'] = args[prefix]
nums = union(nums, getArgNums(args, prefix))
end
 
-- The following is roughly equivalent to the old {{Ambox/category}}.
local date = args.date
date = type(date) == 'string' and date
local preposition = 'from'
for _, num in ipairs(nums) do
local mainCat = args['cat' .. tostring(num)]
or args['category' .. tostring(num)]
local allCat = args['all' .. tostring(num)]
mainCat = type(mainCat) == 'string' and mainCat
allCat = type(allCat) == 'string' and allCat
if mainCat and date and date ~= '' then
local catTitle = string.format('%s %s %s', mainCat, preposition, date)
self:addCat(0, catTitle)
catTitle = getTitleObject('Category:' .. catTitle)
if not catTitle or not catTitle.exists then
self:addCat(0, 'Articles with invalid date parameter in template')
end
elseif mainCat and (not date or date == '') then
self:addCat(0, mainCat)
end
if allCat then
self:addCat(0, allCat)
end
end
end
 
function MessageBox:setTemplateCategories()
local args = self.args
local cfg = self.cfg
 
-- Add template categories.
if cfg.templateCategory then
if cfg.templateCategoryRequireName then
if self.isTemplatePage then
self:addCat(10, cfg.templateCategory)
end
elseif not self.title.isSubpage then
self:addCat(10, cfg.templateCategory)
end
end
 
-- Add template error categories.
if cfg.templateErrorCategory then
local templateErrorCategory = cfg.templateErrorCategory
local templateCat, templateSort
if not self.name and not self.title.isSubpage then
templateCat = templateErrorCategory
elseif self.isTemplatePage then
local paramsToCheck = cfg.templateErrorParamsToCheck or {}
local count = 0
for i, param in ipairs(paramsToCheck) do
if not args[param] then
count = count + 1
end
end
if count > 0 then
templateCat = templateErrorCategory
templateSort = tostring(count)
end
if self.categoryNums and #self.categoryNums > 0 then
templateCat = templateErrorCategory
templateSort = 'C'
end
end
self:addCat(10, templateCat, templateSort)
end
end
 
function MessageBox:setAllNamespaceCategories()
-- Set categories for all namespaces.
if self.isSubstituted then
self:addCat('all', 'Pages with incorrectly substituted templates')
end
end
 
function MessageBox:setCategories()
if self.title.namespace == 0 then
self:setMainspaceCategories()
elseif self.title.namespace == 10 then
self:setTemplateCategories()
end
self:setAllNamespaceCategories()
end
 
function MessageBox:renderCategories()
if not self.hasCategories then
-- No categories added, no need to pass them to Category handler so,
-- if it was invoked, it would return the empty string.
-- So we shortcut and return the empty string.
return ""
end
-- Convert category tables to strings and pass them through
-- [[Module:Category handler]].
return require('Module:Category handler')._main{
main = table.concat(self.categories[0] or {}),
template = table.concat(self.categories[10] or {}),
all = table.concat(self.categories.all or {}),
nocat = self.args.nocat,
page = self.args.page
}
end
 
function MessageBox:export()
local root = mw.html.create()
 
-- Add the subst check error.
if self.isSubstituted and self.name then
root:tag('b')
:addClass('error')
:wikitext(string.format(
'Template <code>%s[[Template:%s|%s]]%s</code> has been incorrectly substituted.',
mw.text.nowiki('{{'), self.name, self.name, mw.text.nowiki('}}')
))
end
 
-- Add TemplateStyles
root:wikitext(mw.getCurrentFrame():extensionTag{
name = 'templatestyles',
args = { src = TEMPLATE_STYLES:format(self.boxType) },
})
 
-- Create the box table.
local boxTable
-- Check for fmbox because not all interface messages have mw-parser-output
-- which is necessary for TemplateStyles. Add the wrapper class if it is and
-- then start the actual mbox, else start the mbox.
if self.boxType == 'fmbox' then
boxTable = root:tag('div')
:addClass('mw-parser-output')
:tag('table')
else
boxTable = root:tag('table')
end
 
boxTable:attr('id', self.id or nil)
for class, _ in pairs(self.classes or {}) do
boxTable:addClass(class or nil)
end
boxTable
:cssText(self.style or nil)
:attr('role', 'presentation')
 
if self.attrs then
boxTable:attr(self.attrs)
end
 
-- Add the left-hand image.
local row = boxTable:tag('tr')
if self.imageLeft then
local imageLeftCell = row:tag('td'):addClass('mbox-image')
if self.imageCellDiv then
-- If we are using a div, redefine imageLeftCell so that the image
-- is inside it. Divs use style="width: 52px;", which limits the
-- image width to 52px. If any images in a div are wider than that,
-- they may overlap with the text or cause other display problems.
imageLeftCell = imageLeftCell:tag('div'):css('width', '52px')
end
imageLeftCell:wikitext(self.imageLeft or nil)
elseif self.imageEmptyCell then
-- Some message boxes define an empty cell if no image is specified, and
-- some don't. The old template code in templates where empty cells are
-- specified gives the following hint: "No image. Cell with some width
-- or padding necessary for text cell to have 100% width."
row:tag('td')
:addClass('mbox-empty-cell')
:cssText(self.imageEmptyCellStyle or nil)
end
 
-- Add the text.
local textCell = row:tag('td'):addClass('mbox-text')
if self.useCollapsibleTextFields then
-- The message box uses advanced text parameters that allow things to be
-- collapsible. At the moment, only ambox uses this.
textCell:cssText(self.textstyle or nil)
local textCellDiv = textCell:tag('div')
textCellDiv
:addClass('mbox-text-span')
:wikitext(self.issue or nil)
if (self.talk or self.fix) and not self.isSmall then
textCellDiv:tag('span')
:addClass('hide-when-compact')
:wikitext(self.talk and (' ' .. self.talk) or nil)
:wikitext(self.fix and (' ' .. self.fix) or nil)
end
textCellDiv:wikitext(self.date and (' ' .. self.date) or nil)
if self.info and not self.isSmall then
textCellDiv
:tag('span')
:addClass('hide-when-compact')
:wikitext(self.info and (' ' .. self.info) or nil)
end
if self.removalNotice then
textCellDiv:tag('small')
:addClass('hide-when-compact')
:tag('i')
:wikitext(string.format(" (%s)", self.removalNotice))
end
else
-- Default text formatting - anything goes.
textCell
:cssText(self.textstyle or nil)
:wikitext(self.text or nil)
end
 
-- Add the right-hand image.
if self.imageRight then
local imageRightCell = row:tag('td'):addClass('mbox-imageright')
if self.imageCellDiv then
-- If we are using a div, redefine imageRightCell so that the image
-- is inside it.
imageRightCell = imageRightCell:tag('div'):css('width', '52px')
end
imageRightCell
:wikitext(self.imageRight or nil)
end
 
-- Add the below row.
if self.below then
boxTable:tag('tr')
:tag('td')
:attr('colspan', self.imageRight and '3' or '2')
:addClass('mbox-text')
:cssText(self.textstyle or nil)
:wikitext(self.below or nil)
end
 
-- Add error message for invalid type parameters.
if self.invalidTypeError then
root:tag('div')
:css('text-align', 'center')
:wikitext(string.format(
'This message box is using an invalid "type=%s" parameter and needs fixing.',
self.type or ''
))
end
 
-- Add categories.
root:wikitext(self:renderCategories() or nil)
 
return tostring(root)
end
 
--------------------------------------------------------------------------------
-- Exports
--------------------------------------------------------------------------------
 
local p, mt = {}, {}
 
function p._exportClasses()
-- For testing.
return {
MessageBox = MessageBox
}
end
 
function p.main(boxType, args, cfgTables)
local box = MessageBox.new(boxType, args, cfgTables or mw.loadData(CONFIG_MODULE))
box:setParameters()
box:setCategories()
return box:export()
end
 
function mt.__index(t, k)
return function (frame)
if not getArgs then
getArgs = require('Module:Arguments').getArgs
end
return t.main(k, getArgs(frame, {trim = false, removeBlanks = false}))
end
end
 
return setmetatable(p, mt)

Revision as of 19:56, 29 April 2024

Mapmisia denotes prejudice and hate towards maps. It can be institutional and manifest as mandatory report laws, e.g. where your doctor must treat disclosure of mapness as a threat to children, acceptance of conversion therapy for maps, and prioritization of non-map voices in map issues. It can also be perpetrated by individuals, in the form of verbal and physical abuse. Mapmisiac people can also be called anti maps, or antis.

History and significance of the term

The word “mapmisia” was coined in the first half of 2019 by paraphiliac activist Kamui. He used a Greek root “misos”, denoting hatred. This term replaced a slightly older version, “mapphobia”, spontaneously created by several bloggers analogously with “homophobia” and “transphobia”. Calling hate of maps “mapmisia” allowed to separate it from real phobias. For example, “pedophobia”, often used by online trolls as a fancy synonym for their prejudice, is a medical term that means a pathological fear of children.

Mapmisia in society

In the most general sense, any assumption that a map is less capable or less trustworthy than a peer attracted person is mapmisiac. Such judgment of maps is a foundation for their mistreatment, because they're believed to not know what's best for them, and their attraction is seen as an inherent risk.

Social

Maps have virtually no opportunity to speak for themselves in society. The representation of mapness is done by peer attracted people, many of whom are ignorant and use mapness solely as a subplot for dramatic criminal stories. Scientific and educational materials on mapness (especially the ones that use the term "pedophilia") mostly describe how to single out and isolate maps, instead of the help and support a map might need. There exists a strong push against maps organizing and trying to help each other, as it is believed any map group is inherently sexual and focused on child abuse. Map advocacy groups and individual accounts on social media are frequently deleted in absence of any rule violation.

Medical

Historically, medical theory viewed mapness as a risk factor and a sexual perversion, and all therapy efforts were aimed at converting maps into peer attracted people. This therapy was often forceful and included elements of sexual assault, such as, demanding patients to masturbate to particular scenarios. Many male maps were put on libido-lowering medication, and the doctors treated loss of sex drive as a success, despite the fact that the attraction itself stayed [1]. Nowadays there exist researchers and therapists who are much more humane and progressive. An example of this progress is B4U-ACT, a collaboration between maps and doctors, which pushes for a more map-centric approach to map therapy [2]. But choosing a doctor as a map is still a gamble.

Individual

A map's first exposure to mapmisia is most likely connected not to doctors and not to science, but to their own parents. Very few people in English speaking countries avoided warnings about pedophilia in youth, often with additional threats of violence towards pedophiles. Such threats are meant to make the child feel protected, but a map child will internalize a different message and believe their own family is unsafe for them. In case they try to seek support online, they will meet a range of bullies and stalkers. A number of young maps committed suicide as a result of such treatment.

Misdirected mapmisia

Some groups of peer attracted people are believed to be connected to maps and receive a portion of hate and pushback. These groups include LGBTQ people, neurodivergent people, and certain ethnicities. Their interactions with each other and with children are policed to a much larger degree than those of the privileged majority, and their self expression is often sexualized. In attempts to separate themselves from mapness, they often become the most violent perpetrators of individual mapmisia. Society as a whole becomes more mapmisiac because of their actions, and their own condition is worsened.

Internalized mapmisia

After being exposed to mapmisia in society, a map may internalize this attitude. Internalized mapmisia can push a map to seek validation from peer attracted mapmisiacs, submit themselves to control and monitoring, and regard maps who don't follow their example as rapists in the making. Internalized mapmisia is one of the most common mechanisms behind pedophilic disorder. One of the dangerous cognitive distortions maps with internalized mapmisia resort to is that their mapmisia is a guarantee against sexual offending. However, there exist examples of extremely self hating maps with anti map views, who hid past contact offenses or CSAM addiction.

Another important thing to note is that mapmisia in society is not the fault of mapmisiac maps, and the most hateful mapmisiacs are still more often peer attracted.

Mapmisiac language

This is a short list of words and phrases that are frequently used as insults and slander against maps, regardless of the map's age, personal beliefs, and legal history.

  • Groomer. In child sexual abuse prevention "grooming" is most frequently defined as "manipulative behaviors that the abuser uses to gain access to a potential victim, coerce them to agree to the abuse, and reduce the risk of being caught"[3]. Map bloggers were always accused of being groomers, very often in absence of anyone antis could name as a plausible victim. 2022 saw a rise of grooming accusations against non-map queer people, which has led to this word being branded a homophobic slur[4], while its widespread usage against maps still remains unaddressed.
  • Kiddie diddler. This is a synonym for a child molester that is often perceived as invalidating or disrespectful by many child sexual abuse survivors.
  • Nonce. This British slang word may have originated from the culture of prison violence ("Not On Normal Communal Exercise" to denote a prisoner that can't be allowed near other prisoners for safety reasons) or come from a homophobic slur "nance"[5].
  • Pred, predo, ped. "Pred" is a word that appeared first as short for "predator". Predator hunters tend to call all maps "predators" and consider these groups synonymous; "predo" and "ped" emerged as a mix of "pred" and "pedo". This chain of words should not be confused with "ped" in "pedage", a transage term for people who identify as prepubescent children, which was independently coined[6]. Some maps put "pedo" in this category too and consider it a slur because of how often it is used derogatorily. This is debated, however.
  • Sexual urges. Mapmisiacs who don't want to acknowledge minor attraction as a real attraction with a possibility of clear preferences use these words to pose it as an urge to have sex with any random child instead.
  • Sexualization of children. Maps are accused of sexualizing children due to a belief that you can only be sexually attracted to what is already inherently sexual. Sexualization of children is prohibited by Terms of Service of many social media platforms, and completely nonsexual map blogs were terminated with this accusation being listed as the reason.

Day of Remembrance and Solidarity

The 14th of July was proposed as the "Day of Remembrance and Solidarity with the victims of pedophobia"[7]. On that day Bijan Ebrahimi, a disabled Iranian person, was killed by neighbors over false child abuse suspicions. A site titled pedophobiavictims maintains a list of people who died because of stigma of minor attraction, ranging from a civil rights defender who fought for maps and committed suicide to a little child who behaved sexually and was killed by parents[8].

The Mapmisia Awareness Flag

The flag is a slightly brighter version of the map flag with outer stripes blacked out and a blood drop slightly offcenter. It is based on how the map flag appeared in 2022 on r/place, a Reddit event where users create art by placing dots. The map flag was erased and painted over multiple times before the canvas finalized[9], and the resilience in face of erasure is seen as symbolic.

References