NAME

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

VERSION

version 1018

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