Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- require 'builder'
- puts "start"
- lambda { |root, result_path|
- result = File.open(result_path, 'w')
- @xml = Builder::XmlMarkup.new(:target => result, :indent => 2)
- @xml.instruct!
- @template_tree = {}
- def parse_directory(path)
- Dir.foreach path do |d|
- if File.file?(f = path + d)
- if d =~ /.\.asp$/
- @template_tree[f] ||= []
- file = File.open(f, "r")
- while line = file.gets
- if line =~ /<!--.*#include.*-->/
- @template_tree[f] << path + Regexp.last_match(0)[/".*"/].slice(2..-2)
- end
- end
- file.close
- end
- else
- parse_directory "#{path}#{d}/" if (d != '.' && d != '..')
- end
- end
- end
- puts "parse files..."
- parse_directory(root)
- handle_templates = proc do|v|
- @xml.template(path: v) do
- @template_tree[v].each do |key,value|
- @xml.template(path: key) do
- value.each do |v|
- handle_templates.call v
- end if value && value.length > 0
- end
- end if @template_tree[v] && @template_tree[v].length > 0
- end
- end
- puts "generating xml..."
- @xml.templates do
- @template_tree.each do |key,value|
- @xml.template(path: key) do
- value.each do |v|
- handle_templates.call v
- end if value && value.length > 0
- end
- end
- end
- result.close
- }.call 'F:/rb_incom-realty.ru/', 'F:/tree.xml'
- puts "finish"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement