Class: Apress::Documentation::Dsl::BaseCompiler
- Inherits:
-
Object
- Object
- Apress::Documentation::Dsl::BaseCompiler
- Defined in:
- lib/apress/documentation/dsl/compilers/base_compiler.rb
Overview
Private: AbstractClass Базовы класс компилятора DSL
задает DSL для настройки DSL (Xzibit style)
Direct Known Subclasses
Instance Attribute Summary collapse
-
#target ⇒ Object
readonly
Public: Объект в который будут заполняться поля чере DSL.
Class Method Summary collapse
-
.setters(*method_names) ⇒ Object
Public: Основной метод, задает какие поля объект DSL-класса будет записивать в target.
Instance Method Summary collapse
-
#compile(fields, &block) ⇒ Object
Public: Осуществляет исполнение DSL и заполняет нужные поля в target.
-
#initialize(target) ⇒ BaseCompiler
constructor
A new instance of BaseCompiler.
Constructor Details
#initialize(target) ⇒ BaseCompiler
Returns a new instance of BaseCompiler.
11 12 13 |
# File 'lib/apress/documentation/dsl/compilers/base_compiler.rb', line 11 def initialize(target) @target = target end |
Instance Attribute Details
#target ⇒ Object (readonly)
Public: Объект в который будут заполняться поля чере DSL
9 10 11 |
# File 'lib/apress/documentation/dsl/compilers/base_compiler.rb', line 9 def target @target end |
Class Method Details
.setters(*method_names) ⇒ Object
Public: Основной метод, задает какие поля объект DSL-класса будет записивать в target
16 17 18 19 20 21 22 |
# File 'lib/apress/documentation/dsl/compilers/base_compiler.rb', line 16 def self.setters(*method_names) method_names.each do |name| send :define_method, name do |value| @target.send("#{name}=", value) end end end |
Instance Method Details
#compile(fields, &block) ⇒ Object
Public: Осуществляет исполнение DSL и заполняет нужные поля в target
25 26 27 28 |
# File 'lib/apress/documentation/dsl/compilers/base_compiler.rb', line 25 def compile(fields, &block) @target.assign(fields) instance_eval(&block) if block_given? end |