-
Notifications
You must be signed in to change notification settings - Fork 4
/
Rule.scala
24 lines (22 loc) · 1.08 KB
/
Rule.scala
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package com.gilt.thehand
/**
* The base trait to implement when defining new types of rules.
*/
trait Rule {
/**
* Implement this to determine whether a context matches a rule. Under the hood, this will likely match on various
* context types, since matching can differ based on context, and a given rule might successfully match in more than
* one context. The Option return type is leveraged by the 'extractor' pattern and as such implementers should return
* None when rules do not match the context.
*
* @param context The context on which we are attempting to match the rule; can be any type of context.
* @return None for no match; Some(context) if the rule matches the context.
*/
def unapply(context: AbstractContext): Option[AbstractContext]
/**
* A convenience method to be used to see if a rule matches a context.
* @param context The context in which the rule attempts to match or not match.
* @return Boolean: true if the rule matches the context; false if not.
*/
def matches(context: AbstractContext): Boolean = unapply(context).isDefined
}