class VueApp::Core::Builders::SlimBuilder

Slim builder

Public Class Methods

new(env = :development) click to toggle source

Create a Slim builder for a specific environment @param [Symbol] env @raise [VueApp::Errors::InvalidENV]

# File lib/vueapp/core/builders/slim_builder.rb, line 16
def initialize(env = :development)
  init_env(env)
end

Public Instance Methods

render_components() click to toggle source

Render components slim template @return [String]

# File lib/vueapp/core/builders/slim_builder.rb, line 22
def render_components
  components = ''
  slim_files.each do |slim_file|
    components += if development?
                    Slim::Template.new(slim_file, pretty: true).render
                  else
                    Slim::Template.new(slim_file).render
                  end
  end
  components
end

Private Instance Methods

base_layout() click to toggle source

Base layout filepath @return [Pathname]

# File lib/vueapp/core/builders/slim_builder.rb, line 64
def base_layout
  src_path.join('index.slim')
end
build_dev() click to toggle source
# File lib/vueapp/core/builders/slim_builder.rb, line 36
def build_dev
  timer_block(
    'Start [development] build for *.slim files',
    'SLIM time: '
  ) do
    File.open(index_file, 'w') do |file|
      file.write(
        Slim::Template.new(base_layout, pretty: true).render(self)
      )
    end
  end
end
build_production() click to toggle source
# File lib/vueapp/core/builders/slim_builder.rb, line 49
def build_production
  timer_block(
    'Start [production] build for *.slim files',
    'SLIM time: '
  ) do
    File.open(index_file, 'w') do |file|
      file.write(
        Slim::Template.new(base_layout).render(self)
      )
    end
  end
end
components_slim() click to toggle source

All *.slim files from [components] folder @return [Array<String>] all [*.slim] files

# File lib/vueapp/core/builders/slim_builder.rb, line 76
def components_slim
  Dir[src_path.join('components', '**', '*.slim').to_s]
end
index_file() click to toggle source

Index html filename @return [Pathname]

# File lib/vueapp/core/builders/slim_builder.rb, line 70
def index_file
  build_path.join('index.html')
end
pages_slim() click to toggle source

All *.slim files from [pages] folder @return [Array<String>] all [*.slim] files

# File lib/vueapp/core/builders/slim_builder.rb, line 82
def pages_slim
  Dir[src_path.join('pages', '**', '*.slim').to_s]
end
slim_files() click to toggle source

Get all [*.slim] file in the app path @return [Array<String>] all [*.slim] files

# File lib/vueapp/core/builders/slim_builder.rb, line 88
def slim_files
  components_slim + pages_slim
end