Class: Stupidedi::Versions::FunctionalGroups::ThirtyFifty::SyntaxNotes::P

Inherits:
Schema::SyntaxNote show all
Defined in:
lib/stupidedi/versions/functional_groups/003050/syntax_notes.rb

Overview

Paired or Multiple: if any element specified in the relational condition is present, then all of the elements specified must be present.

Instance Attribute Summary

Attributes inherited from Schema::SyntaxNote

#indexes

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Schema::SyntaxNote

#errors, #initialize, #satisfied?

Constructor Details

This class inherits a constructor from Stupidedi::Schema::SyntaxNote

Class Method Details

.build(*args) ⇒ Object



39
40
41
# File 'lib/stupidedi/versions/functional_groups/003050/syntax_notes.rb', line 39

def build(*args)
  new(args)
end

Instance Method Details

#forbidden(zipper) ⇒ Object



27
28
29
# File 'lib/stupidedi/versions/functional_groups/003050/syntax_notes.rb', line 27

def forbidden(zipper)
  []
end

#reason(zipper) ⇒ Object



31
32
33
34
35
# File 'lib/stupidedi/versions/functional_groups/003050/syntax_notes.rb', line 31

def reason(zipper)
  present = indexes.select{|n| zipper.child(n - 1).node.present? }
  missing = indexes - present
  "elements #{missing.join(", ")} must be present when elements #{present.join(", ")} are present"
end

#required(zipper) ⇒ Object



18
19
20
21
22
23
24
25
# File 'lib/stupidedi/versions/functional_groups/003050/syntax_notes.rb', line 18

def required(zipper)
  if zipper.node.present?
    xs = children(zipper)
    xs.any?{|x| x.node.present? } ? xs : []
  else
    []
  end
end