teepee 0.12.3 → 0.12.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5621c224c2cf88afc6e8255db65a795bb67e287a
4
- data.tar.gz: 039f0d499d960ea6cc81462b12c66642f548194f
3
+ metadata.gz: 7ef1d6f0a4ef80b10920bad0277d6f9f10b57795
4
+ data.tar.gz: 3c9eff8a1f75e84544a6bdca7151985ea669612d
5
5
  SHA512:
6
- metadata.gz: 404af32e1c4429de14ab3dc5d134ba9e56f29901f2a9c102e8f24dbc7f624ad86b3e43ad1e8066aac7dcf9067d8b1fbc870b8e22f0b3d2784c33f61dde594e4a
7
- data.tar.gz: 375810968ff7321f701620e5e9e82a2f90392fd8536ad1e97a5728993958f9ac51d2c9637feb0d35810afdcdd7936f4e3157a52a59c53af648144efb44a9e69a
6
+ metadata.gz: 5137fa7ef23f957db297abd29072304c7489bb2b0cad438c66aec6d57d869a482ca445e9832e8e13fdbc298bbede55e698f0e1cdc933aa6780c3839e8c8fd0d2
7
+ data.tar.gz: 5e472f615093a5a354fd14850af44edfedbbfece1d75d6936f68a12c3d2677d81335514fd86504b223ddd938c392fc15318582d8001782d84a39330dcc4a3bf8
@@ -372,6 +372,18 @@ module Teepee
372
372
  @@commander.boolean_xor expressions
373
373
  when "xnor"
374
374
  @@commander.boolean_xnor expressions
375
+ when "<"
376
+ @@commander.less_than *numbers_from_expressions
377
+ when "<="
378
+ @@commander.less_than_or_equal *numbers_from_expressions
379
+ when ">"
380
+ @@commander.greater_than *numbers_from_expressions
381
+ when ">="
382
+ @@commander.greater_than_or_equal *numbers_from_expressions
383
+ when "="
384
+ @@commander.equal *numbers_from_expressions
385
+ when "!="
386
+ @@commander.not_equal *numbers_from_expressions
375
387
  when "if"
376
388
  @@commander.if_operator expressions
377
389
  when "do"
@@ -61,6 +61,10 @@ module Teepee
61
61
  command_error "The command #{command} is not yet implemented."
62
62
  end
63
63
 
64
+ def numeric? *numbers
65
+ numbers.all? {|number| number.kind_of? Numeric}
66
+ end
67
+
64
68
  def ensure_numeric number
65
69
  if number.kind_of? Complex
66
70
  command_error "Complex numbers are not yet supported."
@@ -181,22 +185,18 @@ module Teepee
181
185
  end
182
186
 
183
187
  def % *numbers
184
- ensure_numeric numbers
185
188
  numbers.inject { |base, percent| base*percent/100.0 }
186
189
  end
187
190
 
188
191
  def add_percentage *numbers
189
- ensure_numeric numbers
190
192
  numbers.inject {|base, percent| base * (1+percent/100.0) }
191
193
  end
192
194
 
193
195
  def subtract_percentage *numbers
194
- ensure_numeric numbers
195
196
  numbers.inject {|base, percent| base * (1-percent/100.0) }
196
197
  end
197
198
 
198
199
  def percent_total *numbers
199
- ensure_numeric numbers
200
200
  numbers.inject {|total, part| Float(part)/Float(total)*100.0 }
201
201
  end
202
202
 
@@ -246,10 +246,10 @@ module Teepee
246
246
 
247
247
  def boolean_and expressions
248
248
  if expressions.empty?
249
- "true"
250
- elsif expressions.first.to_s == "false"
251
- "false"
252
- elsif expressions.first.to_s == "true" or expressions.first.kind_of? WhitespaceToken
249
+ true_constant
250
+ elsif false_constant? expressions.first
251
+ false_constant
252
+ elsif true_constant? expressions.first or expressions.first.kind_of? WhitespaceToken
253
253
  boolean_and expressions[1..-1]
254
254
  else
255
255
  command_error "Not a boolean value #{expressions.first}"
@@ -265,10 +265,10 @@ module Teepee
265
265
  end
266
266
 
267
267
  def boolean_not expression
