nudge 0.2.6 → 0.2.7
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/lib/instructions/bool/bool_and.rb +8 -0
- data/lib/instructions/bool/bool_define.rb +9 -0
- data/lib/instructions/bool/bool_depth.rb +5 -0
- data/lib/instructions/bool/bool_duplicate.rb +7 -0
- data/lib/instructions/bool/bool_equal_q.rb +8 -0
- data/lib/instructions/bool/bool_flush.rb +3 -0
- data/lib/instructions/bool/bool_not.rb +8 -0
- data/lib/instructions/bool/bool_or.rb +8 -0
- data/lib/instructions/bool/bool_pop.rb +3 -0
- data/lib/instructions/bool/bool_random.rb +3 -0
- data/lib/instructions/bool/bool_rotate.rb +11 -0
- data/lib/instructions/bool/bool_shove.rb +14 -0
- data/lib/instructions/bool/bool_swap.rb +3 -0
- data/lib/instructions/bool/bool_xor.rb +8 -0
- data/lib/instructions/bool/bool_yank.rb +12 -0
- data/lib/instructions/bool/bool_yankdup.rb +12 -0
- data/lib/instructions/code/code_atom_q.rb +9 -0
- data/lib/instructions/code/code_backbone_points.rb +17 -0
- data/lib/instructions/code/code_car.rb +15 -0
- data/lib/instructions/code/code_cdr.rb +13 -1
- data/lib/instructions/code/code_concatenate.rb +20 -0
- data/lib/instructions/code/code_cons.rb +22 -1
- data/lib/instructions/code/code_container.rb +21 -2
- data/lib/instructions/code/code_contains_q.rb +11 -0
- data/lib/instructions/code/code_define.rb +9 -0
- data/lib/instructions/code/code_depth.rb +5 -0
- data/lib/instructions/code/code_discrepancy.rb +13 -7
- data/lib/instructions/code/code_do_count.rb +21 -1
- data/lib/instructions/code/code_do_range.rb +44 -3
- data/lib/instructions/code/code_do_times.rb +39 -1
- data/lib/instructions/code/code_duplicate.rb +7 -0
- data/lib/instructions/code/code_equal_q.rb +9 -0
- data/lib/instructions/code/code_execute.rb +7 -0
- data/lib/instructions/code/code_execute_then_pop.rb +9 -0
- data/lib/instructions/code/code_flush.rb +3 -0
- data/lib/instructions/code/code_gsub.rb +11 -3
- data/lib/instructions/code/code_if.rb +8 -0
- data/lib/instructions/code/code_instructions.rb +12 -0
- data/lib/instructions/code/code_list.rb +10 -0
- data/lib/instructions/code/code_member_q.rb +14 -0
- data/lib/instructions/code/code_name_lookup.rb +10 -0
- data/lib/instructions/code/code_noop.rb +3 -0
- data/lib/instructions/code/code_nth.rb +12 -0
- data/lib/instructions/code/code_nth_cdr.rb +14 -2
- data/lib/instructions/code/code_nth_point.rb +15 -0
- data/lib/instructions/code/code_null_q.rb +11 -0
- data/lib/instructions/code/code_parses_q.rb +8 -0
- data/lib/instructions/code/code_points.rb +8 -0
- data/lib/instructions/code/code_pop.rb +3 -0
- data/lib/instructions/code/code_position.rb +11 -0
- data/lib/instructions/code/code_quote.rb +11 -0
- data/lib/instructions/code/code_replace_nth_point.rb +11 -0
- data/lib/instructions/code/code_rotate.rb +11 -0
- data/lib/instructions/code/code_shove.rb +14 -0
- data/lib/instructions/code/code_swap.rb +3 -0
- data/lib/instructions/code/code_yank.rb +12 -0
- data/lib/instructions/code/code_yankdup.rb +12 -0
- data/lib/instructions/conversion/bool_from_float.rb +9 -0
- data/lib/instructions/conversion/bool_from_int.rb +9 -0
- data/lib/instructions/conversion/code_from_bool.rb +9 -1
- data/lib/instructions/conversion/code_from_float.rb +10 -1
- data/lib/instructions/conversion/code_from_int.rb +10 -1
- data/lib/instructions/conversion/code_from_name.rb +10 -1
- data/lib/instructions/conversion/float_from_bool.rb +9 -0
- data/lib/instructions/conversion/float_from_int.rb +9 -0
- data/lib/instructions/conversion/int_from_bool.rb +9 -0
- data/lib/instructions/conversion/int_from_float.rb +9 -0
- data/lib/instructions/exec/exec_define.rb +9 -0
- data/lib/instructions/exec/exec_depth.rb +5 -0
- data/lib/instructions/exec/exec_do_count.rb +22 -0
- data/lib/instructions/exec/exec_do_range.rb +43 -0
- data/lib/instructions/exec/exec_do_times.rb +40 -0
- data/lib/instructions/exec/exec_duplicate.rb +7 -0
- data/lib/instructions/exec/exec_equal_q.rb +9 -0
- data/lib/instructions/exec/exec_flush.rb +5 -0
- data/lib/instructions/exec/exec_if.rb +8 -0
- data/lib/instructions/exec/exec_k.rb +4 -0
- data/lib/instructions/exec/exec_pop.rb +3 -0
- data/lib/instructions/exec/exec_rotate.rb +11 -0
- data/lib/instructions/exec/exec_s.rb +11 -0
- data/lib/instructions/exec/exec_shove.rb +14 -0
- data/lib/instructions/exec/exec_swap.rb +3 -0
- data/lib/instructions/exec/exec_y.rb +18 -0
- data/lib/instructions/exec/exec_yank.rb +12 -0
- data/lib/instructions/exec/exec_yankdup.rb +12 -0
- data/lib/instructions/float/float_abs.rb +8 -0
- data/lib/instructions/float/float_add.rb +8 -0
- data/lib/instructions/float/float_cosine.rb +8 -0
- data/lib/instructions/float/float_define.rb +9 -0
- data/lib/instructions/float/float_depth.rb +5 -0
- data/lib/instructions/float/float_divide.rb +12 -0
- data/lib/instructions/float/float_duplicate.rb +7 -0
- data/lib/instructions/float/float_equal_q.rb +8 -0
- data/lib/instructions/float/float_flush.rb +3 -0
- data/lib/instructions/float/float_greater_than_q.rb +9 -0
- data/lib/instructions/float/float_if.rb +8 -0
- data/lib/instructions/float/float_less_than_q.rb +9 -0
- data/lib/instructions/float/float_max.rb +8 -0
- data/lib/instructions/float/float_min.rb +8 -0
- data/lib/instructions/float/float_modulo.rb +12 -0
- data/lib/instructions/float/float_multiply.rb +8 -0
- data/lib/instructions/float/float_negative.rb +8 -0
- data/lib/instructions/float/float_pop.rb +3 -0
- data/lib/instructions/float/float_power.rb +12 -0
- data/lib/instructions/float/float_random.rb +3 -0
- data/lib/instructions/float/float_rotate.rb +11 -0
- data/lib/instructions/float/float_shove.rb +14 -0
- data/lib/instructions/float/float_sine.rb +8 -0
- data/lib/instructions/float/float_sqrt.rb +10 -0
- data/lib/instructions/float/float_subtract.rb +10 -0
- data/lib/instructions/float/float_swap.rb +3 -0
- data/lib/instructions/float/float_tangent.rb +8 -0
- data/lib/instructions/float/float_yank.rb +12 -0
- data/lib/instructions/float/float_yankdup.rb +12 -0
- data/lib/instructions/int/int_abs.rb +9 -1
- data/lib/instructions/int/int_add.rb +8 -0
- data/lib/instructions/int/int_define.rb +10 -1
- data/lib/instructions/int/int_depth.rb +5 -0
- data/lib/instructions/int/int_divide.rb +12 -0
- data/lib/instructions/int/int_duplicate.rb +7 -0
- data/lib/instructions/int/int_equal_q.rb +8 -0
- data/lib/instructions/int/int_flush.rb +3 -0
- data/lib/instructions/int/int_greater_than_q.rb +9 -0
- data/lib/instructions/int/int_if.rb +8 -0
- data/lib/instructions/int/int_less_than_q.rb +9 -0
- data/lib/instructions/int/int_max.rb +8 -0
- data/lib/instructions/int/int_min.rb +8 -0
- data/lib/instructions/int/int_modulo.rb +12 -0
- data/lib/instructions/int/int_multiply.rb +8 -0
- data/lib/instructions/int/int_negative.rb +8 -0
- data/lib/instructions/int/int_pop.rb +3 -0
- data/lib/instructions/int/int_power.rb +12 -0
- data/lib/instructions/int/int_random.rb +3 -0
- data/lib/instructions/int/int_rotate.rb +11 -0
- data/lib/instructions/int/int_shove.rb +14 -0
- data/lib/instructions/int/int_subtract.rb +10 -0
- data/lib/instructions/int/int_swap.rb +3 -0
- data/lib/instructions/int/int_yank.rb +14 -0
- data/lib/instructions/int/int_yankdup.rb +14 -0
- data/lib/instructions/name/name_depth.rb +5 -0
- data/lib/instructions/name/name_disable_lookup.rb +11 -0
- data/lib/instructions/name/name_duplicate.rb +7 -0
- data/lib/instructions/name/name_equal_q.rb +8 -0
- data/lib/instructions/name/name_flush.rb +3 -0
- data/lib/instructions/name/name_next.rb +7 -0
- data/lib/instructions/name/name_pop.rb +3 -0
- data/lib/instructions/name/name_random_bound.rb +9 -0
- data/lib/instructions/name/name_rotate.rb +11 -0
- data/lib/instructions/name/name_shove.rb +14 -0
- data/lib/instructions/name/name_swap.rb +3 -0
- data/lib/instructions/name/name_unbind.rb +7 -0
- data/lib/instructions/name/name_yank.rb +12 -0
- data/lib/instructions/name/name_yankdup.rb +12 -0
- data/spec/instructions/code/code_nth_cdr_spec.rb +10 -2
- metadata +3 -3
@@ -1,3 +1,14 @@
|
|
1
|
+
# Sets the value of the context attribute Interpreter#evaluate_references to false.
|
2
|
+
# This will persist until the next time the Interpreter evaluates a ReferencePoint;
|
3
|
+
# instead of attempting to look up the variable or name referred to by the ReferencePoint,
|
4
|
+
# it will instead push the ReferencePoint onto the +:name+ stack.
|
5
|
+
#
|
6
|
+
# needs: nothing
|
7
|
+
#
|
8
|
+
# pushes: nothing
|
9
|
+
#
|
10
|
+
#
|
11
|
+
#
|
1
12
|
class NameDisableLookupInstruction < Instruction
|
2
13
|
def preconditions?
|
3
14
|
true
|
@@ -1,3 +1,11 @@
|
|
1
|
+
# pops the top 2 items of the +:name+ stack;
|
2
|
+
# pushes a new ValuePoint onto the +:bool+ stack, with value +true+ if the names are identical
|
3
|
+
#
|
4
|
+
# *needs:* 2 +:name+
|
5
|
+
#
|
6
|
+
# *pushes:* 1 +:bool+
|
7
|
+
#
|
8
|
+
|
1
9
|
class NameEqualQInstruction < Instruction
|
2
10
|
def preconditions?
|
3
11
|
needs :name, 2
|
@@ -1,3 +1,10 @@
|
|
1
|
+
# Creates and pushes a new ReferencePoint onto the +:name+ stack. The name itself
|
2
|
+
# will be a new string, obtained by invoking the context's Interpreter#next_name method.
|
3
|
+
#
|
4
|
+
# needs: nothing
|
5
|
+
#
|
6
|
+
# pushes: 1 +:name+
|
7
|
+
|
1
8
|
class NameNextInstruction < Instruction
|
2
9
|
def preconditions?
|
3
10
|
true
|
@@ -1,3 +1,12 @@
|
|
1
|
+
# Creates a new ReferencePoint and pushes it onto the +:name+ stack.
|
2
|
+
# The name will be randomly sampled (with uniform probability) from the union of all
|
3
|
+
# currently bound variables and names.
|
4
|
+
#
|
5
|
+
# needs: at least one bound variable or name
|
6
|
+
#
|
7
|
+
# pushes: 1 +:name+
|
8
|
+
#
|
9
|
+
|
1
10
|
class NameRandomBoundInstruction < Instruction
|
2
11
|
def preconditions?
|
3
12
|
@context.references.length > 0
|
@@ -1,3 +1,14 @@
|
|
1
|
+
# pops the top 3 items of the +:name+ 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 +:name+
|
8
|
+
#
|
9
|
+
# *pushes:* 3 +:name+
|
10
|
+
#
|
11
|
+
|
1
12
|
class NameRotateInstruction < Instruction
|
2
13
|
include RotateInstruction
|
3
14
|
def initialize(context)
|
@@ -1,3 +1,17 @@
|
|
1
|
+
# pops the top items of the +:name+ and +:int+ stacks;
|
2
|
+
# pushes the +:name+ down "into" the stack, at a level determined by the +:int+ "destination" 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:* 1 +:name+, 1 +:int+
|
11
|
+
#
|
12
|
+
# *pushes:* 1 +:name+ (sortof)
|
13
|
+
#
|
14
|
+
|
1
15
|
class NameShoveInstruction < Instruction
|
2
16
|
include ShoveInstruction
|
3
17
|
def initialize(context)
|
@@ -1,3 +1,15 @@
|
|
1
|
+
# pops the top item of the +:int+ stack (the "index");
|
2
|
+
# then repositions an item from down "inside" the +:name+ 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 +:name+
|
9
|
+
#
|
10
|
+
# *pushes:* 1 +:name+ (sortof)
|
11
|
+
#
|
12
|
+
|
1
13
|
class NameYankInstruction < 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 +:name+ 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 +:name+
|
9
|
+
#
|
10
|
+
# *pushes:* 1 +:name+ (sortof)
|
11
|
+
#
|
12
|
+
|
1
13
|
class NameYankdupInstruction < Instruction
|
2
14
|
include YankdupInstruction
|
3
15
|
def initialize(context)
|
@@ -59,13 +59,21 @@ describe CodeNthCdrInstruction do
|
|
59
59
|
@context.stacks[:code].peek.value.should == "block {}"
|
60
60
|
end
|
61
61
|
|
62
|
-
it "should wrap a non-codeblock point and just return it" do
|
63
|
-
@context.stacks[:int].push(ValuePoint.new("int", 12))
|
62
|
+
it "should wrap a non-codeblock point and just return it if the index is less than 1" do
|
63
|
+
@context.stacks[:int].push(ValuePoint.new("int", -12))
|
64
64
|
@context.stacks[:code].push(ValuePoint.new("code", "do x1"))
|
65
65
|
@i1.go
|
66
66
|
@context.stacks[:code].peek.value.should == "block {\n do x1}"
|
67
67
|
end
|
68
68
|
|
69
|
+
it "should return an empty block if the index is positive" do
|
70
|
+
@context.stacks[:int].push(ValuePoint.new("int", 12))
|
71
|
+
@context.stacks[:code].push(ValuePoint.new("code", "do x1"))
|
72
|
+
@i1.go
|
73
|
+
@context.stacks[:code].peek.value.should == "block {}"
|
74
|
+
end
|
75
|
+
|
76
|
+
|
69
77
|
it "should not remove anything if the int % length == 0" do
|
70
78
|
@context.stacks[:int].push(ValuePoint.new("int", -921231)) # => 0
|
71
79
|
@context.stacks[:code].push(ValuePoint.new("code", "block {ref a ref b ref c}"))
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 2
|
8
|
-
-
|
9
|
-
version: 0.2.
|
8
|
+
- 7
|
9
|
+
version: 0.2.7
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Bill Tozier
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2010-
|
19
|
+
date: 2010-05-02 00:00:00 -04:00
|
20
20
|
default_executable: nudge
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|