Class: Teepee::Commander

Inherits:
Object
  • Object
show all
Defined in:
lib/teepee/commander.rb

Direct Known Subclasses

ActionableCommander

Instance Method Summary collapse

Instance Method Details

#%(*numbers) ⇒ Object



115
116
117
# File 'lib/teepee/commander.rb', line 115

def % *numbers
  ensure_numeric numbers.reduce :%
end

#*(*numbers) ⇒ Object



103
104
105
# File 'lib/teepee/commander.rb', line 103

def * *numbers
  ensure_numeric numbers.inject 1, :*
end

#**(*numbers) ⇒ Object



119
120
121
# File 'lib/teepee/commander.rb', line 119

def ** *numbers
  ensure_numeric numbers.reduce :**
end

#+(*numbers) ⇒ Object




91
92
93
# File 'lib/teepee/commander.rb', line 91

def + *numbers
  ensure_numeric numbers.inject 0, :+
end

#-(*numbers) ⇒ Object



95
96
97
98
99
100
101
# File 'lib/teepee/commander.rb', line 95

def - *numbers
  if numbers.length == 1
    ensure_numeric -numbers.first
  else
    ensure_numeric numbers.reduce :-
  end
end

#/(*numbers) ⇒ Object



107
108
109
110
111
112
113
# File 'lib/teepee/commander.rb', line 107

def / *numbers
  if numbers.length == 1
    ensure_numeric 1 / numbers.first
  else
    ensure_numeric numbers.reduce :/
  end
end

#acos(number) ⇒ Object



123
124
125
# File 'lib/teepee/commander.rb', line 123

def acos number
  ensure_numeric Math.acos number
end

#acosh(number) ⇒ Object



127
128
129
# File 'lib/teepee/commander.rb', line 127

def acosh number
  ensure_numeric Math.acosh number
end

#asin(number) ⇒ Object



131
132
133
# File 'lib/teepee/commander.rb', line 131

def asin number
  ensure_numeric Math.asin number
end

#asinh(number) ⇒ Object



135
136
137
# File 'lib/teepee/commander.rb', line 135

def asinh number
  ensure_numeric Math.asinh number
end

#atan(number) ⇒ Object



139
140
141
# File 'lib/teepee/commander.rb', line 139

def atan number
  ensure_numeric Math.atan number
end

#atanh(number) ⇒ Object



143
144
145
# File 'lib/teepee/commander.rb', line 143

def atanh number
  ensure_numeric Math.atanh number
end

#b(expressions) ⇒ Object



147
148
149
# File 'lib/teepee/commander.rb', line 147

def b expressions
  html_tag :b, expressions
end

#backslashObject



151
152
153
# File 'lib/teepee/commander.rb', line 151

def backslash
  "\\"
end

#big(expressions) ⇒ Object



155
156
157
# File 'lib/teepee/commander.rb', line 155

def big expressions
  html_tag :big, expressions
end

#bookmarks_folder_id(id) ⇒ Object



159
160
161
# File 'lib/teepee/commander.rb', line 159

def bookmarks_folder_id id
  id_command_handler id, :Folder, "folder", "folders", "folders/bookmarks_inline", "bookmarks"
end

#brObject



163
164
165
# File 'lib/teepee/commander.rb', line 163

def br
  "\n</br>\n"
end

#command_error(message) ⇒ Object



48
49
50
# File 'lib/teepee/commander.rb', line 48

