Sha256: fe68dc1b04b6b27680f2fafdbb8bb3e32675a948e83035f20348060cc77a9144
Contents?: true
Size: 1.39 KB
Versions: 2
Compression:
Stored size: 1.39 KB
Contents
require 'nokogiri' require_relative '../core_ext.rb' module Vamper class VersionConfigFile def self.get_default_file File.join(File.dirname(__FILE__), 'default.version.config') end 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 end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
code-tools-5.0.1 | lib/vamper/version_config_file.rb |
code-tools-5.0.0 | lib/vamper/version_config_file.rb |