main
1# frozen_string_literal: true
2
3module Saml
4 module Kit
5 # This module is responsible for
6 # providing an API to build a
7 # document object, xml, or builder class.
8 module Buildable
9 extend ActiveSupport::Concern
10
11 class_methods do
12 def build(*args, **kwargs)
13 builder(*args, **kwargs) do |builder|
14 yield builder if block_given?
15 end.build
16 end
17
18 def build_xml(*args, **kwargs)
19 builder(*args, **kwargs) do |builder|
20 yield builder if block_given?
21 end.to_xml
22 end
23
24 def builder(*args, **kwargs)
25 builder_class.new(*args, **kwargs).tap do |builder|
26 yield builder if block_given?
27 end
28 end
29 end
30 end
31 end
32end