Allow layout options configuration from run control
This commit is contained in:
parent
70fe9bdb03
commit
7c2712924a
@ -4,8 +4,12 @@ Feature: `layout' run control keyword
|
||||
Given a file named my_layout.rb with:
|
||||
"""
|
||||
class MyLayout
|
||||
def register *_
|
||||
puts "testing_rc_layout"
|
||||
def initialize **options
|
||||
puts "testing_rc_layout_#{options.inspect}" if options.any?
|
||||
end
|
||||
|
||||
def register *_, **options
|
||||
puts "testing_rc_layout_register"
|
||||
end
|
||||
end
|
||||
"""
|
||||
@ -16,7 +20,15 @@ Feature: `layout' run control keyword
|
||||
layout MyLayout
|
||||
"""
|
||||
When I run uhwm with options -r./my_layout
|
||||
Then the output must contain "testing_rc_layout"
|
||||
Then the output must contain "testing_rc_layout_register"
|
||||
|
||||
Scenario: configures a layout class with options
|
||||
Given a run control file with:
|
||||
"""
|
||||
layout MyLayout, foo: :bar
|
||||
"""
|
||||
When I run uhwm with options -r./my_layout
|
||||
Then the output must contain "testing_rc_layout_{:foo=>:bar}"
|
||||
|
||||
Scenario: configures a layout instance
|
||||
Given a run control file with:
|
||||
@ -24,4 +36,4 @@ Feature: `layout' run control keyword
|
||||
layout MyLayout.new
|
||||
"""
|
||||
When I run uhwm with options -r./my_layout
|
||||
Then the output must contain "testing_rc_layout"
|
||||
Then the output must contain "testing_rc_layout_register"
|
||||
|
@ -32,11 +32,15 @@ module Uh
|
||||
@env.keybinds[translate_keysym *keysyms] = block
|
||||
end
|
||||
|
||||
def layout obj
|
||||
if obj.is_a? Class
|
||||
@env.layout_class = obj
|
||||
def layout arg, **options
|
||||
if arg.is_a? Class
|
||||
if options.any?
|
||||
@env.layout = arg.new options
|
||||
else
|
||||
@env.layout = obj
|
||||
@env.layout_class = arg
|
||||
end
|
||||
else
|
||||
@env.layout = arg
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -87,10 +87,19 @@ module Uh
|
||||
|
||||
describe '#layout' do
|
||||
context 'when given a class' do
|
||||
let(:layout_class) { Class.new }
|
||||
|
||||
it 'sets a layout class in the env' do
|
||||
rc.layout layout_class = Class.new
|
||||
rc.layout layout_class
|
||||
expect(env.layout_class).to be layout_class
|
||||
end
|
||||
|
||||
context 'when given options' do
|
||||
it 'instantiates the class with given options' do
|
||||
expect(layout_class).to receive(:new).with(foo: :bar)
|
||||
rc.layout layout_class, foo: :bar
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'when given an object' do
|
||||
|
Loading…
x
Reference in New Issue
Block a user