class Diakonos::Session
Attributes
buffer_current[RW]
buffers[R]
dir[R]
filename[R]
name[R]
readline_histories[R]
settings[R]
Public Class Methods
file_hash_for(filepath)
click to toggle source
# File lib/diakonos/sessions.rb, line 117 def self.file_hash_for(filepath) filepath, line_number = ::Diakonos.parse_filename_and_line_number(filepath) { 'filepath' => filepath, 'read_only' => false, 'cursor' => { 'row' => line_number || 0, 'col' => 0, }, 'display' => { 'top_line' => 0, 'left_column' => 0 }, } end
from_yaml_file(yaml_filename)
click to toggle source
@return [Session] The Session
created from the YAML data in the specified file
or nil on failure to load
# File lib/diakonos/sessions.rb, line 79 def self.from_yaml_file(yaml_filename) return nil if ! File.exist?(yaml_filename) session = nil File.open(yaml_filename) do |f| loaded = YAML::load(f) or break if( loaded[ 'filename' ] && loaded[ 'settings' ] && loaded[ 'settings' ].respond_to?( :values ) && loaded.has_key?( 'name' ) && ( loaded[ 'files' ] && loaded[ 'files' ].respond_to?( :each ) || loaded[ 'buffers' ] && loaded[ 'buffers' ].respond_to?( :each ) ) ) # Convert old sessions if loaded[ 'files' ] loaded[ 'buffers' ] = loaded[ 'files' ].map { |f| Session.file_hash_for f } loaded.delete 'files' end session = Session.new(loaded['filename'], loaded) end end session end
new(filepath, data = nil)
click to toggle source
# File lib/diakonos/sessions.rb, line 6 def initialize(filepath, data = nil) if data.nil? @filename = File.expand_path(filepath) @settings = Hash.new basename = File.basename(filepath) if ! Session.pid_session?(filepath) @name = basename end @buffers = [] @buffer_current = 1 self.dir = Dir.getwd else @filename = data['filename'] @settings = data['settings'] @name = data['name'] @buffers = data['buffers'] @buffer_current = data['buffer_current'] || 1 self.dir = data['dir'] end end
pid_session?(path)
click to toggle source
# File lib/diakonos/sessions.rb, line 113 def self.pid_session?(path) %r{/\d+$} === path end
Public Instance Methods
dir=(new_dir)
click to toggle source
# File lib/diakonos/sessions.rb, line 72 def dir=(new_dir) @dir = new_dir Dir.chdir new_dir end
set_buffers(buffers)
click to toggle source
# File lib/diakonos/sessions.rb, line 41 def set_buffers(buffers) @buffers = buffers.reject { |buffer| buffer.name.nil? }.collect { |buffer| { 'filepath' => buffer.name, 'read_only' => buffer.read_only, 'cursor' => { 'row' => buffer.last_row, 'col' => buffer.last_col, }, 'display' => { 'top_line' => buffer.top_line, 'left_column' => buffer.left_column }, 'last_search_regexps' => buffer.last_search_regexps.map { |r| r.to_s }, } }.compact end
set_readline_histories(rlh_general, rlh_files, rlh_search, rlh_shell, rlh_help, rlh_sessions)
click to toggle source
# File lib/diakonos/sessions.rb, line 61 def set_readline_histories(rlh_general, rlh_files, rlh_search, rlh_shell, rlh_help, rlh_sessions) @readline_histories = { 'general' => rlh_general, 'files' => rlh_files, 'search' => rlh_search, 'shell' => rlh_shell, 'help' => rlh_help, 'sessions' => rlh_sessions, } end
to_yaml()
click to toggle source
# File lib/diakonos/sessions.rb, line 29 def to_yaml { 'filename' => @filename, 'settings' => @settings, 'name' => @name, 'buffer_current' => @buffer_current, 'dir' => @dir, 'buffers' => @buffers, 'readline_histories' => @readline_histories }.to_yaml end