Sha256: a9fef89e021d0903b59e6e7dcc9899f0830b963a89f372e1eba1459ba156d36b

Contents?: true

Size: 1.08 KB

Versions: 3

Compression:

Stored size: 1.08 KB

Contents

# frozen_string_literal: true

module SportsManager
  class SolutionDrawer
    class Mermaid
      class Node
        extend Forwardable
        TIME_TEMPLATE = '%d/%m %H:%M'

        attr_reader :fixture

        def_delegators :fixture, :match_id, :category, :title, :court

        def self.for(fixture)
          node_class = fixture.playable? ? self : ByeNode

          node_class.new(fixture)
        end

        def initialize(fixture)
          @fixture = fixture
        end

        def name
          "#{category}_#{match_id}"
        end

        # Internal: my_node[This is a node]:::awesome_style
        def definition
          "#{name}[#{description}]:::#{style_class}"
        end

        def style_class
          "court#{court}"
        end

        def description
          "#{match_id}\\n#{title}\\n#{slot}"
        end

        def slot
          fixture.slot.strftime(TIME_TEMPLATE)
        end

        def links?
          fixture.dependencies?
        end

        def depends_on?(node)
          fixture.depends_on?(node.fixture)
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
sports-manager-0.0.3 lib/sports_manager/solution_drawer/mermaid/node.rb
sports-manager-0.0.2 lib/sports_manager/solution_drawer/mermaid/node.rb
sports-manager-0.0.1 lib/sports_manager/solution_drawer/mermaid/node.rb