class Patter::Pattern

Public Class Methods

new(pattern, source_provider = SourceProvider.instance) click to toggle source
# File lib/patter/pattern.rb, line 19
def initialize(pattern, source_provider = SourceProvider.instance)
    @pattern = pattern
    @source_provider = source_provider
end

Public Instance Methods

to_s() click to toggle source
# File lib/patter/pattern.rb, line 24
def to_s
    @pattern.gsub(/\{([#{TAGS.keys.join}])(:(\w+))?\}/) do
        tag, modifiers = $1, $3
        source = @source_provider.get_source(TAGS[tag])

        next source.get_sample if !modifiers

        re = /([#{MODIFIERS.keys.join}])|([0-9]+)/
        chain = []
        n = 1

        modifiers.split(re).reject(&:empty?).each do |modifier|
            if modifier =~ /([0-9]+)/
                n = $1.to_i
            end

            if MODIFIERS[modifier]
                chain << MODIFIERS[modifier]
            end
        end

        source.get_samples(n).map do |sample|
            sample.transform(chain)
        end.join
    end
end