Module: Duxml::RngAttrsRule
- Includes:
- LazyOx, Ox
- Included in:
- AttrsRuleClass
- Defined in:
- lib/duxml/meta/grammar/relax_ng/attrs_rule.rb,
lib/duxml/meta/grammar/relax_ng/attrs_rule.rb
Instance Method Summary collapse
-
#relaxng(parent) ⇒ Nokogiri::XML::Node
Parent, but with additions of
to parent if does not already exist and to respective .
Methods included from LazyOx
Dynamic Method Handling
This class handles dynamic methods through the method_missing method in the class Duxml::LazyOx
Instance Method Details
#relaxng(parent) ⇒ Nokogiri::XML::Node
Returns parent, but with additions of
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/duxml/meta/grammar/relax_ng/attrs_rule.rb', line 20 def relaxng(parent) # TODO this is here just to skip generation from namespaced attributes - fix later!!! return parent if attr_name.include?(':') # TODO # if new attribute declaration needed unless parent.Define(name: attr_name).any? new_def = Element.new('define') new_def[:name] = attr_name new_attr_def = Element.new('attribute') new_attr_def[:name] = attr_name new_def << new_attr_def parent << new_def end # update doc with ref, updating previous <optional> if available parent.nodes.reverse.each do |define| if define[:name] == subject element_def = define.nodes.first if requirement == '#REQUIRED' cur_element = element_def else if element_def.nodes.any? and element_def.nodes.last.name == 'optional' cur_element = element_def.nodes.last else cur_element = Element.new('optional') element_def << cur_element end end # if self[:requirement]=='#REQUIRED' new_ref = Element.new('ref') new_ref[:name] = attr_name cur_element << new_ref break end # if define[:name] == subject end # parent.element_children.any? parent end |