def command_error message
  %{<span style="color: red">[#{message}]</span>}
end

#command_not_yet_implemented(command) ⇒ Object



52
53
54
# File 'lib/teepee/commander.rb', line 52

def command_not_yet_implemented command
  command_error "The command #{command} is not yet implemented."
end

#cos(angle) ⇒ Object



167
168
169
# File 'lib/teepee/commander.rb', line 167

def cos angle
  ensure_numeric Math.cos angle
end

#cosh(number) ⇒ Object



171
172
173
# File 'lib/teepee/commander.rb', line 171

def cosh number
  ensure_numeric Math.cosh number
end

#degrees2radians(degrees) ⇒ Object



175
176
177
# File 'lib/teepee/commander.rb', line 175

def degrees2radians degrees
  ensure_numeric degrees * Math::PI / 180.0
end

#del(expressions) ⇒ Object



179
180
181
# File 'lib/teepee/commander.rb', line 179

def del expressions
  html_tag :del, expressions
end

#eObject



183
184
185
# File 'lib/teepee/commander.rb', line 183

def e
  Math::E
end

#ensure_numeric(number) ⇒ Object



56
57
58
59
60
61
62
63
64
# File 'lib/teepee/commander.rb', line 56

def ensure_numeric number
  if number.kind_of? Complex
    command_error "Complex numbers are not yet supported."
  elsif not number.kind_of? Numeric
    command_error "Non-numeric result."
  else
    number
  end
end

#erf(number) ⇒ Object



187
188
189
# File 'lib/teepee/commander.rb', line 187

def erf number
  ensure_numeric Math.erf number
end

#erfc(number) ⇒ Object



191
192
193
# File 'lib/teepee/commander.rb', line 191

def erfc number
  ensure_numeric Math.erfc number
end

#folder_id(id) ⇒ Object



195
196
197
# File 'lib/teepee/commander.rb', line 195

def folder_id id
  id_command_handler id, :Folder
end

#forum_id(id) ⇒ Object



199
200
201
# File 'lib/teepee/commander.rb', line 199

def forum_id id
  id_command_handler id, :Forum
end

#gamma(number) ⇒ Object



203
204
205
# File 'lib/teepee/commander.rb', line 203

def gamma number
  ensure_numeric Math.gamma number
end

#html_tag(tag, expressions) ⇒ Object



66
67
68
# File 'lib/teepee/commander.rb', line 66

def html_tag tag, expressions
  "<#{tag}>" + expressions.map(&:to_html).join + "</#{tag}>"
end

#hypot(numbers) ⇒ Object



215
216
217
# File 'lib/teepee/commander.rb', line 215

def hypot numbers
  ensure_numeric Math.sqrt numbers.map {|n| n**2}
end

#iObject



207
208
209
# File 'lib/teepee/commander.rb', line 207

def i
  command_error "Complex numbers are not yet supported."
end

#id_command_handler(id, klass, singular = klass.to_s.camelcase_to_snakecase, plural = singular.pluralize, partial = "#{plural}/inline", view = "") ⇒ Object



74
75
76
77
78
79
80
81
82
83
84
85
86
87
# File 'lib/teepee/commander.rb', line 74

def id_command_handler(id,
                       klass,
                       singular = klass.to_s.camelcase_to_snakecase,
                       plural = singular.pluralize,
                       partial = "#{plural}/inline",
                       view="")
  if not id
    command_error "#{singular}_id: error: no #{singular} ID specified"
  elsif not id.to_s =~ /\A[0-9]+\z/
    command_error "#{singular}_id: error: invalid #{singular} ID specified"
  else
    tb_href "/#{plural}/#{id.to_s}/#{view}", "#{klass.to_s} ##{id.to_s}"
  end
end

#it(expressions) ⇒ Object



211
212
213
# File 'lib/teepee/commander.rb', line 211

def it expressions
  html_tag :i, expressions
end

#ld(n) ⇒ Object



219
220
221
# File 'lib/teepee/commander.rb', line 219

def ld n
  ensure_numeric Math.log2 n
end

#ldexp(fraction, exponent) ⇒ Object



223
224
225
# File 'lib/teepee/commander.rb', line 223

def ldexp fraction, exponent
  ensure_numeric Math.ldexp fraction, exponent
end

#left_braceObject



227
228
229
# File 'lib/teepee/commander.rb', line 227

def left_brace
  "{"
end

#lgamma(n) ⇒ Object



231
232
233
# File 'lib/teepee/commander.rb', line 231

def lgamma n
  ensure_numeric Math::lgamma(n).first
end


235
236
237
# File 'lib/teepee/commander.rb', line 235

def link_id id
  id_command_handler id, :Link
end

#ln(number) ⇒ Object



239
240
241
# File 'lib/teepee/commander.rb', line 239

def ln number
  ensure_numeric Math.log number
end

#log(base, number) ⇒ Object



243
244
245
246
247
248
249
250
# File 'lib/teepee/commander.rb', line 243

def log base, number
  if number.nil?
    number, base = base, number
    ensure_numeric Math.log number # default to natural logarithm
  else
    ensure_numeric Math.log number, base
  end
end

#log10(number) ⇒ Object



252
253
254
# File 'lib/teepee/commander.rb', line 252

def log10 number
  ensure_numeric Math.log10 number
end

#piObject



256
257
258
# File 'lib/teepee/commander.rb', line 256

def pi
  Math::PI
end

#radians2degrees(radians) ⇒ Object



260
261
262
# File 'lib/teepee/commander.rb', line 260

def radians2degrees radians
  ensure_numeric(radians * 180.0 / Math::PI)
end

#right_braceObject



264
265
266
# File 'lib/teepee/commander.rb', line 264

def right_brace
  "}"
end

#sin(angle) ⇒ Object



268
269
270
# File 'lib/teepee/commander.rb', line 268

def sin angle
  ensure_numeric Math.sin angle
end

#sinh(number) ⇒ Object



272
273
274
# File 'lib/teepee/commander.rb', line 272

def sinh number
  ensure_numeric Math.sinh number
end

#small(expressions) ⇒ Object



276
277
278
# File 'lib/teepee/commander.rb', line 276

def small expressions
  html_tag :small, expressions
end

#sqrt(number) ⇒ Object



280
281
282
# File 'lib/teepee/commander.rb', line 280

def sqrt number
  ensure_numeric Math.sqrt number
end

#sub(expressions) ⇒ Object



284
285
286
# File 'lib/teepee/commander.rb', line 284

def sub expressions
  html_tag :sub, expressions
end

#sup(expressions) ⇒ Object



288
289
290
# File 'lib/teepee/commander.rb', line 288

def sup expressions
  html_tag :sup, expressions
end

#tag_id(id) ⇒ Object



292
293
294
# File 'lib/teepee/commander.rb', line 292

def tag_id id
  id_command_handler id, :Tag
end

#tan(angle) ⇒ Object



296
297
298
# File 'lib/teepee/commander.rb', line 296

def tan angle
  ensure_numeric Math.tan angle
end

#tanh(number) ⇒ Object



300
301
302
# File 'lib/teepee/commander.rb', line 300

def tanh number
  ensure_numeric Math.tanh number
end

#tb_href(target, string) ⇒ Object



70
71
72
# File 'lib/teepee/commander.rb', line 70

def tb_href target, string
  %{<a href="#{TB_COM}/#{target}">#{string}</a>}
end

#tt(expressions) ⇒ Object



304
305
306
# File 'lib/teepee/commander.rb', line 304

def tt expressions
  html_tag :tt, expressions
end

#u(expressions) ⇒ Object



308
309
310
# File 'lib/teepee/commander.rb', line 308

def u expressions
  html_tag :u, expressions
end

#user(user) ⇒ Object



312
313
314
315
316
317
318
# File 'lib/teepee/commander.rb', line 312

def user user
  if not user
    command_error "user: error: no user specified"
  else
    tb_href "users/#{user}", user.to_s
  end
end