emacs frontend tests
[augment.git] / lib / layer.rb
blob3a07fec69550596d9bb1b7ba15ac0c1ae20308ad
1 require 'json'
3 class Layer
4   def initialize(range, color, message)
5     range = (range.split('...').first.to_i ... range.split('...').last.to_i) if range.is_a? String
6     @attrs = { 'range' => range, 'color' => color, 'message' => message}
7   end
9   def self.read(original_file)
10     JSON.parse(File.read(Augment.augment_path(original_file))).map{ |l| Layer.new(l['range'], l['color'], l['message']) }.sort_by{ |l| l['range'].begin }.reverse
11   end
13   def self.line_to_char_range(file, line)
14     file = File.read(file).split("\n")
15     start = file[0 ... line - 1].join("\n").size + 2
16     (start ... start + file[line - 1].size)
17   end
19   def to_json
20     @attrs.to_json
21   end
23   def [](attr)
24     @attrs[attr]
25   end
26 end