Module: Duxml
- Includes:
- Saxer
- Included in:
- ElementGuts, Grammar, History, Pattern, PatternMaker, RelaxNG
- Defined in:
- lib/duxml.rb,
lib/duxml/doc.rb,
lib/duxml/meta.rb,
lib/duxml/saxer.rb,
lib/duxml/doc/element.rb,
lib/duxml/doc/lazy_ox.rb,
lib/duxml/doc/node_set.rb,
lib/duxml/meta/grammar.rb,
lib/duxml/meta/history.rb,
lib/duxml/meta/history/add.rb,
lib/duxml/meta/grammar/rule.rb,
lib/duxml/meta/history/undo.rb,
lib/duxml/meta/history/error.rb,
lib/duxml/meta/history/change.rb,
lib/duxml/meta/history/remove.rb,
lib/duxml/meta/grammar/pattern.rb,
lib/duxml/meta/grammar/relax_ng.rb,
lib/duxml/meta/history/new_attr.rb,
lib/duxml/meta/history/new_text.rb,
lib/duxml/meta/grammar/spreadsheet.rb,
lib/duxml/meta/history/change_attr.rb,
lib/duxml/meta/history/change_text.rb,
lib/duxml/meta/grammar/pattern_maker.rb,
lib/duxml/meta/history/qualify_error.rb,
lib/duxml/meta/grammar/rule/text_rule.rb,
lib/duxml/meta/history/validate_error.rb,
lib/duxml/meta/grammar/rule/attrs_rule.rb,
lib/duxml/meta/grammar/rule/value_rule.rb,
lib/duxml/meta/grammar/rule/children_rule.rb,
lib/duxml/meta/grammar/relax_ng/attrs_rule.rb,
lib/duxml/meta/grammar/relax_ng/value_rule.rb,
lib/duxml/meta/grammar/pattern/text_pattern.rb,
lib/duxml/meta/grammar/pattern/child_pattern.rb,
lib/duxml/meta/grammar/relax_ng/children_rule.rb,
lib/duxml/meta/grammar/pattern/attr_val_pattern.rb,
lib/duxml/meta/grammar/pattern/attr_name_pattern.rb
Defined Under Namespace
Modules: Add, AttrNamePattern, AttrValPattern, AttrsRule, Change, ChangeAttr, ChangeText, ChildPattern, ChildrenRule, ElementGuts, Error, Grammar, History, LazyOx, Meta, NewAttr, NewText, Pattern, PatternMaker, QualifyError, RelaxNG, Remove, RngAttrsRule, RngChildrenRule, RngValueRule, Rule, Saxer, Spreadsheet, TextPattern, TextRule, Undo, ValidateError, ValueRule Classes: AddClass, AttrNamePatternClass, AttrValPatternClass, AttrsRuleClass, ChangeAttrClass, ChangeClass, ChangeTextClass, ChildPatternClass, ChildrenRuleClass, Doc, Element, ErrorClass, GrammarClass, HistoryClass, MetaClass, NewAttrClass, NewTextClass, NodeSet, NullChildPatternClass, PatternClass, QualifyErrorClass, RemoveClass, RuleClass, TextPatternClass, TextRuleClass, UndoClass, ValidateErrorClass, ValueRuleClass
Instance Attribute Summary collapse
-
#doc ⇒ Object
readonly
Returns the value of attribute doc.
Attributes included from Saxer
Instance Method Summary collapse
-
#load(_file, grammar_path = nil) ⇒ Doc
XML document as Ruby object.
- #log(file) ⇒ Object
- #save(file, xml = doc) ⇒ Object
-
#validate(path_or_doc, options = {}) ⇒ Boolean
Whether file passed validation.
Methods included from Saxer
Instance Attribute Details
#doc ⇒ Object (readonly)
Returns the value of attribute doc.
11 12 13 |
# File 'lib/duxml.rb', line 11 def doc @doc end |
Instance Method Details
#load(_file, grammar_path = nil) ⇒ Doc
Returns XML document as Ruby object.
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/duxml.rb', line 16 def load(_file, grammar_path=nil) = Meta.(_file) if File.exists?() = Ox.parse_obj(File.read ) .grammar = grammar_path unless grammar_path.nil? or .grammar.defined? else = MetaClass.new(grammar_path) end if File.exists?(_file) @doc = sax(_file, .history) else @doc = Doc.new @doc.path = _file doc.delete_observers if doc.count_observers > 0 and doc.observer_peers.first.object_id != .history.object_id doc.add_observer .history if doc.count_observers < 1 end doc. end |
#log(file) ⇒ Object
47 48 49 |
# File 'lib/duxml.rb', line 47 def log(file) File.write(file, .history.description) end |
#save(file, xml = doc) ⇒ Object
40 41 42 43 44 |
# File 'lib/duxml.rb', line 40 def save(file, xml=doc) @doc = xml.respond_to?(:root) ? xml : Doc.new << xml doc.write_to file File.write(Meta.(file), Ox.dump(doc., circular: true)) end |
#validate(path_or_doc, options = {}) ⇒ Boolean
Returns whether file passed validation.
54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/duxml.rb', line 54 def validate(path_or_doc, ={}) doc = path_or_doc.is_a?(Doc) ? path_or_doc : load(path_or_doc) unless doc.grammar.defined? raise Exception, "grammar not defined!" unless [:grammar] doc.grammar = [:grammar] end raise Exception, "XML document has no root element!" unless doc.root results = [] doc.root.traverse do |n| results << doc.grammar.validate(n) unless n.is_a?(String) end puts(doc.history.description) unless [:quiet] !results.any? do |r| !r end end |