Class: Ellipses::Client::Source

Inherits:
Object
  • Object
show all
Defined in:
lib/ellipses/client/source.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(lines, series, server) ⇒ Source

Returns a new instance of Source.



10
11
12
13
14
# File 'lib/ellipses/client/source.rb', line 10

def initialize(lines, series, server)
  @lines  = lines
  @series = series || []
  @server = server
end

Instance Attribute Details

#seriesObject (readonly)

Returns the value of attribute series.



8
9
10
# File 'lib/ellipses/client/source.rb', line 8

def series
  @series
end

#serverObject (readonly)

Returns the value of attribute server.



8
9
10
# File 'lib/ellipses/client/source.rb', line 8

def server
  @server
end

Class Method Details

.from_file(file, paths, series = nil) ⇒ Object



63
64
65
66
# File 'lib/ellipses/client/source.rb', line 63

def from_file(file, paths, series = nil)
  lines = File.readlines(Support.file!(file, error: Error)).lazy
  new lines, series, Server::Application.new(paths)
end

Instance Method Details

#compileObject



28
29
30
31
32
33
34
35
36
# File 'lib/ellipses/client/source.rb', line 28

def compile
  new_lines = Lines[]

  lines.each do |line|
    new_lines.append(*(Parser.match?(line) ? execute_and_record(line) : line))
  end

  @lines = new_lines
end

#decompileObject



20
21
22
23
24
25
26
# File 'lib/ellipses/client/source.rb', line 20

def decompile
  return if series.empty?

  while (lock = series.shift)
    lines.substitute_uniq_like_chunk!(lock.insertion, lock.directive)
  end
end

#linesObject



16
17
18
# File 'lib/ellipses/client/source.rb', line 16

def lines
  @lines.is_a?(Lines) ? @lines : (@lines = Lines.new @lines.to_a)
end

#recompileObject



38
39
40
41
# File 'lib/ellipses/client/source.rb', line 38

def recompile
  decompile
  compile
end