{
    "content": [
        {
            "type": "text",
            "text": "# Moose::Meta::Class (perldoc)\n\n## NAME\n\nMoose::Meta::Class - The Moose metaclass\n\n## DESCRIPTION\n\nThis class is a subclass of Class::MOP::Class that provides additional Moose-specific\nfunctionality.\n\n## Sections\n\n- **NAME**\n- **VERSION**\n- **DESCRIPTION**\n- **INHERITANCE**\n- **METHODS**\n- **BUGS**\n- **AUTHORS**\n- **COPYRIGHT AND LICENSE**\n\nUse structuredContent.sections for detailed options, examples, and full documentation.\n"
        }
    ],
    "structuredContent": {
        "command": "Moose::Meta::Class",
        "section": "",
        "mode": "perldoc",
        "summary": "Moose::Meta::Class - The Moose metaclass",
        "synopsis": null,
        "tldr_summary": null,
        "tldr_examples": [],
        "tldr_source": null,
        "flags": [],
        "examples": [],
        "see_also": [],
        "section_outline": [
            {
                "name": "NAME",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "VERSION",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "DESCRIPTION",
                "lines": 7,
                "subsections": []
            },
            {
                "name": "INHERITANCE",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "METHODS",
                "lines": 90,
                "subsections": []
            },
            {
                "name": "BUGS",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "AUTHORS",
                "lines": 20,
                "subsections": []
            },
            {
                "name": "COPYRIGHT AND LICENSE",
                "lines": 5,
                "subsections": []
            }
        ],
        "sections": {
            "NAME": {
                "content": "Moose::Meta::Class - The Moose metaclass\n",
                "subsections": []
            },
            "VERSION": {
                "content": "version 2.2200\n",
                "subsections": []
            },
            "DESCRIPTION": {
                "content": "This class is a subclass of Class::MOP::Class that provides additional Moose-specific\nfunctionality.\n\nTo really understand this class, you will need to start with the Class::MOP::Class\ndocumentation. This class can be understood as a set of additional features on top of the basic\nfeature provided by that parent class.\n",
                "subsections": []
            },
            "INHERITANCE": {
                "content": "\"Moose::Meta::Class\" is a subclass of Class::MOP::Class.\n",
                "subsections": []
            },
            "METHODS": {
                "content": "Moose::Meta::Class->initialize($packagename, %options)\nThis overrides the parent's method in order to provide its own defaults for the\n\"attributemetaclass\", \"instancemetaclass\", and \"methodmetaclass\" options.\n\nThese all default to the appropriate Moose class.\n\nMoose::Meta::Class->create($packagename, %options)\nThis overrides the parent's method in order to accept a \"roles\" option. This should be an\narray reference containing roles that the class does, each optionally followed by a hashref\nof options (\"-excludes\" and \"-alias\").\n\nmy $metaclass = Moose::Meta::Class->create( 'New::Class', roles => [...] );\n\nMoose::Meta::Class->createanonclass\nThis overrides the parent's method to accept a \"roles\" option, just as \"create\" does.\n\nIt also accepts a \"cache\" option. If this is \"true\", then the anonymous class will be cached\nbased on its superclasses and roles. If an existing anonymous class in the cache has the\nsame superclasses and roles, it will be reused.\n\nmy $metaclass = Moose::Meta::Class->createanonclass(\nsuperclasses => ['Foo'],\nroles        => [qw/Some Roles Go Here/],\ncache        => 1,\n);\n\nEach entry in both the \"superclasses\" and the \"roles\" option can be followed by a hash\nreference with arguments. The \"superclasses\" option can be supplied with a -version option\nthat ensures the loaded superclass satisfies the required version. The \"role\" option also\ntakes the \"-version\" as an argument, but the option hash reference can also contain any\nother role relevant values like exclusions or parameterized role arguments.\n\n$metaclass->newobject(%params)\nThis overrides the parent's method in order to add support for attribute triggers.\n\n$metaclass->superclasses(@superclasses)\nThis is the accessor allowing you to read or change the parents of the class.\n\nEach superclass can be followed by a hash reference containing a -version value. If the\nversion requirement is not satisfied an error will be thrown.\n\nWhen you pass classes to this method, we will attempt to load them if they are not already\nloaded.\n\n$metaclass->addoverridemethodmodifier($name, $sub)\nThis adds an \"override\" method modifier to the package.\n\n$metaclass->addaugmentmethodmodifier($name, $sub)\nThis adds an \"augment\" method modifier to the package.\n\n$metaclass->calculateallroles\nThis will return a unique array of Moose::Meta::Role instances which are attached to this\nclass.\n\n$metaclass->calculateallroleswithinheritance\nThis will return a unique array of Moose::Meta::Role instances which are attached to this\nclass, and each of this class's ancestors.\n\n$metaclass->addrole($role)\nThis takes a Moose::Meta::Role object, and adds it to the class's list of roles. This *does\nnot* actually apply the role to the class.\n\n$metaclass->roleapplications\nReturns a list of Moose::Meta::Role::Application::ToClass objects, which contain the\narguments to role application.\n\n$metaclass->addroleapplication($application)\nThis takes a Moose::Meta::Role::Application::ToClass object, and adds it to the class's list\nof role applications. This *does not* actually apply any role to the class; it is only for\ntracking role applications.\n\n$metaclass->doesrole($role)\nThis returns a boolean indicating whether or not the class does the specified role. The role\nprovided can be either a role name or a Moose::Meta::Role object. This tests both the class\nand its parents.\n\n$metaclass->excludesrole($rolename)\nA class excludes a role if it has already composed a role which excludes the named role.\nThis tests both the class and its parents.\n\n$metaclass->addattribute($attrname, %params|$params)\nThis overrides the parent's method in order to allow the parameters to be provided as a hash\nreference.\n\n$metaclass->constructorclass($classname)\n$metaclass->destructorclass($classname)\nThese are the names of classes used when making a class immutable. These default to\nMoose::Meta::Method::Constructor and Moose::Meta::Method::Destructor respectively. These\naccessors are read-write, so you can use them to change the class name.\n",
                "subsections": []
            },
            "BUGS": {
                "content": "See \"BUGS\" in Moose for details on reporting bugs.\n",
                "subsections": []
            },
            "AUTHORS": {
                "content": "*   Stevan Little <stevan@cpan.org>\n\n*   Dave Rolsky <autarch@urth.org>\n\n*   Jesse Luehrs <doy@cpan.org>\n\n*   Shawn M Moore <sartak@cpan.org>\n\n*   יובל קוג'מן (Yuval Kogman) <nothingmuch@woobling.org>\n\n*   Karen Etheridge <ether@cpan.org>\n\n*   Florian Ragwitz <rafl@debian.org>\n\n*   Hans Dieter Pearcey <hdp@cpan.org>\n\n*   Chris Prather <chris@prather.org>\n\n*   Matt S Trout <mstrout@cpan.org>\n",
                "subsections": []
            },
            "COPYRIGHT AND LICENSE": {
                "content": "This software is copyright (c) 2006 by Infinity Interactive, Inc.\n\nThis is free software; you can redistribute it and/or modify it under the same terms as the Perl\n5 programming language system itself.\n",
                "subsections": []
            }
        }
    }
}