nudge 0.2.6 → 0.2.7

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.
Files changed (156) hide show
  1. data/VERSION +1 -1
  2. data/lib/instructions/bool/bool_and.rb +8 -0
  3. data/lib/instructions/bool/bool_define.rb +9 -0
  4. data/lib/instructions/bool/bool_depth.rb +5 -0
  5. data/lib/instructions/bool/bool_duplicate.rb +7 -0
  6. data/lib/instructions/bool/bool_equal_q.rb +8 -0
  7. data/lib/instructions/bool/bool_flush.rb +3 -0
  8. data/lib/instructions/bool/bool_not.rb +8 -0
  9. data/lib/instructions/bool/bool_or.rb +8 -0
  10. data/lib/instructions/bool/bool_pop.rb +3 -0
  11. data/lib/instructions/bool/bool_random.rb +3 -0
  12. data/lib/instructions/bool/bool_rotate.rb +11 -0
  13. data/lib/instructions/bool/bool_shove.rb +14 -0
  14. data/lib/instructions/bool/bool_swap.rb +3 -0
  15. data/lib/instructions/bool/bool_xor.rb +8 -0
  16. data/lib/instructions/bool/bool_yank.rb +12 -0
  17. data/lib/instructions/bool/bool_yankdup.rb +12 -0
  18. data/lib/instructions/code/code_atom_q.rb +9 -0
  19. data/lib/instructions/code/code_backbone_points.rb +17 -0
  20. data/lib/instructions/code/code_car.rb +15 -0
  21. data/lib/instructions/code/code_cdr.rb +13 -1
  22. data/lib/instructions/code/code_concatenate.rb +20 -0
  23. data/lib/instructions/code/code_cons.rb +22 -1
  24. data/lib/instructions/code/code_container.rb +21 -2
  25. data/lib/instructions/code/code_contains_q.rb +11 -0
  26. data/lib/instructions/code/code_define.rb +9 -0
  27. data/lib/instructions/code/code_depth.rb +5 -0
  28. data/lib/instructions/code/code_discrepancy.rb +13 -7
  29. data/lib/instructions/code/code_do_count.rb +21 -1
  30. data/lib/instructions/code/code_do_range.rb +44 -3
  31. data/lib/instructions/code/code_do_times.rb +39 -1
  32. data/lib/instructions/code/code_duplicate.rb +7 -0
  33. data/lib/instructions/code/code_equal_q.rb +9 -0
  34. data/lib/instructions/code/code_execute.rb +7 -0
  35. data/lib/instructions/code/code_execute_then_pop.rb +9 -0
  36. data/lib/instructions/code/code_flush.rb +3 -0
  37. data/lib/instructions/code/code_gsub.rb +11 -3
  38. data/lib/instructions/code/code_if.rb +8 -0
  39. data/lib/instructions/code/code_instructions.rb +12 -0
  40. data/lib/instructions/code/code_list.rb +10 -0
  41. data/lib/instructions/code/code_member_q.rb +14 -0
  42. data/lib/instructions/code/code_name_lookup.rb +10 -0
  43. data/lib/instructions/code/code_noop.rb +3 -0
  44. data/lib/instructions/code/code_nth.rb +12 -0
  45. data/lib/instructions/code/code_nth_cdr.rb +14 -2
  46. data/lib/instructions/code/code_nth_point.rb +15 -0
  47. data/lib/instructions/code/code_null_q.rb +11 -0
  48. data/lib/instructions/code/code_parses_q.rb +8 -0
  49. data/lib/instructions/code/code_points.rb +8 -0
  50. data/lib/instructions/code/code_pop.rb +3 -0
  51. data/lib/instructions/code/code_position.rb +11 -0
  52. data/lib/instructions/code/code_quote.rb +11 -0
  53. data/lib/instructions/code/code_replace_nth_point.rb +11 -0
  54. data/lib/instructions/code/code_rotate.rb +11 -0
  55. data/lib/instructions/code/code_shove.rb +14 -0
  56. data/lib/instructions/code/code_swap.rb +3 -0
  57. data/lib/instructions/code/code_yank.rb +12 -0
  58. data/lib/instructions/code/code_yankdup.rb +12 -0
  59. data/lib/instructions/conversion/bool_from_float.rb +9 -0
  60. data/lib/instructions/conversion/bool_from_int.rb +9 -0
  61. data/lib/instructions/conversion/code_from_bool.rb +9 -1
  62. data/lib/instructions/conversion/code_from_float.rb +10 -1
  63. data/lib/instructions/conversion/code_from_int.rb +10 -1
  64. data/lib/instructions/conversion/code_from_name.rb +10 -1
  65. data/lib/instructions/conversion/float_from_bool.rb +9 -0
  66. data/lib/instructions/conversion/float_from_int.rb +9 -0
  67. data/lib/instructions/conversion/int_from_bool.rb +9 -0
  68. data/lib/instructions/conversion/int_from_float.rb +9 -0
  69. data/lib/instructions/exec/exec_define.rb +9 -0
  70. data/lib/instructions/exec/exec_depth.rb +5 -0
  71. data/lib/instructions/exec/exec_do_count.rb +22 -0
  72. data/lib/instructions/exec/exec_do_range.rb +43 -0
  73. data/lib/instructions/exec/exec_do_times.rb +40 -0
  74. data/lib/instructions/exec/exec_duplicate.rb +7 -0
  75. data/lib/instructions/exec/exec_equal_q.rb +9 -0
  76. data/lib/instructions/exec/exec_flush.rb +5 -0
  77. data/lib/instructions/exec/exec_if.rb +8 -0
  78. data/lib/instructions/exec/exec_k.rb +4 -0
  79. data/lib/instructions/exec/exec_pop.rb +3 -0
  80. data/lib/instructions/exec/exec_rotate.rb +11 -0
  81. data/lib/instructions/exec/exec_s.rb +11 -0
  82. data/lib/instructions/exec/exec_shove.rb +14 -0
  83. data/lib/instructions/exec/exec_swap.rb +3 -0
  84. data/lib/instructions/exec/exec_y.rb +18 -0
  85. data/lib/instructions/exec/exec_yank.rb +12 -0
  86. data/lib/instructions/exec/exec_yankdup.rb +12 -0
  87. data/lib/instructions/float/float_abs.rb +8 -0
  88. data/lib/instructions/float/float_add.rb +8 -0
  89. data/lib/instructions/float/float_cosine.rb +8 -0
  90. data/lib/instructions/float/float_define.rb +9 -0
  91. data/lib/instructions/float/float_depth.rb +5 -0
  92. data/lib/instructions/float/float_divide.rb +12 -0
  93. data/lib/instructions/float/float_duplicate.rb +7 -0
  94. data/lib/instructions/float/float_equal_q.rb +8 -0
  95. data/lib/instructions/float/float_flush.rb +3 -0
  96. data/lib/instructions/float/float_greater_than_q.rb +9 -0
  97. data/lib/instructions/float/float_if.rb +8 -0
  98. data/lib/instructions/float/float_less_than_q.rb +9 -0
  99. data/lib/instructions/float/float_max.rb +8 -0
  100. data/lib/instructions/float/float_min.rb +8 -0
  101. data/lib/instructions/float/float_modulo.rb +12 -0
  102. data/lib/instructions/float/float_multiply.rb +8 -0
  103. data/lib/instructions/float/float_negative.rb +8 -0
  104. data/lib/instructions/float/float_pop.rb +3 -0
  105. data/lib/instructions/float/float_power.rb +12 -0
  106. data/lib/instructions/float/float_random.rb +3 -0
  107. data/lib/instructions/float/float_rotate.rb +11 -0
  108. data/lib/instructions/float/float_shove.rb +14 -0
  109. data/lib/instructions/float/float_sine.rb +8 -0
  110. data/lib/instructions/float/float_sqrt.rb +10 -0
  111. data/lib/instructions/float/float_subtract.rb +10 -0
  112. data/lib/instructions/float/float_swap.rb +3 -0
  113. data/lib/instructions/float/float_tangent.rb +8 -0
  114. data/lib/instructions/float/float_yank.rb +12 -0
  115. data/lib/instructions/float/float_yankdup.rb +12 -0
  116. data/lib/instructions/int/int_abs.rb +9 -1
  117. data/lib/instructions/int/int_add.rb +8 -0
  118. data/lib/instructions/int/int_define.rb +10 -1
  119. data/lib/instructions/int/int_depth.rb +5 -0
  120. data/lib/instructions/int/int_divide.rb +12 -0
  121. data/lib/instructions/int/int_duplicate.rb +7 -0
  122. data/lib/instructions/int/int_equal_q.rb +8 -0
  123. data/lib/instructions/int/int_flush.rb +3 -0
  124. data/lib/instructions/int/int_greater_than_q.rb +9 -0
  125. data/lib/instructions/int/int_if.rb +8 -0
  126. data/lib/instructions/int/int_less_than_q.rb +9 -0
  127. data/lib/instructions/int/int_max.rb +8 -0
  128. data/lib/instructions/int/int_min.rb +8 -0
  129. data/lib/instructions/int/int_modulo.rb +12 -0
  130. data/lib/instructions/int/int_multiply.rb +8 -0
  131. data/lib/instructions/int/int_negative.rb +8 -0
  132. data/lib/instructions/int/int_pop.rb +3 -0
  133. data/lib/instructions/int/int_power.rb +12 -0
  134. data/lib/instructions/int/int_random.rb +3 -0
  135. data/lib/instructions/int/int_rotate.rb +11 -0
  136. data/lib/instructions/int/int_shove.rb +14 -0
  137. data/lib/instructions/int/int_subtract.rb +10 -0
  138. data/lib/instructions/int/int_swap.rb +3 -0
  139. data/lib/instructions/int/int_yank.rb +14 -0
  140. data/lib/instructions/int/int_yankdup.rb +14 -0
  141. data/lib/instructions/name/name_depth.rb +5 -0
  142. data/lib/instructions/name/name_disable_lookup.rb +11 -0
  143. data/lib/instructions/name/name_duplicate.rb +7 -0
  144. data/lib/instructions/name/name_equal_q.rb +8 -0
  145. data/lib/instructions/name/name_flush.rb +3 -0
  146. data/lib/instructions/name/name_next.rb +7 -0
  147. data/lib/instructions/name/name_pop.rb +3 -0
  148. data/lib/instructions/name/name_random_bound.rb +9 -0
  149. data/lib/instructions/name/name_rotate.rb +11 -0
  150. data/lib/instructions/name/name_shove.rb +14 -0
  151. data/lib/instructions/name/name_swap.rb +3 -0
  152. data/lib/instructions/name/name_unbind.rb +7 -0
  153. data/lib/instructions/name/name_yank.rb +12 -0
  154. data/lib/instructions/name/name_yankdup.rb +12 -0
  155. data/spec/instructions/code/code_nth_cdr_spec.rb +10 -2
  156. metadata +3 -3
