mirror of
https://github.com/discourse/discourse.git
synced 2024-12-24 03:43:44 +08:00
3d4faf3272
Automation (previously known as discourse-automation) is now a core plugin.
37 lines
849 B
Ruby
37 lines
849 B
Ruby
# frozen_string_literal: true
|
|
|
|
require "rails_helper"
|
|
|
|
def capture_contexts(&blk)
|
|
DiscourseAutomation::CapturedContext.capture(&blk)
|
|
end
|
|
|
|
module DiscourseAutomation::CapturedContext
|
|
def self.add(context)
|
|
@contexts << context if @capturing
|
|
end
|
|
|
|
def self.capture
|
|
raise StandardError, "Nested capture is not supported" if @capturing
|
|
raise StandardError, "Expecting a block" if !block_given?
|
|
@capturing = true
|
|
@contexts = []
|
|
yield
|
|
@contexts
|
|
ensure
|
|
@capturing = false
|
|
end
|
|
end
|
|
|
|
DiscourseAutomation::Scriptable.add("something_about_us") do
|
|
script do |context|
|
|
DiscourseAutomation::CapturedContext.add(context)
|
|
nil
|
|
end
|
|
triggerables [DiscourseAutomation::Triggers::API_CALL]
|
|
end
|
|
|
|
DiscourseAutomation::Scriptable.add("nothing_about_us") do
|
|
triggerables [DiscourseAutomation::Triggers::API_CALL]
|
|
end
|