Module: Riemann::Dash::BrowserConfig
- Defined in:
- lib/riemann/dash/browser_config.rb
Defined Under Namespace
Class Method Summary collapse
- .backend ⇒ Object
- .backend=(backend) ⇒ Object
-
.index_by(keyfn, list) ⇒ Object
Given a function to extract a key from an element, and a list of elements, returns a map of keys to elements.
-
.merge_configs(a, b) ⇒ Object
Merge two configs together.
-
.merge_lists(keyfn, mergefn, as, bs) ⇒ Object
Merges two lists, given a key function which determines equivalent elements, and a merge function to combine equivalent elements.
-
.merge_workspace(a, b) ⇒ Object
Merge two workspaces together.
-
.merge_workspaces(as, bs) ⇒ Object
Merge a list of workspaces together.
- .read ⇒ Object
- .update(update) ⇒ Object
Class Method Details
.backend ⇒ Object
3 4 5 |
# File 'lib/riemann/dash/browser_config.rb', line 3 def self.backend @backend end |
.backend=(backend) ⇒ Object
7 8 9 |
# File 'lib/riemann/dash/browser_config.rb', line 7 def self.backend=(backend) @backend = backend end |
.index_by(keyfn, list) ⇒ Object
Given a function to extract a key from an element, and a list of elements, returns a map of keys to elements. Keys are assumed unique.
31 32 33 34 35 36 |
# File 'lib/riemann/dash/browser_config.rb', line 31 def self.index_by(keyfn, list) list.reduce({}) do |index, element| index[keyfn.call(element)] = element index end end |
.merge_configs(a, b) ⇒ Object
Merge two configs together
12 13 14 15 16 |
# File 'lib/riemann/dash/browser_config.rb', line 12 def self.merge_configs(a, b) a.merge 'server' => (a['server'] or b['server']), 'server_type' => (a['server_type'] or b['server_type']), 'workspaces' => merge_workspaces(a['workspaces'], b['workspaces']) end |
.merge_lists(keyfn, mergefn, as, bs) ⇒ Object
Merges two lists, given a key function which determines equivalent elements, and a merge function to combine equivalent elements.
40 41 42 43 44 45 46 |
# File 'lib/riemann/dash/browser_config.rb', line 40 def self.merge_lists(keyfn, mergefn, as, bs) asi = index_by keyfn, as bsi = index_by keyfn, bs ids = (as + bs).map(&keyfn).uniq.map do |key| mergefn.call asi[key], bsi[key] end end |
.merge_workspace(a, b) ⇒ Object
Merge two workspaces together
49 50 51 52 53 54 55 56 57 58 |
# File 'lib/riemann/dash/browser_config.rb', line 49 def self.merge_workspace(a, b) # TODO: workspace versions return a unless b return b unless a if (a['view']['version'] || 0) < (b['view']['version'] || 0) b else a end end |
.merge_workspaces(as, bs) ⇒ Object
Merge a list of workspaces together
61 62 63 64 65 66 67 68 69 |
# File 'lib/riemann/dash/browser_config.rb', line 61 def self.merge_workspaces(as, bs) return as unless bs return bs unless as merge_lists(lambda { |x| x['name'] }, method(:merge_workspace), as, bs) end |
.read ⇒ Object
18 19 20 |
# File 'lib/riemann/dash/browser_config.rb', line 18 def self.read backend.read end |
.update(update) ⇒ Object
22 23 24 |
# File 'lib/riemann/dash/browser_config.rb', line 22 def self.update(update) backend.update(update) end |