obsws 0.3.2 → 0.4.0

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: e5e9cb2c558346b12dde7736519342ede8d4e0a366b1bd8b6e6d16df3009cafc
4
- data.tar.gz: bbafa4a7fdd292d4469d8ff368dbc42e97da22cd2551da2c57728928d19d70ce
3
+ metadata.gz: c275787361111b1b84f2f5023d5d24e45b174540a8e687aaaae2fa647b89eecc
4
+ data.tar.gz: 738122bc2be93730ef117240c467ec261ab6918c406dea273eefc134d5f74362
5
5
  SHA512:
6
- metadata.gz: 05abfc47adc6b94e75acc55277fc78856f4cf9c003c358c16e447323d779435c1bb1f11654bde7665afdb67c6a063ec510e147a085b41a540af6e2881e4efaf9
7
- data.tar.gz: 3472fa88a6704b2c91e016b8edc9aade0d47e43b42997c9647b2306fea627d79cbb240193731abb374d9798cca08c76e69fc1a0061fdf4b0ab8dceec1b6a9ae5
6
+ metadata.gz: 121d5bf831969d5bd92244efb4c6ae94fdea7e6a47b16c9b7bbee80626e6739664433bb04e3225aef2eaa759127ee074841e05b430331c3bd987762c8623f15c
7
+ data.tar.gz: e67e598037d689469263721e2408eacebd6469e32a5b55e50f43876efe33d5b3b581e99ec2d804ed28549079f6b4855c76e8508e65e46d504bca12e75e32fff9
data/README.md CHANGED
@@ -16,14 +16,10 @@
16
16
  ### Bundler
17
17
 
18
18
  ```
19
- bundle add 'obsws'
19
+ bundle add obsws
20
20
  bundle install
21
21
  ```
22
22
 
23
- ### Gem
24
-
25
- `gem install 'obsws'`
26
-
27
23
  ## `Use`
28
24
 
29
25
  #### Example `main.rb`
@@ -67,23 +63,28 @@ For a full list of requests refer to [Requests](https://github.com/obsproject/ob
67
63
 
68
64
  ### Events
69
65
 
70
- Register an observer class and define `on_` methods for events. Method names should match the api event but snake cased.
66
+ Register `on_` callback methods. Method names should match the api event but snake cased.
71
67
 
72
68
  example:
73
69
 
74
70
  ```ruby
75
71
  class Observer
76
72
  def initialize
77
- @e_client = OBSWS::Events::Client.new(**kwargs)
78
- # register class with the event client
79
- @e_client.add_observer(self)
73
+ @e_client = OBSWS::Events::Client.new(host: "localhost", port: 4455, password: "strongpassword")
74
+ # register callback methods with the Event client
75
+ @e_client.register(
76
+ [
77
+ method(:on_current_program_scene_changed),
78
+ method(:on_input_mute_state_changed)
79
+ ]
80
+ )
80
81
  end
81
82
 
82
83
  # define "on_" event methods.
83
- def on_current_program_scene_changed
84
+ def on_current_program_scene_changed(data)
84
85
  ...
85
86
  end
86
- def on_input_mute_state_changed
87
+ def on_input_mute_state_changed(data)
87
88
  ...
88
89
  end
89
90
  ...
data/lib/obsws/event.rb CHANGED
@@ -35,31 +35,35 @@ module OBSWS
35
35
  end
36
36
 
37
37
  module Callbacks
38
- include Util
38
+ include Util::String
39
+
40
+ def observers
41
+ @observers ||= []
42
+ end
39
43
 
40
44
  def add_observer(observer)
41
- @observers = [] unless defined?(@observers)
42
45
  observer = [observer] if !observer.respond_to? :each
43
- observer.each { |o| @observers.append(o) }
46
+ observer.each { |o| observers << o unless observers.include? o }
44
47
  end
45
48
 
46
49
  def remove_observer(observer)
47
- @observers.delete(observer)
50
+ observers.delete(observer)
48
51
  end
49
52
 
50
53
  def notify_observers(event, data)
51
- if defined?(@observers)
52
- @observers.each do |o|
53
- if o.respond_to? "on_#{event.to_snake}"
54
- if data.empty?
55
- o.send("on_#{event.to_snake}")
56
- else
57
- o.send("on_#{event.to_snake}", data)
58
- end
54
+ observers.each do |o|
55
+ if o.is_a? Method
56
+ if o.name.to_s == "on_#{snakecase(event)}"
57
+ data.empty? ? o.call : o.call(data)
59
58
  end
59
+ elsif o.respond_to? "on_#{snakecase(event)}"
60
+ data.empty? ? o.send("on_#{snakecase(event)}") : o.send("on_#{snakecase(event)}", data)
60
61
  end
61
62
  end
62
63
  end
64
+
65
+ alias_method :register, :add_observer
66
+ alias_method :deregister, :remove_observer
63
67
  end
64
68
 
65
69
  class Client
data/lib/obsws/mixin.rb CHANGED
@@ -3,11 +3,11 @@ require_relative "util"
3
3
  module OBSWS
4
4
  module Mixin
5
5
  module Meta
6
- include Util
6
+ include Util::String
7
7
 
8
8
  def make_field_methods(*params)
9
9
  params.each do |param|
10
- define_singleton_method(param.to_s.to_snake) { @resp[param] }
10
+ define_singleton_method(snakecase(param.to_s)) { @resp[param] }
11
11
  end
12
12
  end
13
13
  end
@@ -23,7 +23,7 @@ module OBSWS
23
23
 
24
24
  def empty? = @fields.empty?
25
25
 
26
- def attrs = @fields.map { |f| f.to_s.to_snake }
26
+ def attrs = @fields.map { |f| snakecase(f.to_s) }
27
27
  end
28
28
 
29
29
  class Response < MetaObject
data/lib/obsws/util.rb CHANGED
@@ -1,12 +1,13 @@
1
1
  module OBSWS
2
2
  module Util
3
- class ::String
4
- def to_camel
5
- split("_").map(&:capitalize).join
3
+ module String
4
+ def camelcase(s)
5
+ s.split("_").map(&:capitalize).join
6
6
  end
7
7
 
8
- def to_snake
9
- gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
8
+ def snakecase(s)
9
+ s
10
+ .gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
10
11
  .gsub(/([a-z\d])([A-Z])/, '\1_\2')
11
12
  .downcase
12
13
  end
data/lib/obsws/version.rb CHANGED
@@ -7,11 +7,11 @@ module OBSWS
7
7
  end
8
8
 
9
9
  def minor
10
- 3
10
+ 4
11
11
  end
12
12
 
13
13
  def patch
14
- 2
14
+ 0
15
15
  end
16
16
 
17
17
  def to_a
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: obsws
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - onyx_online
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-07-26 00:00:00.000000000 Z
11
+ date: 2023-07-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: websocket-driver