@@ -1,3 +1,13 @@
1
+ # pops the top item of the +:float+ stack;
2
+ # pushes a ValuePoint with its square root onto the +:float+ stack
3
+ #
4
+ # note: pushes an +:error+ item if the value is negative
5
+ #
6
+ # *needs:* 1 +:float+
7
+ #
8
+ # *pushes:* 1 +:float+
9
+ #
10
+
1
11
  class FloatSqrtInstruction < Instruction
2
12
  def preconditions?
3
13
  needs :float, 1
@@ -1,3 +1,13 @@
1
+ # pops the top 2 items of the +:float+ stack;
2
+ # pushes a ValuePoint with their difference onto the +:float+ stack
3
+ #
4
+ # note: the top item is the value subtracted from the second stack item's value
5
+ #
6
+ # *needs:* 2 +:float+
7
+ #
8
+ # *pushes:* 1 +:float+
9
+ #
10
+
1
11
  class FloatSubtractInstruction < Instruction
2
12
  def preconditions?
3
13
  needs :float, 2
@@ -1,3 +1,6 @@
1
+ # exchanges the position of the top 2 items on the +:float+ stack
2
+ #
3
+
1
4
  class FloatSwapInstruction < Instruction
2
5
  include SwapInstruction
3
6
  def initialize(context)