268
- if expression.to_s == "true"
269
- "false"
270
- elsif expression.to_s == "false"
271
- "true"
268
+ if true_constant? expression
269
+ false_constant
270
+ elsif false_constant? expression
271
+ true_constant
272
272
  else
273
273
  command_error "Not a boolean value"
274
274
  end
@@ -276,10 +276,10 @@ module Teepee
276
276
 
277
277
  def boolean_or expressions
278
278
  if expressions.empty?
279
- "false"
280
- elsif expressions.first.to_s == "true"
281
- "true"
282
- elsif expressions.first.to_s == "false" or expressions.first.kind_of? WhitespaceToken
279
+ false_constant
280
+ elsif true_constant? expressions.first
281
+ true_constant
282
+ elsif false_constant? expressions.first or expressions.first.kind_of? WhitespaceToken
283
283
  boolean_or expressions[1..-1]
284
284
  else
285
285
  command_error "Not a boolean value"
@@ -297,17 +297,17 @@ module Teepee
297
297
  # I'm going with the second: one and only one true, the rest false.
298
298
  # It seems therefore that the zero-argument version should be false then.
299
299
  if expressions.empty?
300
- "false"
300
+ false_constant
301
301
  else
302
302
  any_trues = false
303
303
  expressions.each do |expression|
304
- if expression.to_s == "true"
304
+ if true_constant? expression
305
305
  if any_trues
306
- return "false"
306
+ return false_constant
307
307
  else
308
308
  any_trues = true
309
309
  end
310
- elsif expression.to_s == "false"
310
+ elsif false_constant? expression
311
311
  # do nothing
312
312
  elsif expression.kind_of? WhitespaceToken
313
313
  # do nothing
@@ -351,6 +351,16 @@ module Teepee
351
351
  Math::E
352
352
  end
353
353
 
354
+ def equal *numbers
355
+ if numbers.empty?
356
+ true_constant
357
+ elsif numbers.length == 1
358
+ true_constant
359
+ else
360
+ numbers[0] == numbers[1] and equal *numbers.rest
361
+ end
362
+ end
363
+
354
364
  def enumerate expressions
355
365
  html_tag :ol, expressions
356
366
  end
@@ -399,6 +409,26 @@ module Teepee
399
409
  ensure_numeric Math.gamma number
400
410
  end
401
411
 
412
+ def greater_than *numbers
413
+ if numbers.empty?
414
+ true_constant
415
+ elsif numbers.length == 1
416
+ true_constant
417
+ else
418
+ numbers[0] > numbers[1] and greater_than *numbers.rest
419
+ end
420
+ end
421
+
422
+ def greater_than_or_equal *numbers
423
+ if numbers.empty?
424
+ true_constant
425
+ elsif numbers.length == 1
426
+ true_constant
427
+ else
428
+ numbers[0] >= numbers[1] and greater_than_or_equal *numbers.rest
429
+ end
430
+ end
431
+
402
432
  def h1 expressions
403
433
  html_tag :h1, expressions
404
434
  end
@@ -504,6 +534,26 @@ module Teepee
504
534
  "["
505
535
  end
506
536
 
537
+ def less_than *numbers
538
+ if numbers.empty?
539
+ true_constant
540
+ elsif numbers.length == 1
541
+ true_constant
542
+ else
543
+ numbers[0] < numbers[1] and less_than *numbers.rest
544
+ end
545
+ end
546
+
547
+ def less_than_or_equal *numbers
548
+ if numbers.empty?
549
+ true_constant
550
+ elsif numbers.length == 1
551
+ true_constant
552
+ else
553
+ numbers[0] <= numbers[1] and less_than_or_equal *numbers.rest
554
+ end
555
+ end
556
+
507
557
  def lgamma n
508
558
  ensure_numeric Math::lgamma(n).first
509
559
  end
@@ -559,6 +609,16 @@ module Teepee
559
609
  "&nbsp;" * count
560
610
  end
561
611
 
612
+ def not_equal *numbers
613
+ if numbers.empty?
614
+ true_constant
615
+ elsif numbers.length == 1
616
+ true_constant
617
+ else
618
+ numbers[0] != numbers[1] and equal *numbers.rest
619
+ end
620
+ end
621
+
562
622
  def note_id id
563
623
  id_command_handler id, :Note
564
624
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: teepee
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.3
4
+ version: 0.12.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Christopher Mark Gore