Class: Chatterbot::Skeleton
- Inherits:
-
Object
- Object
- Chatterbot::Skeleton
- Defined in:
- lib/chatterbot/skeleton.rb
Overview
bot template generator
Class Method Summary collapse
-
.apply_vars(s, args) ⇒ Object
handle string interpolation in ruby 1.8.
- .generate(bot) ⇒ Object
Class Method Details
.apply_vars(s, args) ⇒ Object
handle string interpolation in ruby 1.8. modified from raw.github.com/svenfuchs/i18n/master/lib/i18n/core_ext/string/interpolate.rb
:nocov:
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/chatterbot/skeleton.rb', line 33 def apply_vars(s, args) pattern = Regexp.union( /%\{(\w+)\}/, # matches placeholders like "%{foo}" /%<(\w+)>(.*?\d*\.?\d*[bBdiouxXeEfgGcps])/ # matches placeholders like "%<foo>.d" ) pattern_with_escape = Regexp.union( /%%/, pattern ) s.gsub(pattern_with_escape) do |match| if match == '%%' '%' else key = ($1 || $2).to_sym raise KeyError unless args.has_key?(key) $3 ? sprintf("%#{$3}", args[key]) : args[key] end end end |
.generate(bot) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/chatterbot/skeleton.rb', line 7 def generate(bot) path = File.join(Chatterbot.libdir, "..", "templates", "skeleton.txt") src = File.read(path) puts bot.config.inspect opts = bot.config.merge({ :name => bot.botname, :timestamp => Time.now }) puts opts.inspect if RUBY_VERSION =~ /^1\.8\./ #:nocov: apply_vars(src, opts) #:nocov: else src % opts end end |