Commit | Line | Data |
9eedd677 |
1 | package DX::ShellState; |
2 | |
3 | use DX::Class; |
4 | |
5 | has template_query_state => ( |
6 | is => 'ro', required => 1, isa => QueryState |
7 | ); |
8 | |
9 | has current_query_state => ( |
10 | is => 'ro', predicate => 1, isa => QueryState |
11 | ); |
12 | |
13 | has mode => (is => 'ro', required => 1); |
14 | |
15 | sub new_query_state { $_[0]->template_query_state } |
16 | |
17 | sub with_new_query_state { |
18 | my ($self) = @_; |
19 | $self->but( |
20 | current_query_state => $self->new_query_state |
21 | ); |
22 | } |
23 | |
24 | sub with_mode { |
25 | my ($self, $new_mode) = @_; |
26 | return ( |
27 | $self->but(mode => $new_mode), |
28 | [ mode => $new_mode ], |
29 | ); |
30 | } |
31 | |
32 | 1; |