@@ -1,3 +1,11 @@
1
+ # pops the top item of the +:float+ stack;
2
+ # pushes a ValuePoint with its tangent onto the +:float+ stack
3
+ #
4
+ # *needs:* 1 +:float+
5
+ #
6
+ # *pushes:* 1 +:float+
7
+ #
8
+
1
9
  class FloatTangentInstruction < Instruction
2
10
  def preconditions?
3
11
  needs :float, 1
@@ -1,3 +1,15 @@
1
+ # pops the top item of the +:int+ stack (the "index");
2
+ # then repositions an item from down "inside" the +:float+ stack to its top.
3
+ #
4
+ # If the index value is negative or 0, the bottom item on the stack is moved;
5
+ # if the index value is greater than or equal to the depth of the stack, there is no change;
6
+ # otherwise, the index value refers to the bottom-to-top order of stack items.
7
+ #
8
+ # *needs:* 1 +:int+, 1 +:float+
9
+ #
10
+ # *pushes:* 1 +:float+ (sortof)
11
+ #
12
+
1
13
  class FloatYankInstruction < Instruction
2
14
  include YankInstruction
3
15
  def initialize(context)
@@ -1,3 +1,15 @@
1
+ # pops the top item of the +:int+ stack (the "index");
2
+ # pushes a duplicate of an item from down "inside" the +:float+ stack to its top.
3
+ #
4
+ # If the index value is negative or 0, the bottom item on the stack is copied;
5
+ # if the index value is greater than or equal to the depth of the stack, the top item is copied;
6
+ # otherwise, the index value refers to the bottom-to-top order of stack items.
7
+ #
8
+ # *needs:* 1 +:int+, 1 +:float+
9
+ #
10
+ # *pushes:* 1 +:float+ (sortof)
11
+ #
12
+
1
13
  class FloatYankdupInstruction < Instruction
