class Ellipses::Client::Source
Attributes
series[R]
server[R]
Public Class Methods
new(lines, series, server)
click to toggle source
# File lib/ellipses/client/source.rb, line 10 def initialize(lines, series, server) @lines = lines @series = series || [] @server = server end
Private Class Methods
from_file(file, config, series = nil)
click to toggle source
# File lib/ellipses/client/source.rb, line 63 def from_file(file, config, series = nil) lines = File.readlines(Support.file!(file, error: Error)).lazy new lines, series, Server::Application.new(config.paths) end
Public Instance Methods
compile()
click to toggle source
# 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
decompile()
click to toggle source
# 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
lines()
click to toggle source
# File lib/ellipses/client/source.rb, line 16 def lines @lines.is_a?(Lines) ? @lines : (@lines = Lines.new @lines.to_a) end
recompile()
click to toggle source
# File lib/ellipses/client/source.rb, line 38 def recompile decompile compile end
Private Instance Methods
execute(line, **kwargs)
click to toggle source
# File lib/ellipses/client/source.rb, line 45 def execute(line, **kwargs) raise Error, "No directive found: #{line}" unless (parsed = Parser.parse(line)) directive = Directive.new(parsed.lexemes, server) outlines = directive.execute(**kwargs) outlines.map! { |outline| Support.prefixize_non_blank(outline, parsed.prefix, excludes: "\f\f\f") } Lines[outlines] end
execute_and_record(line, **kwargs)
click to toggle source
# File lib/ellipses/client/source.rb, line 56 def execute_and_record(line, **kwargs) result = execute(line, **kwargs) series << Meta::Lock.new(directive: line, insertion: result.insertion_by_entropy) result end