Sha256: ea38f590cf86130fa8f39cd7a1d2d4206406c1fbaffbef1e5e8f20c55237957c
Contents?: true
Size: 1.21 KB
Versions: 3
Compression:
Stored size: 1.21 KB
Contents
require 'nokogiri' require_relative '../core_ext.rb' class VersionConfigFile def initialize(io, tags) doc = Nokogiri::XML(io) @file_types = [] doc.xpath('/VersionConfig/FileType').each do |node| file_type_struct = Struct.new(:name, :file_specs, :updates, :write) search_replace_struct = Struct.new(:search, :replace) file_type = file_type_struct.new file_type.name = node.name file_type.file_specs = node.xpath('FileSpec').map { |sub_node| Regexp.new('^' + Regexp::escape(sub_node.text).gsub('\\*', '.*').gsub('\\?', '.') + '$') } update_node_set = node.xpath('Update') if update_node_set # Replace ${...} entries in the replace string with equivalent tags if available file_type.updates = update_node_set.map { |sub_node| s_and_r = search_replace_struct.new( %r(#{sub_node.at_xpath('Search').text.gsub(/\(\?'(\w+)'/, '(?<\\1>')}), sub_node.at_xpath('Replace').text.replace_tags(tags)) } end write_node = node.at_xpath('Write') if write_node file_type.write = write_node.text.replace_tags(tags) end @file_types.push(file_type) end end attr_reader :file_types end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
code_tools-4.2.1 | lib/vamper/version_config_file.rb |
code_tools-4.2.0 | lib/vamper/version_config_file.rb |
code_tools-4.1.0 | lib/vamper/version_config_file.rb |