2
14
  include YankdupInstruction
3
15
  def initialize(context)
@@ -1,4 +1,12 @@
1
- class IntAbsInstruction < Instruction
1
+ # pops the top item of the +:int+ stack;
2
+ # pushes a ValuePoint with its absolute value onto the +:int+ stack
3
+ #
4
+ # *needs:* 1 +:int+
5
+ #
6
+ # *pushes:* 1 +:int+
7
+ #
8
+
9
+ class IntAbsInstruction < Instruction
2
10
  def preconditions?
3
11
  needs :int, 1
4
12
  end
@@ -1,3 +1,11 @@
1
+ # pops the top 2 items of the +:int+ stack;
2
+ # pushes a ValuePoint with their sum onto the +:int+ stack
3
+ #
4
+ # *needs:* 2 +:int+
5
+ #
6
+ # *pushes:* 1 +:int+
7
+ #
8
+
1
9
  class IntAddInstruction < Instruction
2
10
  def preconditions?
3
11
  needs :int, 2
@@ -1,6 +1,15 @@
1
+ # pops the top item of the +:int+ stack and the +:name+ stack;
2
+ # if the name string is not a bound variable (as opposed to a local name),
3
+ # it binds the name to the +:int+ ValuePoint
4
+ #
5
+ # *needs:* 1 +:int+, 1 +:name+
6
+ #
7
+ # *pushes:* nothing
8
+ #
9
+
1
10
  class IntDefineInstruction < Instruction
