Object-Declare-0.24000755000764000764 013356354231 14504 5ustar00shlomifshlomif000000000000README100644000764000764 44513356354231 15430 0ustar00shlomifshlomif000000000000Object-Declare-0.24This archive contains the distribution Object-Declare, version 0.24: Declarative object constructor This software is Copyright (c) 2006 by Audrey Tang. This is free software, licensed under: The MIT (X11) License This README file was generated by Dist::Zilla::Plugin::Readme v6.012. Changes100644000764000764 741513356354231 16067 0ustar00shlomifshlomif000000000000Object-Declare-0.240.24 2018-10-07 * Added [MetaJSON] to dist.ini so releases include a META.json file * Convert dist.ini to [@SHLOMIF] 0.23 2016-02-12 * Convert the distribution from Module-Install to Dist-Zilla. * Start maintaining in a GitHub repository. * Add a LICENSE file. * Removed trailing whitespace - with a test. * Remove the SIGNATURE file - at least temporarily. 0.22 2007-02-09 * Allow declarations in copula callbacks as return value: copula => foo => sub { bar is 1, baz is 2 } * No longer raise bogus "overload method not found" errors when paritally-formed declarations objects is e.g. printed out for debugging purposes. 0.21 2007-01-26 * Helper functions for mapping keys are no longer present within dynamic scope of mapping construction callbacks; this allows you to have call a method that has the same name as a mapping key during ->new() and other callbacks. * Support for fully qualified fields: "Very::Happy is 42" and "is Very::Happy" are valid even when Very::Happy is not yet loaded. * Support for associating coderefs with copula for even more flexible rewriting of arguments: copula => { # list of words, or a map is => '', # from copula to label prefixes, are => '', # or to callback that e.g. turns has => sub { has => @_ }, # "has X" to "has is X" and # "X has 1" to "has is [X => 1]" }, 0.20 2007-01-16 * Sub::Override is no longer a dependency for this module. * Values in declarations can now contain nested sub-objects by calling the declarators again: column foo => field is column( field is 'foo' ); Contributed by: Jason Adams 0.13 2006-07-21 * Introduce the "synonyms" interface, a mapping for alternate spelling for field names. 0.12 2006-07-20 * The "isn't" keyword in 0.11 broke Test::More, and I can't find a way to reconcile them, so it's now sadly retracted. 0.11 2006-07-20 * Support the prefix ! operator on declarations, so negated ones such as "!is global" or "!global is $x" now work. Requested by: Jesse Vincent * Also introduce the "isn't" negated copula. Requested by: Jesse Vincent 0.10 2006-07-20 * The "copula" interface now accepts an arbitrary prefix for each copula (defaults to ''), which can be used to distinguish labels built by different copular words. 0.09 2006-07-18 * The "mapping" interface now accepts arbitrary code reference as the builder function, in addition to class names to call ->new to. 0.08 2006-07-18 * Added lots of documentation and comments. * Now works correctly even if at runtime the symbol table entries created at compile-time get deleted. 0.07 2006-07-18 * Chained "is foo, is bar, is baz" now works; previously only the first one is recognized. Reported by: Steven Little 0.06 2006-07-17 * Documentation cleanup; no functional changes. 0.05 2006-07-17 * Support for ordered declarations, via list-context return of "declare". In scalar context, it still returns a hash reference. 0.04 2006-07-17 * Support for plural values via "are": column x => field1 is 'xxx', field2 are 'XXX', 'XXX', # <-- Plural value is field3; 0.03 2006-07-17 * The declarator can now be exported to another package; this works because internally, each declarator remembers the class mappings and copula it was associated with. 0.02 2006-07-17 * Documentation cleanup; no functional changes. 0.01 2006-07-17 * Initial CPAN release. LICENSE100644000764000764 203713356354231 15574 0ustar00shlomifshlomif000000000000Object-Declare-0.24Copyright (c) 2006 Audrey Tang Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Changes~100644000764000764 735013356354231 16263 0ustar00shlomifshlomif000000000000Object-Declare-0.240.24 2018-10-07 * Added [MetaJSON] to dist.ini so releases include a META.json file 0.23 2016-02-12 * Convert the distribution from Module-Install to Dist-Zilla. * Start maintaining in a GitHub repository. * Add a LICENSE file. * Removed trailing whitespace - with a test. * Remove the SIGNATURE file - at least temporarily. 0.22 2007-02-09 * Allow declarations in copula callbacks as return value: copula => foo => sub { bar is 1, baz is 2 } * No longer raise bogus "overload method not found" errors when paritally-formed declarations objects is e.g. printed out for debugging purposes. 0.21 2007-01-26 * Helper functions for mapping keys are no longer present within dynamic scope of mapping construction callbacks; this allows you to have call a method that has the same name as a mapping key during ->new() and other callbacks. * Support for fully qualified fields: "Very::Happy is 42" and "is Very::Happy" are valid even when Very::Happy is not yet loaded. * Support for associating coderefs with copula for even more flexible rewriting of arguments: copula => { # list of words, or a map is => '', # from copula to label prefixes, are => '', # or to callback that e.g. turns has => sub { has => @_ }, # "has X" to "has is X" and # "X has 1" to "has is [X => 1]" }, 0.20 2007-01-16 * Sub::Override is no longer a dependency for this module. * Values in declarations can now contain nested sub-objects by calling the declarators again: column foo => field is column( field is 'foo' ); Contributed by: Jason Adams 0.13 2006-07-21 * Introduce the "synonyms" interface, a mapping for alternate spelling for field names. 0.12 2006-07-20 * The "isn't" keyword in 0.11 broke Test::More, and I can't find a way to reconcile them, so it's now sadly retracted. 0.11 2006-07-20 * Support the prefix ! operator on declarations, so negated ones such as "!is global" or "!global is $x" now work. Requested by: Jesse Vincent * Also introduce the "isn't" negated copula. Requested by: Jesse Vincent 0.10 2006-07-20 * The "copula" interface now accepts an arbitrary prefix for each copula (defaults to ''), which can be used to distinguish labels built by different copular words. 0.09 2006-07-18 * The "mapping" interface now accepts arbitrary code reference as the builder function, in addition to class names to call ->new to. 0.08 2006-07-18 * Added lots of documentation and comments. * Now works correctly even if at runtime the symbol table entries created at compile-time get deleted. 0.07 2006-07-18 * Chained "is foo, is bar, is baz" now works; previously only the first one is recognized. Reported by: Steven Little 0.06 2006-07-17 * Documentation cleanup; no functional changes. 0.05 2006-07-17 * Support for ordered declarations, via list-context return of "declare". In scalar context, it still returns a hash reference. 0.04 2006-07-17 * Support for plural values via "are": column x => field1 is 'xxx', field2 are 'XXX', 'XXX', # <-- Plural value is field3; 0.03 2006-07-17 * The declarator can now be exported to another package; this works because internally, each declarator remembers the class mappings and copula it was associated with. 0.02 2006-07-17 * Documentation cleanup; no functional changes. 0.01 2006-07-17 * Initial CPAN release. dist.ini100644000764000764 37013356354231 16211 0ustar00shlomifshlomif000000000000Object-Declare-0.24name = Object-Declare author = Shlomi Fish license = MIT copyright_holder = Audrey Tang copyright_year = 2006 version = 0.24 [@Filter] -bundle = @SHLOMIF -remove = License dist = Object-Declare github_name = perl-Object-Declare META.yml100644000764000764 2347613356354231 16072 0ustar00shlomifshlomif000000000000Object-Declare-0.24--- abstract: 'Declarative object constructor' author: - 'Shlomi Fish ' build_requires: File::Spec: '0' IO::Handle: '0' IPC::Open3: '0' Module::Build: '0.28' Test::More: '0.88' ok: '0' configure_requires: ExtUtils::MakeMaker: '0' Module::Build: '0.28' dynamic_config: 0 generated_by: 'Dist::Zilla version 6.012, CPAN::Meta::Converter version 2.150010' license: mit meta-spec: url: http://module-build.sourceforge.net/META-spec-v1.4.html version: '1.4' name: Object-Declare provides: Object::Declare: file: lib/Object/Declare.pm version: '0.24' Object::Declare::Katamari: file: lib/Object/Declare.pm version: '0.24' requires: overload: '0' perl: '5.006' strict: '0' warnings: '0' resources: bugtracker: https://github.com/shlomif/perl-Object-Declare/issues homepage: http://metacpan.org/release/Object-Declare repository: git://github.com/shlomif/perl-Object-Declare.git version: '0.24' x_Dist_Zilla: perl: version: '5.028000' plugins: - class: Dist::Zilla::Plugin::Prereqs config: Dist::Zilla::Plugin::Prereqs: phase: test type: requires name: '@Filter/TestMoreDoneTesting' version: '6.012' - class: Dist::Zilla::Plugin::AutoPrereqs name: '@Filter/AutoPrereqs' version: '6.012' - class: Dist::Zilla::Plugin::ExecDir name: '@Filter/ExecDir' version: '6.012' - class: Dist::Zilla::Plugin::GatherDir config: Dist::Zilla::Plugin::GatherDir: exclude_filename: [] exclude_match: [] follow_symlinks: 0 include_dotfiles: 0 prefix: '' prune_directory: [] root: . name: '@Filter/GatherDir' version: '6.012' - class: Dist::Zilla::Plugin::ManifestSkip name: '@Filter/ManifestSkip' version: '6.012' - class: Dist::Zilla::Plugin::MetaYAML name: '@Filter/MetaYAML' version: '6.012' - class: Dist::Zilla::Plugin::PruneCruft name: '@Filter/PruneCruft' version: '6.012' - class: Dist::Zilla::Plugin::Readme name: '@Filter/Readme' version: '6.012' - class: Dist::Zilla::Plugin::RunExtraTests config: Dist::Zilla::Role::TestRunner: default_jobs: 1 name: '@Filter/RunExtraTests' version: '0.029' - class: Dist::Zilla::Plugin::ShareDir name: '@Filter/ShareDir' version: '6.012' - class: Dist::Zilla::Plugin::MakeMaker config: Dist::Zilla::Role::TestRunner: default_jobs: 1 name: '@Filter/MakeMaker' version: '6.012' - class: Dist::Zilla::Plugin::CheckChangesHasContent name: '@Filter/CheckChangesHasContent' version: '0.011' - class: Dist::Zilla::Plugin::ConfirmRelease name: '@Filter/ConfirmRelease' version: '6.012' - class: Dist::Zilla::Plugin::Manifest name: '@Filter/Manifest' version: '6.012' - class: Dist::Zilla::Plugin::MetaConfig name: '@Filter/MetaConfig' version: '6.012' - class: Dist::Zilla::Plugin::MetaJSON name: '@Filter/MetaJSON' version: '6.012' - class: Dist::Zilla::Plugin::MetaProvides::Package config: Dist::Zilla::Plugin::MetaProvides::Package: finder_objects: - class: Dist::Zilla::Plugin::FinderCode name: '@Filter/MetaProvides::Package/AUTOVIV/:InstallModulesPM' version: '6.012' include_underscores: 0 Dist::Zilla::Role::MetaProvider::Provider: $Dist::Zilla::Role::MetaProvider::Provider::VERSION: '2.002004' inherit_missing: '1' inherit_version: '1' meta_noindex: '1' Dist::Zilla::Role::ModuleMetadata: Module::Metadata: '1.000033' version: '0.006' name: '@Filter/MetaProvides::Package' version: '2.004003' - class: Dist::Zilla::Plugin::MetaResources name: '@Filter/MetaResources' version: '6.012' - class: Dist::Zilla::Plugin::ModuleBuild config: Dist::Zilla::Role::TestRunner: default_jobs: 1 name: '@Filter/ModuleBuild' version: '6.012' - class: Dist::Zilla::Plugin::PkgVersion name: '@Filter/PkgVersion' version: '6.012' - class: Dist::Zilla::Plugin::PodCoverageTests name: '@Filter/PodCoverageTests' version: '6.012' - class: Dist::Zilla::Plugin::PodSyntaxTests name: '@Filter/PodSyntaxTests' version: '6.012' - class: Dist::Zilla::Plugin::PodVersion name: '@Filter/PodVersion' version: '6.012' - class: Dist::Zilla::Plugin::Test::Compile config: Dist::Zilla::Plugin::Test::Compile: bail_out_on_fail: '0' fail_on_warning: author fake_home: 0 filename: t/00-compile.t module_finder: - ':InstallModules' needs_display: 0 phase: test script_finder: - ':PerlExecFiles' skips: [] switch: [] name: '@Filter/Test::Compile' version: '2.058' - class: Dist::Zilla::Plugin::Test::CPAN::Changes config: Dist::Zilla::Plugin::Test::CPAN::Changes: changelog: Changes name: '@Filter/Test::CPAN::Changes' version: '0.012' - class: Dist::Zilla::Plugin::Test::EOL config: Dist::Zilla::Plugin::Test::EOL: filename: xt/author/eol.t finder: - ':ExecFiles' - ':InstallModules' - ':TestFiles' trailing_whitespace: 1 name: '@Filter/Test::EOL' version: '0.19' - class: Dist::Zilla::Plugin::Test::NoTabs config: Dist::Zilla::Plugin::Test::NoTabs: filename: xt/author/no-tabs.t finder: - ':InstallModules' - ':ExecFiles' - ':TestFiles' name: '@Filter/Test::NoTabs' version: '0.15' - class: Dist::Zilla::Plugin::Test::TrailingSpace name: '@Filter/Test::TrailingSpace' version: 0.2.0 - class: Dist::Zilla::Plugin::TestRelease name: '@Filter/TestRelease' version: '6.012' - class: Dist::Zilla::Plugin::PodWeaver config: Dist::Zilla::Plugin::PodWeaver: finder: - ':InstallModules' - ':ExecFiles' plugins: - class: Pod::Weaver::Plugin::EnsurePod5 name: '@CorePrep/EnsurePod5' version: '4.015' - class: Pod::Weaver::Plugin::H1Nester name: '@CorePrep/H1Nester' version: '4.015' - class: Pod::Weaver::Section::Generic name: NAME version: '4.015' - class: Pod::Weaver::Section::Version name: Version version: '4.015' - class: Pod::Weaver::Section::Region name: prelude version: '4.015' - class: Pod::Weaver::Section::Generic name: SYNOPSIS version: '4.015' - class: Pod::Weaver::Section::Generic name: DESCRIPTION version: '4.015' - class: Pod::Weaver::Section::Generic name: OVERVIEW version: '4.015' - class: Pod::Weaver::Section::Collect name: ATTRIBUTES version: '4.015' - class: Pod::Weaver::Section::Collect name: METHODS version: '4.015' - class: Pod::Weaver::Section::Leftovers name: Leftovers version: '4.015' - class: Pod::Weaver::Section::Region name: postlude version: '4.015' - class: Pod::Weaver::Section::Authors name: Authors version: '4.015' - class: Pod::Weaver::Section::Legal name: Legal version: '4.015' - class: Pod::Weaver::Section::Bugs name: Bugs version: '4.015' - class: Pod::Weaver::Section::Support name: Support version: '1.010' name: '@Filter/PodWeaver' version: '4.008' - class: Dist::Zilla::Plugin::UploadToCPAN name: '@Filter/UploadToCPAN' version: '6.012' - class: Dist::Zilla::Plugin::FinderCode name: ':InstallModules' version: '6.012' - class: Dist::Zilla::Plugin::FinderCode name: ':IncModules' version: '6.012' - class: Dist::Zilla::Plugin::FinderCode name: ':TestFiles' version: '6.012' - class: Dist::Zilla::Plugin::FinderCode name: ':ExtraTestFiles' version: '6.012' - class: Dist::Zilla::Plugin::FinderCode name: ':ExecFiles' version: '6.012' - class: Dist::Zilla::Plugin::FinderCode name: ':PerlExecFiles' version: '6.012' - class: Dist::Zilla::Plugin::FinderCode name: ':ShareFiles' version: '6.012' - class: Dist::Zilla::Plugin::FinderCode name: ':MainModule' version: '6.012' - class: Dist::Zilla::Plugin::FinderCode name: ':AllFiles' version: '6.012' - class: Dist::Zilla::Plugin::FinderCode name: ':NoFiles' version: '6.012' - class: Dist::Zilla::Plugin::FinderCode name: '@Filter/MetaProvides::Package/AUTOVIV/:InstallModulesPM' version: '6.012' zilla: class: Dist::Zilla::Dist::Builder config: is_trial: '0' version: '6.012' x_generated_by_perl: v5.28.0 x_serialization_backend: 'YAML::Tiny version 1.73' MANIFEST100644000764000764 60613356354231 15700 0ustar00shlomifshlomif000000000000Object-Declare-0.24# This file was automatically generated by Dist::Zilla::Plugin::Manifest v6.012. Build.PL Changes Changes~ LICENSE MANIFEST META.json META.yml Makefile.PL README README.md dist.ini dist.ini~ lib/Object/Declare.pm t/00-compile.t t/01-basic.t weaver.ini xt/author/eol.t xt/author/no-tabs.t xt/author/pod-coverage.t xt/author/pod-syntax.t xt/release/cpan-changes.t xt/release/trailing-space.t Build.PL100644000764000764 235013356354231 16061 0ustar00shlomifshlomif000000000000Object-Declare-0.24 # This file was automatically generated by Dist::Zilla::Plugin::ModuleBuild v6.012. use strict; use warnings; use Module::Build 0.28; my %module_build_args = ( "build_requires" => { "Module::Build" => "0.28" }, "configure_requires" => { "ExtUtils::MakeMaker" => 0, "Module::Build" => "0.28" }, "dist_abstract" => "Declarative object constructor", "dist_author" => [ "Shlomi Fish " ], "dist_name" => "Object-Declare", "dist_version" => "0.24", "license" => "mit", "module_name" => "Object::Declare", "recursive_test_files" => 1, "requires" => { "overload" => 0, "perl" => "5.006", "strict" => 0, "warnings" => 0 }, "test_requires" => { "File::Spec" => 0, "IO::Handle" => 0, "IPC::Open3" => 0, "Test::More" => "0.88", "ok" => 0 } ); my %fallback_build_requires = ( "File::Spec" => 0, "IO::Handle" => 0, "IPC::Open3" => 0, "Module::Build" => "0.28", "Test::More" => "0.88", "ok" => 0 ); unless ( eval { Module::Build->VERSION(0.4004) } ) { delete $module_build_args{test_requires}; $module_build_args{build_requires} = \%fallback_build_requires; } my $build = Module::Build->new(%module_build_args); $build->create_build_script; README.md100644000764000764 14713356354231 16026 0ustar00shlomifshlomif000000000000Object-Declare-0.24Sources for [Object-Declare](https://metacpan.org/release/Object-Declare) , originally by Audrey Tang. dist.ini~100644000764000764 34613356354231 16412 0ustar00shlomifshlomif000000000000Object-Declare-0.24name = Object-Declare author = Shlomi Fish license = MIT copyright_holder = Audrey Tang copyright_year = 2006 version = 0.24 [@Filter] -bundle = @SHLOMIF dist = Object-Declare github_name = perl-Object-Declare META.json100644000764000764 3725413356354231 16241 0ustar00shlomifshlomif000000000000Object-Declare-0.24{ "abstract" : "Declarative object constructor", "author" : [ "Shlomi Fish " ], "dynamic_config" : 0, "generated_by" : "Dist::Zilla version 6.012, CPAN::Meta::Converter version 2.150010", "license" : [ "mit" ], "meta-spec" : { "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", "version" : 2 }, "name" : "Object-Declare", "prereqs" : { "build" : { "requires" : { "Module::Build" : "0.28" } }, "configure" : { "requires" : { "ExtUtils::MakeMaker" : "0", "Module::Build" : "0.28" } }, "develop" : { "requires" : { "Pod::Coverage::TrustPod" : "0", "Test::CPAN::Changes" : "0.19", "Test::EOL" : "0", "Test::More" : "0.96", "Test::NoTabs" : "0", "Test::Pod" : "1.41", "Test::Pod::Coverage" : "1.08", "Test::TrailingSpace" : "0.0203" } }, "runtime" : { "requires" : { "overload" : "0", "perl" : "5.006", "strict" : "0", "warnings" : "0" } }, "test" : { "requires" : { "File::Spec" : "0", "IO::Handle" : "0", "IPC::Open3" : "0", "Test::More" : "0.88", "ok" : "0" } } }, "provides" : { "Object::Declare" : { "file" : "lib/Object/Declare.pm", "version" : "0.24" }, "Object::Declare::Katamari" : { "file" : "lib/Object/Declare.pm", "version" : "0.24" } }, "release_status" : "stable", "resources" : { "bugtracker" : { "web" : "https://github.com/shlomif/perl-Object-Declare/issues" }, "homepage" : "http://metacpan.org/release/Object-Declare", "repository" : { "type" : "git", "url" : "git://github.com/shlomif/perl-Object-Declare.git", "web" : "https://github.com/shlomif/perl-Object-Declare" } }, "version" : "0.24", "x_Dist_Zilla" : { "perl" : { "version" : "5.028000" }, "plugins" : [ { "class" : "Dist::Zilla::Plugin::Prereqs", "config" : { "Dist::Zilla::Plugin::Prereqs" : { "phase" : "test", "type" : "requires" } }, "name" : "@Filter/TestMoreDoneTesting", "version" : "6.012" }, { "class" : "Dist::Zilla::Plugin::AutoPrereqs", "name" : "@Filter/AutoPrereqs", "version" : "6.012" }, { "class" : "Dist::Zilla::Plugin::ExecDir", "name" : "@Filter/ExecDir", "version" : "6.012" }, { "class" : "Dist::Zilla::Plugin::GatherDir", "config" : { "Dist::Zilla::Plugin::GatherDir" : { "exclude_filename" : [], "exclude_match" : [], "follow_symlinks" : 0, "include_dotfiles" : 0, "prefix" : "", "prune_directory" : [], "root" : "." } }, "name" : "@Filter/GatherDir", "version" : "6.012" }, { "class" : "Dist::Zilla::Plugin::ManifestSkip", "name" : "@Filter/ManifestSkip", "version" : "6.012" }, { "class" : "Dist::Zilla::Plugin::MetaYAML", "name" : "@Filter/MetaYAML", "version" : "6.012" }, { "class" : "Dist::Zilla::Plugin::PruneCruft", "name" : "@Filter/PruneCruft", "version" : "6.012" }, { "class" : "Dist::Zilla::Plugin::Readme", "name" : "@Filter/Readme", "version" : "6.012" }, { "class" : "Dist::Zilla::Plugin::RunExtraTests", "config" : { "Dist::Zilla::Role::TestRunner" : { "default_jobs" : 1 } }, "name" : "@Filter/RunExtraTests", "version" : "0.029" }, { "class" : "Dist::Zilla::Plugin::ShareDir", "name" : "@Filter/ShareDir", "version" : "6.012" }, { "class" : "Dist::Zilla::Plugin::MakeMaker", "config" : { "Dist::Zilla::Role::TestRunner" : { "default_jobs" : 1 } }, "name" : "@Filter/MakeMaker", "version" : "6.012" }, { "class" : "Dist::Zilla::Plugin::CheckChangesHasContent", "name" : "@Filter/CheckChangesHasContent", "version" : "0.011" }, { "class" : "Dist::Zilla::Plugin::ConfirmRelease", "name" : "@Filter/ConfirmRelease", "version" : "6.012" }, { "class" : "Dist::Zilla::Plugin::Manifest", "name" : "@Filter/Manifest", "version" : "6.012" }, { "class" : "Dist::Zilla::Plugin::MetaConfig", "name" : "@Filter/MetaConfig", "version" : "6.012" }, { "class" : "Dist::Zilla::Plugin::MetaJSON", "name" : "@Filter/MetaJSON", "version" : "6.012" }, { "class" : "Dist::Zilla::Plugin::MetaProvides::Package", "config" : { "Dist::Zilla::Plugin::MetaProvides::Package" : { "finder_objects" : [ { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : "@Filter/MetaProvides::Package/AUTOVIV/:InstallModulesPM", "version" : "6.012" } ], "include_underscores" : 0 }, "Dist::Zilla::Role::MetaProvider::Provider" : { "$Dist::Zilla::Role::MetaProvider::Provider::VERSION" : "2.002004", "inherit_missing" : 1, "inherit_version" : 1, "meta_noindex" : 1 }, "Dist::Zilla::Role::ModuleMetadata" : { "Module::Metadata" : "1.000033", "version" : "0.006" } }, "name" : "@Filter/MetaProvides::Package", "version" : "2.004003" }, { "class" : "Dist::Zilla::Plugin::MetaResources", "name" : "@Filter/MetaResources", "version" : "6.012" }, { "class" : "Dist::Zilla::Plugin::ModuleBuild", "config" : { "Dist::Zilla::Role::TestRunner" : { "default_jobs" : 1 } }, "name" : "@Filter/ModuleBuild", "version" : "6.012" }, { "class" : "Dist::Zilla::Plugin::PkgVersion", "name" : "@Filter/PkgVersion", "version" : "6.012" }, { "class" : "Dist::Zilla::Plugin::PodCoverageTests", "name" : "@Filter/PodCoverageTests", "version" : "6.012" }, { "class" : "Dist::Zilla::Plugin::PodSyntaxTests", "name" : "@Filter/PodSyntaxTests", "version" : "6.012" }, { "class" : "Dist::Zilla::Plugin::PodVersion", "name" : "@Filter/PodVersion", "version" : "6.012" }, { "class" : "Dist::Zilla::Plugin::Test::Compile", "config" : { "Dist::Zilla::Plugin::Test::Compile" : { "bail_out_on_fail" : 0, "fail_on_warning" : "author", "fake_home" : 0, "filename" : "t/00-compile.t", "module_finder" : [ ":InstallModules" ], "needs_display" : 0, "phase" : "test", "script_finder" : [ ":PerlExecFiles" ], "skips" : [], "switch" : [] } }, "name" : "@Filter/Test::Compile", "version" : "2.058" }, { "class" : "Dist::Zilla::Plugin::Test::CPAN::Changes", "config" : { "Dist::Zilla::Plugin::Test::CPAN::Changes" : { "changelog" : "Changes" } }, "name" : "@Filter/Test::CPAN::Changes", "version" : "0.012" }, { "class" : "Dist::Zilla::Plugin::Test::EOL", "config" : { "Dist::Zilla::Plugin::Test::EOL" : { "filename" : "xt/author/eol.t", "finder" : [ ":ExecFiles", ":InstallModules", ":TestFiles" ], "trailing_whitespace" : 1 } }, "name" : "@Filter/Test::EOL", "version" : "0.19" }, { "class" : "Dist::Zilla::Plugin::Test::NoTabs", "config" : { "Dist::Zilla::Plugin::Test::NoTabs" : { "filename" : "xt/author/no-tabs.t", "finder" : [ ":InstallModules", ":ExecFiles", ":TestFiles" ] } }, "name" : "@Filter/Test::NoTabs", "version" : "0.15" }, { "class" : "Dist::Zilla::Plugin::Test::TrailingSpace", "name" : "@Filter/Test::TrailingSpace", "version" : "0.2.0" }, { "class" : "Dist::Zilla::Plugin::TestRelease", "name" : "@Filter/TestRelease", "version" : "6.012" }, { "class" : "Dist::Zilla::Plugin::PodWeaver", "config" : { "Dist::Zilla::Plugin::PodWeaver" : { "finder" : [ ":InstallModules", ":ExecFiles" ], "plugins" : [ { "class" : "Pod::Weaver::Plugin::EnsurePod5", "name" : "@CorePrep/EnsurePod5", "version" : "4.015" }, { "class" : "Pod::Weaver::Plugin::H1Nester", "name" : "@CorePrep/H1Nester", "version" : "4.015" }, { "class" : "Pod::Weaver::Section::Generic", "name" : "NAME", "version" : "4.015" }, { "class" : "Pod::Weaver::Section::Version", "name" : "Version", "version" : "4.015" }, { "class" : "Pod::Weaver::Section::Region", "name" : "prelude", "version" : "4.015" }, { "class" : "Pod::Weaver::Section::Generic", "name" : "SYNOPSIS", "version" : "4.015" }, { "class" : "Pod::Weaver::Section::Generic", "name" : "DESCRIPTION", "version" : "4.015" }, { "class" : "Pod::Weaver::Section::Generic", "name" : "OVERVIEW", "version" : "4.015" }, { "class" : "Pod::Weaver::Section::Collect", "name" : "ATTRIBUTES", "version" : "4.015" }, { "class" : "Pod::Weaver::Section::Collect", "name" : "METHODS", "version" : "4.015" }, { "class" : "Pod::Weaver::Section::Leftovers", "name" : "Leftovers", "version" : "4.015" }, { "class" : "Pod::Weaver::Section::Region", "name" : "postlude", "version" : "4.015" }, { "class" : "Pod::Weaver::Section::Authors", "name" : "Authors", "version" : "4.015" }, { "class" : "Pod::Weaver::Section::Legal", "name" : "Legal", "version" : "4.015" }, { "class" : "Pod::Weaver::Section::Bugs", "name" : "Bugs", "version" : "4.015" }, { "class" : "Pod::Weaver::Section::Support", "name" : "Support", "version" : "1.010" } ] } }, "name" : "@Filter/PodWeaver", "version" : "4.008" }, { "class" : "Dist::Zilla::Plugin::UploadToCPAN", "name" : "@Filter/UploadToCPAN", "version" : "6.012" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":InstallModules", "version" : "6.012" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":IncModules", "version" : "6.012" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":TestFiles", "version" : "6.012" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":ExtraTestFiles", "version" : "6.012" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":ExecFiles", "version" : "6.012" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":PerlExecFiles", "version" : "6.012" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":ShareFiles", "version" : "6.012" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":MainModule", "version" : "6.012" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":AllFiles", "version" : "6.012" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":NoFiles", "version" : "6.012" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : "@Filter/MetaProvides::Package/AUTOVIV/:InstallModulesPM", "version" : "6.012" } ], "zilla" : { "class" : "Dist::Zilla::Dist::Builder", "config" : { "is_trial" : 0 }, "version" : "6.012" } }, "x_generated_by_perl" : "v5.28.0", "x_serialization_backend" : "Cpanel::JSON::XS version 4.06" } weaver.ini100644000764000764 64213356354231 16541 0ustar00shlomifshlomif000000000000Object-Declare-0.24[@CorePrep] [Generic / NAME] [Version] [Region / prelude] [Generic / SYNOPSIS] [Generic / DESCRIPTION] [Generic / OVERVIEW] [Collect / ATTRIBUTES] command = attr [Collect / METHODS] command = method [Leftovers] [Region / postlude] [Authors] [Legal] ; [Generic / DESCRIPTION] ; required = 1 ; [Generic / BUGS] ; [Generic / Section::Bugs] ; [Generic / Section::License] ; [Bugs] [Support] all_modules = 1 Makefile.PL100644000764000764 256113356354231 16543 0ustar00shlomifshlomif000000000000Object-Declare-0.24# This file was automatically generated by Dist::Zilla::Plugin::MakeMaker v6.012. use strict; use warnings; use 5.006; use ExtUtils::MakeMaker; my %WriteMakefileArgs = ( "ABSTRACT" => "Declarative object constructor", "AUTHOR" => "Shlomi Fish ", "BUILD_REQUIRES" => { "Module::Build" => "0.28" }, "CONFIGURE_REQUIRES" => { "ExtUtils::MakeMaker" => 0, "Module::Build" => "0.28" }, "DISTNAME" => "Object-Declare", "LICENSE" => "mit", "MIN_PERL_VERSION" => "5.006", "NAME" => "Object::Declare", "PREREQ_PM" => { "overload" => 0, "strict" => 0, "warnings" => 0 }, "TEST_REQUIRES" => { "File::Spec" => 0, "IO::Handle" => 0, "IPC::Open3" => 0, "Test::More" => "0.88", "ok" => 0 }, "VERSION" => "0.24", "test" => { "TESTS" => "t/*.t" } ); my %FallbackPrereqs = ( "File::Spec" => 0, "IO::Handle" => 0, "IPC::Open3" => 0, "Module::Build" => "0.28", "Test::More" => "0.88", "ok" => 0, "overload" => 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} unless eval { ExtUtils::MakeMaker->VERSION(6.52) }; WriteMakefile(%WriteMakefileArgs); t000755000764000764 013356354231 14670 5ustar00shlomifshlomif000000000000Object-Declare-0.2401-basic.t100644000764000764 410513356354231 16514 0ustar00shlomifshlomif000000000000Object-Declare-0.24/tuse strict; use Test::More tests => 3, import => ['is_deeply']; use ok 'Object::Declare' => copula => { is => '', are => 'plural_', }, aliases => { field2 => 'fun', }, mapping => { column => 'MyApp::Column', alt_col => sub { return { alt => column(), @_ } } }; sub column { 1 } sub MyApp::Column::new { shift; return { @_ } } sub do_declare { declare { column x => is rw, is Very::Happy, field1 is 'xxx', field2 are 'XXX', 'XXX', is field3, parts are column( is happy ), column( !is happy ); alt_col y => !is Very::Happy, field1 is 'yyy', field2 is 'YYY', col is column( is happy ); } } my @objects = do_declare; is_deeply(\@objects => [ x => { 'name' => 'x', 'field1' => 'xxx', 'plural_field2' => ['XXX', 'XXX'], 'plural_parts' =>[ { happy => 1 },{ happy => '' },], 'field3' => 1, 'rw' => 1, 'Very::Happy' => 1, }, y => { 'name' => 'y', 'field1' => 'yyy', 'fun' => 'YYY', 'alt' => 1, col => { 'name' => 'col', 'happy' => 1, }, 'Very::Happy' => '', }, ], 'object declared correctly (list context)'); my $objects = do_declare; is_deeply($objects => { x => { 'name' => 'x', 'field1' => 'xxx', 'plural_field2' => ['XXX', 'XXX'], 'plural_parts' =>[ {happy => 1},{happy => ''},], 'field3' => 1, 'rw' => 1, 'Very::Happy' => 1, }, y => { 'name' => 'y', 'field1' => 'yyy', 'fun' => 'YYY', 'alt' => 1, col => { 'name' => 'col', 'happy' => 1, }, 'Very::Happy' => '', }, }, 'object declared correctly (scalar context)'); 00-compile.t100644000764000764 263713356354231 17072 0ustar00shlomifshlomif000000000000Object-Declare-0.24/tuse 5.006; use strict; use warnings; # this test was generated with Dist::Zilla::Plugin::Test::Compile 2.058 use Test::More; plan tests => 1 + ($ENV{AUTHOR_TESTING} ? 1 : 0); my @module_files = ( 'Object/Declare.pm' ); # no fake home requested my @switches = ( -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) { # see L my $stderr = IO::Handle->new; diag('Running: ', join(', ', map { my $str = $_; $str =~ s/'/\\'/g; q{'} . $str . q{'} } $^X, @switches, '-e', "require q[$lib]")) if $ENV{PERL_COMPILE_TEST_DEBUG}; my $pid = open3($stdin, '>&STDERR', $stderr, $^X, @switches, '-e', "require q[$lib]"); binmode $stderr, ':crlf' if $^O eq 'MSWin32'; my @_warnings = <$stderr>; waitpid($pid, 0); is($?, 0, "$lib loaded ok"); shift @_warnings if @_warnings and $_warnings[0] =~ /^Using .*\bblib/ and not eval { +require blib; blib->VERSION('1.01') }; if (@_warnings) { warn @_warnings; push @warnings, @_warnings; } } is(scalar(@warnings), 0, 'no warnings found') or diag 'got warnings: ', ( Test::More->can('explain') ? Test::More::explain(\@warnings) : join("\n", '', @warnings) ) if $ENV{AUTHOR_TESTING}; author000755000764000764 013356354231 16362 5ustar00shlomifshlomif000000000000Object-Declare-0.24/xteol.t100644000764000764 45013356354231 17445 0ustar00shlomifshlomif000000000000Object-Declare-0.24/xt/authoruse strict; use warnings; # this test was generated with Dist::Zilla::Plugin::Test::EOL 0.19 use Test::More 0.88; use Test::EOL; my @files = ( 'lib/Object/Declare.pm', 't/00-compile.t', 't/01-basic.t' ); eol_unix_ok($_, { trailing_whitespace => 1 }) foreach @files; done_testing; no-tabs.t100644000764000764 41613356354231 20233 0ustar00shlomifshlomif000000000000Object-Declare-0.24/xt/authoruse strict; use warnings; # this test was generated with Dist::Zilla::Plugin::Test::NoTabs 0.15 use Test::More 0.88; use Test::NoTabs; my @files = ( 'lib/Object/Declare.pm', 't/00-compile.t', 't/01-basic.t' ); notabs_ok($_) foreach @files; done_testing; Object000755000764000764 013356354231 16401 5ustar00shlomifshlomif000000000000Object-Declare-0.24/libDeclare.pm100644000764000764 3416413356354231 20466 0ustar00shlomifshlomif000000000000Object-Declare-0.24/lib/Objectpackage Object::Declare; use 5.006; use strict; use warnings; our $VERSION = '0.24'; sub import { my $class = shift; my %args = ((@_ and ref($_[0])) ? (mapping => $_[0]) : @_) or return; my $from = caller; my $mapping = $args{mapping} or return; my $aliases = $args{aliases} || {}; my $declarator = $args{declarator} || ['declare']; my $copula = $args{copula} || ['is', 'are']; # Both declarator and copula can contain more than one entries; # normalize into an arrayref if we only have on entry. $mapping = [$mapping] unless ref($mapping); $declarator = [$declarator] unless ref($declarator); $copula = [$copula] unless ref($copula); if (ref($mapping) eq 'ARRAY') { # rewrite "MyApp::Foo" into simply "foo" $mapping = { map { my $helper = $_; $helper =~ s/.*:://; (lc($helper) => $_); } @$mapping }; } # Convert mapping targets into instantiation closures if (ref($mapping) eq 'HASH') { foreach my $key (keys %$mapping) { my $val = $mapping->{$key}; next if ref($val); # already a callback, don't bother $mapping->{$key} = sub { scalar($val->new(@_)) }; } } if (ref($copula) eq 'ARRAY') { # add an empty prefix to all copula $copula = { map { $_ => '' } @$copula } } # Install declarator functions into caller's package, remembering # the mapping and copula set for this declarator. foreach my $sym (@$declarator) { no strict 'refs'; *{"$from\::$sym"} = sub (&) { unshift @_, ($mapping, $copula, $aliases); goto &_declare; }; } # Establish prototypes (same as "use subs") so Sub::Override can work { no strict 'refs'; _predeclare( (map { "$from\::$_" } keys %$mapping), (map { ("UNIVERSAL::$_", "$_\::AUTOLOAD") } keys %$copula), ); } } # Same as "use sub". All is fair if you predeclare. sub _predeclare { no strict 'refs'; no warnings 'redefine'; foreach my $sym (@_) { *$sym = \&$sym; } } sub _declare { my ($mapping, $copula, $aliases, $code) = @_; my $from = caller; # Table of collected objects. my @objects; # Establish a lexical extent for overrided symbols; they will be # restored automagically upon scope exit. my %subs_replaced; my $replace = sub { no strict 'refs'; no warnings 'redefine'; my ($sym, $code) = @_; # Do the "use subs" predeclaration again before overriding, because # Sub::Override cannot handle empty symbol slots. This is normally # redundant (&import already did that), but we do it here anyway to # guard against runtime deletion of symbol table entries. _predeclare($sym); # Now replace the symbol for real. $subs_replaced{$sym} ||= *$sym{CODE}; *$sym = $code; }; # In DSL (domain-specific language) mode; install AUTOLOAD to handle all # unrecognized calls for "foo is 1" (which gets translated to "is->foo(1)", # and UNIVERSAL to collect "is foo" (which gets translated to "foo->is". # The arguments are rolled into a Katamari structure for later analysis. while (my ($sym, $prefix) = each %$copula) { $replace->( "UNIVERSAL::$sym" => sub { # Turn "is some_field" into "some_field is 1" my ($key, @vals) = ref($prefix) ? $prefix->(@_) : ($prefix.$_[0] => 1) or return; # If the copula returns a ready-to-use katamari object, # don't try to roll it by ourself. return $key if ref($key) && ref($key) eq 'Object::Declare::Katamari'; $key = $aliases->{$key} if $aliases and exists $aliases->{$key}; unshift @vals, $key; bless( \@vals => 'Object::Declare::Katamari' ); } ); $replace->( "$sym\::AUTOLOAD" => sub { # Handle "some_field is $some_value" shift; my $field = our $AUTOLOAD; return if $field =~ /DESTROY$/; $field =~ s/^\Q$sym\E:://; my ($key, @vals) = ref($prefix) ? $prefix->($field, @_) : ($prefix.$field => @_) or return; $key = $aliases->{$key} if $aliases and exists $aliases->{$key}; unshift @vals, $key; bless( \@vals, 'Object::Declare::Katamari' ); } ); } my @overridden = map { "$from\::$_" } keys %$mapping; # Now install the collector symbols from class mappings my $toggle_subs = sub { foreach my $sym (@overridden) { no strict 'refs'; no warnings 'redefine'; ($subs_replaced{$sym}, *$sym) = (*$sym{CODE}, $subs_replaced{$sym}); } }; while (my ($sym, $build) = each %$mapping) { $replace->("$from\::$sym" => _make_object($build => \@objects, $toggle_subs)); } # Let's play Katamari! &$code; # Restore overriden subs while (my ($sym, $code) = each %subs_replaced) { no strict 'refs'; no warnings 'redefine'; *$sym = $code; } # In scalar context, returns hashref; otherwise preserve ordering return(wantarray ? @objects : { @objects }); } # Make a star from the Katamari! sub _make_object { my ($build, $schema, $toggle_subs) = @_; return sub { # Restore overriden subs no strict 'refs'; no warnings 'redefine'; my $name = ( ref( $_[0] ) ? undef : shift ); my $args = \@_; my $damacy = bless(sub { $toggle_subs->(); my $rv = $build->( ( $_[0] ? ( name => $_[0] ) : () ), map { $_->unroll } @$args ); $toggle_subs->(); return $rv; } => 'Object::Declare::Damacy'); if (wantarray) { return ($damacy); } else { push @$schema, $name => $damacy->($name); } }; } package Object::Declare::Katamari; use overload "!" => \&negation, fallback => 1; sub negation { my @katamari = @{$_[0]} or return (); $katamari[1] = !$katamari[1]; return bless(\@katamari, ref($_[0])); } # Unroll a Katamari structure into constructor arguments. sub unroll { my @katamari = @{$_[0]} or return (); my $field = shift @katamari or return (); my @unrolled; unshift @unrolled, pop(@katamari)->unroll while ref($katamari[-1]) eq __PACKAGE__; if (@katamari == 1) { # single value: "is foo" if ( ref( $katamari[0] ) eq 'Object::Declare::Damacy' ) { $katamari[0] = $katamari[0]->($field); } return($field => @katamari, @unrolled); } else { # Multiple values: "are qw( foo bar baz )" foreach my $kata (@katamari) { $kata = $kata->() if ref($kata) eq 'Object::Declare::Damacy'; } return($field => \@katamari, @unrolled); } } 1; __END__ =pod =head1 NAME Object::Declare - Declarative object constructor =head1 VERSION version 0.24 =head1 SYNOPSIS use Object::Declare ['MyApp::Column', 'MyApp::Param']; my %objects = declare { param foo => !is global, is immutable, valid_values are qw( more values ); column bar => field1 is 'value', field2 is 'some_other_value', sub_params are param( is happy ), param ( is sad ); }; print $objects{foo}; # a MyApp::Param object print $objects{bar}; # a MyApp::Column object # Assuming that MyApp::Column::new simply blesses into a hash... print $objects{bar}{sub_params}[0]; # a MyApp::Param object print $objects{bar}{sub_params}[1]; # a MyApp::Param object =head1 DESCRIPTION This module exports one function, C, for building named objects with a declarative syntax, similar to how L defines its columns. In list context, C returns a list of name/object pairs in the order of declaration (allowing duplicates), suitable for putting into a hash. In scalar context, C returns a hash reference. Using a flexible C interface, one can change exported helper functions names (I), words to link labels and values together (I), and the table of named classes to declare (I): use Object::Declare declarator => ['declare'], # list of declarators copula => { # list of words, or a map is => '', # from copula to label prefixes, are => '', # or to callback that e.g. turns has => sub { has => @_ }, # "has X" to "has is X" and # "X has 1" to "has is [X => 1]" }, aliases => { # list of label aliases: more => 'less', # turns "is more" into "is less" # and "more is 1" into "less is 1" }, mapping => { column => 'MyApp::Column', # class name to call ->new to param => sub { # arbitrary coderef also works bless(\@_, 'MyApp::Param'); }, }; After the declarator block finishes execution, all helper functions are removed from the package. Same-named functions (such as C<&is> and C<&are>) that existed before the declarator's execution are restored correctly. =head1 VERSION version 0.24 =head1 NOTES If you export the declarator to another package via C<@EXPORT>, be sure to export all mapping keys as well. For example, this will work for the example above: our @EXPORT = qw( declare column param ); But this will not: our @EXPORT = qw( declare ); The copula are not turned into functions, so there is no need to export them. =head1 AUTHORS Audrey Tang Ecpan@audreyt.orgE =head1 COPYRIGHT Copyright 2006, 2007 by Audrey Tang . This software is released under the MIT license cited below. =head2 The "MIT" License Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. =head1 AUTHOR Shlomi Fish =head1 COPYRIGHT AND LICENSE This software is Copyright (c) 2006 by Audrey Tang. This is free software, licensed under: The MIT (X11) License =head1 BUGS Please report any bugs or feature requests on the bugtracker website L When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature. =for :stopwords cpan testmatrix url annocpan anno bugtracker rt cpants kwalitee diff irc mailto metadata placeholders metacpan =head1 SUPPORT =head2 Perldoc You can find documentation for this module with the perldoc command. perldoc Object::Declare =head2 Websites The following websites have more information about this module, and may be of help to you. As always, in addition to those websites please use your favorite search engine to discover more resources. =over 4 =item * MetaCPAN A modern, open-source CPAN search engine, useful to view POD in HTML format. L =item * Search CPAN The default CPAN search engine, useful to view POD in HTML format. L =item * RT: CPAN's Bug Tracker The RT ( Request Tracker ) website is the default bug/issue tracking system for CPAN. L =item * AnnoCPAN The AnnoCPAN is a website that allows community annotations of Perl module documentation. L =item * CPAN Ratings The CPAN Ratings is a website that allows community ratings and reviews of Perl modules. L =item * CPANTS The CPANTS is a website that analyzes the Kwalitee ( code metrics ) of a distribution. L =item * CPAN Testers The CPAN Testers is a network of smoke testers who run automated tests on uploaded CPAN distributions. L =item * CPAN Testers Matrix The CPAN Testers Matrix is a website that provides a visual overview of the test results for a distribution on various Perls/platforms. L =item * CPAN Testers Dependencies The CPAN Testers Dependencies is a website that shows a chart of the test results of all dependencies for a distribution. L =back =head2 Bugs / Feature Requests Please report any bugs or feature requests by email to C, or through the web interface at L. You will be automatically notified of any progress on the request by the system. =head2 Source Code The code is open to the world, and available for you to hack on. Please feel free to browse it and play with it, or whatever. If you want to contribute patches, please send me a diff or prod me to pull from your repository :) L git clone git://github.com/shlomif/perl-Object-Declare.git =cut pod-syntax.t100644000764000764 25213356354231 20774 0ustar00shlomifshlomif000000000000Object-Declare-0.24/xt/author#!perl # This file was automatically generated by Dist::Zilla::Plugin::PodSyntaxTests. use strict; use warnings; use Test::More; use Test::Pod 1.41; all_pod_files_ok(); pod-coverage.t100644000764000764 33413356354231 21242 0ustar00shlomifshlomif000000000000Object-Declare-0.24/xt/author#!perl # 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' }); release000755000764000764 013356354231 16500 5ustar00shlomifshlomif000000000000Object-Declare-0.24/xtcpan-changes.t100644000764000764 34413356354231 21335 0ustar00shlomifshlomif000000000000Object-Declare-0.24/xt/releaseuse strict; use warnings; # this test was generated with Dist::Zilla::Plugin::Test::CPAN::Changes 0.012 use Test::More 0.96 tests => 1; use Test::CPAN::Changes; subtest 'changes_ok' => sub { changes_file_ok('Changes'); }; trailing-space.t100644000764000764 103413356354231 21725 0ustar00shlomifshlomif000000000000Object-Declare-0.24/xt/release#!perl use strict; use warnings; use Test::More; eval "use Test::TrailingSpace"; if ($@) { plan skip_all => "Test::TrailingSpace required for trailing space test."; } else { plan tests => 1; } # TODO: add .pod, .PL, the README/Changes/TODO/etc. documents and possibly # some other stuff. my $finder = Test::TrailingSpace->new( { root => '.', filename_regex => qr#(?:\.(?:t|pm|pl|xs|c|h|txt|pod|PL)|README|Changes|TODO|LICENSE)\z#, }, ); # TEST $finder->no_trailing_space( "No trailing space was found." );