shiritori 0.1.0 → 0.1.1
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/shiritori.rb +3 -1
- data/lib/shiritori/convert.rb +5 -1
- data/lib/shiritori/shiritori.rb +10 -3
- data/lib/shiritori/version.rb +1 -1
- data/spec/shiritori/bignum_method_spec.rb +47 -0
- data/spec/shiritori/shiritori_spec.rb +27 -0
- data/spec/spec_helper.rb +10 -3
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6e1d00e135be74ec92b38bfb77a0bb4120920bdf
|
4
|
+
data.tar.gz: 57ef4e7de3270758c399916c915e966376036a85
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 174a41a558282a29ed42129bac38dd96fc4f87af67f9fa0e7c0358f9db12d6e7a0ec6aa52f596a852c8a15e0705cf1dadc8307281803871981301d12f3de0104
|
7
|
+
data.tar.gz: 76e23bcd669717b9130325c766f99853c8f0e00e5e7c09a2c975ed7353dcfcda5f3a35f7ab4227144c9ea35d5f0d0e11e3941d1e9483fddbc711704bbac6b86c
|
data/lib/shiritori.rb
CHANGED
data/lib/shiritori/convert.rb
CHANGED
@@ -12,6 +12,10 @@ class NilClass
|
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
15
|
+
module Kernel
|
16
|
+
undef_method :exit
|
17
|
+
end
|
18
|
+
|
15
19
|
class Object
|
16
20
|
def to_ss
|
17
21
|
inspect
|
@@ -21,7 +25,7 @@ end
|
|
21
25
|
BasicObject.class_eval do
|
22
26
|
def __binding__
|
23
27
|
::Kernel.binding
|
24
|
-
end
|
28
|
+
end
|
25
29
|
end
|
26
30
|
|
27
31
|
class BasicObject
|
data/lib/shiritori/shiritori.rb
CHANGED
@@ -10,7 +10,7 @@ module Shiritori
|
|
10
10
|
RED = 31
|
11
11
|
GREEN = 32
|
12
12
|
|
13
|
-
EXIT_PATTERN =
|
13
|
+
EXIT_PATTERN = /\A(exit|quit)\Z/.freeze
|
14
14
|
METHOD_PATTERN = /[\w|\?|\>|\<|\=|\!|\[|\[|\]|\*|\/|\+|\-|\^|\~|\@|\%|\&|]+/.freeze
|
15
15
|
|
16
16
|
def start(option = [])
|
@@ -66,7 +66,7 @@ module Shiritori
|
|
66
66
|
end
|
67
67
|
|
68
68
|
def get_command
|
69
|
-
if Shiritori
|
69
|
+
if Shiritori.env == :development
|
70
70
|
print "Please input first object > "
|
71
71
|
$stdin.gets
|
72
72
|
else
|
@@ -119,8 +119,13 @@ module Shiritori
|
|
119
119
|
result = [ method_name ]
|
120
120
|
|
121
121
|
# puts debug
|
122
|
+
# Bignumがエラーが出る
|
122
123
|
# puts "Exec command #{[object.to_ss, command].join('.')}"
|
123
124
|
# p method_name
|
125
|
+
# history 機能
|
126
|
+
# 時間制限はつける
|
127
|
+
# メモリ制限もつける
|
128
|
+
# hard modeの追加
|
124
129
|
|
125
130
|
case command
|
126
131
|
when EXIT_PATTERN
|
@@ -129,7 +134,9 @@ module Shiritori
|
|
129
134
|
begin
|
130
135
|
Thread.new do
|
131
136
|
raise NoMethodError unless object.respond_to?(method_name)
|
132
|
-
|
137
|
+
|
138
|
+
#result << object.instance_eval{ eval("self."+command) }
|
139
|
+
result << eval("object."+command)
|
133
140
|
end.join
|
134
141
|
rescue Exception => ex
|
135
142
|
puts ex.message
|
data/lib/shiritori/version.rb
CHANGED
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "Shiritori test" do
|
4
|
+
let(:main){ Shiritori::Main.new }
|
5
|
+
|
6
|
+
describe "Bignum instance methods" do
|
7
|
+
let(:__instance__){ (1<<64) }
|
8
|
+
let(:same_object){ (1<<64) }
|
9
|
+
|
10
|
+
it { instance_check(:to_s) }
|
11
|
+
it { instance_check(:to_s, %q(2)) }
|
12
|
+
it { instance_check(:inspect) }
|
13
|
+
it { instance_check(:-@) }
|
14
|
+
it { instance_check(:-, %Q(3)) }
|
15
|
+
it { instance_check(:*, %Q(3)) }
|
16
|
+
it { instance_check(:/, %q(3)) }
|
17
|
+
it { instance_check(:div, %q(3)) }
|
18
|
+
it { instance_check(:%, %q(3)) }
|
19
|
+
it { instance_check(:modulo, %q(3)) }
|
20
|
+
it { instance_check(:divmod, %q(3)) }
|
21
|
+
it { instance_check(:fdiv, %q(3)) }
|
22
|
+
it { instance_check(:**, %q(7)) }
|
23
|
+
it { instance_check(:abs) }
|
24
|
+
it { instance_check(:magnitude) }
|
25
|
+
it { instance_check(:==, %Q(#{__instance__})) }
|
26
|
+
it { instance_check(:===, %Q(#{__instance__})) }
|
27
|
+
it { instance_check(:<=>, %Q(#{__instance__})) }
|
28
|
+
it { instance_check(:>, %Q(#{__instance__})) }
|
29
|
+
it { instance_check(:>=, %Q(#{__instance__})) }
|
30
|
+
it { instance_check(:<, %Q(#{__instance__})) }
|
31
|
+
it { instance_check(:<=, %Q(#{__instance__})) }
|
32
|
+
it { instance_check(:~) }
|
33
|
+
it { instance_check(:&, %q(-1)) }
|
34
|
+
it { instance_check(:|, %q(1)) }
|
35
|
+
it { instance_check(:^, %q(-1)) }
|
36
|
+
it { instance_check(:[], %q(0)) }
|
37
|
+
it { instance_check(:<<, %q(3)) }
|
38
|
+
it { instance_check(:>>, %q(3)) }
|
39
|
+
it { instance_check(:to_f) }
|
40
|
+
it { instance_check(:size) }
|
41
|
+
it { instance_check(:bit_length) }
|
42
|
+
it { instance_check(:zero?) }
|
43
|
+
it { instance_check(:odd?) }
|
44
|
+
it { instance_check(:even?) }
|
45
|
+
it { instance_check(:succ) }
|
46
|
+
end
|
47
|
+
end
|
@@ -46,5 +46,32 @@ describe "Shiritori test" do
|
|
46
46
|
expect(shiritori.current_object).to eq TrueClass
|
47
47
|
expect(shiritori.chain_count).to eq 3
|
48
48
|
end
|
49
|
+
|
50
|
+
it "test play 4" do
|
51
|
+
fake_stdin(%w(18446744073709551616 times map collect find{true} gcd(1) succ chr encoding ==(Encoding::UTF_8)
|
52
|
+
to_s slice("s") force_encoding(Encoding::CP932) next next! gsub(/u/){BasicObject} chars take(0) reverse
|
53
|
+
reverse! <<("HelloRuby") pack('m') upcase downcase upcase! unpack('m') shift split('') first scan(/./)
|
54
|
+
unshift take_while{false} to_a +([]) join('o') each_line each dup max to_i pred class extend(Module.new)
|
55
|
+
is_a?(Fixnum) ===(false) inspect concat("false") =~(/[a-z]/) &(1) methods flatten pop intern to_proc arity
|
56
|
+
|(1) divmod(0.2) min -(-5) zero? singleton_methods sort sort_by{rand} push("HelloRuby") [](-1) downcase!
|
57
|
+
sub(/r/){binding} swapcase %([]) to_str delete('A-Z') to_f *(1) fdiv(1) /(0.0) -@ abs **(0) round floor ceil
|
58
|
+
freeze odd? object_id to_r eql?(0) method(:class) call superclass new singleton_class __id__ ord even?
|
59
|
+
instance_eval{(1..10)} begin div(1) ^(5) ! nil?)) do
|
60
|
+
|
61
|
+
shiritori.start
|
62
|
+
end
|
63
|
+
|
64
|
+
expect(shiritori.current_object).to eq false
|
65
|
+
expect(shiritori.chain_count).to eq 99
|
66
|
+
end
|
67
|
+
|
68
|
+
it "text play 5" do
|
69
|
+
fake_stdin(%w("hello" send(:exit) to_i)) do
|
70
|
+
shiritori.start
|
71
|
+
end
|
72
|
+
|
73
|
+
expect(shiritori.current_object).to eq 0
|
74
|
+
expect(shiritori.chain_count).to eq 1
|
75
|
+
end
|
49
76
|
end
|
50
77
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,12 +1,18 @@
|
|
1
1
|
require 'shiritori'
|
2
2
|
|
3
3
|
$LOAD_PATH << File.expand_path('../../lib', __FILE__)
|
4
|
-
|
4
|
+
|
5
|
+
module Shiritori
|
6
|
+
def self.env
|
7
|
+
:development
|
8
|
+
end
|
9
|
+
end
|
5
10
|
|
6
11
|
module Helpers
|
7
12
|
METHOD_PATTERN = /[\w|\?|\>|\<|\=|\!|\[|\[|\]|\*|\/|\+|\-|\^|\~|\@|\%|\&|]+/
|
8
13
|
|
9
14
|
def fake_stdin(args)
|
15
|
+
p args
|
10
16
|
begin
|
11
17
|
$stdin = StringIO.new
|
12
18
|
$stdin.puts(args.shift) until args.empty?
|
@@ -41,10 +47,11 @@ module Helpers
|
|
41
47
|
ope = ope.to_s if ope.is_a?(Symbol)
|
42
48
|
|
43
49
|
command = "#{ope}(#{args.join(',')})"
|
44
|
-
#puts "self."+command
|
45
50
|
|
46
51
|
__self__ = check(command, obj||__instance__)
|
47
|
-
|
52
|
+
|
53
|
+
#other = [ope.scan(METHOD_PATTERN).first.to_sym, test_obj.instance_eval{ eval("self."+command) } ]
|
54
|
+
other = [ope.scan(METHOD_PATTERN).first.to_sym, eval("test_obj."+command) ]
|
48
55
|
|
49
56
|
compare_range(__self__, other) if [Range, Enumerator].include?(__self__.last.class)
|
50
57
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shiritori
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- siman-man
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-05-
|
11
|
+
date: 2014-05-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -105,6 +105,7 @@ files:
|
|
105
105
|
- lib/shiritori/view.rb
|
106
106
|
- shiritori.gemspec
|
107
107
|
- spec/shiritori/basic_object_method_spec.rb
|
108
|
+
- spec/shiritori/bignum_method_spec.rb
|
108
109
|
- spec/shiritori/false_method_spec.rb
|
109
110
|
- spec/shiritori/fixnum_method_spec.rb
|
110
111
|
- spec/shiritori/nil_method_spec.rb
|
@@ -141,6 +142,7 @@ specification_version: 4
|
|
141
142
|
summary: shiritori
|
142
143
|
test_files:
|
143
144
|
- spec/shiritori/basic_object_method_spec.rb
|
145
|
+
- spec/shiritori/bignum_method_spec.rb
|
144
146
|
- spec/shiritori/false_method_spec.rb
|
145
147
|
- spec/shiritori/fixnum_method_spec.rb
|
146
148
|
- spec/shiritori/nil_method_spec.rb
|