2
11
  include DefineInstruction
3
- def initialize(context)
12
+ def initialize(context) #:nodoc:
4
13
  super(context, :int)
5
14
  end
6
15
  end
@@ -1,3 +1,8 @@
1
+ # pushes a ValuePoint with the number of items in the +:int+ stack onto the +:int+ stack
2
+ #
3
+ # *pushes:* 1 +:int+
4
+ #
5
+
1
6
  class IntDepthInstruction < Instruction
2
7
  include DepthInstruction
3
8
  def initialize(context)
@@ -1,3 +1,15 @@
1
+ # pops the top 2 items of the +:int+ stack;
2
+ # pushes a ValuePoint with their (integer) quotient onto the +:int+ stack
3
+ #
4
+ # note: the top item is the denominator, the second item is the numerator
5
+ #
6
+ # note: will push an +:error+ ValuePoint instead of an +:int+ if the numerator is 0
7
+ #
8
+ # *needs:* 2 +:int+
9
+ #
10
+ # *pushes:* 1 +:int+
11
+ #
12
+
1
13
  class IntDivideInstruction < Instruction
2
14
  def preconditions?
3
15
  needs :int, 2
@@ -1,3 +1,10 @@
1
+ # makes and pushes a clone of the top item on the +:int+ stack
2
+ #
3
+ # *needs:* 1 +:int+
4
+ #
5
+ # *pushes:* 1 +:int+
6
+ #
7
+
1
8
  class IntDuplicateInstruction < Instruction
2
9
  include DuplicateInstruction
3
10
  def initialize(context)
@@ -1,3 +1,11 @@
1
+ # pops the top 2 items of the +:int+ stack;
2
+ # pushes a new ValuePoint onto the +:bool+ stack, with value +true+ if the integers are identical
3
+ #
4
+ # *needs:* 2 +:int+
5
+ #
6
+ # *pushes:* 1 +:bool+
7
+ #
8
+
1
9
  class IntEqualQInstruction < Instruction
2
10
  def preconditions?
3
11
  needs :int, 2
@@ -1,3 +1,6 @@
1
+ # deletes all items from the +:int+ stack
2
+ #
3
+
1
4
  class IntFlushInstruction < Instruction
2
5
  include FlushInstruction
3
6
  def initialize(context)
@@ -1,3 +1,12 @@
1
+ # pops the top 2 items of the +:int+ stack;
2
+ # pushes a new ValuePoint onto the +:bool+ stack,
3
+ # with value +true+ if the second one is strictly greater than the top one
4
+ #
5
+ # *needs:* 2 +:int+
6
+ #
7
+ # *pushes:* 1 +:bool+
8
+ #
9
+
1
10
  class IntGreaterThanQInstruction < Instruction
2
11
  def preconditions?
3
12
  needs :int, 2
@@ -1,3 +1,11 @@
1
+ # pops the top 2 items of the +:int+ stack, and one +:bool+;
2
+ # returns the top +:int+ item if the +:bool+ is +false+, the second one if +true+
3
+ #
4
+ # *needs:* 2 +:int+, 1 +:bool+
5
+ #
6
+ # *pushes:* 1 +:int+
7
+ #
8
+
1
9
  class IntIfInstruction < Instruction
2
10
 
3
11
  include IfInstruction
@@ -1,3 +1,12 @@
1
+ # pops the top 2 items of the +:int+ stack;
2
+ # pushes a new ValuePoint onto the +:bool+ stack,
3
+ # with value +true+ if the second one is strictly less than the top one
4
+ #
5
+ # *needs:* 2 +:int+
6
+ #
7
+ # *pushes:* 1 +:bool+
8
+ #
9
+
1
10
  class IntLessThanQInstruction < Instruction
