Sha256: b823ac80dfbd11b40799c80f8caf6b8fd564215447a7effc3b99ceb470b80dd5

Contents?: true

Size: 1.42 KB

Versions: 9

Compression:

Stored size: 1.42 KB

Contents

require_relative '../faml'
require 'thor'

module Faml
  class CLI < Thor
    package_name 'faml'

    desc 'render FILE', 'Render haml template'
    option :format, type: :string, default: :html, desc: 'HTML format'
    def render(file)
      code = compile_file(file, format: options[:format].to_sym)
      puts instance_eval(code, file)
    end

    desc 'compile FILE', 'Compile haml template'
    option :format, type: :string, default: :html, desc: 'HTML format'
    def compile(file)
      puts compile_file(file, format: options[:format].to_sym)
    end

    desc 'temple FILE', 'Render temple AST'
    option :format, type: :string, default: :html, desc: 'HTML format'
    def temple(file)
      require 'pp'
      pp Faml::Compiler.new(filename: file, format: options[:format].to_sym).call(parse_file(file))
    end

    desc 'stats FILE/DIR ...', 'Show statistics'
    def stats(*paths)
      require_relative 'stats'
      Stats.new(*paths).report
    end

    desc 'version', 'Print version'
    option :numeric, type: :boolean, default: false, desc: 'Print version number only'
    def version
      if options[:numeric]
        puts VERSION
      else
        puts "faml #{VERSION}"
      end
    end

    private

    def compile_file(file, opts)
      Faml::Engine.new(opts.merge(filename: file)).call(File.read(file))
    end

    def parse_file(file)
      HamlParser::Parser.new(filename: file).call(File.read(file))
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
faml-0.5.1 lib/faml/cli.rb
faml-0.5.0 lib/faml/cli.rb
faml-0.4.2 lib/faml/cli.rb
faml-0.4.1 lib/faml/cli.rb
faml-0.4.0 lib/faml/cli.rb
faml-0.3.6 lib/faml/cli.rb
faml-0.3.5 lib/faml/cli.rb
faml-0.3.4 lib/faml/cli.rb
faml-0.3.3 lib/faml/cli.rb