flex_console 0.0.0

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 (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/flex_console.rb +71 -0
  3. metadata +43 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: a7a7956f4562526bc47d90eafa21f04b8b74494d
4
+ data.tar.gz: 4cd37f6e709fedb67b493db443d0f7fa657df30f
5
+ SHA512:
6
+ metadata.gz: 2a4edf69cf510eacbe558c7830a4b9ea67f96fd3c34a6f655a7b70fc9bdac21d034f105547ce1cd6b391179aa05009d7e729839f5c99401052479a47eae0ae15
7
+ data.tar.gz: 2ccf8ebf4c152fe0a52e2d49ec6c0ba157e28f8d38e990fb78d4b5482124fbff173470343a8b128595060d75d5dd410f5179ce89d5e4f8b8a8c1c1442c47dfb6
@@ -0,0 +1,71 @@
1
+ module FlexConsole
2
+
3
+ class << self
4
+ attr_reader :plain_loop, :bound_obj, :test_object, :test_method,
5
+ :test_args
6
+
7
+ def bind(obj, binding)
8
+ @plain_loop = ->(message) {
9
+ begin
10
+ puts message
11
+ quit = false
12
+ counter = 0
13
+ until quit
14
+ response = gets.chomp
15
+ if response == ''
16
+ counter += 1
17
+ if counter == 2
18
+ quit = true
19
+ end
20
+ elsif response == 'exit'
21
+ quit = true
22
+ else
23
+ binding.eval(response.strip.gsub("\n", ''))
24
+ puts '------------------'
25
+ counter = 0
26
+ end
27
+ end
28
+ rescue Exception => e
29
+ puts e
30
+ puts e.message
31
+ puts e.backtrace
32
+ puts '---------------'
33
+ retry
34
+ end
35
+ }
36
+ @binding = binding
37
+ @bound_obj = obj
38
+ end
39
+
40
+ def bind_lib
41
+ file = @binding.eval('__FILE__')
42
+ file_name = file.split('/')[-1]
43
+ @lib_file = file.split('/')[0..-3].join('/') + "/lib/#{file_name}"
44
+ end
45
+
46
+ def set (test_object, test_method, *test_args)
47
+ @test_object = test_object
48
+ @test_method = test_method
49
+ @test_args = test_args
50
+ end
51
+
52
+ end
53
+
54
+ def loop_eval(message)
55
+ FlexConsole.bound_obj.instance_exec(message, &FlexConsole.plain_loop)
56
+ end
57
+
58
+ def reload_lib
59
+ FlexConsole.binding.eval("load '#{FlexConsole.lib_file}'")
60
+ end
61
+
62
+ def run
63
+ obj = FlexConsole.test_object
64
+ method = FlexConsole.test_method
65
+ args = FlexConsole.test_args
66
+
67
+ obj.send(method, *args)
68
+ end
69
+
70
+ end
71
+
metadata ADDED
@@ -0,0 +1,43 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: flex_console
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Eugene Lai
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-03-26 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: To do
14
+ email: ejt.lai@gmail.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/flex_console.rb
20
+ homepage:
21
+ licenses: []
22
+ metadata: {}
23
+ post_install_message:
24
+ rdoc_options: []
25
+ require_paths:
26
+ - lib
27
+ required_ruby_version: !ruby/object:Gem::Requirement
28
+ requirements:
29
+ - - ">="
30
+ - !ruby/object:Gem::Version
31
+ version: '0'
32
+ required_rubygems_version: !ruby/object:Gem::Requirement
33
+ requirements:
34
+ - - ">="
35
+ - !ruby/object:Gem::Version
36
+ version: '0'
37
+ requirements: []
38
+ rubyforge_project:
39
+ rubygems_version: 2.5.2
40
+ signing_key:
41
+ specification_version: 4
42
+ summary: A powerful testing and debugging utility
43
+ test_files: []