Class: Gloo::Verbs::Check

Inherits:
Core::Verb show all
Defined in:
lib/gloo/verbs/check.rb

Constant Summary collapse

KEYWORD =
'check'.freeze
KEYWORD_SHORT =
'<-'.freeze
FOR =
'for'.freeze
UNKNOWN_MSG_ERR =
'Missing message!'.freeze

Constants inherited from Core::Baseo

Core::Baseo::NOT_IMPLEMENTED_ERR

Instance Attribute Summary

Attributes inherited from Core::Verb

#params, #tokens

Attributes inherited from Core::Baseo

#name

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Core::Verb

#display_value, help, inherited, #initialize, #type_display

Methods inherited from Core::Baseo

#initialize, #type_display

Constructor Details

This class inherits a constructor from Gloo::Core::Verb

Class Method Details

.doc_dataObject

Get the verb's documentation data.



59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
# File 'lib/gloo/verbs/check.rb', line 59

def self.doc_data
  {
    :name => KEYWORD,
    :shortcut => KEYWORD_SHORT,
    :description => 'Send a message to an object to investigate ' \
      'its state — typically a yes/no question such as blank?, ' \
      'contains? or starts_with?. Mechanically identical to the ' \
      'tell verb; by convention check is used to investigate ' \
      'state while tell is used to trigger an action. Using the ' \
      'verb that matches intent makes the code read like ' \
      'natural communication.',
    :syntax => [ 'check {path.to.object} for {condition_message}' ],
    :parameters => [
      '{path.to.object} — The object that we want to send a condition_message to.',
      '{message} — The condition_message to send.'
    ],
    :result => 'The result depends on the message that is sent, but ' \
      'by convention the result of the check will be in it.',
    :errors => [
      "#{UNKNOWN_MSG_ERR} — No message was specified, or the 'for' keyword is missing.",
      'Object was not found — The target of the message was not found.'
    ],
    :examples => <<~EXAMPLES.strip,
    :notes => <<~NOTES.strip
      check and tell send the same message the same way — the two
      spellings exist for readability. Use check for state questions
      (blank?, contains?, responds_to?, starts_with?) and tell for
      action messages (up, inc, run, unload). The answer to a check
      lands in it, so it pairs naturally with if / unless:
      'check my.str for blank?' then 'if it then ...'.
    NOTES
  }
end

.keywordObject

Get the Verb's keyword.



35
36
37
# File 'lib/gloo/verbs/check.rb', line 35

def self.keyword
  return KEYWORD
end

.keyword_shortcutObject

Get the Verb's keyword shortcut.



42
43
44
# File 'lib/gloo/verbs/check.rb', line 42

def self.keyword_shortcut
  return KEYWORD_SHORT
end

Instance Method Details

#runObject

Run the verb.



20
21
22
23
24
25
26
27
28
29
30
# File 'lib/gloo/verbs/check.rb', line 20

def run
  msg = @tokens.after_token( FOR )

  unless msg
    @engine.err( UNKNOWN_MSG_ERR ) 
    return
  end

  Gloo::Exec::Dispatch.send_message(
    @engine, msg, @tokens.second, @params )
end