diff --git a/behavioral/interpreter/interpreter.go b/behavioral/interpreter/interpreter.go new file mode 100644 index 0000000..6dcdb12 --- /dev/null +++ b/behavioral/interpreter/interpreter.go @@ -0,0 +1,33 @@ +package interpreter + +import ( + "strings" +) + +type Expression interface { + interpret(string) bool +} + +type MainInterpreter struct { + state string +} +func (i *MainInterpreter) interpret(context string) bool{ + if strings.Contains(i.state, context) { + return true + } + return false +} + +type OrExpressionInterpreter struct { + expOne, expTwo Expression +} +func (o *OrExpressionInterpreter) interpret(context string) bool { + return o.expOne.interpret(context) || o.expTwo.interpret(context) +} + +type AndExpressionInterpreter struct { + expOne, expTwo Expression +} +func (o *AndExpressionInterpreter) interpret(context string) bool { + return o.expOne.interpret(context) && o.expTwo.interpret(context) +}