{
    "content": [
        {
            "type": "text",
            "text": "# Type::Tiny::Class (perldoc)\n\n## NAME\n\nType::Tiny::Class - type constraints based on the \"isa\" method\n\n## DESCRIPTION\n\nType constraints of the general form \"{ $->isa(\"Some::Class\") }\".\n\n## Sections\n\n- **NAME**\n- **STATUS**\n- **DESCRIPTION** (3 subsections)\n- **BUGS**\n- **SEE ALSO**\n- **AUTHOR**\n- **COPYRIGHT AND LICENCE**\n- **DISCLAIMER OF WARRANTIES**\n\nUse structuredContent.sections for detailed options, examples, and full documentation.\n"
        }
    ],
    "structuredContent": {
        "command": "Type::Tiny::Class",
        "section": "",
        "mode": "perldoc",
        "summary": "Type::Tiny::Class - type constraints based on the \"isa\" method",
        "synopsis": null,
        "tldr_summary": null,
        "tldr_examples": [],
        "tldr_source": null,
        "flags": [],
        "examples": [],
        "see_also": [],
        "section_outline": [
            {
                "name": "NAME",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "STATUS",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "DESCRIPTION",
                "lines": 5,
                "subsections": [
                    {
                        "name": "Constructor",
                        "lines": 11
                    },
                    {
                        "name": "Attributes",
                        "lines": 14
                    },
                    {
                        "name": "Methods",
                        "lines": 53
                    }
                ]
            },
            {
                "name": "BUGS",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "SEE ALSO",
                "lines": 6,
                "subsections": []
            },
            {
                "name": "AUTHOR",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "COPYRIGHT AND LICENCE",
                "lines": 5,
                "subsections": []
            },
            {
                "name": "DISCLAIMER OF WARRANTIES",
                "lines": 4,
                "subsections": []
            }
        ],
        "sections": {
            "NAME": {
                "content": "Type::Tiny::Class - type constraints based on the \"isa\" method\n",
                "subsections": []
            },
            "STATUS": {
                "content": "This module is covered by the Type-Tiny stability policy.\n",
                "subsections": []
            },
            "DESCRIPTION": {
                "content": "Type constraints of the general form \"{ $->isa(\"Some::Class\") }\".\n\nThis package inherits from Type::Tiny; see that for most documentation. Major differences are\nlisted below:\n",
                "subsections": [
                    {
                        "name": "Constructor",
                        "content": "\"new\"\nWhen the constructor is called on an *instance* of Type::Tiny::Class, it passes the call\nthrough to the constructor of the class for the constraint. So for example:\n\nmy $type = Type::Tiny::Class->new(class => \"Foo::Bar\");\nmy $obj  = $type->new(hello => \"World\");\nsay ref($obj);   # prints \"Foo::Bar\"\n\nThis little bit of DWIM was borrowed from MooseX::Types::TypeDecorator, but Type::Tiny\ndoesn't take the idea quite as far.\n"
                    },
                    {
                        "name": "Attributes",
                        "content": "\"class\"\nThe class for the constraint.\n\n\"constraint\"\nUnlike Type::Tiny, you *cannot* pass a constraint coderef to the constructor. Instead rely\non the default.\n\n\"inlined\"\nUnlike Type::Tiny, you *cannot* pass an inlining coderef to the constructor. Instead rely on\nthe default.\n\n\"parent\"\nParent is automatically calculated, and cannot be passed to the constructor.\n"
                    },
                    {
                        "name": "Methods",
                        "content": "\"plusconstructors($source, $methodname)\"\nMuch like \"pluscoercions\" but adds coercions that go via a constructor. (In fact, this is\nimplemented as a wrapper for \"pluscoercions\".)\n\nExample:\n\npackage MyApp::Minion;\n\nuse Moose; extends \"MyApp::Person\";\n\nuse Types::Standard qw( HashRef Str );\nuse Type::Utils qw( classtype );\n\nmy $Person = classtype({ class => \"MyApp::Person\" });\n\nhas boss => (\nis     => \"ro\",\nisa    => $Person->plusconstructors(\nHashRef,     \"new\",\nStr,         \"newfromname\",\n),\ncoerce => 1,\n);\n\npackage main;\n\nMyApp::Minion->new(\n...,\nboss => \"Bob\",  ## via MyApp::Person->newfromname\n);\n\nMyApp::Minion->new(\n...,\nboss => { name => \"Bob\" },  ## via MyApp::Person->new\n);\n\nBecause coercing \"HashRef\" via constructor is a common desire, if you call\n\"plusconstructors\" with no arguments at all, this is the default.\n\n$classtype->plusconstructors(HashRef, \"new\")\n$classtype->plusconstructors()  ## identical to above\n\nThis is handy for Moose/Mouse/Moo-based classes.\n\n\"stringifiesto($constraint)\"\nSee Type::Tiny::ConstrainedObject.\n\n\"numifiesto($constraint)\"\nSee Type::Tiny::ConstrainedObject.\n\n\"withattributevalues($attr1 => $constraint1, ...)\"\nSee Type::Tiny::ConstrainedObject.\n"
                    }
                ]
            },
            "BUGS": {
                "content": "Please report any bugs to <https://github.com/tobyink/p5-type-tiny/issues>.\n",
                "subsections": []
            },
            "SEE ALSO": {
                "content": "Type::Tiny::Manual.\n\nType::Tiny.\n\nMoose::Meta::TypeConstraint::Class.\n",
                "subsections": []
            },
            "AUTHOR": {
                "content": "Toby Inkster <tobyink@cpan.org>.\n",
                "subsections": []
            },
            "COPYRIGHT AND LICENCE": {
                "content": "This software is copyright (c) 2013-2014, 2017-2021 by Toby Inkster.\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": []
            },
            "DISCLAIMER OF WARRANTIES": {
                "content": "THIS PACKAGE IS PROVIDED \"AS IS\" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,\nWITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR\nPURPOSE.\n",
                "subsections": []
            }
        }
    }
}