Sha256: e1d7a1fd0e7fadf6ec338d575ec86f62466538a0e41ac5e60f6f12ce942e65d3

Contents?: true

Size: 1.21 KB

Versions: 8

Compression:

Stored size: 1.21 KB

Contents

module Teamocil

  # This class act as a wrapper around a tmux YAML layout file
  class Layout
    autoload :Session, "teamocil/layout/session"
    autoload :Window,  "teamocil/layout/window"
    autoload :Split,   "teamocil/layout/split"

    attr_reader :session

    # Initialize a new layout from a hash
    #
    # @param layout [Hash] the parsed layout
    # @param options [Hash] some options
    def initialize(layout, options={}) # {{{
      @layout = layout
      @options = options
    end # }}}

    # Generate tmux commands based on the data found in the layout file
    #
    # @return [Array] an array of shell commands to send
    def generate_commands # {{{
      @session.generate_commands
    end # }}}

    # Compile the layout into objects
    #
    # @return [Session]
    def compile! # {{{
      if @layout["session"].nil?
        @session = Session.new @options, "windows" => @layout["windows"]
      else
        @session = Session.new @options, @layout["session"]
      end
    end # }}}

    # Execute each command in the shell
    #
    # @param commands [Array] an array of complete commands to send to the shell
    def execute_commands(commands) # {{{
      `#{commands.join("; ")}`
    end # }}}

  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
teamocil-0.3.9 lib/teamocil/layout.rb
teamocil-0.3.8 lib/teamocil/layout.rb
teamocil-0.3.7 lib/teamocil/layout.rb
teamocil-0.3.6 lib/teamocil/layout.rb
teamocil-0.3.5 lib/teamocil/layout.rb
teamocil-0.3.4 lib/teamocil/layout.rb
teamocil-0.3.3 lib/teamocil/layout.rb
teamocil-0.3.2 lib/teamocil/layout.rb