class Moonrope::DSL::StructureDSL
Attributes
conditions[RW]
@return [Array] conditions which should applied
groups[RW]
@return [Array] groups which should applied
options[RW]
@return [Hash] options
structure[R]
@return [Moonrope::Structure] the associated structure
Public Class Methods
new(structure)
click to toggle source
Initialize a new StructureDSL
@param structure [Moonrope::Structure]
# File lib/moonrope/dsl/structure_dsl.rb, line 24 def initialize(structure) @structure = structure @options = {} @groups = [] @conditions = [] end
Public Instance Methods
attribute(type, name, options_or_description = {}, options_if_description = {})
click to toggle source
# File lib/moonrope/dsl/structure_dsl.rb, line 62 def attribute(type, name, options_or_description = {}, options_if_description = {}) if options_or_description.is_a?(String) options_if_description[:description] = options_or_description options = options_if_description else options = options_or_description end attribute = StructureAttribute.new(type, name) attribute.description = options[:description] attribute.structure = options[:structure] attribute.structure_opts = options[:structure_opts] attribute.value_type = options[:type] attribute.source_attribute = options[:source_attribute] attribute.value = options[:value] attribute.example = options[:eg] || options[:example] attribute.doc = options[:doc] attribute.mutation = options[:mutation] attribute.groups = @groups attribute.conditions = @conditions @structure.attributes[type] << attribute end
basic(*args, &block)
click to toggle source
# File lib/moonrope/dsl/structure_dsl.rb, line 86 def basic(*args, &block) if block_given? @structure.basic = block else attribute(:basic, *args) end end
condition(condition, description = nil, &block)
click to toggle source
# File lib/moonrope/dsl/structure_dsl.rb, line 48 def condition(condition, description = nil, &block) scope_dsl = self.class.new(@structure) if condition.is_a?(Hash) && condition.size == 1 condition = {:authenticator => condition.first[0], :access_rule => condition.first[1]} elsif condition.is_a?(Symbol) condition = {:authenticator => :default, :access_rule => condition} else condition = {:block => condition, :description => description} end scope_dsl.conditions = [@conditions, condition].flatten scope_dsl.groups = @groups scope_dsl.instance_eval(&block) end
expansion(name, *args, &block)
click to toggle source
# File lib/moonrope/dsl/structure_dsl.rb, line 102 def expansion(name, *args, &block) if block_given? if args[0].is_a?(String) attrs = args[1] || {} attrs[:description] = args[0] elsif args[0].is_a?(Hash) attrs = atrs[0] else attrs = {} end @structure.expansions[name] = attrs.merge({:block => block, :conditions => @conditions}) else attribute(:expansion, name, *args) end end
full(*args, &block)
click to toggle source
# File lib/moonrope/dsl/structure_dsl.rb, line 94 def full(*args, &block) if block_given? @structure.full = block else attribute(:full, *args) end end
group(name, &block)
click to toggle source
# File lib/moonrope/dsl/structure_dsl.rb, line 41 def group(name, &block) scope_dsl = self.class.new(@structure) scope_dsl.groups = [@groups, name].flatten scope_dsl.conditions = @conditions scope_dsl.instance_eval(&block) end
no_doc!()
click to toggle source
# File lib/moonrope/dsl/structure_dsl.rb, line 31 def no_doc! @structure.doc = false end
scope(options = {}, &block)
click to toggle source
# File lib/moonrope/dsl/structure_dsl.rb, line 35 def scope(options = {}, &block) scope_dsl = self.class.new(@structure) scope_dsl.options = options scope_dsl.instance_eval(&block) end