Class: UIC::Application::StateMachine
- Inherits:
-
StateMachine
- Object
- StateMachine
- UIC::Application::StateMachine
- Includes:
- ElementBacked
- Defined in:
- lib/ruic/statemachine.rb
Defined Under Namespace
Classes: VisualState, VisualStates, VisualTransition, VisualTransitions
Instance Attribute Summary collapse
-
#visual_states ⇒ Object
readonly
Returns the value of attribute visual_states.
-
#visual_transitions ⇒ Object
readonly
Returns the value of attribute visual_transitions.
Attributes included from ElementBacked
Attributes included from FileBacked
Instance Method Summary collapse
- #image_usage ⇒ Object
-
#initialize(application, el) ⇒ StateMachine
constructor
A new instance of StateMachine.
Methods included from ElementBacked
Methods inherited from StateMachine
Methods included from FileBacked
#file_found?, #filename, #path_to
Constructor Details
#initialize(application, el) ⇒ StateMachine
Returns a new instance of StateMachine.
28 29 30 31 32 33 34 35 36 37 |
# File 'lib/ruic/statemachine.rb', line 28 def initialize(application,el) self.owner = application self.el = el self.file = application.path_to(src) super( File.read( file, encoding:'utf-8' ) ) @visuals = @doc.at( "/application/statemachine[@ref='##{id}']/visual-states" ) @visuals ||= @doc.root.add_child("<statemachine ref='##{id}'><visual-states/></statemachine>") @visual_states = VisualStates.new( self, @visuals ) @visual_transitions = VisualTransitions.new( self, @visuals ) end |
Instance Attribute Details
#visual_states ⇒ Object (readonly)
Returns the value of attribute visual_states.
26 27 28 |
# File 'lib/ruic/statemachine.rb', line 26 def visual_states @visual_states end |
#visual_transitions ⇒ Object (readonly)
Returns the value of attribute visual_transitions.
27 28 29 |
# File 'lib/ruic/statemachine.rb', line 27 def visual_transitions @visual_transitions end |
Instance Method Details
#image_usage ⇒ Object
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/ruic/statemachine.rb', line 40 def image_usage ( visual_states.flat_map{ |vs| vs.enter_actions.flat_map{ |a| [a,vs] } } + visual_states.flat_map{ |vs| vs.exit_actions.flat_map{ |a| [a,vs] } } + visual_transitions.flat_map{ |vt| vt.actions.flat_map{ |a| [a,vt] } } ).select do |visual_action,owner| visual_action.is_a?(UIC::Application::StateMachine::VisualAction::SetAttribute) && visual_action.value[/\A(['"])[^'"]+\1\Z/] && # ensure that it's a simple string value visual_action.element.properties[ visual_action.attribute ].is_a?( UIC::Property::Image ) end.group_by do |visual_action,owner| visual_action.value[/\A(['"])([^'"]+)\1\Z/,2] end.each do |image_path,array| array.map!(&:last) end end |