class Syntropy::Module
def export(ref)
def export(ref) @__export_value__ = ref end
def import(ref)
def import(ref) @loader.load(ref) end
def initialize(env)
def initialize(env) @env = env end
def page_list(ref)
def page_list(ref) full_path = File.join(@env[:location], ref) raise 'Not a directory' if !File.directory?(full_path) Dir[File.join(full_path, '*.md')].sort.map { atts, markdown = Syntropy.parse_markdown_file(it, @env) { atts:, markdown: } } end
def prepare(loader:, env:)
def prepare(loader:, env:) @loader = loader @env = env const_set(:MODULE, self) end
def route_by_host(map = nil)
def route_by_host(map = nil) root = @env[:location] sites = Dir[File.join(root, '*')] .reject { File.basename(it) =~ /^_/ } .select { File.directory?(it) } .each_with_object({}) { |fn, h| name = File.basename(fn) opts = @env.merge(location: fn) h[name] = Syntropy::App.new(opts[:machine], opts[:location], opts[:mount_path], opts) } map&.each do |k, v| sites[k] = sites[v] end lambda { |req| site = sites[req.host] site ? site.call(req) : req.respond(nil, ':status' => Status::BAD_REQUEST) } end
def template(&block)
def template(&block) Papercraft.html(&block) end