xlogin 0.12.6 → 0.12.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.
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