Object Selector

Quickstart

Regex Rule List Provider

> Struct.new("MyFirstObject")
> Struct.new("MySecondObject")
> selector = ObjectSelector.new(
    ObjectSelector::Provider::RegexRuleList.new({
        rules: [
            {
                regex: /\D/,
                object: Struct::MyFirstObject.new
            }, {
                regex: /\d/,
                object: Struct::MySecondObject.new
            }
        ]
    })
)

> selector.select("not a digit")
Struct::MyFirstObject

> selector.select(123)
Struct::MySecondObject

First needle found in sorted haystack provider

> Struct.new("MyFirstObject")
> Struct.new("MySecondObject")
> selector = ObjectSelector.new(
    ObjectSelector::Provider::FirstNeedleFoundInSortedHaystack.new({
        rules: [
            {
                needle: 'a',
                object: Struct::MyFirstObject.new
            }, 
            {
                needle: 'b',
                object: Struct::MySecondObject.new
            }
        ]
    })
)

> selector.select(['b', 'a'])
Struct::MyFirstObject

> selector.select(['c', 'b'])
Struct::MySecondObject

Testing

Local

$ bundle exec rspec 

CI

docker-compose --file docker-compose.yml --project-name object_selector up --abort-on-container-exit --remove-orphans --build --force-recreate
EXIT_CODE=$(docker ps -a -f "name=objectselector_tests" -q | xargs docker inspect -f "{{ .State.ExitCode }}")
docker-compose --file docker-compose.yml --project-name object_selector down --rmi local
exit $EXIT_CODE