53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
# File 'lib/texta.rb', line 53
def process(node)
case node.name
when "meta", "link", "style"
""
when "b", "strong"
"**" + children(node).join(" ") + "**"
when "i", "em"
"_" + children(node).join(" ") + "_"
when "u", "span", "font"
children(node).join(" ")
when "p", "div"
children(node).join(" ") + "\n"
when "br"
"\n"
when "a"
return ""
return "" unless node["href"]
"[" + children(node).join(" ") + "]" + "(" + node["href"] + ")"
when /h([1-2])/
char = $1 == "1" ? "=" : "-"
s = children(node).join(" ")
"#{s}\n" + char * [ [s.length, 6].min, 32 ].max + "\n\n"
when /h([1-6])/
"#" * $1.to_i + " " + children(node).join(" ") + "\n\n"
when "img"
alt = node["alt"]
alt = nil if alt == ""
alt = node["title"] if !alt
if alt && alt != ""
"[#{alt}]"
end
when "text"
s = node.to_s.gsub(/(^\s+)|(\s+$)/, "")
s == "" ? nil : s
when "table"
children(node).join("")
when "tr"
children(node).join(" ") + "\n"
when "th"
"**" + children(node).join(" ") + "**"
when "td"
children(node).join(" ")
when "ul"
children(node).map { |s| "- #{s}\n" }.join + "\n"
when "li"
children(node).join(" ")
when "comment"
""
else
raise Error, "node <#{node.name}>"
end
end
|