diff options
author | Joe Wilm <joe@jwilm.com> | 2018-05-19 11:18:37 -0700 |
---|---|---|
committer | Joe Wilm <joe@jwilm.com> | 2018-06-02 09:56:50 -0700 |
commit | c61a912f6221a320ec4787cd883527b0e7f26a8e (patch) | |
tree | 6eed1e00673b08885b57d5f5d8c24738b49758e4 /scripts | |
parent | 4b1a3b1e929bbf580de7106a688043bb44523a7f (diff) | |
download | alacritty-c61a912f6221a320ec4787cd883527b0e7f26a8e.tar.gz alacritty-c61a912f6221a320ec4787cd883527b0e7f26a8e.zip |
Optimize Row::reset
Now, only cells that have been used are cleared. This is achieved by
using a "occupied" memo on the Row itself. The value, `occ`, is updated
wherever the Row is accessed mutably, and it's cleared to zero in
Row::reset.
The tests for grid scroll_up and scroll_down were updated to include a
test on the value `occ` and slightly refactored, but are otherwise
equivalent to the previous implementation of those tests.
Because of the change to the `Row` struct, the ref tests were updated so
Deserialization keeps working as expected.
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/migrate_ref_tests.rb | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/scripts/migrate_ref_tests.rb b/scripts/migrate_ref_tests.rb index b6c89bfe..5ed02893 100755 --- a/scripts/migrate_ref_tests.rb +++ b/scripts/migrate_ref_tests.rb @@ -3,18 +3,31 @@ require 'json' Dir.glob('./tests/ref/**/grid.json').each do |path| + puts "Migrating #{path}" + # Read contents s = File.open(path) { |f| f.read } # Parse grid = JSON.parse(s) - # Check if it's already migrated / make this migration idempotent - next if grid['raw'][0][0].is_a? Array + # Normalize Storage serialization + if grid['raw'].is_a? Array + grid['raw'] = { + 'inner' => grid['raw'][0], + 'zero' => grid['raw'][1], + 'visible_lines' => grid['raw'][2] + } + end - # Transform - grid['raw'].reverse! - grid['raw'] = [grid['raw'], 0, grid['lines'] - 1] + # Migrate Row serialization + grid['raw']['inner'].map! do |row| + if row.is_a? Hash + row + else + { inner: row, occ: row.length } + end + end # Write updated grid File.open(path, 'w') { |f| f << JSON.generate(grid) } |