class TracerySymbol

Attributes

isDynamic[RW]

Public Class Methods

new(grammar, key, rawRules) click to toggle source
# File lib/tracery.rb, line 481
def initialize(grammar, key, rawRules)
    # Symbols can be made with a single value, and array, or array of objects of (conditions/values)
    @key = key
    @grammar = grammar
    @rawRules = rawRules
    
    @baseRules = RuleSet.new(@grammar, @rawRules)
    clearState
end

Public Instance Methods

clearState() click to toggle source
# File lib/tracery.rb, line 491
def clearState
    # Clear the stack and clear all ruleset usages
    @stack = [@baseRules]
    @uses = []
    @baseRules.clearState
end
getActiveRules() click to toggle source
# File lib/tracery.rb, line 516
def getActiveRules
    return nil if @stack.empty?
    return @stack.last.selectRule 
end
popRules() click to toggle source
# File lib/tracery.rb, line 503
def popRules
    @stack.pop
end
pushRules(rawRules) click to toggle source
# File lib/tracery.rb, line 498
def pushRules(rawRules)
    rules = RuleSet.new(@grammar, rawRules)
    @stack.push rules
end
rulesToJSON() click to toggle source
# File lib/tracery.rb, line 521
def rulesToJSON
    return @rawRules.to_json
end
selectRule(node, errors) click to toggle source
# File lib/tracery.rb, line 507
def selectRule(node, errors)
    @uses.push({ node: node })
    if(@stack.empty?) then
        errors << "The rule stack for '#{@key}' is empty, too many pops?"
        return "((#{@key}))"
    end
    return @stack.last.selectRule
end