Code view:

A painting is a person's account of this edit as text, recorded independently of the node mapping - a rendering often has several equally defensible answers where the mapping has one. Deletions and insertions carry no position on the opposite side in a painting, so that panel draws no caret for them.

Before

1# frozen_string_literal: true
2
3module Jekyll
4 class LayoutReader
5 attr_reader :site
6 def initialize(site)
7 @site = site
8 @layouts = {}
9 end
10
11 def read
12 layout_entries.each do |layout_file|
13 @layouts[layout_name(layout_file)] = \
14 Layout.new(site, layout_directory, layout_file)
15 end
16
17 theme_layout_entries.each do |layout_file|
18 @layouts[layout_name(layout_file)] ||= \
19 Layout.new(site, theme_layout_directory, layout_file)
20 end
21
22 @layouts
23 end
24
25 def layout_directory
26 @layout_directory ||= site.in_source_dir(site.config["layouts_dir"])
27 end
28
29 def theme_layout_directory
30 @theme_layout_directory ||= site.theme.layouts_path if site.theme
31 end
32
33 private
34
35 def layout_entries
36 entries_in layout_directory
37 end
38
39 def theme_layout_entries
40 theme_layout_directory ? entries_in(theme_layout_directory) : []
41 end
42
43 def entries_in(dir)
44 entries = []
45 within(dir) do
46 entries = EntryFilter.new(site).filter(Dir["**/*.*"])
47 end
48 entries
49 end
50
51 def layout_name(file)
52 file.split(".")[0..-2].join(".")
53 end
54
55 def within(directory)
56 return unless File.exist?(directory)
57
58 Dir.chdir(directory) { yield }
59 end
60 end
61end
62

After

1# frozen_string_literal: true
2
3module Jekyll
4 class LayoutReader
5 attr_reader :site
6
7 def initialize(site)
8 @site = site
9 @layouts = {}
10 end
11
12 def read
13 layout_entries.each do |layout_file|
14 @layouts[layout_name(layout_file)] = \
15 Layout.new(site, layout_directory, layout_file)
16 end
17
18 theme_layout_entries.each do |layout_file|
19 @layouts[layout_name(layout_file)] ||= \
20 Layout.new(site, theme_layout_directory, layout_file)
21 end
22
23 @layouts
24 end
25
26 def layout_directory
27 @layout_directory ||= site.in_source_dir(site.config["layouts_dir"])
28 end
29
30 def theme_layout_directory
31 @theme_layout_directory ||= site.theme.layouts_path if site.theme
32 end
33
34 private
35
36 def layout_entries
37 entries_in layout_directory
38 end
39
40 def theme_layout_entries
41 theme_layout_directory ? entries_in(theme_layout_directory) : []
42 end
43
44 def entries_in(dir)
45 entries = []
46 within(dir) do
47 entries = EntryFilter.new(site).filter(Dir["**/*.*"])
48 end
49 entries
50 end
51
52 def layout_name(file)
53 file.split(".")[0..-2].join(".")
54 end
55
56 def within(directory)
57 return unless File.exist?(directory)
58
59 Dir.chdir(directory) { yield }
60 end
61 end
62end
63

Before

program
comment "# frozen_string_literal: true"
module (+311 nodes collapsed)

After

program
comment "# frozen_string_literal: true"
module (+311 nodes collapsed)