Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/kentnl/search-gin-extract-classmap
Delegate Extraction based on class
https://github.com/kentnl/search-gin-extract-classmap
Last synced: 4 days ago
JSON representation
Delegate Extraction based on class
- Host: GitHub
- URL: https://github.com/kentnl/search-gin-extract-classmap
- Owner: kentnl
- License: other
- Created: 2009-08-31T16:01:02.000Z (about 15 years ago)
- Default Branch: master
- Last Pushed: 2017-03-07T10:14:08.000Z (over 7 years ago)
- Last Synced: 2023-08-20T23:09:55.947Z (about 1 year ago)
- Language: Perl
- Homepage:
- Size: 160 KB
- Stars: 1
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.mkdn
- Changelog: Changes
- Contributing: CONTRIBUTING.pod
- License: LICENSE
Awesome Lists containing this project
README
# NAME
Search::GIN::Extract::ClassMap - Delegate Extraction based on class.
# VERSION
version 1.000004
# SYNOPSIS
my $extractor = Search::GIN::Extract::ClassMap->new(
extract_isa => {
'Foo' => [qw( bar baz quux )],
'Bar' => Search::GIN::Extract::AttributeIndex->new(),
'Baz' => sub { shift; my $object = shift; { a => $object->a() } },
},
extract_does => {},
extract => {
/* either ISA or DOES */
},
);In reality, the form is more like this:
my $extractor = Search::GIN::Extract::ClassMap->new(
extract_isa => {
'Foo' => Search::GIN::Extract::*,
'Bar' => Search::GIN::Extract::*,
'Baz' => Search::GIN::Extract::*,
},
extract_does => {},
extract => {
/* either ISA or DOES */
},
);With the minor exception of the 2 exception cases, passing
an `ArrayRef`, or a `CodeRef`, which internally are type-cast to
[`Search::GIN::Extract::Attributes`](https://metacpan.org/pod/Search::GIN::Extract::Attributes)
and [`Search::GIN::Extract::Callback`](https://metacpan.org/pod/Search::GIN::Extract::Callback)
automatically.# WARNING
This is an early release, `API` is prone to change without much warning, but best attempts will be made to avoid the need.
# DESCRIPTION
This module is an extension for the [`Search::GIN`](https://metacpan.org/pod/Search::GIN) framework
providing a novel way to dictate which attribute extraction techniques will be
used for which object by having rules that map against the objects inheritance
or the objects composed roles.This essentially permits you to register adapters for various object types to
special-case their extraction.For example, if you had a source tree that used classes under your control
using `MooseX::AttributeIndexes`, you could easily default those classes to
extract using `Search::GIN::Extract::AttributeIndexes`. And if any objects of
those classes had `DateTime` properties, you could define a handler for
extracting `DateTime` meta-data for indexing specifically.# METHODS
## `extract_values`
my ( @values ) = $object->extract_values( $extractee );
**for:** [`Search::GIN::Extract`](https://metacpan.org/pod/Search::GIN::Extract)
Iterates the contents of the `extract($|_\w+$)` rules, and asks them to
extract their respective information, and returns the resulting results as a
list.# ATTRIBUTES
## `extract_isa`
my $object = Search::GIN::Extract::ClassMap->new(
extract_isa => $isa_thing
);
# or
$object->extract_isa( $isa_thing )Applied on all objects where $object->isa( $classname );
### `$isa_thing`
- `HashRef[ [Extractor](https://metacpan.org/pod/Search::GIN::Extract::ClassMap::Types#Extractor) ]`
- [`CoercedClassMap`](https://metacpan.org/pod/Search::GIN::Extract::ClassMap::Types#CoercedClassMap)
- [`::ClassMap::Isa`](https://metacpan.org/pod/Search::GIN::Extract::ClassMap::Isa)`HashRef`'s are automatically type-cast.
## `extract_does`
my $object = Search::GIN::Extract::ClassMap->new(
extract_does => $does_thing
);
# or
$object->extract_does( $does_thing );Applied on all objects where $object->does( $classname );
### `$does_thing`
- `HashRef[ [Extractor](https://metacpan.org/pod/Search::GIN::Extract::ClassMap::Types#Extractor) ]`
- [`CoercedClassMap`](https://metacpan.org/pod/Search::GIN::Extract::ClassMap::Types#CoercedClassMap)
- [`::ClassMap::Does`](https://metacpan.org/pod/Search::GIN::Extract::ClassMap::Does)`HashRef`'s are automatically type-cast.
## `extract`
my $object = Search::GIN::Extract::ClassMap->new(
extract => $like_thing
);
# or
$object->extract( $like_thing );Applied on all objects where $object->does( $classname ) OR $object->isa( $classname );
this doesn't make complete sense, but its handy for lazy people.
### `$like_thing`
- `HashRef[ [Extractor](https://metacpan.org/pod/Search::GIN::Extract::ClassMap::Types#Extractor) ]`
- [`CoercedClassMap`](https://metacpan.org/pod/Search::GIN::Extract::ClassMap::Types#CoercedClassMap)
- [`::ClassMap::Like`](https://metacpan.org/pod/Search::GIN::Extract::ClassMap::Like)`HashRef`'s are automatically type-cast.
# AUTHOR
Kent Fredric
# COPYRIGHT AND LICENSE
This software is copyright (c) 2017 by Kent Fredric .
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.