xlogin 0.12.6 → 0.12.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 631f9e5c7fc58daf235b083b9061cc3f796f09e625d02d2bb025e674eeaf0eca
4
- data.tar.gz: e0a5e98641e056661c1dcf4f4908732dc6098fce4bd52e41354d5a62bfbde806
3
+ metadata.gz: 7f2b4fad5df8aff6e1cf36374991f89dd823e47975a4fcb819b021af7552a426
4
+ data.tar.gz: 529c8aece9c76564da6d879dcf1f4c4049fe627b950ddac01c18389989e602e4
5
5
  SHA512:
6
- metadata.gz: f11d11fe67c789fb66ff15aae97f812f1aed6e3957c28827ff97e211a0c4bb314b7f330ebf96ae0602f1b65f0e1436c318f5c3e91ba7632bbc148c71e3fc0c06
7
- data.tar.gz: 63f64922ac9db0b7590eaa79fcf9325b23afa4b99520a305c39a515f604741cf9421283397aa855b4a89cd93a28b041ca8ea09a4f3f59683132d5e6bbeead437
6
+ metadata.gz: 9593c30807ba92ee2af2553abc097ac573e5cebb1c9da0ac4058f81d72b6a7637ddfe3dbadafff67f78c0e4efc06a6b84209d9f89fadd2e768e01d3fa9b63ad5
7
+ data.tar.gz: 7ed1285b83560b52fd00d19d1a7b0e95a35edf03524599bf4d6a2d32d6932d969bfdb14964ef57b3d097a1b6dbe8f9d6845a28e02cb8a69ab1dd660eced288a3
@@ -8,13 +8,14 @@ module Xlogin
8
8
  DEFAULT_PROMPT = /[$%#>] ?\z/n
9
9
  RESERVED_METHODS = %i( login logout enable disable delegate )
10
10
 
11
- attr_reader :name
11
+ attr_reader :name, :scopes, :methods
12
12
 
13
13
  def initialize(name)
14
14
  @name = name
15
+ @scopes = Hash.new
15
16
  @timeout = DEFAULT_TIMEOUT
16
17
  @prompts = Array.new
17
- @methods = Hash.new { |h, k| h[k] = {} }
18
+ @methods = Hash.new
18
19
  @interrupt = nil
19
20
  end
20
21
 
@@ -29,8 +30,12 @@ module Xlogin
29
30
  @prompts
30
31
  end
31
32
 
32
- def bind(name = nil, scope: :default, &block)
33
- @methods[scope][name] = block
33
+ def scope(name = nil, &block)
34
+ @scopes[name] = block
35
+ end
36
+
37
+ def bind(name = nil, &block)
38
+ @methods[name] = block
34
39
  end
35
40
 
36
41
  def interrupt!(&block)
@@ -40,15 +45,16 @@ module Xlogin
40
45
 
41
46
  def build(uri, **opts)
42
47
  klass = Class.new(Xlogin.const_get(uri.scheme.capitalize))
43
- klass.class_exec(@methods) do |methods|
44
- [:default, *opts[:scope]].uniq.each do |scope|
45
- methods[scope].each do |name, block|
46
- case name.to_s
47
- when 'enable'
48
- define_method(name) { |args = nil| instance_exec(args || opts[:enable], &block) }
49
- else
50
- define_method(name, &block)
51
- end
48
+ klass.class_exec(self) do |template|
49
+ scopes = [*opts[:scope]].compact
50
+ scopes.each { |scope| template.instance_eval(&template.scopes[scope]) }
51
+
52
+ template.methods.each do |name, block|
53
+ case name.to_s
54
+ when 'enable'
55
+ define_method(name) { |args = nil| instance_exec(args || opts[:enable], &block) }
56
+ else
57
+ define_method(name, &block)
52
58
  end
53
59
  end
54
60
  end
@@ -1,3 +1,3 @@
1
1
  module Xlogin
2
- VERSION = "0.12.6"
2
+ VERSION = "0.12.7"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xlogin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.6
4
+ version: 0.12.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - haccht
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-06-25 00:00:00.000000000 Z
11
+ date: 2019-07-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: net-telnet