From 82e759174bc8fcd8fd070a8b379adcdaa048e7cd Mon Sep 17 00:00:00 2001 From: John MacFarlane Date: Sat, 22 Nov 2014 08:17:52 -0800 Subject: commonmark.rb - added walk, an iterator that walks the AST. --- commonmark.rb | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) (limited to 'commonmark.rb') diff --git a/commonmark.rb b/commonmark.rb index f52f082..dca7a3c 100755 --- a/commonmark.rb +++ b/commonmark.rb @@ -36,7 +36,7 @@ module CMark end class Node - attr_accessor :type, :children, :string_content, :header_level, + attr_accessor :type, :children, :parent, :string_content, :header_level, :list_type, :list_start, :list_tight, :url, :title def initialize(pointer) if pointer.null? @@ -45,10 +45,13 @@ class Node @pointer = pointer @type = CMark::cmark_node_get_type(pointer) @children = [] + @parent = nil first_child = CMark::cmark_node_first_child(pointer) b = first_child while !b.null? - @children << Node.new(b) + child = Node.new(b) + child.parent = self + @children << child b = CMark::cmark_node_next(b) end @string_content = CMark::cmark_node_get_string_content(pointer) @@ -71,6 +74,13 @@ class Node end end + def walk(&blk) + yield self + self.children.each do |child| + child.walk(&blk) + end + end + def self.parse_string(s) Node.new(CMark::cmark_parse_document(s, s.bytesize)) end @@ -80,6 +90,7 @@ class Node self.parse_string(s) end + protected def free CMark::cmark_free_nodes(@pointer) end @@ -324,6 +335,13 @@ class HtmlRenderer < Renderer end doc = Node.parse_file(ARGF) +doc.walk do |node| + if node.type == :link + printf("URL = %s\n", node.url) + printf("parent is %s\n", node.parent.type) + end +end + renderer = HtmlRenderer.new(STDOUT) renderer.render(doc) renderer.warnings.each do |w| -- cgit v1.2.3 rm>
path: root/tags/fe/ad
diff options
context:
space:
mode:
Diffstat (limited to 'tags/fe/ad')
-rw-r--r--tags/fe/ad/002901c662e2%2440390f10%24bb65a8c0@terry/dgih0
-rw-r--r--tags/fe/ad/1077299022.4036474e6bbe3@mail.jones.dk/inbox0
-rw-r--r--tags/fe/ad/1077299022.4036474e6bbe3@mail.jones.dk/old0
-rw-r--r--tags/fe/ad/1077299022.4036474e6bbe3@mail.jones.dk/replied0
-rw-r--r--tags/fe/ad/1541407557.2.0@smtp.puri.sm/unread0
-rw-r--r--tags/fe/ad/20080713220016.GA11326@sth.sze.hu/debian0
-rw-r--r--tags/fe/ad/20131210052531.92D8438381@slamuf.jones.dk/jones0
-rw-r--r--tags/fe/ad/20131210052531.92D8438381@slamuf.jones.dk/sys0
-rw-r--r--tags/fe/ad/20180408210002.9406893F@lxp5.free-owl.de/sys0
-rw-r--r--tags/fe/ad/20180408210002.9406893F@lxp5.free-owl.de/unread0
-rw-r--r--tags/fe/ad/20180415130002.A2F429311@lxp5.free-owl.de/sys0
-rw-r--r--tags/fe/ad/20180415130002.A2F429311@lxp5.free-owl.de/unread0
-rw-r--r--tags/fe/ad/20180813110001.7A1411CD3F7@lxp5.free-owl.de/sys0
-rw-r--r--tags/fe/ad/20180813110001.7A1411CD3F7@lxp5.free-owl.de/unread0
-rw-r--r--tags/fe/ad/20210923163003.3ADEA1A6@jawa.homebase.dk/hb0
-rw-r--r--tags/fe/ad/20210923163003.3ADEA1A6@jawa.homebase.dk/sys0
-rw-r--r--tags/fe/ad/20210923163003.3ADEA1A6@jawa.homebase.dk/unread0
-rw-r--r--tags/fe/ad/2flegotgvmk.fsf@diskless.uio.no/debian0
-rw-r--r--tags/fe/ad/2flegotgvmk.fsf@diskless.uio.no/unread0
-rw-r--r--tags/fe/ad/459A2665.1070200@jones.dk/debian0
-rw-r--r--tags/fe/ad/459A2665.1070200@jones.dk/sent0
-rw-r--r--tags/fe/ad/5091fbad-af11-e3b4-c515-ab42d03da793@me.com/dgih0
-rw-r--r--tags/fe/ad/5091fbad-af11-e3b4-c515-ab42d03da793@me.com/hb0
-rw-r--r--tags/fe/ad/5091fbad-af11-e3b4-c515-ab42d03da793@me.com/inbox0
-rw-r--r--tags/fe/ad/5091fbad-af11-e3b4-c515-ab42d03da793@me.com/old0
-rw-r--r--tags/fe/ad/5136DD53-0C05-4C77-8463-F717345CA8A4@kaospilot.dk/hb0
-rw-r--r--tags/fe/ad/5136DD53-0C05-4C77-8463-F717345CA8A4@kaospilot.dk/unread0
-rw-r--r--tags/fe/ad/87sm59zqpm.fsf@becket.becket.net/debian0
-rw-r--r--tags/fe/ad/87sm59zqpm.fsf@becket.becket.net/inbox0
-rw-r--r--tags/fe/ad/87sm59zqpm.fsf@becket.becket.net/old0
-rw-r--r--tags/fe/ad/87tv76j9s7.fsf@hope.eyrie.org/debian0
-rw-r--r--tags/fe/ad/87tv76j9s7.fsf@hope.eyrie.org/unread0
-rw-r--r--tags/fe/ad/986f38490908071654y284fa911k5d442bdc9507430e@mail.gmail.com/sugar0
-rw-r--r--tags/fe/ad/986f38490908071654y284fa911k5d442bdc9507430e@mail.gmail.com/unread0
-rw-r--r--tags/fe/ad/f6c7f330-2f21-11e4-bca1-00163eeb5320@msgid.mathom.us/debian0
35 files changed, 0 insertions, 0 deletions