The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

DDG::Block::Words - Block implementation to handle words based plugins

VERSION

version 1017

DESCRIPTION

The BUILD function is used to build a hash which maps trigger positions (start, any, end) to trigger words to trigger phrase length to plugins.

Eg. Given triggers:

        START: "khan", "khan academy";
        ANY  : "forecast", "weather forecast";
        END  : "video", "youtube videos";

This would produce the following hash:

_words_plugins = {

        start => {

                'khan' => {
                        1 => [ DDG::Spice::KhanAcademy ],
                        2 => {
                                'khan academy' => [ DDG::Spice::KhanAcademy ]
                        }
                }
        },

        any => {

                'forecast' => {
                        1 => [ DDG::Spice::Forecast, DDG::Spice::Foo ]
                },

                'weather' => {
                        2 => {
                                'weather forecast' => [ DDG::Spice::Forecast ]
                        }
                }
        },

        end => {

                'video' => {
                        1 => [ DDG::Spice::Video ]
                },

                'videos' => {
                        2 => {
                                'youtube videos' => [ DDG::Spice::Video ]
                        }
                }
        }
}

ATTRIBUTES

words_plugins

This private attribute is a cache for grouping the plugins into start, end and any based plugins.

METHODS

request

empty_trigger

Overloading this method from DDG::Block assures that we dont allow any plugin which as no triggers. Words plugins are all triggered via keywords against a hash, which means there is no order relevance, which makes a triggerless plugin just totally unclear, if it now needs to get started before the hash compare or after (or not).

AUTHOR

DuckDuckGo <open@duckduckgo.com>

COPYRIGHT AND LICENSE

This software is Copyright (c) 2013 by DuckDuckGo, Inc. https://duckduckgo.com/.

This is free software, licensed under:

  The Apache License, Version 2.0, January 2004