Module: CodeModels::Xml

Defined in:
lib/codemodels/xml/parser.rb,
lib/codemodels/xml/version.rb,
lib/codemodels/xml/language.rb,
lib/codemodels/xml/metamodel.rb

Defined Under Namespace

Classes: Attribute, Document, Element, Namespace, Parser, Text, XmlAstNode, XmlLanguage

Constant Summary collapse

DefaultParser =
Parser.new
VERSION =
"0.1.2"

Class Method Summary collapse

Class Method Details

.jsonize_doc(doc) ⇒ Object



110
111
112
113
114
115
116
117
# File 'lib/codemodels/xml/parser.rb', line 110

def self.jsonize_doc(doc)
    map = {}
    map['namespaces'] = doc.namespaces
    map['version'] = doc.version
    map['encoding'] = doc.encoding
    map['root'] = jsonize_node(doc.root)
    map
end

.jsonize_node(node) ⇒ Object



73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
# File 'lib/codemodels/xml/parser.rb', line 73

def self.jsonize_node(node)
    map = {}
    
    map['name'] = node.name
    map['blank'] = node.blank?
    map['cdata'] = node.cdata?
    map['comment'] = node.comment?
    map['content'] = node.content
    map['fragment'] = node.fragment?
    map['is_text'] = node.text?
    map['text'] = node.text
    map['type'] = node.type

    namespaces = []
    node.namespace_definitions.each do |n|
            namespaces << { 'href' => n.href, 'prefix' => n.prefix}
    end
    map['namespaces'] = namespaces

    attrs = []
    node.attribute_nodes.each do |a|
            attr_map = {}
            attr_map['value'] = a.value
            attr_map['name'] = a.name
            attrs << attr_map
    end
    map['attributes'] = attrs

    children = []
    node.children.each do |c|
            children << jsonize_node(c)
    end
    map['children'] = children 

    map
end