teepee 0.15.2 → 0.15.3
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 +4 -4
- data/lib/teepee/command-parser.rb +7 -1
- data/lib/teepee/commander.rb +26 -2
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 64473abc28a1538dcbe1cf68ee8ab8f5dd8ec4c8
|
4
|
+
data.tar.gz: 185b231a0b949d9f6203ec1f056447383b819bcc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 348895f88f009067449af5a2db530d9e31382c3b03f8d60e7e3f17d3f3ede12bf077ab0b548e3b38281f719a3d0d819aa0d0b15a54d269918252ca3ca084209f
|
7
|
+
data.tar.gz: 54987b1dd30100e24a51e3cad6db9defdc4f675b583c868204518294918f48d7fa22bc8d10396d571b63808e89e561eefaf346f960b914f479d52c8b387745da
|
@@ -318,6 +318,12 @@ module Teepee
|
|
318
318
|
@@commander.e
|
319
319
|
when "+"
|
320
320
|
@@commander.+ word_tokens
|
321
|
+
when "increment",
|
322
|
+
"inc"
|
323
|
+
@@commander.increment first_word_token
|
324
|
+
when "decrement",
|
325
|
+
"dec"
|
326
|
+
@@commander.decrement first_word_token
|
321
327
|
when "-"
|
322
328
|
@@commander.- word_tokens
|
323
329
|
when "*"
|
@@ -442,7 +448,7 @@ module Teepee
|
|
442
448
|
"undef"
|
443
449
|
@@commander.undefine expressions
|
444
450
|
when "defined?"
|
445
|
-
@@commander.
|
451
|
+
@@commander.is_defined? word_tokens
|
446
452
|
when "dotimes"
|
447
453
|
@@commander.dotimes expressions
|
448
454
|
else
|
data/lib/teepee/commander.rb
CHANGED
@@ -57,10 +57,18 @@ module Teepee
|
|
57
57
|
command_error "The command #{command} is not yet implemented."
|
58
58
|
end
|
59
59
|
|
60
|
+
def variable_not_defined_error variable
|
61
|
+
command_error "The variable \"#{variable}\" is not defined."
|
62
|
+
end
|
63
|
+
|
60
64
|
def numeric? *numbers
|
61
65
|
numbers.all? {|number| number.kind_of? Numeric}
|
62
66
|
end
|
63
67
|
|
68
|
+
def non_numeric_error nan
|
69
|
+
command_error "The value \"#{nan}\" is not a number."
|
70
|
+
end
|
71
|
+
|
64
72
|
def ensure_numeric number
|
65
73
|
if number.kind_of? Complex
|
66
74
|
command_error "Complex numbers are not yet supported."
|
@@ -377,6 +385,13 @@ module Teepee
|
|
377
385
|
ensure_numeric Math.cosh angle.to_number
|
378
386
|
end
|
379
387
|
|
388
|
+
def decrement variable
|
389
|
+
return variable_not_defined_error variable if not is_defined? variable
|
390
|
+
old_value = get_operator(variable).to_number
|
391
|
+
return non_numeric_error old_value if not numeric? old_value
|
392
|
+
@parser.variables[variable.to_html] = old_value - 1
|
393
|
+
end
|
394
|
+
|
380
395
|
def define expressions
|
381
396
|
variable, _, value = expressions
|
382
397
|
k = variable.to_html
|
@@ -385,8 +400,10 @@ module Teepee
|
|
385
400
|
get_operator k
|
386
401
|
end
|
387
402
|
|
388
|
-
def
|
389
|
-
if
|
403
|
+
def is_defined? variables
|
404
|
+
if not variables.is_a? Array
|
405
|
+
return is_defined? [variables]
|
406
|
+
elsif Set.new(variables.map(&:to_html)).subset? Set.new(@parser.variables.keys)
|
390
407
|
true_constant
|
391
408
|
else
|
392
409
|
false_constant
|
@@ -554,6 +571,13 @@ module Teepee
|
|
554
571
|
end
|
555
572
|
end
|
556
573
|
|
574
|
+
def increment variable
|
575
|
+
return variable_not_defined_error variable if not is_defined? variable
|
576
|
+
old_value = get_operator(variable).to_number
|
577
|
+
return non_numeric_error old_value if not numeric? old_value
|
578
|
+
@parser.variables[variable.to_html] = old_value + 1
|
579
|
+
end
|
580
|
+
|
557
581
|
def it expressions
|
558
582
|
html_tag :i, expressions
|
559
583
|
end
|