Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions bin/console
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,11 @@ require_relative "../lib/fun-ruby"

require_relative "../tooling/generators/module"

class Container
extend F::Container::DSL

namespace :math do
f(:sum) { ->(x, y) { x + y}}
end
end
IRB.start(__FILE__)
1 change: 1 addition & 0 deletions lib/fun_ruby.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

require_relative "fun_ruby/container"
require_relative "fun_ruby/container/define"
require_relative "fun_ruby/container/dsl"

# Top-level namespace
module FunRuby
Expand Down
32 changes: 32 additions & 0 deletions lib/fun_ruby/container/dsl.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# frozen_string_literal: true

require "forwardable"

module FunRuby
module Container
# Holds DSL for allowing using in classes/modules
module DSL
def_delegator :_fun_ruby_define_api, :function, :f, :namespace

def [](key)
_fun_ruby_resolve_api.call(key0)
end

private

def _fun_ruby_container
@_fun_ruby_container ||= Container.new(
Config.new(override: true)
)
end

def _fun_ruby_define_api
@_fun_ruby_define_api ||= Define.build(_fun_ruby_container)
end

def _fun_ruby_resolve_api
@_fun_ruby_resolve_api ||= Resolve.build(_fun_ruby_container)
end
end
end
end