Class: BuildTool::Cfg::FeatureNodeVisitor

Inherits:
ConfigurationFileVisitor show all
Defined in:
lib/build-tool/cfg/visitor.rb

Instance Attribute Summary

Attributes inherited from VisitorBase

#configuration

Instance Method Summary collapse

Methods inherited from ConfigurationFileVisitor

#visit_LogDirectoryNode

Methods inherited from StatementVisitor

#visit_BuildSystemDeclarationNode, #visit_ConfigurationFileList, #visit_DisableFeatureNode, #visit_DisableModuleNode, #visit_EnableFeatureNode, #visit_EnableModuleNode, #visit_EnvironmentDeclarationNode, #visit_IncludeNode, #visit_ModuleDeclarationNode, #visit_RepositoryDeclarationNode, #visit_ServerDeclarationNode, #visit_SshKeyDeclarationNode

Methods inherited from ListVisitor

#visit, #visit_nodes

Constructor Details

#initialize(configuration) ⇒ FeatureNodeVisitor

Returns a new instance of FeatureNodeVisitor.



254
255
256
257
# File 'lib/build-tool/cfg/visitor.rb', line 254

def initialize( configuration )
    super( configuration )
    @feature = nil
end

Instance Method Details

#visit_FeatureNode(node) ⇒ Object

Raises:



259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
# File 'lib/build-tool/cfg/visitor.rb', line 259

def visit_FeatureNode( node )
    raise ArgumentsError if node.values.length != 2
    childs = node.values
    # Get the name if nested
    name = childs.shift
    if configuration.active_feature
       @feature = configuration.feature( "#{configuration.active_feature.name}/#{name}" )
    else
       @feature = configuration.feature( name )
    end
    # Create a new feature if needed
    if @feature.nil?
        @feature = BuildTool::Feature.new( name, configuration.active_feature )
        configuration.add_feature( @feature )
    end
    # Set it as the current feature
    old_feat = configuration.active_feature
    configuration.active_feature= @feature
    # Visit the childs
    visit_nodes( childs.shift )
    # Reset the old current feature
    configuration.active_feature = old_feat
end

#visit_LongDescriptionNode(node) ⇒ Object



283
284
285
286
287
288
# File 'lib/build-tool/cfg/visitor.rb', line 283

def visit_LongDescriptionNode( node )
    if @feature.long_description
        logger.warn "Overwriting long description for feature #{@feature.name}"
    end
    @feature.long_description = node.values
end

#visit_ShortDescriptionNode(node) ⇒ Object



290
291
292
293
294
295
# File 'lib/build-tool/cfg/visitor.rb', line 290

def visit_ShortDescriptionNode( node )
    if !@feature.description.nil?
        logger.warn "Overwriting short description for feature #{@feature.name}"
    end
    @feature.description = node.values
end