Class: Middleman::RemoveIndent::Extension

Inherits:
Extension
  • Object
show all
Defined in:
lib/middleman-remove-indent/extension.rb

Overview

Middleman Remove Indent Extension

Instance Method Summary collapse

Constructor Details

#initialize(app, options_hash = {}, &block) ⇒ Extension

Returns a new instance of Extension.



8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/middleman-remove-indent/extension.rb', line 8

def initialize(app, options_hash = {}, &block)
  super
  extension = self
  build_dir = app.config.build_dir
  exts      = options.exts
  exts      = Array(exts) if exts.instance_of? String

  app.after_build do
    targets = extension.target_files(build_dir, exts)
    extension.update_file!(targets)
  end
end

Instance Method Details

#remove_indent(line) ⇒ Object



42
43
44
45
# File 'lib/middleman-remove-indent/extension.rb', line 42

def remove_indent(line)
  line.gsub!(/^(\s|\t)+/, '')
  (line.empty? && !options.remove_blank_line) ? "\n" : line
end

#target_files(dir, exts) ⇒ Object



21
22
23
24
25
26
27
# File 'lib/middleman-remove-indent/extension.rb', line 21

def target_files(dir, exts)
  paths = []
  exts.each do |ext|
    paths.concat(Dir.glob(dir + "/**/*#{ext}"))
  end
  paths
end

#update_file!(target_files) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/middleman-remove-indent/extension.rb', line 29

def update_file!(target_files)
  target_files.each do |file|
    open(file) do |f|
      data = []
      f.each_line do |line|
        line = remove_indent(line)
        data.push(line)
      end
      File.write(file, data.join)
    end
  end
end