@@ -0,0 +1,25 @@
+language: perl
+perl:
+ - "5.8"
+ - "5.10"
+ - "5.12"
+ - "5.14"
+ - "5.16"
+ - "5.18"
+
+matrix:
+ allow_failures:
+ - perl: "5.8"
+
+before_install:
+ # git bits sometimes needed...
+ - git config user.name 'Travis-CI'
+ - git config user.email 'travis@nowhere.dne'
+
+install:
+ # not so much install our package as all its prereqs
+ - cpanm --installdeps . || { cat ~/.cpanm/build.log ; false ; }
+
+script:
+ - perl Makefile.PL
+ - make test
@@ -1,5 +1,39 @@
Revision history for MooseX-AttributeShortcuts
+0.024 2014-05-02 12:50:57 PDT-0700
+ * Make the undocumented isa_* options "deprecated" ...which seems like
+ better karma than no warning, as people really shouldn't be using these
+ anyways, but better nice than to have it done to me someday :)
+
+0.023 2014-04-04 21:23:33 PDT-0700
+ * Add isa_instance_of attribute option.
+
+0.022 2013-09-29 00:08:39 PDT-0700
+ * No code changes -- released with refreshed test suite
+
+0.021 2013-09-08 23:32:09 PDT-0700
+ * Drop MXCPA entirely, and incorporate the subtyping functionality
+
+0.020_01 2013-08-26 13:33:44 PDT-0700
+ * Keep MXCPA quiet, for now. This is evil (hence the dev release), but
+ should keep things status-quo until we properly integrate MXCPA
+ functionality into MXAS proper.
+
+0.020 2013-08-19 21:51:02 PDT-0700
+ * Bump CoercePerAttribute version requirement to 1.000 and update docs
+
+0.019 2013-04-20 21:50:05 PDT-0700
+ * Better support inline subtyping and coercions (people who are inclined
+ to shoot themselves in their foot will do it regardless)
+ * Additional tests for coercions
+
+0.018 2013-01-09 10:20:25 PST8PDT
+ * ~~ TRIAL ~~
+ * If a constraint coderef is given and coercion is requested, we now copy
+ the parent type's coercions to the anonymous child type.
+ * Better document the constraint option and how it interacts with simple
+ coercion.
+
0.017 2012-10-28 20:53:52 PST8PDT
* make actually make classes immutable during tests
* add initial primitive anonymous inline subtyping support; this needs to
@@ -1,3 +1,5 @@
+# This file was automatically generated by Dist::Zilla::Plugin::Manifest v5.015.
+.travis.yml
Changes
INSTALL
LICENSE
@@ -7,8 +9,10 @@ META.yml
Makefile.PL
README
SIGNATURE
+cpanfile
dist.ini
lib/MooseX/AttributeShortcuts.pm
+t/00-check-deps.t
t/00-compile.t
t/000-report-versions-tiny.t
t/01-basic.t
@@ -19,15 +23,22 @@ t/05-extend.t
t/06-role.t
t/07-trigger.t
t/anon-builder.t
+t/constraint.t
+t/deprecated/inline_typing.t
t/funcs.pm
t/handles-metaclass.t
+t/inline_coercion-back-compat.t
+t/inline_coercion.t
t/inline_subtyping.t
-t/inline_typing.t
-t/release-consistent-version.t
-t/release-eol.t
-t/release-has-version.t
-t/release-no-smart-comments.t
-t/release-no-tabs.t
-t/release-pod-coverage.t
-t/release-pod-syntax.t
-t/release-portability.t
+t/inline_subtyping_with_coercion.t
+t/isa_instance_of.t
+xt/author/pod-spell.t
+xt/release/consistent-version.t
+xt/release/eol.t
+xt/release/has-version.t
+xt/release/minimum-version.t
+xt/release/no-smart-comments.t
+xt/release/no-tabs.t
+xt/release/pod-coverage.t
+xt/release/pod-linkcheck.t
+xt/release/pod-syntax.t
@@ -4,7 +4,7 @@
"Chris Weyl <cweyl@alumni.drew.edu>"
],
"dynamic_config" : 0,
- "generated_by" : "Dist::Zilla version 4.300028, CPAN::Meta::Converter version 2.120921",
+ "generated_by" : "Dist::Zilla version 5.015, CPAN::Meta::Converter version 2.133380",
"license" : [
"lgpl_2_1"
],
@@ -28,6 +28,8 @@
"develop" : {
"requires" : {
"Pod::Coverage::TrustPod" : "0",
+ "Test::More" : "0",
+ "Test::NoTabs" : "0",
"Test::Pod" : "1.41",
"Test::Pod::Coverage" : "1.08",
"version" : "0.9901"
@@ -35,6 +37,7 @@
},
"runtime" : {
"requires" : {
+ "List::AllUtils" : "0",
"Moose" : "0",
"Moose::Exporter" : "0",
"Moose::Util::MetaRole" : "0",
@@ -42,6 +45,9 @@
"MooseX::Role::Parameterized" : "0",
"MooseX::Types::Common::String" : "0",
"MooseX::Types::Moose" : "0",
+ "Package::DeprecationManager" : "0",
+ "autobox::Core" : "0",
+ "autobox::Junctions" : "0",
"namespace::autoclean" : "0",
"perl" : "5.006",
"strict" : "0",
@@ -50,25 +56,32 @@
},
"test" : {
"requires" : {
- "File::Find" : "0",
- "File::Temp" : "0",
+ "File::Spec" : "0",
+ "IO::Handle" : "0",
+ "IPC::Open3" : "0",
"Moose::Role" : "0",
+ "Moose::Util" : "0",
+ "MooseX::Types::Path::Class" : "0",
+ "Path::Class" : "0",
+ "Test::CheckDeps" : "0.010",
"Test::Fatal" : "0",
"Test::Moose" : "0",
- "Test::Moose::More" : "0.017",
- "Test::More" : "0.88",
- "constant" : "0"
+ "Test::Moose::More" : "0.018",
+ "Test::More" : "0.94",
+ "Test::Warn" : "0",
+ "constant" : "0",
+ "perl" : "5.006"
}
}
},
"provides" : {
"MooseX::AttributeShortcuts" : {
"file" : "lib/MooseX/AttributeShortcuts.pm",
- "version" : "0.017"
+ "version" : "0.024"
},
"MooseX::AttributeShortcuts::Trait::Attribute" : {
"file" : "lib/MooseX/AttributeShortcuts.pm",
- "version" : "0.017"
+ "version" : "0.024"
}
},
"release_status" : "stable",
@@ -76,303 +89,619 @@
"bugtracker" : {
"web" : "https://github.com/RsrchBoy/moosex-attributeshortcuts/issues"
},
- "homepage" : "http://metacpan.org/release/MooseX-AttributeShortcuts/",
+ "homepage" : "https://github.com/RsrchBoy/moosex-attributeshortcuts",
"repository" : {
"type" : "git",
- "url" : "git://github.com/RsrchBoy/moosex-attributeshortcuts.git",
+ "url" : "https://github.com/RsrchBoy/moosex-attributeshortcuts.git",
"web" : "https://github.com/RsrchBoy/moosex-attributeshortcuts"
}
},
- "version" : "0.017",
+ "version" : "0.024",
"x_Dist_Zilla" : {
"perl" : {
- "version" : "5.016001"
+ "version" : "5.018001"
},
"plugins" : [
{
"class" : "Dist::Zilla::Plugin::NextRelease",
- "name" : "@Filter/Dist::Zilla::Plugin::NextRelease",
- "version" : "4.300028"
+ "name" : "@RSRCHBOY/NextRelease",
+ "version" : "5.015"
},
{
- "class" : "Dist::Zilla::Plugin::Git::Check",
- "name" : "@Filter/@Git/Check",
- "version" : "2.001"
- },
- {
- "class" : "Dist::Zilla::Plugin::Git::Commit",
- "name" : "@Filter/@Git/Commit",
- "version" : "2.001"
- },
- {
- "class" : "Dist::Zilla::Plugin::Git::Tag",
- "name" : "@Filter/@Git/Tag",
- "version" : "2.001"
- },
- {
- "class" : "Dist::Zilla::Plugin::Git::Push",
- "name" : "@Filter/@Git/Push",
- "version" : "2.001"
+ "class" : "Dist::Zilla::Plugin::Git::NextVersion",
+ "name" : "@RSRCHBOY/Git::NextVersion",
+ "version" : "2.019"
},
{
- "class" : "Dist::Zilla::Plugin::Git::NextVersion",
- "name" : "@Filter/Dist::Zilla::Plugin::Git::NextVersion",
- "version" : "2.001"
+ "class" : "Dist::Zilla::Plugin::ContributorsFromGit",
+ "name" : "@RSRCHBOY/ContributorsFromGit",
+ "version" : "0.013"
},
{
"class" : "Dist::Zilla::Plugin::Git::CheckFor::CorrectBranch",
- "name" : "@Filter/@Git::CheckFor/Git::CheckFor::CorrectBranch",
- "version" : "0.005"
+ "name" : "@RSRCHBOY/@Git::CheckFor/Git::CheckFor::CorrectBranch",
+ "version" : "0.008"
},
{
"class" : "Dist::Zilla::Plugin::Git::CheckFor::Fixups",
- "name" : "@Filter/@Git::CheckFor/Git::CheckFor::Fixups",
- "version" : "0.005"
+ "name" : "@RSRCHBOY/@Git::CheckFor/Git::CheckFor::Fixups",
+ "version" : "0.008"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::Git::CheckFor::MergeConflicts",
+ "name" : "@RSRCHBOY/@Git::CheckFor/Git::CheckFor::MergeConflicts",
+ "version" : "0.008"
},
{
"class" : "Dist::Zilla::Plugin::GatherDir",
- "name" : "@Filter/Dist::Zilla::Plugin::GatherDir",
- "version" : "4.300028"
+ "name" : "@RSRCHBOY/GatherDir",
+ "version" : "5.015"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::PromptIfStale",
+ "config" : {
+ "Dist::Zilla::Plugin::PromptIfStale" : {
+ "check_all_plugins" : 0,
+ "check_all_prereqs" : 0,
+ "modules" : [
+ "Dist::Zilla",
+ "Dist::Zilla::PluginBundle::RSRCHBOY"
+ ],
+ "phase" : "build",
+ "skip" : []
+ }
+ },
+ "name" : "@RSRCHBOY/PromptIfStale",
+ "version" : "0.015"
},
{
"class" : "Dist::Zilla::Plugin::PruneCruft",
- "name" : "@Filter/Dist::Zilla::Plugin::PruneCruft",
- "version" : "4.300028"
+ "name" : "@RSRCHBOY/PruneCruft",
+ "version" : "5.015"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::Git::Describe",
+ "name" : "@RSRCHBOY/Git::Describe",
+ "version" : "0.003"
},
{
"class" : "Dist::Zilla::Plugin::ExecDir",
- "name" : "@Filter/Dist::Zilla::Plugin::ExecDir",
- "version" : "4.300028"
+ "name" : "@RSRCHBOY/ExecDir",
+ "version" : "5.015"
},
{
"class" : "Dist::Zilla::Plugin::ShareDir",
- "name" : "@Filter/Dist::Zilla::Plugin::ShareDir",
- "version" : "4.300028"
+ "name" : "@RSRCHBOY/ShareDir",
+ "version" : "5.015"
},
{
"class" : "Dist::Zilla::Plugin::MakeMaker",
- "name" : "@Filter/Dist::Zilla::Plugin::MakeMaker",
- "version" : "4.300028"
+ "config" : {
+ "Dist::Zilla::Role::TestRunner" : {
+ "default_jobs" : 1
+ }
+ },
+ "name" : "@RSRCHBOY/MakeMaker",
+ "version" : "5.015"
},
{
"class" : "Dist::Zilla::Plugin::InstallGuide",
- "name" : "@Filter/Dist::Zilla::Plugin::InstallGuide",
- "version" : "1.200000"
+ "name" : "@RSRCHBOY/InstallGuide",
+ "version" : "1.200002"
},
{
"class" : "Dist::Zilla::Plugin::Manifest",
- "name" : "@Filter/Dist::Zilla::Plugin::Manifest",
- "version" : "4.300028"
+ "name" : "@RSRCHBOY/Manifest",
+ "version" : "5.015"
},
{
"class" : "Dist::Zilla::Plugin::SurgicalPkgVersion",
- "name" : "@Filter/Dist::Zilla::Plugin::SurgicalPkgVersion",
+ "name" : "@RSRCHBOY/SurgicalPkgVersion",
"version" : "0.0019"
},
{
"class" : "Dist::Zilla::Plugin::ReadmeFromPod",
- "name" : "@Filter/Dist::Zilla::Plugin::ReadmeFromPod",
- "version" : "0.16"
+ "name" : "@RSRCHBOY/ReadmeFromPod",
+ "version" : "0.21"
},
{
"class" : "Dist::Zilla::Plugin::MinimumPerl",
- "name" : "@Filter/Dist::Zilla::Plugin::MinimumPerl",
+ "name" : "@RSRCHBOY/MinimumPerl",
"version" : "1.003"
},
{
"class" : "Dist::Zilla::Plugin::ReportVersions::Tiny",
- "name" : "@Filter/Dist::Zilla::Plugin::ReportVersions::Tiny",
- "version" : "1.08"
+ "name" : "@RSRCHBOY/ReportVersions::Tiny",
+ "version" : "1.10"
},
{
"class" : "Dist::Zilla::Plugin::AutoPrereqs",
- "name" : "@Filter/Dist::Zilla::Plugin::AutoPrereqs",
- "version" : "4.300028"
+ "name" : "@RSRCHBOY/AutoPrereqs",
+ "version" : "5.015"
},
{
"class" : "Dist::Zilla::Plugin::Prepender",
- "name" : "@Filter/Dist::Zilla::Plugin::Prepender",
+ "name" : "@RSRCHBOY/Prepender",
"version" : "1.112280"
},
{
+ "class" : "Dist::Zilla::Plugin::Test::PodSpelling",
+ "name" : "@RSRCHBOY/Test::PodSpelling",
+ "version" : "2.006002"
+ },
+ {
"class" : "Dist::Zilla::Plugin::ConsistentVersionTest",
- "name" : "@Filter/Dist::Zilla::Plugin::ConsistentVersionTest",
+ "name" : "@RSRCHBOY/ConsistentVersionTest",
"version" : "0.02"
},
{
"class" : "Dist::Zilla::Plugin::PodCoverageTests",
- "name" : "@Filter/Dist::Zilla::Plugin::PodCoverageTests",
- "version" : "4.300028"
+ "name" : "@RSRCHBOY/PodCoverageTests",
+ "version" : "5.015"
},
{
"class" : "Dist::Zilla::Plugin::PodSyntaxTests",
- "name" : "@Filter/Dist::Zilla::Plugin::PodSyntaxTests",
- "version" : "4.300028"
+ "name" : "@RSRCHBOY/PodSyntaxTests",
+ "version" : "5.015"
},
{
- "class" : "Dist::Zilla::Plugin::NoTabsTests",
- "name" : "@Filter/Dist::Zilla::Plugin::NoTabsTests",
- "version" : "0.01"
+ "class" : "Dist::Zilla::Plugin::Test::NoTabs",
+ "config" : {
+ "Dist::Zilla::Plugin::Test::NoTabs" : {
+ "module_finder" : [
+ ":InstallModules"
+ ],
+ "script_finder" : [
+ ":ExecFiles"
+ ]
+ }
+ },
+ "name" : "@RSRCHBOY/Test::NoTabs",
+ "version" : "0.06"
},
{
"class" : "Dist::Zilla::Plugin::EOLTests",
- "name" : "@Filter/Dist::Zilla::Plugin::EOLTests",
+ "name" : "@RSRCHBOY/EOLTests",
"version" : "0.02"
},
{
"class" : "Dist::Zilla::Plugin::HasVersionTests",
- "name" : "@Filter/Dist::Zilla::Plugin::HasVersionTests",
+ "name" : "@RSRCHBOY/HasVersionTests",
"version" : "1.101420"
},
{
"class" : "Dist::Zilla::Plugin::Test::Compile",
- "name" : "@Filter/Dist::Zilla::Plugin::Test::Compile",
- "version" : "1.112820"
+ "config" : {
+ "Dist::Zilla::Plugin::Test::Compile" : {
+ "filename" : "t/00-compile.t",
+ "module_finder" : [
+ ":InstallModules"
+ ],
+ "script_finder" : [
+ ":ExecFiles"
+ ]
+ }
+ },
+ "name" : "@RSRCHBOY/Test::Compile",
+ "version" : "2.039"
},
{
- "class" : "Dist::Zilla::Plugin::Test::Portability",
- "name" : "@Filter/Dist::Zilla::Plugin::Test::Portability",
- "version" : "2.000003"
+ "class" : "Dist::Zilla::Plugin::NoSmartCommentsTests",
+ "name" : "@RSRCHBOY/NoSmartCommentsTests",
+ "version" : "0.006"
},
{
- "class" : "Dist::Zilla::Plugin::ExtraTests",
- "name" : "@Filter/Dist::Zilla::Plugin::ExtraTests",
- "version" : "4.300028"
+ "class" : "Dist::Zilla::Plugin::Test::Pod::LinkCheck",
+ "name" : "@RSRCHBOY/Test::Pod::LinkCheck",
+ "version" : "1.001"
},
{
- "class" : "Dist::Zilla::Plugin::NoSmartCommentsTests",
- "name" : "@Filter/Dist::Zilla::Plugin::NoSmartCommentsTests",
- "version" : "0.006"
+ "class" : "Dist::Zilla::Plugin::RunExtraTests",
+ "config" : {
+ "Dist::Zilla::Role::TestRunner" : {
+ "default_jobs" : 1
+ }
+ },
+ "name" : "@RSRCHBOY/RunExtraTests",
+ "version" : "0.016"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::CheckExtraTests",
+ "name" : "@RSRCHBOY/CheckExtraTests",
+ "version" : "0.016"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::Test::MinimumVersion",
+ "name" : "@RSRCHBOY/Test::MinimumVersion",
+ "version" : "2.000005"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::Authority",
+ "name" : "@RSRCHBOY/Authority",
+ "version" : "1.006"
},
{
"class" : "Dist::Zilla::Plugin::MetaConfig",
- "name" : "@Filter/Dist::Zilla::Plugin::MetaConfig",
- "version" : "4.300028"
+ "name" : "@RSRCHBOY/MetaConfig",
+ "version" : "5.015"
},
{
"class" : "Dist::Zilla::Plugin::MetaJSON",
- "name" : "@Filter/Dist::Zilla::Plugin::MetaJSON",
- "version" : "4.300028"
+ "name" : "@RSRCHBOY/MetaJSON",
+ "version" : "5.015"
},
{
"class" : "Dist::Zilla::Plugin::MetaYAML",
- "name" : "@Filter/Dist::Zilla::Plugin::MetaYAML",
- "version" : "4.300028"
+ "name" : "@RSRCHBOY/MetaYAML",
+ "version" : "5.015"
},
{
"class" : "Dist::Zilla::Plugin::MetaNoIndex",
- "name" : "@Filter/Dist::Zilla::Plugin::MetaNoIndex",
- "version" : "4.300028"
+ "name" : "@RSRCHBOY/MetaNoIndex",
+ "version" : "5.015"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::FinderCode",
+ "name" : "@RSRCHBOY/MetaProvides::Package/AUTOVIV/:InstallModulesPM",
+ "version" : "5.015"
},
{
"class" : "Dist::Zilla::Plugin::MetaProvides::Package",
- "name" : "@Filter/Dist::Zilla::Plugin::MetaProvides::Package",
- "version" : "1.14000001"
+ "config" : {
+ "Dist::Zilla::Plugin::MetaProvides::Package" : {},
+ "Dist::Zilla::Role::MetaProvider::Provider" : {
+ "inherit_missing" : "1",
+ "inherit_version" : "1",
+ "meta_noindex" : "1"
+ }
+ },
+ "name" : "@RSRCHBOY/MetaProvides::Package",
+ "version" : "1.15000001"
},
{
- "class" : "Dist::Zilla::Plugin::GitHub::Meta",
- "name" : "@Filter/Dist::Zilla::Plugin::GitHub::Meta",
- "version" : "0.27"
+ "class" : "Dist::Zilla::Plugin::GithubMeta",
+ "name" : "@RSRCHBOY/GithubMeta",
+ "version" : "0.42"
},
{
"class" : "Dist::Zilla::Plugin::TestRelease",
- "name" : "@Filter/Dist::Zilla::Plugin::TestRelease",
- "version" : "4.300028"
+ "name" : "@RSRCHBOY/TestRelease",
+ "version" : "5.015"
},
{
"class" : "Dist::Zilla::Plugin::CheckChangesHasContent",
- "name" : "@Filter/Dist::Zilla::Plugin::CheckChangesHasContent",
+ "name" : "@RSRCHBOY/CheckChangesHasContent",
"version" : "0.006"
},
{
"class" : "Dist::Zilla::Plugin::CheckPrereqsIndexed",
- "name" : "@Filter/Dist::Zilla::Plugin::CheckPrereqsIndexed",
+ "name" : "@RSRCHBOY/CheckPrereqsIndexed",
+ "version" : "0.010"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::Git::Remote::Update",
+ "name" : "@RSRCHBOY/GitFetchOrigin",
+ "version" : "0.1.2"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::Git::Remote::Check",
+ "name" : "@RSRCHBOY/GitCheckReleaseBranchSync",
+ "version" : "0.1.2"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::Git::Remote::Check",
+ "name" : "@RSRCHBOY/GitCheckMasterBranchSync",
+ "version" : "0.1.2"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::Git::Check",
+ "name" : "@RSRCHBOY/Git::Check",
+ "version" : "2.019"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::Git::Commit",
+ "name" : "@RSRCHBOY/Git::Commit",
+ "version" : "2.019"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::Test::CheckDeps",
+ "name" : "@RSRCHBOY/Test::CheckDeps",
+ "version" : "0.012"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::CheckSelfDependency",
+ "config" : {
+ "Dist::Zilla::Plugin::CheckSelfDependency" : {
+ "finder" : [
+ ":InstallModules"
+ ]
+ }
+ },
+ "name" : "@RSRCHBOY/CheckSelfDependency",
"version" : "0.007"
},
{
- "class" : "Dist::Zilla::Plugin::ConfirmRelease",
- "name" : "@Filter/Dist::Zilla::Plugin::ConfirmRelease",
- "version" : "4.300028"
+ "class" : "Dist::Zilla::Plugin::Travis::ConfigForReleaseBranch",
+ "name" : "@RSRCHBOY/Travis::ConfigForReleaseBranch",
+ "version" : "0.001"
},
{
- "class" : "Dist::Zilla::Plugin::GitHub::Update",
- "name" : "@Filter/Dist::Zilla::Plugin::GitHub::Update",
- "version" : "0.27"
+ "class" : "Dist::Zilla::Plugin::SchwartzRatio",
+ "name" : "@RSRCHBOY/SchwartzRatio",
+ "version" : "0.2.0"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::Git::Tag",
+ "name" : "@RSRCHBOY/Git::Tag",
+ "version" : "2.019"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::Git::CommitBuild",
+ "name" : "@RSRCHBOY/Git::CommitBuild::Build",
+ "version" : "2.019"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::Git::CommitBuild",
+ "name" : "@RSRCHBOY/Git::CommitBuild::Release",
+ "version" : "2.019"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::Git::Push",
+ "name" : "@RSRCHBOY/Git::Push",
+ "version" : "2.019"
},
{
"class" : "Dist::Zilla::Plugin::UploadToCPAN",
- "name" : "@Filter/Dist::Zilla::Plugin::UploadToCPAN",
- "version" : "4.300028"
+ "name" : "@RSRCHBOY/UploadToCPAN",
+ "version" : "5.015"
},
{
"class" : "Dist::Zilla::Plugin::Signature",
- "name" : "@Filter/Dist::Zilla::Plugin::Signature",
+ "name" : "@RSRCHBOY/Signature",
"version" : "1.100930"
},
{
"class" : "Dist::Zilla::Plugin::Twitter",
- "name" : "@Filter/Dist::Zilla::Plugin::Twitter",
- "version" : "0.017"
+ "name" : "@RSRCHBOY/Twitter",
+ "version" : "0.024"
},
{
"class" : "Dist::Zilla::Plugin::InstallRelease",
- "name" : "@Filter/Dist::Zilla::Plugin::InstallRelease",
+ "name" : "@RSRCHBOY/InstallRelease",
"version" : "0.008"
},
{
+ "class" : "Dist::Zilla::Plugin::GitHub::Update",
+ "name" : "@RSRCHBOY/GitHub::Update",
+ "version" : "0.36"
+ },
+ {
"class" : "Dist::Zilla::Plugin::ArchiveRelease",
- "name" : "@Filter/Dist::Zilla::Plugin::ArchiveRelease",
+ "name" : "@RSRCHBOY/ArchiveRelease",
"version" : "4.00"
},
{
+ "class" : "Dist::Zilla::Plugin::ConfirmRelease",
+ "name" : "@RSRCHBOY/ConfirmRelease",
+ "version" : "5.015"
+ },
+ {
"class" : "Dist::Zilla::Plugin::License",
- "name" : "@Filter/Dist::Zilla::Plugin::License",
- "version" : "4.300028"
+ "name" : "@RSRCHBOY/License",
+ "version" : "5.015"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::CPANFile",
+ "name" : "@RSRCHBOY/CPANFile",
+ "version" : "5.015"
},
{
"class" : "Dist::Zilla::Plugin::CopyFilesFromBuild",
- "name" : "@Filter/Dist::Zilla::Plugin::CopyFilesFromBuild",
+ "name" : "@RSRCHBOY/CopyFilesFromBuild",
"version" : "0.103510"
},
{
"class" : "Dist::Zilla::Plugin::ReadmeAnyFromPod",
- "name" : "@Filter/ReadmePodInRoot",
- "version" : "0.120120"
+ "name" : "@RSRCHBOY/ReadmeMarkdownInRoot",
+ "version" : "0.133360"
},
{
"class" : "Dist::Zilla::Plugin::PodWeaver",
- "name" : "@Filter/Dist::Zilla::Plugin::PodWeaver",
- "version" : "3.101641"
+ "config" : {
+ "Dist::Zilla::Plugin::PodWeaver" : {
+ "config_plugins" : [
+ "@RSRCHBOY"
+ ],
+ "finder" : [
+ ":InstallModules",
+ ":ExecFiles"
+ ],
+ "plugins" : [
+ {
+ "class" : "Pod::Weaver::Plugin::StopWords",
+ "name" : "@RSRCHBOY/StopWords",
+ "version" : "1.008"
+ },
+ {
+ "class" : "Pod::Weaver::Plugin::EnsurePod5",
+ "name" : "@CorePrep/EnsurePod5",
+ "version" : "4.006"
+ },
+ {
+ "class" : "Pod::Weaver::Plugin::H1Nester",
+ "name" : "@CorePrep/H1Nester",
+ "version" : "4.006"
+ },
+ {
+ "class" : "Pod::Weaver::Section::Name",
+ "name" : "@RSRCHBOY/Name",
+ "version" : "4.006"
+ },
+ {
+ "class" : "Pod::Weaver::Section::Version",
+ "name" : "@RSRCHBOY/Version",
+ "version" : "4.006"
+ },
+ {
+ "class" : "Pod::Weaver::Section::Region",
+ "name" : "@RSRCHBOY/prelude",
+ "version" : "4.006"
+ },
+ {
+ "class" : "Pod::Weaver::Section::Generic",
+ "name" : "SYNOPSIS",
+ "version" : "4.006"
+ },
+ {
+ "class" : "Pod::Weaver::Section::Generic",
+ "name" : "DESCRIPTION",
+ "version" : "4.006"
+ },
+ {
+ "class" : "Pod::Weaver::Section::Generic",
+ "name" : "OVERVIEW",
+ "version" : "4.006"
+ },
+ {
+ "class" : "Pod::Weaver::Section::RSRCHBOY::RoleParameters",
+ "name" : "ROLE PARAMETERS",
+ "version" : "0.048"
+ },
+ {
+ "class" : "Pod::Weaver::Section::RSRCHBOY::RequiredAttributes",
+ "name" : "REQUIRED ATTRIBUTES",
+ "version" : "0.048"
+ },
+ {
+ "class" : "Pod::Weaver::Section::RSRCHBOY::LazyAttributes",
+ "name" : "LAZY ATTRIBUTES",
+ "version" : "0.048"
+ },
+ {
+ "class" : "Pod::Weaver::Section::Collect",
+ "name" : "ATTRIBUTES",
+ "version" : "4.006"
+ },
+ {
+ "class" : "Pod::Weaver::Section::Collect",
+ "name" : "METHODS",
+ "version" : "4.006"
+ },
+ {
+ "class" : "Pod::Weaver::Section::Collect",
+ "name" : "REQUIRED METHODS",
+ "version" : "4.006"
+ },
+ {
+ "class" : "Pod::Weaver::Section::Collect",
+ "name" : "FUNCTIONS",
+ "version" : "4.006"
+ },
+ {
+ "class" : "Pod::Weaver::Section::Collect",
+ "name" : "TYPES",
+ "version" : "4.006"
+ },
+ {
+ "class" : "Pod::Weaver::Section::Collect",
+ "name" : "TEST_FUNCTIONS",
+ "version" : "4.006"
+ },
+ {
+ "class" : "Pod::Weaver::Section::Leftovers",
+ "name" : "@RSRCHBOY/Leftovers",
+ "version" : "4.006"
+ },
+ {
+ "class" : "Pod::Weaver::Section::Region",
+ "name" : "@RSRCHBOY/postlude",
+ "version" : "4.006"
+ },
+ {
+ "class" : "Pod::Weaver::Section::SeeAlso",
+ "name" : "@RSRCHBOY/SeeAlso",
+ "version" : "1.002"
+ },
+ {
+ "class" : "Pod::Weaver::Section::SourceGitHub",
+ "name" : "@RSRCHBOY/SourceGitHub",
+ "version" : "0.54"
+ },
+ {
+ "class" : "Pod::Weaver::Section::Bugs",
+ "name" : "@RSRCHBOY/Bugs",
+ "version" : "4.006"
+ },
+ {
+ "class" : "Pod::Weaver::Section::RSRCHBOY::Authors",
+ "name" : "RSRCHBOY::Authors",
+ "version" : "0.048"
+ },
+ {
+ "class" : "Pod::Weaver::Section::Contributors",
+ "name" : "@RSRCHBOY/Contributors",
+ "version" : "0.007"
+ },
+ {
+ "class" : "Pod::Weaver::Section::Legal",
+ "name" : "@RSRCHBOY/Legal",
+ "version" : "4.006"
+ },
+ {
+ "class" : "Pod::Weaver::Plugin::Transformer",
+ "name" : "@RSRCHBOY/List",
+ "version" : "4.006"
+ },
+ {
+ "class" : "Pod::Weaver::Plugin::SingleEncoding",
+ "name" : "@RSRCHBOY/SingleEncoding",
+ "version" : "4.006"
+ }
+ ]
+ }
+ },
+ "name" : "@RSRCHBOY/PodWeaver",
+ "version" : "4.005"
},
{
"class" : "Dist::Zilla::Plugin::FinderCode",
"name" : ":InstallModules",
- "version" : "4.300028"
+ "version" : "5.015"
},
{
"class" : "Dist::Zilla::Plugin::FinderCode",
"name" : ":IncModules",
- "version" : "4.300028"
+ "version" : "5.015"
},
{
"class" : "Dist::Zilla::Plugin::FinderCode",
"name" : ":TestFiles",
- "version" : "4.300028"
+ "version" : "5.015"
},
{
"class" : "Dist::Zilla::Plugin::FinderCode",
"name" : ":ExecFiles",
- "version" : "4.300028"
+ "version" : "5.015"
},
{
"class" : "Dist::Zilla::Plugin::FinderCode",
"name" : ":ShareFiles",
- "version" : "4.300028"
+ "version" : "5.015"
},
{
"class" : "Dist::Zilla::Plugin::FinderCode",
"name" : ":MainModule",
- "version" : "4.300028"
+ "version" : "5.015"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::FinderCode",
+ "name" : ":AllFiles",
+ "version" : "5.015"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::FinderCode",
+ "name" : ":NoFiles",
+ "version" : "5.015"
}
],
"zilla" : {
@@ -380,8 +709,12 @@
"config" : {
"is_trial" : "0"
},
- "version" : "4.300028"
+ "version" : "5.015"
}
- }
+ },
+ "x_authority" : "cpan:RSRCHBOY",
+ "x_contributors" : [
+ "David Steinbrunner <dsteinbrunner@pobox.com>"
+ ]
}
@@ -3,18 +3,25 @@ abstract: 'Shorthand for common attribute options'
author:
- 'Chris Weyl <cweyl@alumni.drew.edu>'
build_requires:
- File::Find: 0
- File::Temp: 0
+ File::Spec: 0
+ IO::Handle: 0
+ IPC::Open3: 0
Moose::Role: 0
+ Moose::Util: 0
+ MooseX::Types::Path::Class: 0
+ Path::Class: 0
+ Test::CheckDeps: 0.010
Test::Fatal: 0
Test::Moose: 0
- Test::Moose::More: 0.017
- Test::More: 0.88
+ Test::Moose::More: 0.018
+ Test::More: 0.94
+ Test::Warn: 0
constant: 0
+ perl: 5.006
configure_requires:
ExtUtils::MakeMaker: 6.30
dynamic_config: 0
-generated_by: 'Dist::Zilla version 4.300028, CPAN::Meta::Converter version 2.120921'
+generated_by: 'Dist::Zilla version 5.015, CPAN::Meta::Converter version 2.133380'
license: lgpl
meta-spec:
url: http://module-build.sourceforge.net/META-spec-v1.4.html
@@ -27,11 +34,12 @@ no_index:
provides:
MooseX::AttributeShortcuts:
file: lib/MooseX/AttributeShortcuts.pm
- version: 0.017
+ version: 0.024
MooseX::AttributeShortcuts::Trait::Attribute:
file: lib/MooseX/AttributeShortcuts.pm
- version: 0.017
+ version: 0.024
requires:
+ List::AllUtils: 0
Moose: 0
Moose::Exporter: 0
Moose::Util::MetaRole: 0
@@ -39,249 +47,497 @@ requires:
MooseX::Role::Parameterized: 0
MooseX::Types::Common::String: 0
MooseX::Types::Moose: 0
+ Package::DeprecationManager: 0
+ autobox::Core: 0
+ autobox::Junctions: 0
namespace::autoclean: 0
perl: 5.006
strict: 0
warnings: 0
resources:
bugtracker: https://github.com/RsrchBoy/moosex-attributeshortcuts/issues
- homepage: http://metacpan.org/release/MooseX-AttributeShortcuts/
- repository: git://github.com/RsrchBoy/moosex-attributeshortcuts.git
-version: 0.017
+ homepage: https://github.com/RsrchBoy/moosex-attributeshortcuts
+ repository: https://github.com/RsrchBoy/moosex-attributeshortcuts.git
+version: 0.024
x_Dist_Zilla:
perl:
- version: 5.016001
+ version: 5.018001
plugins:
-
class: Dist::Zilla::Plugin::NextRelease
- name: '@Filter/Dist::Zilla::Plugin::NextRelease'
- version: 4.300028
- -
- class: Dist::Zilla::Plugin::Git::Check
- name: '@Filter/@Git/Check'
- version: 2.001
- -
- class: Dist::Zilla::Plugin::Git::Commit
- name: '@Filter/@Git/Commit'
- version: 2.001
- -
- class: Dist::Zilla::Plugin::Git::Tag
- name: '@Filter/@Git/Tag'
- version: 2.001
- -
- class: Dist::Zilla::Plugin::Git::Push
- name: '@Filter/@Git/Push'
- version: 2.001
+ name: '@RSRCHBOY/NextRelease'
+ version: 5.015
-
class: Dist::Zilla::Plugin::Git::NextVersion
- name: '@Filter/Dist::Zilla::Plugin::Git::NextVersion'
- version: 2.001
+ name: '@RSRCHBOY/Git::NextVersion'
+ version: 2.019
+ -
+ class: Dist::Zilla::Plugin::ContributorsFromGit
+ name: '@RSRCHBOY/ContributorsFromGit'
+ version: 0.013
-
class: Dist::Zilla::Plugin::Git::CheckFor::CorrectBranch
- name: '@Filter/@Git::CheckFor/Git::CheckFor::CorrectBranch'
- version: 0.005
+ name: '@RSRCHBOY/@Git::CheckFor/Git::CheckFor::CorrectBranch'
+ version: 0.008
-
class: Dist::Zilla::Plugin::Git::CheckFor::Fixups
- name: '@Filter/@Git::CheckFor/Git::CheckFor::Fixups'
- version: 0.005
+ name: '@RSRCHBOY/@Git::CheckFor/Git::CheckFor::Fixups'
+ version: 0.008
+ -
+ class: Dist::Zilla::Plugin::Git::CheckFor::MergeConflicts
+ name: '@RSRCHBOY/@Git::CheckFor/Git::CheckFor::MergeConflicts'
+ version: 0.008
-
class: Dist::Zilla::Plugin::GatherDir
- name: '@Filter/Dist::Zilla::Plugin::GatherDir'
- version: 4.300028
+ name: '@RSRCHBOY/GatherDir'
+ version: 5.015
+ -
+ class: Dist::Zilla::Plugin::PromptIfStale
+ config:
+ Dist::Zilla::Plugin::PromptIfStale:
+ check_all_plugins: 0
+ check_all_prereqs: 0
+ modules:
+ - Dist::Zilla
+ - Dist::Zilla::PluginBundle::RSRCHBOY
+ phase: build
+ skip: []
+ name: '@RSRCHBOY/PromptIfStale'
+ version: 0.015
-
class: Dist::Zilla::Plugin::PruneCruft
- name: '@Filter/Dist::Zilla::Plugin::PruneCruft'
- version: 4.300028
+ name: '@RSRCHBOY/PruneCruft'
+ version: 5.015
+ -
+ class: Dist::Zilla::Plugin::Git::Describe
+ name: '@RSRCHBOY/Git::Describe'
+ version: 0.003
-
class: Dist::Zilla::Plugin::ExecDir
- name: '@Filter/Dist::Zilla::Plugin::ExecDir'
- version: 4.300028
+ name: '@RSRCHBOY/ExecDir'
+ version: 5.015
-
class: Dist::Zilla::Plugin::ShareDir
- name: '@Filter/Dist::Zilla::Plugin::ShareDir'
- version: 4.300028
+ name: '@RSRCHBOY/ShareDir'
+ version: 5.015
-
class: Dist::Zilla::Plugin::MakeMaker
- name: '@Filter/Dist::Zilla::Plugin::MakeMaker'
- version: 4.300028
+ config:
+ Dist::Zilla::Role::TestRunner:
+ default_jobs: 1
+ name: '@RSRCHBOY/MakeMaker'
+ version: 5.015
-
class: Dist::Zilla::Plugin::InstallGuide
- name: '@Filter/Dist::Zilla::Plugin::InstallGuide'
- version: 1.200000
+ name: '@RSRCHBOY/InstallGuide'
+ version: 1.200002
-
class: Dist::Zilla::Plugin::Manifest
- name: '@Filter/Dist::Zilla::Plugin::Manifest'
- version: 4.300028
+ name: '@RSRCHBOY/Manifest'
+ version: 5.015
-
class: Dist::Zilla::Plugin::SurgicalPkgVersion
- name: '@Filter/Dist::Zilla::Plugin::SurgicalPkgVersion'
+ name: '@RSRCHBOY/SurgicalPkgVersion'
version: 0.0019
-
class: Dist::Zilla::Plugin::ReadmeFromPod
- name: '@Filter/Dist::Zilla::Plugin::ReadmeFromPod'
- version: 0.16
+ name: '@RSRCHBOY/ReadmeFromPod'
+ version: 0.21
-
class: Dist::Zilla::Plugin::MinimumPerl
- name: '@Filter/Dist::Zilla::Plugin::MinimumPerl'
+ name: '@RSRCHBOY/MinimumPerl'
version: 1.003
-
class: Dist::Zilla::Plugin::ReportVersions::Tiny
- name: '@Filter/Dist::Zilla::Plugin::ReportVersions::Tiny'
- version: 1.08
+ name: '@RSRCHBOY/ReportVersions::Tiny'
+ version: 1.10
-
class: Dist::Zilla::Plugin::AutoPrereqs
- name: '@Filter/Dist::Zilla::Plugin::AutoPrereqs'
- version: 4.300028
+ name: '@RSRCHBOY/AutoPrereqs'
+ version: 5.015
-
class: Dist::Zilla::Plugin::Prepender
- name: '@Filter/Dist::Zilla::Plugin::Prepender'
+ name: '@RSRCHBOY/Prepender'
version: 1.112280
-
+ class: Dist::Zilla::Plugin::Test::PodSpelling
+ name: '@RSRCHBOY/Test::PodSpelling'
+ version: 2.006002
+ -
class: Dist::Zilla::Plugin::ConsistentVersionTest
- name: '@Filter/Dist::Zilla::Plugin::ConsistentVersionTest'
+ name: '@RSRCHBOY/ConsistentVersionTest'
version: 0.02
-
class: Dist::Zilla::Plugin::PodCoverageTests
- name: '@Filter/Dist::Zilla::Plugin::PodCoverageTests'
- version: 4.300028
+ name: '@RSRCHBOY/PodCoverageTests'
+ version: 5.015
-
class: Dist::Zilla::Plugin::PodSyntaxTests
- name: '@Filter/Dist::Zilla::Plugin::PodSyntaxTests'
- version: 4.300028
- -
- class: Dist::Zilla::Plugin::NoTabsTests
- name: '@Filter/Dist::Zilla::Plugin::NoTabsTests'
- version: 0.01
+ name: '@RSRCHBOY/PodSyntaxTests'
+ version: 5.015
+ -
+ class: Dist::Zilla::Plugin::Test::NoTabs
+ config:
+ Dist::Zilla::Plugin::Test::NoTabs:
+ module_finder:
+ - ':InstallModules'
+ script_finder:
+ - ':ExecFiles'
+ name: '@RSRCHBOY/Test::NoTabs'
+ version: 0.06
-
class: Dist::Zilla::Plugin::EOLTests
- name: '@Filter/Dist::Zilla::Plugin::EOLTests'
+ name: '@RSRCHBOY/EOLTests'
version: 0.02
-
class: Dist::Zilla::Plugin::HasVersionTests
- name: '@Filter/Dist::Zilla::Plugin::HasVersionTests'
+ name: '@RSRCHBOY/HasVersionTests'
version: 1.101420
-
class: Dist::Zilla::Plugin::Test::Compile
- name: '@Filter/Dist::Zilla::Plugin::Test::Compile'
- version: 1.112820
- -
- class: Dist::Zilla::Plugin::Test::Portability
- name: '@Filter/Dist::Zilla::Plugin::Test::Portability'
- version: 2.000003
- -
- class: Dist::Zilla::Plugin::ExtraTests
- name: '@Filter/Dist::Zilla::Plugin::ExtraTests'
- version: 4.300028
+ config:
+ Dist::Zilla::Plugin::Test::Compile:
+ filename: t/00-compile.t
+ module_finder:
+ - ':InstallModules'
+ script_finder:
+ - ':ExecFiles'
+ name: '@RSRCHBOY/Test::Compile'
+ version: 2.039
-
class: Dist::Zilla::Plugin::NoSmartCommentsTests
- name: '@Filter/Dist::Zilla::Plugin::NoSmartCommentsTests'
+ name: '@RSRCHBOY/NoSmartCommentsTests'
version: 0.006
-
+ class: Dist::Zilla::Plugin::Test::Pod::LinkCheck
+ name: '@RSRCHBOY/Test::Pod::LinkCheck'
+ version: 1.001
+ -
+ class: Dist::Zilla::Plugin::RunExtraTests
+ config:
+ Dist::Zilla::Role::TestRunner:
+ default_jobs: 1
+ name: '@RSRCHBOY/RunExtraTests'
+ version: 0.016
+ -
+ class: Dist::Zilla::Plugin::CheckExtraTests
+ name: '@RSRCHBOY/CheckExtraTests'
+ version: 0.016
+ -
+ class: Dist::Zilla::Plugin::Test::MinimumVersion
+ name: '@RSRCHBOY/Test::MinimumVersion'
+ version: 2.000005
+ -
+ class: Dist::Zilla::Plugin::Authority
+ name: '@RSRCHBOY/Authority'
+ version: 1.006
+ -
class: Dist::Zilla::Plugin::MetaConfig
- name: '@Filter/Dist::Zilla::Plugin::MetaConfig'
- version: 4.300028
+ name: '@RSRCHBOY/MetaConfig'
+ version: 5.015
-
class: Dist::Zilla::Plugin::MetaJSON
- name: '@Filter/Dist::Zilla::Plugin::MetaJSON'
- version: 4.300028
+ name: '@RSRCHBOY/MetaJSON'
+ version: 5.015
-
class: Dist::Zilla::Plugin::MetaYAML
- name: '@Filter/Dist::Zilla::Plugin::MetaYAML'
- version: 4.300028
+ name: '@RSRCHBOY/MetaYAML'
+ version: 5.015
-
class: Dist::Zilla::Plugin::MetaNoIndex
- name: '@Filter/Dist::Zilla::Plugin::MetaNoIndex'
- version: 4.300028
+ name: '@RSRCHBOY/MetaNoIndex'
+ version: 5.015
-
- class: Dist::Zilla::Plugin::MetaProvides::Package
- name: '@Filter/Dist::Zilla::Plugin::MetaProvides::Package'
- version: 1.14000001
+ class: Dist::Zilla::Plugin::FinderCode
+ name: '@RSRCHBOY/MetaProvides::Package/AUTOVIV/:InstallModulesPM'
+ version: 5.015
-
- class: Dist::Zilla::Plugin::GitHub::Meta
- name: '@Filter/Dist::Zilla::Plugin::GitHub::Meta'
- version: 0.27
+ class: Dist::Zilla::Plugin::MetaProvides::Package
+ config:
+ Dist::Zilla::Plugin::MetaProvides::Package: {}
+ Dist::Zilla::Role::MetaProvider::Provider:
+ inherit_missing: 1
+ inherit_version: 1
+ meta_noindex: 1
+ name: '@RSRCHBOY/MetaProvides::Package'
+ version: 1.15000001
+ -
+ class: Dist::Zilla::Plugin::GithubMeta
+ name: '@RSRCHBOY/GithubMeta'
+ version: 0.42
-
class: Dist::Zilla::Plugin::TestRelease
- name: '@Filter/Dist::Zilla::Plugin::TestRelease'
- version: 4.300028
+ name: '@RSRCHBOY/TestRelease'
+ version: 5.015
-
class: Dist::Zilla::Plugin::CheckChangesHasContent
- name: '@Filter/Dist::Zilla::Plugin::CheckChangesHasContent'
+ name: '@RSRCHBOY/CheckChangesHasContent'
version: 0.006
-
class: Dist::Zilla::Plugin::CheckPrereqsIndexed
- name: '@Filter/Dist::Zilla::Plugin::CheckPrereqsIndexed'
+ name: '@RSRCHBOY/CheckPrereqsIndexed'
+ version: 0.010
+ -
+ class: Dist::Zilla::Plugin::Git::Remote::Update
+ name: '@RSRCHBOY/GitFetchOrigin'
+ version: 0.1.2
+ -
+ class: Dist::Zilla::Plugin::Git::Remote::Check
+ name: '@RSRCHBOY/GitCheckReleaseBranchSync'
+ version: 0.1.2
+ -
+ class: Dist::Zilla::Plugin::Git::Remote::Check
+ name: '@RSRCHBOY/GitCheckMasterBranchSync'
+ version: 0.1.2
+ -
+ class: Dist::Zilla::Plugin::Git::Check
+ name: '@RSRCHBOY/Git::Check'
+ version: 2.019
+ -
+ class: Dist::Zilla::Plugin::Git::Commit
+ name: '@RSRCHBOY/Git::Commit'
+ version: 2.019
+ -
+ class: Dist::Zilla::Plugin::Test::CheckDeps
+ name: '@RSRCHBOY/Test::CheckDeps'
+ version: 0.012
+ -
+ class: Dist::Zilla::Plugin::CheckSelfDependency
+ config:
+ Dist::Zilla::Plugin::CheckSelfDependency:
+ finder:
+ - ':InstallModules'
+ name: '@RSRCHBOY/CheckSelfDependency'
version: 0.007
-
- class: Dist::Zilla::Plugin::ConfirmRelease
- name: '@Filter/Dist::Zilla::Plugin::ConfirmRelease'
- version: 4.300028
+ class: Dist::Zilla::Plugin::Travis::ConfigForReleaseBranch
+ name: '@RSRCHBOY/Travis::ConfigForReleaseBranch'
+ version: 0.001
-
- class: Dist::Zilla::Plugin::GitHub::Update
- name: '@Filter/Dist::Zilla::Plugin::GitHub::Update'
- version: 0.27
+ class: Dist::Zilla::Plugin::SchwartzRatio
+ name: '@RSRCHBOY/SchwartzRatio'
+ version: 0.2.0
+ -
+ class: Dist::Zilla::Plugin::Git::Tag
+ name: '@RSRCHBOY/Git::Tag'
+ version: 2.019
+ -
+ class: Dist::Zilla::Plugin::Git::CommitBuild
+ name: '@RSRCHBOY/Git::CommitBuild::Build'
+ version: 2.019
+ -
+ class: Dist::Zilla::Plugin::Git::CommitBuild
+ name: '@RSRCHBOY/Git::CommitBuild::Release'
+ version: 2.019
+ -
+ class: Dist::Zilla::Plugin::Git::Push
+ name: '@RSRCHBOY/Git::Push'
+ version: 2.019
-
class: Dist::Zilla::Plugin::UploadToCPAN
- name: '@Filter/Dist::Zilla::Plugin::UploadToCPAN'
- version: 4.300028
+ name: '@RSRCHBOY/UploadToCPAN'
+ version: 5.015
-
class: Dist::Zilla::Plugin::Signature
- name: '@Filter/Dist::Zilla::Plugin::Signature'
+ name: '@RSRCHBOY/Signature'
version: 1.100930
-
class: Dist::Zilla::Plugin::Twitter
- name: '@Filter/Dist::Zilla::Plugin::Twitter'
- version: 0.017
+ name: '@RSRCHBOY/Twitter'
+ version: 0.024
-
class: Dist::Zilla::Plugin::InstallRelease
- name: '@Filter/Dist::Zilla::Plugin::InstallRelease'
+ name: '@RSRCHBOY/InstallRelease'
version: 0.008
-
+ class: Dist::Zilla::Plugin::GitHub::Update
+ name: '@RSRCHBOY/GitHub::Update'
+ version: 0.36
+ -
class: Dist::Zilla::Plugin::ArchiveRelease
- name: '@Filter/Dist::Zilla::Plugin::ArchiveRelease'
+ name: '@RSRCHBOY/ArchiveRelease'
version: 4.00
-
+ class: Dist::Zilla::Plugin::ConfirmRelease
+ name: '@RSRCHBOY/ConfirmRelease'
+ version: 5.015
+ -
class: Dist::Zilla::Plugin::License
- name: '@Filter/Dist::Zilla::Plugin::License'
- version: 4.300028
+ name: '@RSRCHBOY/License'
+ version: 5.015
+ -
+ class: Dist::Zilla::Plugin::CPANFile
+ name: '@RSRCHBOY/CPANFile'
+ version: 5.015
-
class: Dist::Zilla::Plugin::CopyFilesFromBuild
- name: '@Filter/Dist::Zilla::Plugin::CopyFilesFromBuild'
+ name: '@RSRCHBOY/CopyFilesFromBuild'
version: 0.103510
-
class: Dist::Zilla::Plugin::ReadmeAnyFromPod
- name: '@Filter/ReadmePodInRoot'
- version: 0.120120
+ name: '@RSRCHBOY/ReadmeMarkdownInRoot'
+ version: 0.133360
-
class: Dist::Zilla::Plugin::PodWeaver
- name: '@Filter/Dist::Zilla::Plugin::PodWeaver'
- version: 3.101641
+ config:
+ Dist::Zilla::Plugin::PodWeaver:
+ config_plugins:
+ - '@RSRCHBOY'
+ finder:
+ - ':InstallModules'
+ - ':ExecFiles'
+ plugins:
+ -
+ class: Pod::Weaver::Plugin::StopWords
+ name: '@RSRCHBOY/StopWords'
+ version: 1.008
+ -
+ class: Pod::Weaver::Plugin::EnsurePod5
+ name: '@CorePrep/EnsurePod5'
+ version: 4.006
+ -
+ class: Pod::Weaver::Plugin::H1Nester
+ name: '@CorePrep/H1Nester'
+ version: 4.006
+ -
+ class: Pod::Weaver::Section::Name
+ name: '@RSRCHBOY/Name'
+ version: 4.006
+ -
+ class: Pod::Weaver::Section::Version
+ name: '@RSRCHBOY/Version'
+ version: 4.006
+ -
+ class: Pod::Weaver::Section::Region
+ name: '@RSRCHBOY/prelude'
+ version: 4.006
+ -
+ class: Pod::Weaver::Section::Generic
+ name: SYNOPSIS
+ version: 4.006
+ -
+ class: Pod::Weaver::Section::Generic
+ name: DESCRIPTION
+ version: 4.006
+ -
+ class: Pod::Weaver::Section::Generic
+ name: OVERVIEW
+ version: 4.006
+ -
+ class: Pod::Weaver::Section::RSRCHBOY::RoleParameters
+ name: 'ROLE PARAMETERS'
+ version: 0.048
+ -
+ class: Pod::Weaver::Section::RSRCHBOY::RequiredAttributes
+ name: 'REQUIRED ATTRIBUTES'
+ version: 0.048
+ -
+ class: Pod::Weaver::Section::RSRCHBOY::LazyAttributes
+ name: 'LAZY ATTRIBUTES'
+ version: 0.048
+ -
+ class: Pod::Weaver::Section::Collect
+ name: ATTRIBUTES
+ version: 4.006
+ -
+ class: Pod::Weaver::Section::Collect
+ name: METHODS
+ version: 4.006
+ -
+ class: Pod::Weaver::Section::Collect
+ name: 'REQUIRED METHODS'
+ version: 4.006
+ -
+ class: Pod::Weaver::Section::Collect
+ name: FUNCTIONS
+ version: 4.006
+ -
+ class: Pod::Weaver::Section::Collect
+ name: TYPES
+ version: 4.006
+ -
+ class: Pod::Weaver::Section::Collect
+ name: TEST_FUNCTIONS
+ version: 4.006
+ -
+ class: Pod::Weaver::Section::Leftovers
+ name: '@RSRCHBOY/Leftovers'
+ version: 4.006
+ -
+ class: Pod::Weaver::Section::Region
+ name: '@RSRCHBOY/postlude'
+ version: 4.006
+ -
+ class: Pod::Weaver::Section::SeeAlso
+ name: '@RSRCHBOY/SeeAlso'
+ version: 1.002
+ -
+ class: Pod::Weaver::Section::SourceGitHub
+ name: '@RSRCHBOY/SourceGitHub'
+ version: 0.54
+ -
+ class: Pod::Weaver::Section::Bugs
+ name: '@RSRCHBOY/Bugs'
+ version: 4.006
+ -
+ class: Pod::Weaver::Section::RSRCHBOY::Authors
+ name: RSRCHBOY::Authors
+ version: 0.048
+ -
+ class: Pod::Weaver::Section::Contributors
+ name: '@RSRCHBOY/Contributors'
+ version: 0.007
+ -
+ class: Pod::Weaver::Section::Legal
+ name: '@RSRCHBOY/Legal'
+ version: 4.006
+ -
+ class: Pod::Weaver::Plugin::Transformer
+ name: '@RSRCHBOY/List'
+ version: 4.006
+ -
+ class: Pod::Weaver::Plugin::SingleEncoding
+ name: '@RSRCHBOY/SingleEncoding'
+ version: 4.006
+ name: '@RSRCHBOY/PodWeaver'
+ version: 4.005
-
class: Dist::Zilla::Plugin::FinderCode
name: ':InstallModules'
- version: 4.300028
+ version: 5.015
-
class: Dist::Zilla::Plugin::FinderCode
name: ':IncModules'
- version: 4.300028
+ version: 5.015
-
class: Dist::Zilla::Plugin::FinderCode
name: ':TestFiles'
- version: 4.300028
+ version: 5.015
-
class: Dist::Zilla::Plugin::FinderCode
name: ':ExecFiles'
- version: 4.300028
+ version: 5.015
-
class: Dist::Zilla::Plugin::FinderCode
name: ':ShareFiles'
- version: 4.300028
+ version: 5.015
-
class: Dist::Zilla::Plugin::FinderCode
name: ':MainModule'
- version: 4.300028
+ version: 5.015
+ -
+ class: Dist::Zilla::Plugin::FinderCode
+ name: ':AllFiles'
+ version: 5.015
+ -
+ class: Dist::Zilla::Plugin::FinderCode
+ name: ':NoFiles'
+ version: 5.015
zilla:
class: Dist::Zilla::Dist::Builder
config:
is_trial: 0
- version: 4.300028
+ version: 5.015
+x_authority: cpan:RSRCHBOY
+x_contributors:
+ - 'David Steinbrunner <dsteinbrunner@pobox.com>'
@@ -1,4 +1,5 @@
+# This file was automatically generated by Dist::Zilla::Plugin::MakeMaker v5.015.
use strict;
use warnings;
@@ -11,16 +12,7 @@ use ExtUtils::MakeMaker 6.30;
my %WriteMakefileArgs = (
"ABSTRACT" => "Shorthand for common attribute options",
"AUTHOR" => "Chris Weyl <cweyl\@alumni.drew.edu>",
- "BUILD_REQUIRES" => {
- "File::Find" => 0,
- "File::Temp" => 0,
- "Moose::Role" => 0,
- "Test::Fatal" => 0,
- "Test::Moose" => 0,
- "Test::Moose::More" => "0.017",
- "Test::More" => "0.88",
- "constant" => 0
- },
+ "BUILD_REQUIRES" => {},
"CONFIGURE_REQUIRES" => {
"ExtUtils::MakeMaker" => "6.30"
},
@@ -29,6 +21,7 @@ my %WriteMakefileArgs = (
"LICENSE" => "lgpl",
"NAME" => "MooseX::AttributeShortcuts",
"PREREQ_PM" => {
+ "List::AllUtils" => 0,
"Moose" => 0,
"Moose::Exporter" => 0,
"Moose::Util::MetaRole" => 0,
@@ -36,28 +29,72 @@ my %WriteMakefileArgs = (
"MooseX::Role::Parameterized" => 0,
"MooseX::Types::Common::String" => 0,
"MooseX::Types::Moose" => 0,
+ "Package::DeprecationManager" => 0,
+ "autobox::Core" => 0,
+ "autobox::Junctions" => 0,
"namespace::autoclean" => 0,
"strict" => 0,
"warnings" => 0
},
- "VERSION" => "0.017",
+ "TEST_REQUIRES" => {
+ "File::Spec" => 0,
+ "IO::Handle" => 0,
+ "IPC::Open3" => 0,
+ "Moose::Role" => 0,
+ "Moose::Util" => 0,
+ "MooseX::Types::Path::Class" => 0,
+ "Path::Class" => 0,
+ "Test::CheckDeps" => "0.010",
+ "Test::Fatal" => 0,
+ "Test::Moose" => 0,
+ "Test::Moose::More" => "0.018",
+ "Test::More" => "0.94",
+ "Test::Warn" => 0,
+ "constant" => 0
+ },
+ "VERSION" => "0.024",
"test" => {
- "TESTS" => "t/*.t"
+ "TESTS" => "t/*.t t/deprecated/*.t"
}
);
-unless ( eval { ExtUtils::MakeMaker->VERSION(6.56) } ) {
- my $br = delete $WriteMakefileArgs{BUILD_REQUIRES};
- my $pp = $WriteMakefileArgs{PREREQ_PM};
- for my $mod ( keys %$br ) {
- if ( exists $pp->{$mod} ) {
- $pp->{$mod} = $br->{$mod} if $br->{$mod} > $pp->{$mod};
- }
- else {
- $pp->{$mod} = $br->{$mod};
- }
- }
+my %FallbackPrereqs = (
+ "File::Spec" => 0,
+ "IO::Handle" => 0,
+ "IPC::Open3" => 0,
+ "List::AllUtils" => 0,
+ "Moose" => 0,
+ "Moose::Exporter" => 0,
+ "Moose::Role" => 0,
+ "Moose::Util" => 0,
+ "Moose::Util::MetaRole" => 0,
+ "Moose::Util::TypeConstraints" => 0,
+ "MooseX::Role::Parameterized" => 0,
+ "MooseX::Types::Common::String" => 0,
+ "MooseX::Types::Moose" => 0,
+ "MooseX::Types::Path::Class" => 0,
+ "Package::DeprecationManager" => 0,
+ "Path::Class" => 0,
+ "Test::CheckDeps" => "0.010",
+ "Test::Fatal" => 0,
+ "Test::Moose" => 0,
+ "Test::Moose::More" => "0.018",
+ "Test::More" => "0.94",
+ "Test::Warn" => 0,
+ "autobox::Core" => 0,
+ "autobox::Junctions" => 0,
+ "constant" => 0,
+ "namespace::autoclean" => 0,
+ "strict" => 0,
+ "warnings" => 0
+);
+
+
+unless ( eval { ExtUtils::MakeMaker->VERSION(6.63_03) } ) {
+ delete $WriteMakefileArgs{TEST_REQUIRES};
+ delete $WriteMakefileArgs{BUILD_REQUIRES};
+ $WriteMakefileArgs{PREREQ_PM} = \%FallbackPrereqs;
}
delete $WriteMakefileArgs{CONFIGURE_REQUIRES}
@@ -2,8 +2,8 @@ NAME
MooseX::AttributeShortcuts - Shorthand for common attribute options
VERSION
- This document describes version 0.017 of MooseX::AttributeShortcuts -
- released October 28, 2012 as part of MooseX-AttributeShortcuts.
+ This document describes version 0.024 of MooseX::AttributeShortcuts -
+ released May 02, 2014 as part of MooseX-AttributeShortcuts.
SYNOPSIS
package Some::Class;
@@ -182,12 +182,30 @@ NEW ATTRIBUTE OPTIONS
has foo => (is => 'ro', builder => '_build_foo');
sub _build_foo { 'bar!' }
- constraint => sub { ... }
- Specifying the constraint option with a coderef will cause a new type
+ isa_instance_of => ...
+ Given a package name, this option will create an "isa" type constraint
+ that requires the value of the attribute be an instance of the class (or
+ a descendant class) given. That is,
+
+ has foo => (is => 'ro', isa_instance_of => 'SomeThing');
+
+ ...is effectively the same as:
+
+ use Moose::TypeConstraints 'class_type';
+ has foo => (
+ is => 'ro',
+ isa => class_type('SomeThing'),
+ );
+
+ ...but a touch less awkward.
+
+ isa => ..., constraint => sub { ... }
+ Specifying the constraint option with a coderef will cause a new subtype
constraint to be created, with the parent type being the type specified
in the "isa" option and the constraint being the coderef supplied here.
- Example:
+ For example, only integers greater than 10 will pass this attribute's
+ type constraint:
# value must be an integer greater than 10 to pass the constraint
has thinger => (
@@ -198,10 +216,69 @@ NEW ATTRIBUTE OPTIONS
Note that if you supply a constraint, you must also provide an "isa".
+ isa => ..., constraint => sub { ... }, coerce => 1
+ Supplying a constraint and asking for coercion will "Just Work", that
+ is, any coercions that the "isa" type has will still work.
+
+ For example, let's say that you're using the "File" type constraint from
+ MooseX::Types::Path::Class, and you want an additional constraint that
+ the file must exist:
+
+ has thinger => (
+ is => 'ro',
+ isa => File,
+ constraint => sub { !! $_->stat },
+ coerce => 1,
+ );
+
+ "thinger" will correctly coerce the string "/etc/passwd" to a
+ "Path::Class:File", and will only accept the coerced result as a value
+ if the file exists.
+
+ coerce => [ Type => sub { ...coerce... }, ... ]
+ Specifying the coerce option with a hashref will cause a new subtype to
+ be created and used (just as with the constraint option, above), with
+ the specified coercions added to the list. In the passed hashref, the
+ keys are Moose types (well, strings resolvable to Moose types), and the
+ values are coderefs that will coerce a given type to our type.
+
+ has bar => (
+ is => 'ro',
+ isa => 'Str',
+ coerce => [
+ Int => sub { "$_" },
+ Object => sub { 'An instance of ' . ref $_ },
+ ],
+ );
+
+ANONYMOUS SUBTYPING AND COERCION
+ "Abusus non tollit usum."
+
+ Note that we create new, anonymous subtypes whenever the constraint or
+ coercion options are specified in such a way that the Shortcuts trait
+ (this one) is invoked. It's fully supported to use both constraint and
+ coerce options at the same time.
+
+ This facility is intended to assist with the creation of one-off type
+ constraints and coercions. It is not possible to deliberately reuse the
+ subtypes we create, and if you find yourself using a particular isa /
+ constraint / coerce option triplet in more than one place you should
+ really think about creating a type that you can reuse. MooseX::Types
+ provides the facilities to easily do this, or even a simple constant
+ definition at the package level with an anonymous type stashed away for
+ local use.
+
+SEE ALSO
+ Please see those modules/websites for more information related to this
+ module.
+
+ * MooseX::Types
+
SOURCE
The development version is on github at
- <http://github.com/RsrchBoy/moosex-attributeshortcuts> and may be cloned
- from <git://github.com/RsrchBoy/moosex-attributeshortcuts.git>
+ <http://https://github.com/RsrchBoy/moosex-attributeshortcuts> and may
+ be cloned from
+ <git://https://github.com/RsrchBoy/moosex-attributeshortcuts.git>
BUGS
Please report any bugs or feature requests on the bugtracker website
@@ -213,6 +290,23 @@ BUGS
AUTHOR
Chris Weyl <cweyl@alumni.drew.edu>
+ SAYING THANKS IN A MATERIALISTIC WAY
+ Please note I do not expect to be gittip'ed or flattr'ed for this work,
+ rather it is simply a very pleasant surprise. I largely create and
+ release works like this because I need them or I find it enjoyable;
+ however, don't let that stop you giving me money if you feel like it ;)
+
+ flattr this!
+ <https://flattr.com/submit/auto?user_id=RsrchBoy&url=https%3A%2F%2Fgithu
+ b.com%2FRsrchBoy%2Fmoosex-attributeshortcuts&title=RsrchBoy's%20CPAN%20M
+ ooseX-AttributeShortcuts&tags=%22RsrchBoy's%20MooseX-AttributeShortcuts%
+ 20in%20the%20CPAN%22> gittip me! <https://www.gittip.com/RsrchBoy/>
+ Amazon Wishlist
+ <http://www.amazon.com/gp/registry/wishlist/3G2DQFPBA57L6>
+
+CONTRIBUTOR
+ David Steinbrunner <dsteinbrunner@pobox.com>
+
COPYRIGHT AND LICENSE
This software is Copyright (c) 2011 by Chris Weyl.
@@ -1,5 +1,5 @@
This file contains message digests of all files listed in MANIFEST,
-signed via the Module::Signature module, version 0.68.
+signed via the Module::Signature module, version 0.73.
To verify the content in this distribution, first make sure you have
Module::Signature installed, then type:
@@ -14,18 +14,21 @@ not run its Makefile.PL or Build.PL.
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
-SHA1 27707c7d1544a5a3cbca43bf443f39e2bb154cf5 Changes
+SHA1 55ac697642a18dd7d974736a3d06fd531aa82382 .travis.yml
+SHA1 fbacd4395233d580271cfa5dcca16419e75e745d Changes
SHA1 0b16c282a427d2bf87e66bc839170a89d1f2f99f INSTALL
SHA1 514760f01d379ad532c49a196f1c6f7912b65556 LICENSE
-SHA1 9944816edd6c0fd7fcd278bbeba15c4c7cb7bc14 MANIFEST
-SHA1 ad33268042d92c4c6e7539ff6d4a6f934e865831 META.json
-SHA1 9c88e60e0b7552c561fb87768b6eef39bb6994ee META.yml
-SHA1 1cec4bf30e32924dd19f502664b25f386a70c888 Makefile.PL
-SHA1 e0c405d042b5c758544b421e2f53dc7213a413ae README
-SHA1 8a912f6044f65135fee0bf30346887f5b81deae5 dist.ini
-SHA1 6aa4fded8f6dc033b20b785ab8a6fc0219ee1109 lib/MooseX/AttributeShortcuts.pm
-SHA1 ad5c40aecbdd618e03450b94dd5685a030036c0d t/00-compile.t
-SHA1 10adce6ca9e0c6692003e60696984e341b1426f9 t/000-report-versions-tiny.t
+SHA1 43a15cb1ab22471411c9c8913021a109450a21c6 MANIFEST
+SHA1 87144f798dc484ba838d291a2ae114dea9c98be5 META.json
+SHA1 ad3a8706bb0a3d2f675f39641d5c3359b4d49295 META.yml
+SHA1 5a7817c98c54042069a43ea19afea4fdd4050a5f Makefile.PL
+SHA1 f43c086ef5ea577704033710abd84e46aa1ffbce README
+SHA1 e61a9a7e55e6a1bf13af32281209f0d68438e6fb cpanfile
+SHA1 5dafee4fc2c3642d0de8db57ec01d89d67fa5979 dist.ini
+SHA1 1a9158683de46e86291f008f7c5d289e253e640f lib/MooseX/AttributeShortcuts.pm
+SHA1 c522c3928158e64bd97d34d20cbfe0b5305a7eb2 t/00-check-deps.t
+SHA1 b11f763c07b435260a9652fa6709b758072a66f0 t/00-compile.t
+SHA1 8ed46fb3819911e3cdaddff2889c9fdda2ec580a t/000-report-versions-tiny.t
SHA1 b201b29194c8e2d174032993fbf9b989d204943c t/01-basic.t
SHA1 feb9ac405e94777b2eccb564c75e81b303877592 t/02-parameterized.t
SHA1 8b3de3014b22392c176c297ec6169376b4c7d080 t/03-lazy.t
@@ -34,26 +37,33 @@ SHA1 dcdac8f250e53b097c3727c6d4e5ccf2d7512277 t/05-extend.t
SHA1 aeead510300b711df372bf0c026a60099d330927 t/06-role.t
SHA1 141674978f422f7ae85a333e45b6984fdad9a1e8 t/07-trigger.t
SHA1 2983277e0687e4cf8119b46779afb8b11b3d6329 t/anon-builder.t
+SHA1 cdb770dcc3e7834ebfef966b99b65696b4bebfe9 t/constraint.t
+SHA1 d7713ee1fd02d36e9a6a1ec196664e0badddafa6 t/deprecated/inline_typing.t
SHA1 0693757ec019aebd05fc427a757294136889cf74 t/funcs.pm
SHA1 2a3a2473622b9bd48532a52cfb1aafe72a0d34af t/handles-metaclass.t
-SHA1 74940219af9b6d674b7fbe3189b8172a57e6d5a9 t/inline_subtyping.t
-SHA1 1f404d2af0d38f521691a6154e35de264d9ab3a0 t/inline_typing.t
-SHA1 9c3627ff37f4fd5bddc34bf46cf3359eaf76a060 t/release-consistent-version.t
-SHA1 a032c41ef6887fab1b900669c2d304fab46680e2 t/release-eol.t
-SHA1 0c566db92a9f12450c1e962d885634aa2cf1e8ca t/release-has-version.t
-SHA1 4953bba5de90d892df5886383ac42c42c167d9d9 t/release-no-smart-comments.t
-SHA1 455d1dd1867212a665ad5ea4126b572411de300c t/release-no-tabs.t
-SHA1 e9e8e7e3e707ce9bd2046a7dd3817cd5555e8874 t/release-pod-coverage.t
-SHA1 7ff128eaa77cb3639c774c44cf3e0128d691d480 t/release-pod-syntax.t
-SHA1 64fc59ae48fee3f56172b7104cb123b2e5964ba3 t/release-portability.t
+SHA1 0328d316dd8c93e5844876266892bef23adaad9a t/inline_coercion-back-compat.t
+SHA1 78aee97e4cb5687712f41fae37fd800cd1fe3ac7 t/inline_coercion.t
+SHA1 efa514912dc489236506a5a9aca8414a6b661e52 t/inline_subtyping.t
+SHA1 2b9133942088af2b4b6926c65d7b2da8beb1f2b6 t/inline_subtyping_with_coercion.t
+SHA1 801cfa02cf426ab31f6b1f9465cbc89d78822743 t/isa_instance_of.t
+SHA1 727b9eb563daa686fb01f5cf3388f1b751701468 xt/author/pod-spell.t
+SHA1 a7948d34cfaad400286ea5d5fa6206c4c7e2552c xt/release/consistent-version.t
+SHA1 b3915eaac65e18e6a048b34a4b873beccab326b4 xt/release/eol.t
+SHA1 cd1efd4a6edcf18422a226628e6c7a87f2ffb7df xt/release/has-version.t
+SHA1 6b9989c3e0d0e9348ab8e83a25912816be52efc0 xt/release/minimum-version.t
+SHA1 4d54f55f6d47c12d114e576d6e006f1e25924f4d xt/release/no-smart-comments.t
+SHA1 e76851a3108b15055f81ccdc5cd7b05788c5aa8d xt/release/no-tabs.t
+SHA1 9ff2bd29987b01440cfe648807df8cdbeedc289c xt/release/pod-coverage.t
+SHA1 1e6adb7e320c9a83e7e5ed59fbe4080e1d029256 xt/release/pod-linkcheck.t
+SHA1 a0c20421984c072fd1701d1639592f2d7c4ff226 xt/release/pod-syntax.t
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
-iQEcBAEBAgAGBQJQjf3UAAoJEOd5N1CvIgQkz7MH/i2XMxfa9UChaOoaq/RX08Uy
-QYIUXmChTkfawQ1Lur80VSZ8au+LwT86XSREzH9icFn0UPqbK1QdfQjzIKztp6Mp
-AQoxkpNeDrsJYeI/0ThUSkcTd02o8dt/CQc4mXLg2RLnF0HlCj3SnE6rr10Ch5z+
-Snx0QUxTNxbrvxmlm/FK3Gl7LeHyz0/PiNmsS+cXHghQ25jtixOuEPQ43Q4AZM+w
-/amp05VLYUmarNW5ZMqsYL1AGek8EP4wygauPZKFKOwLEqGq+8quW9Whr2pbz+r9
-Pamqkjau5Fz8HZwW8zHXhZ0KPBScZ+bwxh/g0yrFjKVWzN8Nex0yThrhtz/PGfA=
-=WYrO
+iQEcBAEBAgAGBQJTY/cqAAoJEOd5N1CvIgQk7m8IALJVKw0xYlFsrze8A5kH4278
+KobP86kK07d4aCkZdJc8e3CkcH0qW1AlO9KhOeKTf0/MLvZcECPuaBXsMlqXkDHj
+WxZgoMqjSx93lXsliRBzCRU5khmCehwKcNVZkG04E5R/T/gtguntGcqAhvsL4qVZ
+mXkQT47hWLFDVWiVdYzsQrek8TXpc5qVpGAzMsb/spsmL04OQEWjz4/jj75q6b0w
++0lVjlxWi1S/48GXh2KuSzSDI1nvFPyrjcpHN3Fp3KSr3/RvPMNixXiCjezzNrAH
+pYATDflteaujn0Enn9S5bngUaOw6h8691YRu5L4DR74dQsTbQts9YhsAoJRI0HM=
+=q336
-----END PGP SIGNATURE-----
@@ -0,0 +1,46 @@
+requires "List::AllUtils" => "0";
+requires "Moose" => "0";
+requires "Moose::Exporter" => "0";
+requires "Moose::Util::MetaRole" => "0";
+requires "Moose::Util::TypeConstraints" => "0";
+requires "MooseX::Role::Parameterized" => "0";
+requires "MooseX::Types::Common::String" => "0";
+requires "MooseX::Types::Moose" => "0";
+requires "Package::DeprecationManager" => "0";
+requires "autobox::Core" => "0";
+requires "autobox::Junctions" => "0";
+requires "namespace::autoclean" => "0";
+requires "perl" => "5.006";
+requires "strict" => "0";
+requires "warnings" => "0";
+
+on 'test' => sub {
+ requires "File::Spec" => "0";
+ requires "IO::Handle" => "0";
+ requires "IPC::Open3" => "0";
+ requires "Moose::Role" => "0";
+ requires "Moose::Util" => "0";
+ requires "MooseX::Types::Path::Class" => "0";
+ requires "Path::Class" => "0";
+ requires "Test::CheckDeps" => "0.010";
+ requires "Test::Fatal" => "0";
+ requires "Test::Moose" => "0";
+ requires "Test::Moose::More" => "0.018";
+ requires "Test::More" => "0.94";
+ requires "Test::Warn" => "0";
+ requires "constant" => "0";
+ requires "perl" => "5.006";
+};
+
+on 'configure' => sub {
+ requires "ExtUtils::MakeMaker" => "6.30";
+};
+
+on 'develop' => sub {
+ requires "Pod::Coverage::TrustPod" => "0";
+ requires "Test::More" => "0";
+ requires "Test::NoTabs" => "0";
+ requires "Test::Pod" => "1.41";
+ requires "Test::Pod::Coverage" => "1.08";
+ requires "version" => "0.9901";
+};
@@ -4,8 +4,6 @@ license = LGPL_2_1
copyright_holder = Chris Weyl
copyright_year = 2011
-[@Filter]
--bundle = @RSRCHBOY
--remove = Test::PodSpelling
+[@RSRCHBOY]
autoprereqs_skip = ^(funcs|TestClass.*|TestRole.*)$
tweet = 1
@@ -8,9 +8,11 @@
# The GNU Lesser General Public License, Version 2.1, February 1999
#
package MooseX::AttributeShortcuts;
-{
- $MooseX::AttributeShortcuts::VERSION = '0.017';
+BEGIN {
+ $MooseX::AttributeShortcuts::AUTHORITY = 'cpan:RSRCHBOY';
}
+# git description: 0.023-5-gff63e05
+$MooseX::AttributeShortcuts::VERSION = '0.024';
# ABSTRACT: Shorthand for common attribute options
@@ -24,21 +26,28 @@ use Moose::Exporter;
use Moose::Util::MetaRole;
use Moose::Util::TypeConstraints;
-# debug...
-#use Smart::Comments;
-
{
package MooseX::AttributeShortcuts::Trait::Attribute;
-{
- $MooseX::AttributeShortcuts::Trait::Attribute::VERSION = '0.017';
+BEGIN {
+ $MooseX::AttributeShortcuts::Trait::Attribute::AUTHORITY = 'cpan:RSRCHBOY';
}
+# git description: 0.023-5-gff63e05
+$MooseX::AttributeShortcuts::Trait::Attribute::VERSION = '0.024';
use namespace::autoclean;
use MooseX::Role::Parameterized;
- use Moose::Util::TypeConstraints qw{ class_type role_type enum };
+ use Moose::Util::TypeConstraints ':all';
use MooseX::Types::Moose ':all';
use MooseX::Types::Common::String ':all';
- sub _find_or_create_isa_type_constraint { goto \&Moose::Util::TypeConstraints::find_or_create_isa_type_constraint }
+ use autobox::Core;
+ use autobox::Junctions;
+ use List::AllUtils 'any';
+
+ use Package::DeprecationManager -deprecations => {
+ 'undocumented-isa-constraints' => '0.23',
+ };
+
+ sub _acquire_isa_tc { goto \&Moose::Util::TypeConstraints::find_or_create_isa_type_constraint }
parameter writer_prefix => (isa => NonEmptySimpleStr, default => '_set_');
parameter builder_prefix => (isa => NonEmptySimpleStr, default => '_build_');
@@ -109,45 +118,100 @@ use Moose::Util::TypeConstraints;
}
}
- # TODO isa_class - anon class_type generation
- # TODO isa_role - anon role_type generation
- # TODO isa_enum - anon enum generation
- # TODO coerce_via - anon coercion (type -> anon subtype+coercion
+ if (any { $options->keys->any eq $_ } (qw{ isa_class isa_role isa_enum })) {
+
+ # (more than) fair warning...
+ deprecated(
+ feature => 'undocumented-isa-constraints',
+ message => 'Naughty! isa_class, isa_role, and isa_enum will be removed on or after 01 July 2014!',
+ );
+
+ # XXX undocumented -- not sure this is a great idea
+ $options->{isa} = class_type(delete $options->{isa_class})
+ if $_has->('isa_class');
+ $options->{isa} = role_type(delete $options->{isa_role})
+ if $_has->('isa_role');
+ $options->{isa} = enum(delete $options->{isa_enum})
+ if $_has->('isa_enum');
+ }
+
+ # aka: isa => class_type(...)
+ if ($_has->('isa_instance_of')) {
+
+ if ($_has->('isa')) {
- # XXX we also ignore conflicts here -- last in wins
- #confess q{conflict 'isa' and 'isa_class' or 'isa_role'}
- #if $_has->('isa')
+ $class->throw_error(
+ q{Cannot use 'isa_instance_of' and 'isa' together for attribute }
+ . $_opt->('definition_context')->{package} . '::' . $name
+ );
+ }
- # XXX undocumented -- not sure this is a great idea
- $options->{isa} = class_type(delete $options->{isa_class})
- if $_has->('isa_class');
- $options->{isa} = role_type(delete $options->{isa_role})
- if $_has->('isa_role');
- $options->{isa} = enum(delete $options->{isa_enum})
- if $_has->('isa_enum');
+ $options->{isa} = class_type(delete $options->{isa_instance_of});
+ }
- $class->throw_error('You must specify an isa when declaring a constraint')
- if $_has->('constraint') && !$_has->('isa');
+ ### the pretty business of on-the-fly subtyping...
+ my $our_type;
- if (my $isa = $_opt->('isa')) {
+ if ($_has->('constraint')) {
- my @opts;
+ # check for errors...
+ $class->throw_error('You must specify an "isa" when declaring a "constraint"')
+ if !$_has->('isa');
+ $class->throw_error('"constraint" must be a CODE reference')
+ if $_ref->('constraint') ne 'CODE';
# constraint checking! XXX message, etc?
- push @opts, constraint => $_opt->('constraint')
+ push my @opts, constraint => $_opt->('constraint')
if $_ref->('constraint') eq 'CODE';
- if (@opts) {
+ # stash our original option away and construct our new one
+ my $isa = $options->{original_isa} = $_opt->('isa');
+ $our_type ||= _acquire_isa_tc($isa)->create_child_type(@opts);
+ }
+
+ # "fix" the case of the hashref.... *sigh*
+ # FIXME TODO check for potential conflicts and warn!
+ $options->{coerce} = [ %{ $options->{coerce} } ]
+ if $_ref->('coerce') eq 'HASH';
+
+ if ($_ref->('coerce') eq 'ARRAY') {
- # stash our original option away and construct our new one
- $options->{original_isa} = $isa;
- $options->{isa}
- = _find_or_create_isa_type_constraint($isa)
- ->create_child_type(@opts)
- ;
+ ### must be type => sub { ... } pairs...
+ my @coercions = @{ $_opt->('coerce') };
+ confess 'You must specify an "isa" when declaring "coercion"'
+ unless $_has->('isa');
+ confess 'coercion array must be in pairs!'
+ if @coercions % 2;
+ confess 'must define at least one coercion pair!'
+ unless @coercions > 0;
+
+ my $our_coercion = Moose::Meta::TypeCoercion->new;
+ $our_type ||= _acquire_isa_tc($_opt->('isa'))->create_child_type;
+
+ $our_coercion->add_type_coercions(@coercions);
+ $our_type->coercion($our_coercion);
+ $options->{coerce} = 1;
+ }
+
+ if ($our_type && !$our_type->has_coercion) {
+
+ my $isa_type = _acquire_isa_tc($_opt->('isa'));
+
+ if ($isa_type->has_coercion && !$_ref->('coerce') && $_opt->('coerce') eq "1") {
+
+ # create our coercion as a copy of the parent
+ $our_type->coercion(Moose::Meta::TypeCoercion->new(
+ type_constraint => $our_type,
+ type_coercion_map => [ @{ $isa_type->coercion->type_coercion_map } ],
+ ));
}
+
}
+ # fin constraint mucking....
+ do { $options->{original_isa} = $_opt->('isa'); $options->{isa} = $our_type }
+ if $our_type;
+
if ($options->{lazy_build} && $options->{lazy_build} eq 'private') {
$options->{lazy_build} = 1;
@@ -264,10 +328,10 @@ sub init_meta {
die "Class $for_class has no metaclass!"
unless Class::MOP::class_of($for_class);
- # If we're given paramaters to pass on to construct a role with, we build
+ # If we're given parameters to pass on to construct a role with, we build
# it out here rather than pass them on and allowing apply_metaroles() to
- # handle it, as there are Very Loud Warnings about how paramatized roles
- # are non-cachable when generated on the fly.
+ # handle it, as there are Very Loud Warnings about how parameterized roles
+ # are non-cacheable when generated on the fly.
### $params
my $role
@@ -279,10 +343,12 @@ sub init_meta {
;
Moose::Util::MetaRole::apply_metaroles(
- for => $for_class,
- class_metaroles => { attribute => [ $role ] },
# TODO add attribute trait here to create builder method if found
- role_metaroles => { applied_attribute => [ $role ] },
+ for => $for_class,
+ class_metaroles => { attribute => [ $role ] },
+ role_metaroles => { applied_attribute => [ $role ] },
+ parameter_metaroles => { applied_attribute => [ $role ] },
+ parameterized_role_metaroles => { applied_attribute => [ $role ] },
);
return Class::MOP::class_of($for_class);
@@ -294,9 +360,12 @@ __END__
=pod
-=encoding utf-8
+=encoding UTF-8
-=for :stopwords Chris Weyl
+=for :stopwords Chris Weyl David Steinbrunner GitHub attribute's isa one's rwp SUBTYPING
+foo
+
+=for :stopwords Wishlist flattr flattr'ed gittip gittip'ed
=head1 NAME
@@ -304,7 +373,7 @@ MooseX::AttributeShortcuts - Shorthand for common attribute options
=head1 VERSION
-This document describes version 0.017 of MooseX::AttributeShortcuts - released October 28, 2012 as part of MooseX-AttributeShortcuts.
+This document describes version 0.024 of MooseX::AttributeShortcuts - released May 02, 2014 as part of MooseX-AttributeShortcuts.
=head1 SYNOPSIS
@@ -357,6 +426,8 @@ This package causes an attribute trait to be applied to all attributes defined
to the using class. This trait extends the attribute option processing to
handle the above variations.
+=for Pod::Coverage init_meta
+
=head1 USAGE
This package automatically applies an attribute metaclass trait. Unless you
@@ -497,13 +568,32 @@ e.g., in your class,
has foo => (is => 'ro', builder => '_build_foo');
sub _build_foo { 'bar!' }
-=head2 constraint => sub { ... }
+=head2 isa_instance_of => ...
+
+Given a package name, this option will create an C<isa> type constraint that
+requires the value of the attribute be an instance of the class (or a
+descendant class) given. That is,
+
+ has foo => (is => 'ro', isa_instance_of => 'SomeThing');
-Specifying the constraint option with a coderef will cause a new type
+...is effectively the same as:
+
+ use Moose::TypeConstraints 'class_type';
+ has foo => (
+ is => 'ro',
+ isa => class_type('SomeThing'),
+ );
+
+...but a touch less awkward.
+
+=head2 isa => ..., constraint => sub { ... }
+
+Specifying the constraint option with a coderef will cause a new subtype
constraint to be created, with the parent type being the type specified in the
C<isa> option and the constraint being the coderef supplied here.
-Example:
+For example, only integers greater than 10 will pass this attribute's type
+constraint:
# value must be an integer greater than 10 to pass the constraint
has thinger => (
@@ -514,12 +604,76 @@ Example:
Note that if you supply a constraint, you must also provide an C<isa>.
-=for Pod::Coverage init_meta
+=head2 isa => ..., constraint => sub { ... }, coerce => 1
+
+Supplying a constraint and asking for coercion will "Just Work", that is, any
+coercions that the C<isa> type has will still work.
+
+For example, let's say that you're using the C<File> type constraint from
+L<MooseX::Types::Path::Class>, and you want an additional constraint that the
+file must exist:
+
+ has thinger => (
+ is => 'ro',
+ isa => File,
+ constraint => sub { !! $_->stat },
+ coerce => 1,
+ );
+
+C<thinger> will correctly coerce the string "/etc/passwd" to a
+C<Path::Class:File>, and will only accept the coerced result as a value if
+the file exists.
+
+=head2 coerce => [ Type => sub { ...coerce... }, ... ]
+
+Specifying the coerce option with a hashref will cause a new subtype to be
+created and used (just as with the constraint option, above), with the
+specified coercions added to the list. In the passed hashref, the keys are
+Moose types (well, strings resolvable to Moose types), and the values are
+coderefs that will coerce a given type to our type.
+
+ has bar => (
+ is => 'ro',
+ isa => 'Str',
+ coerce => [
+ Int => sub { "$_" },
+ Object => sub { 'An instance of ' . ref $_ },
+ ],
+ );
+
+=head1 ANONYMOUS SUBTYPING AND COERCION
+
+ "Abusus non tollit usum."
+
+Note that we create new, anonymous subtypes whenever the constraint or
+coercion options are specified in such a way that the Shortcuts trait (this
+one) is invoked. It's fully supported to use both constraint and coerce
+options at the same time.
+
+This facility is intended to assist with the creation of one-off type
+constraints and coercions. It is not possible to deliberately reuse the
+subtypes we create, and if you find yourself using a particular isa /
+constraint / coerce option triplet in more than one place you should really
+think about creating a type that you can reuse. L<MooseX::Types> provides
+the facilities to easily do this, or even a simple L<constant> definition at
+the package level with an anonymous type stashed away for local use.
+
+=head1 SEE ALSO
+
+Please see those modules/websites for more information related to this module.
+
+=over 4
+
+=item *
+
+L<MooseX::Types|MooseX::Types>
+
+=back
=head1 SOURCE
-The development version is on github at L<http://github.com/RsrchBoy/moosex-attributeshortcuts>
-and may be cloned from L<git://github.com/RsrchBoy/moosex-attributeshortcuts.git>
+The development version is on github at L<http://https://github.com/RsrchBoy/moosex-attributeshortcuts>
+and may be cloned from L<git://https://github.com/RsrchBoy/moosex-attributeshortcuts.git>
=head1 BUGS
@@ -534,6 +688,21 @@ feature.
Chris Weyl <cweyl@alumni.drew.edu>
+=head2 SAYING THANKS IN A MATERIALISTIC WAY
+
+Please note B<I do not expect to be gittip'ed or flattr'ed for this work>,
+rather B<it is simply a very pleasant surprise>. I largely create and release
+works like this because I need them or I find it enjoyable; however, don't let
+that stop you giving me money if you feel like it ;)
+
+L<flattr this!|https://flattr.com/submit/auto?user_id=RsrchBoy&url=https%3A%2F%2Fgithub.com%2FRsrchBoy%2Fmoosex-attributeshortcuts&title=RsrchBoy's%20CPAN%20MooseX-AttributeShortcuts&tags=%22RsrchBoy's%20MooseX-AttributeShortcuts%20in%20the%20CPAN%22>
+L<gittip me!|https://www.gittip.com/RsrchBoy/>
+L<Amazon Wishlist|http://www.amazon.com/gp/registry/wishlist/3G2DQFPBA57L6>
+
+=head1 CONTRIBUTOR
+
+David Steinbrunner <dsteinbrunner@pobox.com>
+
=head1 COPYRIGHT AND LICENSE
This software is Copyright (c) 2011 by Chris Weyl.
@@ -0,0 +1,17 @@
+use strict;
+use warnings;
+
+# this test was generated with Dist::Zilla::Plugin::Test::CheckDeps 0.012
+
+use Test::More 0.94;
+use Test::CheckDeps 0.010;
+
+
+check_dependencies('suggests');
+
+
+if (1) {
+ BAIL_OUT("Missing dependencies") if !Test::More->builder->is_passing;
+}
+
+done_testing;
@@ -1,82 +1,50 @@
-#!perl
-#
-# This file is part of MooseX-AttributeShortcuts
-#
-# This software is Copyright (c) 2011 by Chris Weyl.
-#
-# This is free software, licensed under:
-#
-# The GNU Lesser General Public License, Version 2.1, February 1999
-#
-
+use 5.006;
use strict;
use warnings;
-use Test::More;
+# this test was generated with Dist::Zilla::Plugin::Test::Compile 2.039
+use Test::More tests => 1 + ($ENV{AUTHOR_TESTING} ? 1 : 0);
-use File::Find;
-use File::Temp qw{ tempdir };
-my @modules;
-find(
- sub {
- return if $File::Find::name !~ /\.pm\z/;
- my $found = $File::Find::name;
- $found =~ s{^lib/}{};
- $found =~ s{[/\\]}{::}g;
- $found =~ s/\.pm$//;
- # nothing to skip
- push @modules, $found;
- },
- 'lib',
+my @module_files = (
+ 'MooseX/AttributeShortcuts.pm'
);
-sub _find_scripts {
- my $dir = shift @_;
-
- my @found_scripts = ();
- find(
- sub {
- return unless -f;
- my $found = $File::Find::name;
- # nothing to skip
- open my $FH, '<', $_ or do {
- note( "Unable to open $found in ( $! ), skipping" );
- return;
- };
- my $shebang = <$FH>;
- return unless $shebang =~ /^#!.*?\bperl\b\s*$/;
- push @found_scripts, $found;
- },
- $dir,
- );
-
- return @found_scripts;
-}
-my @scripts;
-do { push @scripts, _find_scripts($_) if -d $_ }
- for qw{ bin script scripts };
-my $plan = scalar(@modules) + scalar(@scripts);
-$plan ? (plan tests => $plan) : (plan skip_all => "no tests to run");
+# no fake home requested
+
+my $inc_switch = -d 'blib' ? '-Mblib' : '-Ilib';
+
+use File::Spec;
+use IPC::Open3;
+use IO::Handle;
+
+open my $stdin, '<', File::Spec->devnull or die "can't open devnull: $!";
+my @warnings;
+for my $lib (@module_files)
{
- # fake home for cpan-testers
- # no fake requested ## local $ENV{HOME} = tempdir( CLEANUP => 1 );
-
- like( qx{ $^X -Ilib -e "require $_; print '$_ ok'" }, qr/^\s*$_ ok/s, "$_ loaded ok" )
- for sort @modules;
-
- SKIP: {
- eval "use Test::Script 1.05; 1;";
- skip "Test::Script needed to test script compilation", scalar(@scripts) if $@;
- foreach my $file ( @scripts ) {
- my $script = $file;
- $script =~ s!.*/!!;
- script_compiles( $file, "$script script compiles" );
- }
+ # see L<perlfaq8/How can I capture STDERR from an external command?>
+ my $stderr = IO::Handle->new;
+
+ my $pid = open3($stdin, '>&STDERR', $stderr, $^X, $inc_switch, '-e', "require q[$lib]");
+ binmode $stderr, ':crlf' if $^O eq 'MSWin32';
+ my @_warnings = <$stderr>;
+ waitpid($pid, 0);
+ is($?, 0, "$lib loaded ok");
+
+ if (@_warnings)
+ {
+ warn @_warnings;
+ push @warnings, @_warnings;
}
}
+
+
+
+is(scalar(@warnings), 0, 'no warnings found') if $ENV{AUTHOR_TESTING};
+
+
@@ -9,7 +9,7 @@ our $success = 0;
END { $success && done_testing; }
# List our own version used to generate this
-my $v = "\nGenerated by Dist::Zilla::Plugin::ReportVersions::Tiny v1.08\n";
+my $v = "\nGenerated by Dist::Zilla::Plugin::ReportVersions::Tiny v1.10\n";
eval { # no excuses!
# report our Perl details
@@ -49,27 +49,33 @@ sub pmver {
}
eval { $v .= pmver('ExtUtils::MakeMaker','6.30') };
-eval { $v .= pmver('File::Find','any version') };
-eval { $v .= pmver('File::Temp','any version') };
+eval { $v .= pmver('File::Spec','any version') };
+eval { $v .= pmver('IO::Handle','any version') };
+eval { $v .= pmver('IPC::Open3','any version') };
+eval { $v .= pmver('List::AllUtils','any version') };
eval { $v .= pmver('Moose','any version') };
eval { $v .= pmver('Moose::Exporter','any version') };
eval { $v .= pmver('Moose::Role','any version') };
+eval { $v .= pmver('Moose::Util','any version') };
eval { $v .= pmver('Moose::Util::MetaRole','any version') };
eval { $v .= pmver('Moose::Util::TypeConstraints','any version') };
eval { $v .= pmver('MooseX::Role::Parameterized','any version') };
eval { $v .= pmver('MooseX::Types::Common::String','any version') };
eval { $v .= pmver('MooseX::Types::Moose','any version') };
-eval { $v .= pmver('Pod::Coverage::TrustPod','any version') };
+eval { $v .= pmver('MooseX::Types::Path::Class','any version') };
+eval { $v .= pmver('Package::DeprecationManager','any version') };
+eval { $v .= pmver('Path::Class','any version') };
+eval { $v .= pmver('Test::CheckDeps','0.010') };
eval { $v .= pmver('Test::Fatal','any version') };
eval { $v .= pmver('Test::Moose','any version') };
-eval { $v .= pmver('Test::Moose::More','0.017') };
-eval { $v .= pmver('Test::More','0.88') };
-eval { $v .= pmver('Test::Pod','1.41') };
-eval { $v .= pmver('Test::Pod::Coverage','1.08') };
+eval { $v .= pmver('Test::Moose::More','0.018') };
+eval { $v .= pmver('Test::More','0.94') };
+eval { $v .= pmver('Test::Warn','any version') };
+eval { $v .= pmver('autobox::Core','any version') };
+eval { $v .= pmver('autobox::Junctions','any version') };
eval { $v .= pmver('constant','any version') };
eval { $v .= pmver('namespace::autoclean','any version') };
eval { $v .= pmver('strict','any version') };
-eval { $v .= pmver('version','0.9901') };
eval { $v .= pmver('warnings','any version') };
@@ -0,0 +1,51 @@
+use strict;
+use warnings;
+
+# test our new constraint option
+#
+# this test is perhaps a bit redundnant, given t/inline_*.t, but it's kinda
+# where I'd like to see it go when Test::Moose::More is retrofitted with
+# isa/type_constraint checking support.
+
+use Test::More;
+use Test::Moose::More;
+use Moose::Util;
+use Moose::Util::TypeConstraints;
+
+my $shortcuts;
+
+{
+ package TestClass;
+
+ use Moose;
+ use namespace::autoclean;
+ use MooseX::AttributeShortcuts;
+
+ $shortcuts = Shortcuts;
+
+ has foo => (
+ is => 'rw',
+ isa => 'Str',
+ constraint => sub { /^Hi/ },
+ );
+
+}
+
+my $tc =
+ Moose::Util::TypeConstraints::find_or_create_isa_type_constraint('Str')
+ ->create_child_type(constraint => sub { /^Hi/ })
+ ;
+
+validate_class TestClass => (
+ attributes => [
+ foo => {
+ -does => [ $shortcuts ],
+ accessor => 'foo',
+ original_isa => 'Str',
+ type_constraint => $tc,
+ isa => $tc,
+ },
+ ],
+);
+
+done_testing;
@@ -0,0 +1,49 @@
+use strict;
+use warnings;
+
+use Test::More;
+use Test::Moose::More;
+
+{
+ package TestClass;
+
+ use Moose;
+ use namespace::autoclean;
+ use MooseX::AttributeShortcuts;
+ use Test::Warn;
+
+ warnings_exist {
+ has bar => (is => 'ro', isa_class => 'SomeClass');
+ has baz => (is => 'rwp', isa_role => 'SomeRole');
+ }
+ [ qr/Naughty! isa_class, isa_role, and isa_enum will be removed on or after 01 July 2014!/ ],
+ 'expected warnings thrown for isa_class, isa_role usage',
+ ;
+}
+
+# TODO shift the constraint checking out into TMM?
+
+validate_class TestClass => (
+ attributes => [ qw{ bar baz } ],
+);
+
+subtest 'isa_class check' => sub {
+ my $att = 'bar';
+ my $meta = TestClass->meta->get_attribute($att);
+ ok $meta->has_type_constraint, "$att has a type constraint";
+ my $tc = $meta->type_constraint;
+ isa_ok $tc, 'Moose::Meta::TypeConstraint::Class';
+ is $tc->class, 'SomeClass', 'tc looks for correct class';
+};
+
+subtest 'isa_role check' => sub {
+ my $att = 'baz';
+ my $meta = TestClass->meta->get_attribute($att);
+ ok $meta->has_type_constraint, "$att has a type constraint";
+ my $tc = $meta->type_constraint;
+ isa_ok $tc, 'Moose::Meta::TypeConstraint::Role';
+ is $tc->role, 'SomeRole', 'tc looks for correct role';
+};
+
+
+done_testing;
@@ -0,0 +1,92 @@
+use strict;
+use warnings;
+
+# small, minimal test to ensure our hashref-based attribute matching is still
+# working as expected
+#
+# That is to say, working unless you hit a nasty bug.
+
+{ package TestClass::From; use Moose; }
+
+my $i = 0;
+my $sc_trait;
+
+{
+ package TestClass;
+
+ use Moose;
+ use namespace::autoclean;
+ use MooseX::AttributeShortcuts;
+ use Path::Class;
+ use MooseX::Types::Path::Class ':all';
+
+ $sc_trait = Shortcuts;
+
+ has bar => (
+ is => 'rw',
+ isa => File,
+ coerce => {
+ 'TestClass::From' => sub { $i++; return file('foo') },
+ 'Str' => sub { $i++; file $_ },
+ },
+ );
+}
+
+use Test::More;
+use Test::Moose::More 0.018;
+use Test::Fatal;
+use Path::Class;
+use MooseX::Types::Path::Class ':all';
+
+# TODO shift the constraint checking out into TMM?
+
+validate_class TestClass => (
+ attributes => [
+ bar => {
+ -does => [ $sc_trait ],
+ reader => undef,
+ writer => undef,
+ accessor => 'bar',
+ isa => File,
+ original_isa => 'MooseX::Types::Path::Class::File',
+ coerce => 1,
+ required => undef,
+ },
+ ],
+);
+
+subtest 'Str coercion OK' => sub {
+
+ my $tc;
+ my $msg = exception { $tc = TestClass->new(bar => 'foo') };
+ is $msg, undef, 'does not die on construction';
+ my $bar = $tc->bar;
+ isa_ok $bar, 'Path::Class::File';
+ is "$bar", 'foo', 'value is correct';
+
+ $msg = exception { $tc->bar('baz') };
+ is $msg, undef, 'does not die on setting';
+ $bar = $tc->bar;
+ isa_ok $bar, 'Path::Class::File';
+ is "$bar", 'baz', 'value is correct';
+};
+
+subtest 'TestClass::From coercion OK' => sub {
+
+ my $tc;
+ my $tf = TestClass::From->new();
+ my $msg = exception { $tc = TestClass->new(bar => $tf) };
+ is $msg, undef, 'does not die on construction';
+ my $bar = $tc->bar;
+ isa_ok $bar, 'Path::Class::File';
+ is "$bar", 'foo', 'value is correct';
+
+ $msg = exception { $tc->bar($tf) };
+ is $msg, undef, 'does not die on setting';
+ $bar = $tc->bar;
+ isa_ok $bar, 'Path::Class::File';
+ # yeah, I know, just go with it for now
+ is "$bar", 'foo', 'value is correct';
+};
+
+done_testing;
@@ -0,0 +1,87 @@
+use strict;
+use warnings;
+
+{ package TestClass::From; use Moose; }
+
+my $i = 0;
+my $sc_trait;
+
+{
+ package TestClass;
+
+ use Moose;
+ use namespace::autoclean;
+ use MooseX::AttributeShortcuts;
+ use Path::Class;
+ use MooseX::Types::Path::Class ':all';
+
+ $sc_trait = Shortcuts;
+
+ has bar => (
+ is => 'rw',
+ isa => File,
+ coerce => [
+ 'TestClass::From' => sub { $i++; return file('foo') },
+ 'Str' => sub { $i++; file $_ },
+ ],
+ );
+}
+
+use Test::More;
+use Test::Moose::More 0.018;
+use Test::Fatal;
+use Path::Class;
+use MooseX::Types::Path::Class ':all';
+
+# TODO shift the constraint checking out into TMM?
+
+validate_class TestClass => (
+ attributes => [
+ bar => {
+ -does => [ $sc_trait ],
+ reader => undef,
+ writer => undef,
+ accessor => 'bar',
+ isa => File,
+ original_isa => 'MooseX::Types::Path::Class::File',
+ coerce => 1,
+ required => undef,
+ },
+ ],
+);
+
+subtest 'Str coercion OK' => sub {
+
+ my $tc;
+ my $msg = exception { $tc = TestClass->new(bar => 'foo') };
+ is $msg, undef, 'does not die on construction';
+ my $bar = $tc->bar;
+ isa_ok $bar, 'Path::Class::File';
+ is "$bar", 'foo', 'value is correct';
+
+ $msg = exception { $tc->bar('baz') };
+ is $msg, undef, 'does not die on setting';
+ $bar = $tc->bar;
+ isa_ok $bar, 'Path::Class::File';
+ is "$bar", 'baz', 'value is correct';
+};
+
+subtest 'TestClass::From coercion OK' => sub {
+
+ my $tc;
+ my $tf = TestClass::From->new();
+ my $msg = exception { $tc = TestClass->new(bar => $tf) };
+ is $msg, undef, 'does not die on construction';
+ my $bar = $tc->bar;
+ isa_ok $bar, 'Path::Class::File';
+ is "$bar", 'foo', 'value is correct';
+
+ $msg = exception { $tc->bar($tf) };
+ is $msg, undef, 'does not die on setting';
+ $bar = $tc->bar;
+ isa_ok $bar, 'Path::Class::File';
+ # yeah, I know, just go with it for now
+ is "$bar", 'foo', 'value is correct';
+};
+
+done_testing;
@@ -53,6 +53,7 @@ subtest 'value NOT OK' => sub {
my $tc;
my $msg = exception { $tc = TestClass->new(bar => -10) };
+ ok !!$msg, 'dies on bad value';
like $msg, $error, 'dies with expected message';
$msg = exception { $tc = TestClass->new(bar => 10) };
@@ -60,6 +61,7 @@ subtest 'value NOT OK' => sub {
is $tc->bar, 10, 'value is correct';
$msg = exception { $tc->bar(-10) };
+ ok !!$msg, 'dies on bad value';
like $msg, $error, 'dies with expected message';
};
@@ -0,0 +1,81 @@
+use strict;
+use warnings;
+
+{
+ package TestClass;
+
+ use Moose;
+ use namespace::autoclean;
+ use MooseX::AttributeShortcuts;
+
+ use MooseX::Types::Path::Class ':all';
+
+ has bar => (
+ is => 'rw',
+ isa => File,
+ coerce => 1,
+ constraint => sub { "$_" =~ /foo|baz/ },
+ );
+}
+
+use Test::More;
+use Test::Moose::More 0.018;
+use Test::Fatal;
+use Path::Class;
+use MooseX::Types::Path::Class ':all';
+
+# TODO shift the constraint checking out into TMM?
+
+validate_class TestClass => (
+ attributes => [
+ bar => {
+ reader => undef,
+ writer => undef,
+ accessor => 'bar',
+ original_isa => File,
+ coerce => 1,
+ required => undef,
+ },
+ ],
+);
+
+
+subtest 'value OK' => sub {
+
+ my $tc;
+ my $msg = exception { $tc = TestClass->new(bar => 'foo') };
+ is $msg, undef, 'does not die on construction';
+ my $bar = $tc->bar;
+ isa_ok $bar, 'Path::Class::File';
+ is "$bar", 'foo', 'value is correct';
+
+ $msg = exception { $tc->bar('baz') };
+ is $msg, undef, 'does not die on setting';
+ $bar = $tc->bar;
+ isa_ok $bar, 'Path::Class::File';
+ is "$bar", 'baz', 'value is correct';
+};
+
+subtest 'value NOT OK' => sub {
+
+ my $error = qr/Attribute \(bar\) does not pass the type constraint/;
+
+ my $tc;
+ my $msg = exception { $tc = TestClass->new(bar => 'bip') };
+ ok !!$msg, 'dies on bad value';
+ like $msg, $error, 'dies with expected message';
+
+ $msg = exception { $tc = TestClass->new(bar => file('bip')) };
+ ok !!$msg, 'dies on bad value';
+ like $msg, $error, 'dies with expected message';
+
+ $tc = TestClass->new;
+ $msg = exception { $tc->bar('bip') };
+ ok !!$msg, 'dies on bad value';
+ like $msg, $error, 'dies with expected message';
+ $msg = exception { $tc->bar(file 'bip') };
+ ok !!$msg, 'dies on bad value';
+ like $msg, $error, 'dies with expected message';
+};
+
+done_testing;
@@ -1,43 +0,0 @@
-use strict;
-use warnings;
-
-{
- package TestClass;
-
- use Moose;
- use namespace::autoclean;
- use MooseX::AttributeShortcuts;
-
- has bar => (is => 'ro', isa_class => 'SomeClass');
- has baz => (is => 'rwp', isa_role => 'SomeRole');
-}
-
-use Test::More;
-use Test::Moose::More;
-
-# TODO shift the constraint checking out into TMM?
-
-validate_class TestClass => (
- attributes => [ qw{ bar baz } ],
-);
-
-subtest 'isa_class check' => sub {
- my $att = 'bar';
- my $meta = TestClass->meta->get_attribute($att);
- ok $meta->has_type_constraint, "$att has a type constraint";
- my $tc = $meta->type_constraint;
- isa_ok $tc, 'Moose::Meta::TypeConstraint::Class';
- is $tc->class, 'SomeClass', 'tc looks for correct class';
-};
-
-subtest 'isa_role check' => sub {
- my $att = 'baz';
- my $meta = TestClass->meta->get_attribute($att);
- ok $meta->has_type_constraint, "$att has a type constraint";
- my $tc = $meta->type_constraint;
- isa_ok $tc, 'Moose::Meta::TypeConstraint::Role';
- is $tc->role, 'SomeRole', 'tc looks for correct role';
-};
-
-
-done_testing;
@@ -0,0 +1,32 @@
+use strict;
+use warnings;
+
+{
+ package TestClass;
+
+ use Moose;
+ use namespace::autoclean;
+ use MooseX::AttributeShortcuts;
+
+ has bar => (is => 'ro', isa_instance_of => 'SomeClass');
+}
+
+use Test::More;
+use Test::Moose::More;
+
+# TODO shift the constraint checking out into TMM?
+
+validate_class TestClass => (
+ attributes => [ qw{ bar } ],
+);
+
+subtest 'isa_instance_of check' => sub {
+ my $att = 'bar';
+ my $meta = TestClass->meta->get_attribute($att);
+ ok $meta->has_type_constraint, "$att has a type constraint";
+ my $tc = $meta->type_constraint;
+ isa_ok $tc, 'Moose::Meta::TypeConstraint::Class';
+ is $tc->class, 'SomeClass', 'tc looks for correct class';
+};
+
+done_testing;
@@ -1,18 +0,0 @@
-
-BEGIN {
- unless ($ENV{RELEASE_TESTING}) {
- require Test::More;
- Test::More::plan(skip_all => 'these tests are for release candidate testing');
- }
-}
-
-use strict;
-use warnings;
-
-use Test::More;
-
-eval "use Test::ConsistentVersion";
-plan skip_all => "Test::ConsistentVersion required for this test"
- if $@;
-
-Test::ConsistentVersion::check_consistent_versions();
@@ -1,16 +0,0 @@
-
-BEGIN {
- unless ($ENV{RELEASE_TESTING}) {
- require Test::More;
- Test::More::plan(skip_all => 'these tests are for release candidate testing');
- }
-}
-
-use strict;
-use warnings;
-use Test::More;
-
-eval 'use Test::EOL';
-plan skip_all => 'Test::EOL required' if $@;
-
-all_perl_files_ok({ trailing_whitespace => 1 });
@@ -1,25 +0,0 @@
-#!perl
-
-BEGIN {
- unless ($ENV{RELEASE_TESTING}) {
- require Test::More;
- Test::More::plan(skip_all => 'these tests are for release candidate testing');
- }
-}
-
-#
-# This file is part of MooseX-AttributeShortcuts
-#
-# This software is Copyright (c) 2011 by Chris Weyl.
-#
-# This is free software, licensed under:
-#
-# The GNU Lesser General Public License, Version 2.1, February 1999
-#
-
-use Test::More;
-
-eval "use Test::HasVersion";
-plan skip_all => "Test::HasVersion required for testing version numbers"
- if $@;
-all_pm_version_ok();
@@ -1,31 +0,0 @@
-#!/usr/bin/env perl
-
-BEGIN {
- unless ($ENV{RELEASE_TESTING}) {
- require Test::More;
- Test::More::plan(skip_all => 'these tests are for release candidate testing');
- }
-}
-
-#
-# This file is part of MooseX-AttributeShortcuts
-#
-# This software is Copyright (c) 2011 by Chris Weyl.
-#
-# This is free software, licensed under:
-#
-# The GNU Lesser General Public License, Version 2.1, February 1999
-#
-
-use strict;
-use warnings;
-
-use Test::More 0.88;
-
-eval "use Test::NoSmartComments";
-plan skip_all => 'Test::NoSmartComments required for checking comment IQ'
- if $@;
-
-no_smart_comments_in_all();
-
-done_testing();
@@ -1,16 +0,0 @@
-
-BEGIN {
- unless ($ENV{RELEASE_TESTING}) {
- require Test::More;
- Test::More::plan(skip_all => 'these tests are for release candidate testing');
- }
-}
-
-use strict;
-use warnings;
-use Test::More;
-
-eval 'use Test::NoTabs';
-plan skip_all => 'Test::NoTabs required' if $@;
-
-all_perl_files_ok();
@@ -1,30 +0,0 @@
-#!perl
-
-BEGIN {
- unless ($ENV{RELEASE_TESTING}) {
- require Test::More;
- Test::More::plan(skip_all => 'these tests are for release candidate testing');
- }
-}
-
-#
-# This file is part of MooseX-AttributeShortcuts
-#
-# This software is Copyright (c) 2011 by Chris Weyl.
-#
-# This is free software, licensed under:
-#
-# The GNU Lesser General Public License, Version 2.1, February 1999
-#
-
-use Test::More;
-
-eval "use Test::Pod::Coverage 1.08";
-plan skip_all => "Test::Pod::Coverage 1.08 required for testing POD coverage"
- if $@;
-
-eval "use Pod::Coverage::TrustPod";
-plan skip_all => "Pod::Coverage::TrustPod required for testing POD coverage"
- if $@;
-
-all_pod_coverage_ok({ coverage_class => 'Pod::Coverage::TrustPod' });
@@ -1,24 +0,0 @@
-#!perl
-
-BEGIN {
- unless ($ENV{RELEASE_TESTING}) {
- require Test::More;
- Test::More::plan(skip_all => 'these tests are for release candidate testing');
- }
-}
-
-#
-# This file is part of MooseX-AttributeShortcuts
-#
-# This software is Copyright (c) 2011 by Chris Weyl.
-#
-# This is free software, licensed under:
-#
-# The GNU Lesser General Public License, Version 2.1, February 1999
-#
-use Test::More;
-
-eval "use Test::Pod 1.41";
-plan skip_all => "Test::Pod 1.41 required for testing POD" if $@;
-
-all_pod_files_ok();
@@ -1,25 +0,0 @@
-#!perl
-
-BEGIN {
- unless ($ENV{RELEASE_TESTING}) {
- require Test::More;
- Test::More::plan(skip_all => 'these tests are for release candidate testing');
- }
-}
-
-#
-# This file is part of MooseX-AttributeShortcuts
-#
-# This software is Copyright (c) 2011 by Chris Weyl.
-#
-# This is free software, licensed under:
-#
-# The GNU Lesser General Public License, Version 2.1, February 1999
-#
-
-use Test::More;
-
-eval 'use Test::Portability::Files';
-plan skip_all => 'Test::Portability::Files required for testing portability'
- if $@;
-run_tests();
@@ -0,0 +1,33 @@
+use strict;
+use warnings;
+use Test::More;
+
+# generated by Dist::Zilla::Plugin::Test::PodSpelling 2.006002
+use Test::Spelling 0.12;
+use Pod::Wordlist;
+
+
+add_stopwords(<DATA>);
+all_pod_files_spelling_ok( qw( bin lib ) );
+__DATA__
+AFAICT
+ABEND
+RSRCHBOY
+RSRCHBOY's
+gpg
+ini
+metaclass
+metaclasses
+parameterized
+parameterization
+subclasses
+coderef
+Chris
+Weyl
+cweyl
+David
+Steinbrunner
+dsteinbrunner
+lib
+MooseX
+AttributeShortcuts
@@ -0,0 +1,10 @@
+use strict;
+use warnings;
+
+use Test::More;
+
+eval "use Test::ConsistentVersion";
+plan skip_all => "Test::ConsistentVersion required for this test"
+ if $@;
+
+Test::ConsistentVersion::check_consistent_versions();
@@ -0,0 +1,8 @@
+use strict;
+use warnings;
+use Test::More;
+
+eval 'use Test::EOL';
+plan skip_all => 'Test::EOL required' if $@;
+
+all_perl_files_ok({ trailing_whitespace => 1 });
@@ -0,0 +1,17 @@
+#!perl
+#
+# This file is part of MooseX-AttributeShortcuts
+#
+# This software is Copyright (c) 2011 by Chris Weyl.
+#
+# This is free software, licensed under:
+#
+# The GNU Lesser General Public License, Version 2.1, February 1999
+#
+
+use Test::More;
+
+eval "use Test::HasVersion";
+plan skip_all => "Test::HasVersion required for testing version numbers"
+ if $@;
+all_pm_version_ok();
@@ -0,0 +1,17 @@
+#!perl
+#
+# This file is part of MooseX-AttributeShortcuts
+#
+# This software is Copyright (c) 2011 by Chris Weyl.
+#
+# This is free software, licensed under:
+#
+# The GNU Lesser General Public License, Version 2.1, February 1999
+#
+
+use Test::More;
+
+eval "use Test::MinimumVersion";
+plan skip_all => "Test::MinimumVersion required for testing minimum versions"
+ if $@;
+all_minimum_version_ok( qq{5.008008} );
@@ -0,0 +1,23 @@
+#!/usr/bin/env perl
+#
+# This file is part of MooseX-AttributeShortcuts
+#
+# This software is Copyright (c) 2011 by Chris Weyl.
+#
+# This is free software, licensed under:
+#
+# The GNU Lesser General Public License, Version 2.1, February 1999
+#
+
+use strict;
+use warnings;
+
+use Test::More 0.88;
+
+eval "use Test::NoSmartComments";
+plan skip_all => 'Test::NoSmartComments required for checking comment IQ'
+ if $@;
+
+no_smart_comments_in_all();
+
+done_testing();
@@ -0,0 +1,14 @@
+use strict;
+use warnings;
+
+# this test was generated with Dist::Zilla::Plugin::Test::NoTabs 0.06
+
+use Test::More 0.88;
+use Test::NoTabs;
+
+my @files = (
+ 'lib/MooseX/AttributeShortcuts.pm'
+);
+
+notabs_ok($_) foreach @files;
+done_testing;
@@ -0,0 +1,16 @@
+#!perl
+#
+# This file is part of MooseX-AttributeShortcuts
+#
+# This software is Copyright (c) 2011 by Chris Weyl.
+#
+# This is free software, licensed under:
+#
+# The GNU Lesser General Public License, Version 2.1, February 1999
+#
+# This file was automatically generated by Dist::Zilla::Plugin::PodCoverageTests.
+
+use Test::Pod::Coverage 1.08;
+use Pod::Coverage::TrustPod;
+
+all_pod_coverage_ok({ coverage_class => 'Pod::Coverage::TrustPod' });
@@ -0,0 +1,29 @@
+#!perl
+#
+# This file is part of MooseX-AttributeShortcuts
+#
+# This software is Copyright (c) 2011 by Chris Weyl.
+#
+# This is free software, licensed under:
+#
+# The GNU Lesser General Public License, Version 2.1, February 1999
+#
+
+use strict;
+use warnings;
+use Test::More;
+
+foreach my $env_skip ( qw(
+ SKIP_POD_LINKCHECK
+) ){
+ plan skip_all => "\$ENV{$env_skip} is set, skipping"
+ if $ENV{$env_skip};
+}
+
+eval "use Test::Pod::LinkCheck";
+if ( $@ ) {
+ plan skip_all => 'Test::Pod::LinkCheck required for testing POD';
+}
+else {
+ Test::Pod::LinkCheck->new->all_pod_ok;
+}
@@ -0,0 +1,15 @@
+#!perl
+#
+# This file is part of MooseX-AttributeShortcuts
+#
+# This software is Copyright (c) 2011 by Chris Weyl.
+#
+# This is free software, licensed under:
+#
+# The GNU Lesser General Public License, Version 2.1, February 1999
+#
+# This file was automatically generated by Dist::Zilla::Plugin::PodSyntaxTests.
+use Test::More;
+use Test::Pod 1.41;
+
+all_pod_files_ok();