Class: AsciiChem::Transform::ReactionBuilder
- Inherits:
-
Object
- Object
- AsciiChem::Transform::ReactionBuilder
- Defined in:
- lib/asciichem/transform.rb
Overview
Builds a Reaction, mapping the arrow hash into arrow kind and conditions.
Constant Summary collapse
- ARROW_KINDS =
{ '<=>' => :equilibrium, '<->' => :resonance, '->' => :forward, '<-' => :reverse }.freeze
Instance Method Summary collapse
- #as_terms(side) ⇒ Object
- #build ⇒ Object
- #condition_text(node) ⇒ Object
- #conditions ⇒ Object
-
#initialize(reactants, arrow, products) ⇒ ReactionBuilder
constructor
A new instance of ReactionBuilder.
- #kind ⇒ Object
Constructor Details
#initialize(reactants, arrow, products) ⇒ ReactionBuilder
Returns a new instance of ReactionBuilder.
719 720 721 722 723 |
# File 'lib/asciichem/transform.rb', line 719 def initialize(reactants, arrow, products) @reactants = reactants @arrow = arrow @products = products end |
Instance Method Details
#as_terms(side) ⇒ Object
753 754 755 756 757 758 759 |
# File 'lib/asciichem/transform.rb', line 753 def as_terms(side) case side when Array then side when nil then [] else [side] end end |
#build ⇒ Object
725 726 727 728 729 730 731 732 |
# File 'lib/asciichem/transform.rb', line 725 def build Model::Reaction.new( reactants: as_terms(@reactants), products: as_terms(@products), arrow: kind, conditions: conditions ) end |
#condition_text(node) ⇒ Object
746 747 748 749 750 751 |
# File 'lib/asciichem/transform.rb', line 746 def condition_text(node) return nil if node.nil? text = node.is_a?(Hash) ? node[:text] : node text&.to_s end |
#conditions ⇒ Object
738 739 740 741 742 743 744 |
# File 'lib/asciichem/transform.rb', line 738 def conditions above = condition_text(@arrow[:above]) below = condition_text(@arrow[:below]) return nil unless above || below Model::Reaction::Conditions.new(above: above, below: below) end |
#kind ⇒ Object
734 735 736 |
# File 'lib/asciichem/transform.rb', line 734 def kind ARROW_KINDS.fetch(@arrow[:kind].to_s, :forward) end |