From 31e53046bd35b83027f8a8e1ab99a6eceb4e6a3c Mon Sep 17 00:00:00 2001 From: icebaker Date: Mon, 8 Jan 2024 21:41:30 -0300 Subject: adding support to markdown cartridges --- controllers/cartridges.rb | 28 +++++++++++++++++----------- controllers/instance.rb | 7 ++----- 2 files changed, 19 insertions(+), 16 deletions(-) (limited to 'controllers') diff --git a/controllers/cartridges.rb b/controllers/cartridges.rb index df474a9..7215a99 100644 --- a/controllers/cartridges.rb +++ b/controllers/cartridges.rb @@ -3,16 +3,21 @@ require_relative '../components/storage' require_relative '../logic/helpers/hash' require_relative '../logic/cartridge/default' +require_relative '../logic/cartridge/parser' module NanoBot module Controllers class Cartridges + def self.load(path) + Logic::Cartridge::Parser.parse(File.read(path), format: File.extname(path)) + end + def self.all files = {} path = Components::Storage.cartridges_path - Dir.glob("#{path}/**/*.{yml,yaml}").each do |file| + Dir.glob("#{path}/**/*.{yml,yaml,markdown,mdown,mkdn,md}").each do |file| files[Pathname.new(file).realpath] = { base: path, path: Pathname.new(file).realpath @@ -22,16 +27,17 @@ module NanoBot cartridges = [] files.values.uniq.map do |file| - cartridge = Logic::Helpers::Hash.symbolize_keys( - YAML.safe_load_file(file[:path], permitted_classes: [Symbol]) - ).merge({ - system: { - id: file[:path].to_s.sub(/^#{Regexp.escape(file[:base])}/, '').sub(%r{^/}, '').sub(/\.[^.]+\z/, - ''), - path: file[:path], - base: file[:base] - } - }) + cartridge = load_cartridge(file[:path]).merge( + { + system: { + id: file[:path].to_s.sub( + /^#{Regexp.escape(file[:base])}/, '' + ).sub(%r{^/}, '').sub(/\.[^.]+\z/, ''), + path: file[:path], + base: file[:base] + } + } + ) next if cartridge[:meta][:name].nil? diff --git a/controllers/instance.rb b/controllers/instance.rb index 259a548..85b97ec 100644 --- a/controllers/instance.rb +++ b/controllers/instance.rb @@ -1,11 +1,10 @@ # frozen_string_literal: true -require 'yaml' - require_relative '../logic/helpers/hash' require_relative '../components/provider' require_relative '../components/storage' require_relative '../components/stream' +require_relative 'cartridges' require_relative 'interfaces/repl' require_relative 'interfaces/eval' require_relative 'session' @@ -83,13 +82,11 @@ module NanoBot raise StandardError, "Cartridge file not found: \"#{path}\"" end - @cartridge = YAML.safe_load_file(elected_path, permitted_classes: [Symbol]) + @cartridge = Cartridges.load(elected_path) end @safe_cartridge = Marshal.load(Marshal.dump(@cartridge)) - @cartridge = Logic::Helpers::Hash.symbolize_keys(@cartridge) - inject_environment_variables!(@cartridge) end -- cgit v1.2.3