0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

DSL Study in ruby4

Posted at

We use method.

events.rb
@a_target_sale = 0
@j_target_sale = 0
@a_sale = 0
@j_sale = 0

set_target_sales "set target_sales in America" do
  @a_target_sale = 50
end

set_target_sales "set target_sales in Japan" do
  @j_target_sale = 50
end

select_sales "select_sales in America" do
  @a_sale = 50
end

select_sales "select_sales in Japan" do
  @j_sale = 200
end

event "sales is enough in America" do
  @a_target_sale < @a_sale
end

event "sales is enough in Japan" do
  @j_target_sale < @j_sale
end

event "sales is soso in America" do
  @a_target_sale == @a_sale
end

event "sales is soso in Japan" do
  @j_target_sale == @j_sale
end

event "sales is not enough in America" do
  @a_target_sale > @a_sale
end

event "sales is not enough in Japan" do
  @j_target_sale > @j_sale
end
setup.rb
def event(description, &block)
  @events << {:description => description, :condition => block}
end

def select_sales(description, &block)
  @setups << {:description => description, :condition => block}
end

def set_target_sales(description, &block)
  @target_sales << {:description => description, :condition => block}
end

def each_event(&block)
  @events.each do |event|
    puts "----------START event: #{event[:description]}----------"
    block.call event
  end
end

def each_setup
  @setups.each do |setup|
    puts "#{setup[:description]}"
    setup[:condition].call
  end
end

def each_target_sale
  @target_sales.each do |target_sale|
    puts "START target_sale: #{target_sale[:description]}"
    target_sale[:condition].call
  end
end
act.rb
@events = []
@setups = []
@target_sales = []
load 'setup.rb'
load 'events.rb'

each_event do |event|
  each_target_sale
  each_setup
  puts "ALERT: #{event[:description]}" if event[:condition].call
end
ruby act.rb

Here are result.

----------START event: sales is enough in America----------
START target_sale: set target_sales in America
START target_sale: set target_sales in Japan
select_sales in America
select_sales in Japan
----------START event: sales is enough in Japan----------
START target_sale: set target_sales in America
START target_sale: set target_sales in Japan
select_sales in America
select_sales in Japan
ALERT: sales is enough in Japan
----------START event: sales is soso in America----------
START target_sale: set target_sales in America
START target_sale: set target_sales in Japan
select_sales in America
select_sales in Japan
ALERT: sales is soso in America
----------START event: sales is soso in Japan----------
START target_sale: set target_sales in America
START target_sale: set target_sales in Japan
select_sales in America
select_sales in Japan
----------START event: sales is not enough in America----------
START target_sale: set target_sales in America
START target_sale: set target_sales in Japan
select_sales in America
select_sales in Japan
----------START event: sales is not enough in Japan----------
START target_sale: set target_sales in America
START target_sale: set target_sales in Japan
select_sales in America
select_sales in Japan

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?