Class: Nori
- Inherits:
-
Object
show all
- Defined in:
- lib/nori.rb,
lib/nori/version.rb,
lib/nori/parser/rexml.rb,
lib/nori/string_utils.rb,
lib/nori/core_ext/hash.rb,
lib/nori/string_io_file.rb,
lib/nori/parser/nokogiri.rb,
lib/nori/xml_utility_node.rb,
lib/nori/string_with_attributes.rb
Defined Under Namespace
Modules: CoreExt, Parser, StringUtils
Classes: StringIOFile, StringWithAttributes, XMLUtilityNode
Constant Summary
collapse
- PARSERS =
{ :rexml => "REXML", :nokogiri => "Nokogiri" }
- VERSION =
'2.7.1'
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(options = {}) ⇒ Nori
Returns a new instance of Nori.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
# File 'lib/nori.rb', line 16
def initialize(options = {})
defaults = {
:strip_namespaces => false,
:delete_namespace_attributes => false,
:convert_tags_to => nil,
:convert_attributes_to => nil,
:empty_tag_value => nil,
:advanced_typecasting => true,
:convert_dashes_to_underscores => true,
:scrub_xml => true,
:parser => :nokogiri
}
validate_options! defaults.keys, options.keys
@options = defaults.merge(options)
end
|
Class Method Details
.hash_key(name, options = {}) ⇒ Object
7
8
9
10
11
12
|
# File 'lib/nori.rb', line 7
def self.hash_key(name, options = {})
name = name.tr("-", "_") if options[:convert_dashes_to_underscores]
name = name.split(":").last if options[:strip_namespaces]
name = options[:convert_tags_to].call(name) if options[:convert_tags_to].respond_to? :call
name
end
|
Instance Method Details
#find(hash, *path) ⇒ Object
33
34
35
36
37
38
39
40
41
|
# File 'lib/nori.rb', line 33
def find(hash, *path)
return hash if path.empty?
key = path.shift
key = self.class.hash_key(key, @options)
value = find_value(hash, key)
find(value, *path) if value
end
|
#parse(xml) ⇒ Object
43
44
45
46
47
48
49
|
# File 'lib/nori.rb', line 43
def parse(xml)
cleaned_xml = scrub_xml(xml).strip
return {} if cleaned_xml.empty?
parser = load_parser @options[:parser]
parser.parse(cleaned_xml, @options)
end
|