Class: Gloo::Verbs::Redirect

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

Constant Summary collapse

KEYWORD =
'redirect'.freeze
KEYWORD_SHORT =
'go'.freeze
RUN_MESSAGE =
'run'.freeze
KEYWORD_HARD =
'hard'.freeze
MISSING_EXPR_ERR =
'Missing Expression!'.freeze
APP_NOT_RUNING_ERR =
'The application is not running!'.freeze
BAD_TARGET_ERR =
'Bad redirect target!'.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.



142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
# File 'lib/gloo/verbs/redirect.rb', line 142

def self.doc_data
  {
    :name => KEYWORD,
    :shortcut => KEYWORD_SHORT,
    :description => 'Redirect from the current script (or page). ' \
      'There are 3 ways to use this verb: redirect in a script; ' \
      'redirect from one page to another, where the parameter is ' \
      'a path to a page; or redirect (hard) to an external web ' \
      'site, where the parameter is the URL.',
    :syntax => [
      'redirect {path.to.object}',
      'redirect https://example.com/ (hard)'
    ],
    :parameters => [
      '{path.to.object} — Reference to the script to run, or ' \
        'reference to the page to redirect to. In the case of a ' \
        'redirect (hard) this is the target website we will redirect to.'
    ],
    :result => 'No more commands are executed in the currently ' \
      'running script. Execution transfers to the target script. ' \
      'If the target is a page, the current page is replaced with ' \
      'the target page.',
    :errors => [
      "#{MISSING_EXPR_ERR} — Redirect requires the target page or script to redirect to.",
      "#{BAD_TARGET_ERR} — The target object does not exist or cannot receive the redirect.",
      "#{APP_NOT_RUNING_ERR} — Page cannot redirect because the application is not running."
    ],
    :examples => <<~EXAMPLES.strip
      # Redirect to a different script:
      redirect [can] :
        x [bool] : false
        first_time [script] : show 'It is true (first time)'
        second_time [script] : show 'It is true (second time)'
        on_load [script] :
          if ^.x then go ^.first_time
          show 'skipping first time'
          put true into ^.x
          if ^.x then go ^.second_time
          show 'skipping second time'
    EXAMPLES
  }
end

.keywordObject

Get the Verb's keyword.



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

def self.keyword
  return KEYWORD
end

.keyword_shortcutObject

Get the Verb's keyword shortcut.



49
50
51
# File 'lib/gloo/verbs/redirect.rb', line 49

def self.keyword_shortcut
  return KEYWORD_SHORT
end

Instance Method Details

#runObject

Run the verb.



25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/gloo/verbs/redirect.rb', line 25

def run
  if @tokens.token_count < 2
    @engine.err MISSING_EXPR_ERR
    return
  end

  if is_hard_redirect?
    redirect_hard
  else
    determine_target
    redirect_to_target
  end
end