<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://www.verzauberte-welten.de/index.php?action=history&amp;feed=atom&amp;title=Modul%3AMiddleclass</id>
	<title>Modul:Middleclass - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://www.verzauberte-welten.de/index.php?action=history&amp;feed=atom&amp;title=Modul%3AMiddleclass"/>
	<link rel="alternate" type="text/html" href="https://www.verzauberte-welten.de/index.php?title=Modul:Middleclass&amp;action=history"/>
	<updated>2026-04-05T19:19:15Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Verzauberte Welten e.V.</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://www.verzauberte-welten.de/index.php?title=Modul:Middleclass&amp;diff=976&amp;oldid=prev</id>
		<title>Maintenance script: Schützte „Modul:Middleclass“ ([Bearbeiten=Nur Administratoren erlauben] (unbeschränkt) [Verschieben=Nur Administratoren erlauben] (unbeschränkt))</title>
		<link rel="alternate" type="text/html" href="https://www.verzauberte-welten.de/index.php?title=Modul:Middleclass&amp;diff=976&amp;oldid=prev"/>
		<updated>2015-08-09T08:53:58Z</updated>

		<summary type="html">&lt;p&gt;Schützte „&lt;a href=&quot;/Modul:Middleclass&quot; title=&quot;Modul:Middleclass&quot;&gt;Modul:Middleclass&lt;/a&gt;“ ([Bearbeiten=Nur Administratoren erlauben] (unbeschränkt) [Verschieben=Nur Administratoren erlauben] (unbeschränkt))&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;de&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version vom 9. August 2015, 10:53 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;de&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(kein Unterschied)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://www.verzauberte-welten.de/index.php?title=Modul:Middleclass&amp;diff=428&amp;oldid=prev</id>
		<title>mw&gt;Oetterer: Schützte „Modul:Middleclass“: Häufig eingebundenes Modul ([Bearbeiten=Nur Administratoren erlauben] (unbeschränkt) [Verschieben=Nur Administratoren erlauben] (unbeschränkt))</title>
		<link rel="alternate" type="text/html" href="https://www.verzauberte-welten.de/index.php?title=Modul:Middleclass&amp;diff=428&amp;oldid=prev"/>
		<updated>2014-09-29T10:57:11Z</updated>

		<summary type="html">&lt;p&gt;Schützte „&lt;a href=&quot;/Modul:Middleclass&quot; title=&quot;Modul:Middleclass&quot;&gt;Modul:Middleclass&lt;/a&gt;“: Häufig eingebundenes Modul ([Bearbeiten=Nur Administratoren erlauben] (unbeschränkt) [Verschieben=Nur Administratoren erlauben] (unbeschränkt))&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local middleclass = {&lt;br /&gt;
  _VERSION     = 'middleclass v3.0.1',&lt;br /&gt;
  _DESCRIPTION = 'Object Orientation for Lua',&lt;br /&gt;
  _URL         = 'https://github.com/kikito/middleclass',&lt;br /&gt;
  _LICENSE     = [[&lt;br /&gt;
    MIT LICENSE&lt;br /&gt;
&lt;br /&gt;
    Copyright (c) 2011 Enrique García Cota&lt;br /&gt;
&lt;br /&gt;
    Permission is hereby granted, free of charge, to any person obtaining a&lt;br /&gt;
    copy of this software and associated documentation files (the&lt;br /&gt;
    &amp;quot;Software&amp;quot;), to deal in the Software without restriction, including&lt;br /&gt;
    without limitation the rights to use, copy, modify, merge, publish,&lt;br /&gt;
    distribute, sublicense, and/or sell copies of the Software, and to&lt;br /&gt;
    permit persons to whom the Software is furnished to do so, subject to&lt;br /&gt;
    the following conditions:&lt;br /&gt;
&lt;br /&gt;
    The above copyright notice and this permission notice shall be included&lt;br /&gt;
    in all copies or substantial portions of the Software.&lt;br /&gt;
&lt;br /&gt;
    THE SOFTWARE IS PROVIDED &amp;quot;AS IS&amp;quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS&lt;br /&gt;
    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF&lt;br /&gt;
    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.&lt;br /&gt;
    IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY&lt;br /&gt;
    CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,&lt;br /&gt;
    TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE&lt;br /&gt;
    SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.&lt;br /&gt;
  ]]&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local function _setClassDictionariesMetatables(aClass)&lt;br /&gt;
  local dict = aClass.__instanceDict&lt;br /&gt;
  dict.__index = dict&lt;br /&gt;
&lt;br /&gt;
  local super = aClass.super&lt;br /&gt;
  if super then&lt;br /&gt;
    local superStatic = super.static&lt;br /&gt;
    setmetatable(dict, super.__instanceDict)&lt;br /&gt;
    setmetatable(aClass.static, { __index = function(_,k) return dict[k] or superStatic[k] end })&lt;br /&gt;
  else&lt;br /&gt;
    setmetatable(aClass.static, { __index = function(_,k) return dict[k] end })&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function _setClassMetatable(aClass)&lt;br /&gt;
  setmetatable(aClass, {&lt;br /&gt;
    __tostring = function() return &amp;quot;class &amp;quot; .. aClass.name end,&lt;br /&gt;
    __index    = aClass.static,&lt;br /&gt;
    __newindex = aClass.__instanceDict,&lt;br /&gt;
    __call     = function(self, ...) return self:new(...) end&lt;br /&gt;
  })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function _createClass(name, super)&lt;br /&gt;
  local aClass = { name = name, super = super, static = {}, __mixins = {}, __instanceDict={} }&lt;br /&gt;
  aClass.subclasses = setmetatable({}, {__mode = &amp;quot;k&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
  _setClassDictionariesMetatables(aClass)&lt;br /&gt;
  _setClassMetatable(aClass)&lt;br /&gt;
&lt;br /&gt;
  return aClass&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function _createLookupMetamethod(aClass, name)&lt;br /&gt;
  return function(...)&lt;br /&gt;
    local method = aClass.super[name]&lt;br /&gt;
    assert( type(method)=='function', tostring(aClass) .. &amp;quot; doesn't implement metamethod '&amp;quot; .. name .. &amp;quot;'&amp;quot; )&lt;br /&gt;
    return method(...)&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function _setClassMetamethods(aClass)&lt;br /&gt;
  for _,m in ipairs(aClass.__metamethods) do&lt;br /&gt;
    aClass[m]= _createLookupMetamethod(aClass, m)&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function _setDefaultInitializeMethod(aClass, super)&lt;br /&gt;
  aClass.initialize = function(instance, ...)&lt;br /&gt;
    return super.initialize(instance, ...)&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function _includeMixin(aClass, mixin)&lt;br /&gt;
  assert(type(mixin)=='table', &amp;quot;mixin must be a table&amp;quot;)&lt;br /&gt;
  for name,method in pairs(mixin) do&lt;br /&gt;
    if name ~= &amp;quot;included&amp;quot; and name ~= &amp;quot;static&amp;quot; then aClass[name] = method end&lt;br /&gt;
  end&lt;br /&gt;
  if mixin.static then&lt;br /&gt;
    for name,method in pairs(mixin.static) do&lt;br /&gt;
      aClass.static[name] = method&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
  if type(mixin.included)==&amp;quot;function&amp;quot; then mixin:included(aClass) end&lt;br /&gt;
  aClass.__mixins[mixin] = true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local Object = _createClass(&amp;quot;Object&amp;quot;, nil)&lt;br /&gt;
&lt;br /&gt;
Object.static.__metamethods = { '__add', '__call', '__concat', '__div', '__ipairs', '__le',&lt;br /&gt;
                                '__len', '__lt', '__mod', '__mul', '__pairs', '__pow', '__sub',&lt;br /&gt;
                                '__tostring', '__unm'}&lt;br /&gt;
&lt;br /&gt;
function Object.static:allocate()&lt;br /&gt;
  assert(type(self) == 'table', &amp;quot;Make sure that you are using 'Class:allocate' instead of 'Class.allocate'&amp;quot;)&lt;br /&gt;
  return setmetatable({ class = self }, self.__instanceDict)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Object.static:new(...)&lt;br /&gt;
  local instance = self:allocate()&lt;br /&gt;
  instance:initialize(...)&lt;br /&gt;
  return instance&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Object.static:subclass(name)&lt;br /&gt;
  assert(type(self) == 'table', &amp;quot;Make sure that you are using 'Class:subclass' instead of 'Class.subclass'&amp;quot;)&lt;br /&gt;
  assert(type(name) == &amp;quot;string&amp;quot;, &amp;quot;You must provide a name(string) for your class&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
  local subclass = _createClass(name, self)&lt;br /&gt;
  _setClassMetamethods(subclass)&lt;br /&gt;
  _setDefaultInitializeMethod(subclass, self)&lt;br /&gt;
  self.subclasses[subclass] = true&lt;br /&gt;
  self:subclassed(subclass)&lt;br /&gt;
&lt;br /&gt;
  return subclass&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Object.static:subclassed(other) end&lt;br /&gt;
&lt;br /&gt;
function Object.static:isSubclassOf(other)&lt;br /&gt;
  return type(other)                   == 'table' and&lt;br /&gt;
         type(self)                    == 'table' and&lt;br /&gt;
         type(self.super)              == 'table' and&lt;br /&gt;
         ( self.super == other or&lt;br /&gt;
           type(self.super.isSubclassOf) == 'function' and&lt;br /&gt;
           self.super:isSubclassOf(other)&lt;br /&gt;
         )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Object.static:include( ... )&lt;br /&gt;
  assert(type(self) == 'table', &amp;quot;Make sure you that you are using 'Class:include' instead of 'Class.include'&amp;quot;)&lt;br /&gt;
  for _,mixin in ipairs({...}) do _includeMixin(self, mixin) end&lt;br /&gt;
  return self&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Object.static:includes(mixin)&lt;br /&gt;
  return type(mixin)          == 'table' and&lt;br /&gt;
         type(self)           == 'table' and&lt;br /&gt;
         type(self.__mixins)  == 'table' and&lt;br /&gt;
         ( self.__mixins[mixin] or&lt;br /&gt;
           type(self.super)           == 'table' and&lt;br /&gt;
           type(self.super.includes)  == 'function' and&lt;br /&gt;
           self.super:includes(mixin)&lt;br /&gt;
         )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Object:initialize() end&lt;br /&gt;
&lt;br /&gt;
function Object:__tostring() return &amp;quot;instance of &amp;quot; .. tostring(self.class) end&lt;br /&gt;
&lt;br /&gt;
function Object:isInstanceOf(aClass)&lt;br /&gt;
  return type(self)                == 'table' and&lt;br /&gt;
         type(self.class)          == 'table' and&lt;br /&gt;
         type(aClass)              == 'table' and&lt;br /&gt;
         ( aClass == self.class or&lt;br /&gt;
           type(aClass.isSubclassOf) == 'function' and&lt;br /&gt;
           self.class:isSubclassOf(aClass)&lt;br /&gt;
         )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function middleclass.class(name, super, ...)&lt;br /&gt;
  super = super or Object&lt;br /&gt;
  return super:subclass(name, ...)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
middleclass.Object = Object&lt;br /&gt;
&lt;br /&gt;
setmetatable(middleclass, { __call = function(_, ...) return middleclass.class(...) end })&lt;br /&gt;
&lt;br /&gt;
return middleclass&lt;/div&gt;</summary>
		<author><name>mw&gt;Oetterer</name></author>
	</entry>
</feed>