2
11
  def preconditions?
3
12
  needs :int, 2
@@ -1,3 +1,11 @@
1
+ # pops the top 2 items of the +:int+ stack;
2
+ # pushes a new ValuePoint onto the +:int+ stack with the largest of the two values
3
+ #
4
+ # *needs:* 2 +:int+
5
+ #
6
+ # *pushes:* 1 +:int+
7
+ #
8
+
1
9
  class IntMaxInstruction < Instruction
2
10
  def preconditions?
3
11
  needs :int, 2
@@ -1,3 +1,11 @@
1
+ # pops the top 2 items of the +:int+ stack;
2
+ # pushes a new ValuePoint onto the +:int+ stack with the smallest of the two values
3
+ #
4
+ # *needs:* 2 +:int+
5
+ #
6
+ # *pushes:* 1 +:int+
7
+ #
8
+
1
9
  class IntMinInstruction < Instruction
2
10
  def preconditions?
3
11
  needs :int, 2
@@ -1,3 +1,15 @@
1
+ # pops the top 2 items of the +:int+ stack;
2
+ # pushes a ValuePoint with their (integer) remainder onto the +:int+ stack
3
+ #
4
+ # note: the top item is the denominator, the second item is the numerator
5
+ #
6
+ # note: will push an +:error+ ValuePoint instead of an +:int+ if the numerator is 0
7
+ #
8
+ # *needs:* 2 +:int+
9
+ #
10
+ # *pushes:* 1 +:int+
11
+ #
12
+
1
13
  class IntModuloInstruction < Instruction
2
14
  def preconditions?
3
15
  needs :int, 2
@@ -1,3 +1,11 @@
1
+ # pops the top 2 items of the +:int+ stack;
2
+ # pushes a ValuePoint with their product onto the +:int+ stack
3
+ #
4
+ # *needs:* 2 +:int+
5
+ #
6
+ # *pushes:* 1 +:int+
7
+ #
8
+
1
9
  class IntMultiplyInstruction < Instruction
2
10
  def preconditions?
3
11
  needs :int, 2
@@ -1,3 +1,11 @@
1
+ # pops the top item of the +:int+ stack;
2
+ # pushes a ValuePoint with the value negated onto the +:int+ stack
3
+ #
4
+ # *needs:* 1 +:int+
5
+ #
6
+ # *pushes:* 1 +:int+
7
+ #
8
+
1
9
  class IntNegativeInstruction < Instruction
2
10
  def preconditions?
3
11
  needs :int, 1
@@ -1,3 +1,6 @@
1
+ # pops (and discards) the topmost item from the +:int+ stack
2
+ #
3
+
1
4
  class IntPopInstruction < Instruction
2
5
  include PopInstruction
3
6
  def initialize(context)
@@ -1,3 +1,15 @@
1
+ # pops the top 2 items of the +:int+ stack;
2
+ # pushes a ValuePoint with value x**y, where x is the second stack item, y the top one
3
+ #
4
+ # note: the top item is the exponent, the second item is the base
5
+ #
6
+ # note: will push an +:error+ ValuePoint instead of an +:int+ if asked to take a negative root of 0
7
+ #
8
+ # *needs:* 2 +:int+
9
+ #
10
+ # *pushes:* 1 +:int+
11
+ #
12
+
1
13
  class IntPowerInstruction < Instruction
2
14
  def preconditions?
3
15
  needs :int, 2
@@ -1,3 +1,6 @@
1
+ # pushes a new +:int+ ValuePoint, with value determined by a call to IntType.any_value
2
+ #
3
+
1
4
  class IntRandomInstruction < Instruction
2
5
  def preconditions?
3
6
  true # no preconditions
