Class: Raka
- Inherits:
-
Object
- Object
- Raka
- Defined in:
- lib/raka.rb
Overview
initialize raka
Constant Summary collapse
Instance Attribute Summary collapse
-
#logger ⇒ Object
readonly
Returns the value of attribute logger.
Instance Method Summary collapse
- #create_logger(level) ⇒ Object
- #define_token_creator(ext, ext_alias = nil) ⇒ Object
-
#initialize(env, options) ⇒ Raka
constructor
A new instance of Raka.
- #scope(*names, &block) ⇒ Object
- #stem(path) ⇒ Object
Constructor Details
#initialize(env, options) ⇒ Raka
Returns a new instance of Raka.
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/raka.rb', line 41 def initialize(env, ) @env = env defaults = { output_types: [:csv], input_types: nil, type_aliases: {}, scopes: [], lang: ['lang/shell'], user_lang: [] } @options = = OpenStruct.new(defaults.merge()) create_logger .log_level || (ENV['LOG_LEVEL'] || Logger::INFO).to_i # if input_types given, obey it, otherwise use all output types as possible input types unless @options.input_types @options.input_types = @options.output_types # any output can be used as intermediate end # specify root of scopes in options, scopes will append to each root @scopes = .scopes.empty? ? [] : [.scopes] @options.lang.each { |path| load File::join(File::dirname(__FILE__), "raka/#{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 |
Instance Attribute Details
#logger ⇒ Object (readonly)
Returns the value of attribute logger.
13 14 15 |
# File 'lib/raka.rb', line 13 def logger @logger end |
Instance Method Details
#create_logger(level) ⇒ Object
15 16 17 18 19 20 21 |
# File 'lib/raka.rb', line 15 def create_logger(level) @env.define_singleton_method :logger do logger = Logger.new(STDOUT) logger.level = level logger end end |
#define_token_creator(ext, ext_alias = nil) ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/raka.rb', line 23 def define_token_creator(ext, ext_alias = nil) # closures env = @env = @options scopes = @scopes @env.define_singleton_method(ext_alias || ext) do |*args, **kw| # 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, ), Context.new(ext, scopes.clone), [], inline_scope_pattern, **kw ) end end |
#scope(*names, &block) ⇒ Object
69 70 71 72 73 |
# File 'lib/raka.rb', line 69 def scope(*names, &block) @scopes.push(names) block.call @scopes.pop end |
#stem(path) ⇒ Object
75 76 77 |
# File 'lib/raka.rb', line 75 def stem(path) File.basename(path, File.extname(path)) end |