Sha256: 5c375fac312aa9c7a9460811e559a8829666171a1fddc844c6e5a5b1da124dc1

Contents?: true

Size: 1.2 KB

Versions: 1

Compression:

Stored size: 1.2 KB

Contents

require 'yaml'
module JohnDoe

  class Aiml
    attr_accessor :rules,:patterns,:responses, :default, :knowledge, :emotions
    def initialize
      @rules = []
      @patterns = {}
      @responses = []
      @default = []
      @knowledge = []
      @emotions = {}
    end

    def load(filename)
      data= YAML::load_file(filename)
      collect_data data
      @default = data['default']
      @knowledge = data['knowledge']
      normalise_default
    end

    protected

    def collect_data(data)
      data.keys.each do |category|
        next if category == "default" || category == "knowledge"
        collection = data[category]
        responses = collection['responses'].collect{|k,v| v}
        @responses.push(responses)
        emotions = (collection["emotion"].split("|") rescue ["none"])
        puts emotions.inspect
        collection['patterns'].each{|k,v| @patterns[normalise_pattern(v)] = { :resp => (@responses.size - 1), :emotions => emotions}}
      end
    end

    def normalise_default
      @default.keys.each do |key|
        @default[key]= @default[key].map{|k,v| v}
      end
    end
    def normalise_pattern(pattern)
      pattern.gsub("*",".*").gsub("$","([^\n\?!.$]*)")
    end

  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
john-doe-0.1.0 lib/johndoe/aiml.rb