@@ -1,3 +1,14 @@
1
+ # pops the top 3 items of the +:int+ stack;
2
+ # pushes them back in _rotated_ order
3
+ #
4
+ # If they were A, B and C (with C originally at the top of the stack)
5
+ # the result will be B, C, A (with A at the top)
6
+ #
7
+ # *needs:* 3 +:int+
8
+ #
9
+ # *pushes:* 3 +:int+
10
+ #
11
+
1
12
  class IntRotateInstruction < Instruction
2
13
  include RotateInstruction
3
14
  def initialize(context)
@@ -1,3 +1,17 @@
1
+ # pops the top 2 items of the +:int+ stack;
2
+ # pushes the top item down "into" the +:int+ stack, at a level determined by the second value.
3
+ #
4
+ # If the destination value is negative or 0, the item stays on top;
5
+ # if the destination value is greater than or equal to the depth of the stack, the item goes to the bottom;
6
+ # otherwise, the item is inserted farther from the stack's top as the destination value increases.
7
+ #
8
+ # note: the destination depth is calculated after the items have been popped
9
+ #
10
+ # *needs:* 2 +:int+
11
+ #
12
+ # *pushes:* 1 +:int+ (sortof)
13
+ #
14
+
1
15
  class IntShoveInstruction < Instruction
2
16
  include ShoveInstruction
3
17
  def initialize(context)
@@ -1,3 +1,13 @@
1
+ # pops the top 2 items of the +:int+ stack;
2
+ # pushes a ValuePoint with their difference onto the +:int+ stack
3
+ #
4
+ # note: the top item is the value subtracted from the second stack item's value
5
+ #
6
+ # *needs:* 2 +:int+
7
+ #
8
+ # *pushes:* 1 +:int+
9
+ #
10
+
1
11
  class IntSubtractInstruction < Instruction
2
12
  def preconditions?
3
13
  needs :int, 2
@@ -1,3 +1,6 @@
1
+ # exchanges the position of the top 2 items on the +:int+ stack
2
+ #
3
+
1
4
  class IntSwapInstruction < Instruction
2
5
  include SwapInstruction
3
6
  def initialize(context)
@@ -1,3 +1,17 @@
1
+ # pops the top item of the +:int+ stack (the "index");
2
+ # repositions an item from down "inside" the +:int+ stack to its top.
3
+ #
4
+ # If the index value is negative or 0, the bottom item on the stack is moved;
5
+ # if the index value is greater than or equal to the depth of the stack, there is no change;
6
+ # otherwise, the index value refers to the bottom-to-top order of stack items.
7
+ #
8
+ # note: the destination depth is calculated after the index has been popped
9
+ #
10
+ # *needs:* 2 +:int+
11
+ #
12
+ # *pushes:* 1 +:int+
13
+ #
14
+
1
15
  class IntYankInstruction < Instruction
2
16
  include YankInstruction
3
17
  def initialize(context)
@@ -1,3 +1,17 @@
1
+ # pops the top item of the +:int+ stack (the "index");
2
+ # pushes a duplicate of an item from down "inside" the +:int+ stack at its top.
3
+ #
4
+ # If the index value is negative or 0, the bottom item on the stack is copied;
5
+ # if the index value is greater than or equal to the depth of the stack, the top item is copied;
6
+ # otherwise, the index value refers to the bottom-to-top order of stack items.
7
+ #
8
+ # note: the destination depth is calculated after the index has been popped
9
+ #
10
+ # *needs:* 2 +:int+
11
+ #
12
+ # *pushes:* 1 +:int+
13
+ #
14
+
1
15
  class IntYankdupInstruction < Instruction
2
16
  include YankdupInstruction
3
17
  def initialize(context)
@@ -1,3 +1,8 @@
1
+ # pushes a ValuePoint with the number of items in the +:name+ stack onto the +:int+ stack
2
+ #
3
+ # *pushes:* 1 +:int+
4
+ #
5
+
1
6
  class NameDepthInstruction < Instruction
2
7
  include DepthInstruction
3
8
  def initialize(context)