Class: XbelGenerator
- Defined in:
- ext/ruby/qtruby/examples/xml/saxbookmarks/xbelgenerator.rb
Constant Summary collapse
- IndentSize =
4
Instance Method Summary collapse
- #escapedAttribute(str) ⇒ Object
- #escapedText(str) ⇒ Object
- #generateItem(item, depth) ⇒ Object
- #indent(depth) ⇒ Object
-
#initialize(treeWidget) ⇒ XbelGenerator
constructor
A new instance of XbelGenerator.
- #write(device) ⇒ Object
Constructor Details
#initialize(treeWidget) ⇒ XbelGenerator
Returns a new instance of XbelGenerator.
30 31 32 33 |
# File 'ext/ruby/qtruby/examples/xml/saxbookmarks/xbelgenerator.rb', line 30 def initialize(treeWidget) @treeWidget = treeWidget @outf = Qt::TextStream.new end |
Instance Method Details
#escapedAttribute(str) ⇒ Object
62 63 64 65 66 |
# File 'ext/ruby/qtruby/examples/xml/saxbookmarks/xbelgenerator.rb', line 62 def escapedAttribute(str) result = escapedText(str) result.gsub!("\"", """) return '"' + result + '"' end |
#escapedText(str) ⇒ Object
54 55 56 57 58 59 60 |
# File 'ext/ruby/qtruby/examples/xml/saxbookmarks/xbelgenerator.rb', line 54 def escapedText(str) result = str result.gsub!("&", "&") result.gsub!("<", "<") result.gsub!(">", ">") return result end |
#generateItem(item, depth) ⇒ Object
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
# File 'ext/ruby/qtruby/examples/xml/saxbookmarks/xbelgenerator.rb', line 68 def generateItem(item, depth) tagName = item.data(0, Qt::UserRole).toString() if tagName == "folder" folded = !@treeWidget.isItemExpanded(item) @outf << indent(depth) << "<folder folded=\"" << (folded ? "yes" : "no") << "\">\n" << indent(depth + 1) << "<title>" << escapedText(item.text(0)) << "</title>\n" for i in 0...item.childCount() generateItem(item.child(i), depth + 1) end @outf << indent(depth) << "</folder>\n" elsif tagName == "bookmark" @outf << indent(depth) << "<bookmark" if !item.text(1).empty? @outf << " href=" << escapedAttribute(item.text(1)) end @outf << ">\n" << indent(depth + 1) << "<title>" << escapedText(item.text(0)) << "</title>\n" << indent(depth) << "</bookmark>\n" elsif tagName == "separator" @outf << indent(depth) << "<separator/>\n" end end |
#indent(depth) ⇒ Object
50 51 52 |
# File 'ext/ruby/qtruby/examples/xml/saxbookmarks/xbelgenerator.rb', line 50 def indent(depth) return " " * (IndentSize * depth) end |
#write(device) ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'ext/ruby/qtruby/examples/xml/saxbookmarks/xbelgenerator.rb', line 35 def write(device) @outf.device = device @outf.codec = "UTF-8" @outf << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" << "<!DOCTYPE xbel>\n" << "<xbel version=\"1.0\">\n" for i in 0...@treeWidget.topLevelItemCount() generateItem(@treeWidget.topLevelItem(i), 1) end @outf << "</xbel>\n" return true end |