diff options
author | icebaker <113217272+icebaker@users.noreply.github.com> | 2023-05-13 18:54:17 -0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-05-13 18:54:17 -0300 |
commit | 9103778fe438ad4b0c90dce60bf77fc812290fc4 (patch) | |
tree | d5d815cae646002f4833439d07c36bf9c1f68ed7 /components | |
parent | a1950c8eb3b55759b0cdcc7716c88b99d0173f2d (diff) | |
parent | 1fbdb24fff7cd84b5506cb0c7092fdcdc867ec12 (diff) |
Merge pull request #2 from icebaker/ib-adapters
adding support for adapters
Diffstat (limited to 'components')
-rw-r--r-- | components/adapter.rb | 40 | ||||
-rw-r--r-- | components/storage.rb | 4 |
2 files changed, 42 insertions, 2 deletions
diff --git a/components/adapter.rb b/components/adapter.rb new file mode 100644 index 0000000..b906a27 --- /dev/null +++ b/components/adapter.rb @@ -0,0 +1,40 @@ +# frozen_string_literal: true + +require 'sweet-moon' + +module NanoBot + module Components + class Adapter + def self.apply(_direction, params) + content = params[:content] + + if params[:fennel] && params[:lua] + raise StandardError, 'Adapter conflict: You can only use either Lua or Fennel, not both.' + end + + if params[:fennel] + content = fennel(content, params[:fennel]) + elsif params[:lua] + content = lua(content, params[:lua]) + end + + "#{params[:prefix]}#{content}#{params[:suffix]}" + end + + def self.fennel(content, expression) + path = "#{File.expand_path('../static/fennel', __dir__)}/?.lua" + state = SweetMoon::State.new(package_path: path).fennel + state.fennel.eval("(set _G.adapter (fn [content] #{expression}))") + adapter = state.get(:adapter) + adapter.call([content]) + end + + def self.lua(content, expression) + state = SweetMoon::State.new + state.eval("adapter = function(content) return #{expression}; end") + adapter = state.get(:adapter) + adapter.call([content]) + end + end + end +end diff --git a/components/storage.rb b/components/storage.rb index d46455f..bdf0efe 100644 --- a/components/storage.rb +++ b/components/storage.rb @@ -43,7 +43,7 @@ module NanoBot partial = File.join(File.dirname(partial), File.basename(partial, File.extname(partial))) - partial = path.sub(%r{^\.?/}, '') + partial = partial.sub(%r{^\.?/}, '') candidates << "#{directory}/#{partial}" candidates << "#{directory}/#{partial}.yml" @@ -54,7 +54,7 @@ module NanoBot partial = File.join(File.dirname(partial), File.basename(partial, File.extname(partial))) - partial = path.sub(%r{^\.?/}, '') + partial = partial.sub(%r{^\.?/}, '') candidates << "#{directory}/#{partial}" candidates << "#{directory}/#{partial}.yml" |