Sha256: c049930e60c80a0920bf69e05bf8d19dd7668481acfdf1cb4c7486f517ea5c1f
Contents?: true
Size: 1.93 KB
Versions: 4
Compression:
Stored size: 1.93 KB
Contents
# frozen_string_literal: true require 'logger' require_relative './compile' require_relative './protocol' require_relative './token' # initialize raka class Raka Pattern = Pattern attr_reader :logger def create_logger(level) @env.define_singleton_method :logger do logger = Logger.new(STDOUT) logger.level = level logger end end def define_token_creator(ext, ext_alias = nil) # closures env = @env options = @options scopes = @scopes @env.define_singleton_method(ext_alias || ext) do |*args| # Here the compiler are bound with @options so that when we change @options # using methods like scope in Rakefile, the subsequent rules defined will honor # the new settings # clone to fix the scopes when defining rule inline_scope_pattern = !args.empty? ? args[0] : nil Token.new( DSLCompiler.new(env, options), Context.new(ext, scopes.clone), [], inline_scope_pattern ) end end def initialize(env, options) @env = env defaults = { output_types: [:csv], input_types: [], type_aliases: {}, scopes: [], lang: ['lang/shell'], user_lang: [] } @options = options = OpenStruct.new(defaults.merge(options)) create_logger options.log_level || (ENV['LOG_LEVEL'] || Logger::INFO).to_i @options.input_types |= @options.output_types # any output can be used as intermediate # specify root of scopes in options, scopes will append to each root @scopes = options.scopes.empty? ? [] : [options.scopes] @options.lang.each { |path| load File::join(File::dirname(__FILE__), "#{path}/impl.rb") } @options.user_lang.each { |path| load path.to_s + '.rb' } # These are where the dsl starts @options.output_types.each do |ext| define_token_creator(ext, @options.type_aliases[ext]) end end def scope(*names, &block) @scopes.push(names) block.call @scopes.pop end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
raka-0.3.3 | lib/raka.rb |
raka-0.3.2 | lib/raka.rb |
raka-0.3.1 | lib/raka.rb |
raka-0.2.3 | lib/raka.rb |