Class: Albacore::NugetModel::Metadata
- Inherits:
-
Object
- Object
- Albacore::NugetModel::Metadata
- Extended by:
- Logging
- Includes:
- Logging
- Defined in:
- lib/albacore/nuget_model.rb
Overview
the nuget xml metadata element writer
Instance Attribute Summary collapse
-
#set_fields ⇒ Object
readonly
gets the field symbols that have been set.
Class Method Summary collapse
- .from_xml(node) ⇒ Object
- .nuspec_field(*syms) ⇒ Object
- .pascal_case(str) ⇒ Object
- .underscore(str) ⇒ Object
Instance Method Summary collapse
-
#add_dependency(id, version) ⇒ Object
add a dependency to the package; id and version.
-
#add_framework_dependency(id, version) ⇒ Object
add a framework dependency for the package.
-
#initialize(dependencies = nil, framework_assemblies = nil) ⇒ Metadata
constructor
initialise a new package data object.
- #merge_with(other) ⇒ Object
- #to_s ⇒ Object
-
#to_xml ⇒ Object
transform the data structure to the corresponding xml.
- #to_xml_builder ⇒ Object
Methods included from Logging
debug, err, error, fatal, info, puts, trace, warn
Constructor Details
#initialize(dependencies = nil, framework_assemblies = nil) ⇒ Metadata
initialise a new package data object
113 114 115 116 117 118 119 120 |
# File 'lib/albacore/nuget_model.rb', line 113 def initialize dependencies = nil, framework_assemblies = nil @set_fields = Set.new @dependencies = dependencies || Hash.new @framework_assemblies = framework_assemblies || Hash.new debug "creating new metadata with dependencies: #{dependencies} [nuget model: metadata]" unless dependencies.nil? debug "creating new metadata (same as prev) with fw asms: #{framework_assemblies} [nuget model: metadata]" unless framework_assemblies.nil? end |
Instance Attribute Details
#set_fields ⇒ Object (readonly)
gets the field symbols that have been set
110 111 112 |
# File 'lib/albacore/nuget_model.rb', line 110 def set_fields @set_fields end |
Class Method Details
.from_xml(node) ⇒ Object
185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 |
# File 'lib/albacore/nuget_model.rb', line 185 def self.from_xml node m = Metadata.new node.children.reject { |n| n.text? }.each do |n| if n.name == 'dependencies' n.children.reject { |n| n.text? }.each do |dep| m.add_dependency dep['id'], dep['version'] end elsif n.name == 'frameworkDepdendencies' n.children.reject { |n| n.text? }.each do |dep| m.add_framework_depdendency dep['id'], dep['version'] end else # just set the property m.send(:"#{underscore n.name}=", n.inner_text) end end m end |
.nuspec_field(*syms) ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/albacore/nuget_model.rb', line 34 def self.nuspec_field *syms syms.each do |sym| self.class_eval( %{def #{sym} @#{sym} end}) self.class_eval( %{def #{sym}= val @#{sym} = val @set_fields.add? :#{sym} end}) end end |
.pascal_case(str) ⇒ Object
204 205 206 207 208 |
# File 'lib/albacore/nuget_model.rb', line 204 def self.pascal_case str str = str.to_s unless str.respond_to? :split str = str.split('_').inject([]){ |buffer,e| buffer.push(buffer.empty? ? e : e.capitalize) }.join :"#{str}" end |
.underscore(str) ⇒ Object
210 211 212 213 214 215 216 |
# File 'lib/albacore/nuget_model.rb', line 210 def self.underscore str str.gsub(/::/, '/'). gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2'). gsub(/([a-z\d])([A-Z])/,'\1_\2'). tr("-", "_"). downcase end |
Instance Method Details
#add_dependency(id, version) ⇒ Object
add a dependency to the package; id and version
123 124 125 |
# File 'lib/albacore/nuget_model.rb', line 123 def add_dependency id, version @dependencies[id] = IdVersion.new id, version end |
#add_framework_dependency(id, version) ⇒ Object
add a framework dependency for the package
128 129 130 |
# File 'lib/albacore/nuget_model.rb', line 128 def add_framework_dependency id, version @framework_assemblies[id] = IdVersion.new id, version end |
#merge_with(other) ⇒ Object
153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 |
# File 'lib/albacore/nuget_model.rb', line 153 def merge_with other raise ArgumentError, 'other is nil' if other.nil? raise ArgumentError, 'other is wrong type' unless other.is_a? Metadata trace { "#{self} merging with #{other} [nuget model: metadata]" } deps = @dependencies.clone.merge(other.dependencies) fw_asms = @framework_assemblies.clone.merge(other.framework_assemblies) m_next = Metadata.new deps, fw_asms # set all my fields to the new instance @set_fields.each do |field| debug "setting field '#{field}' to be '#{send(field)}' [nuget model: metadata]" m_next.send(:"#{field}=", send(field)) end # set all other's fields to the new instance, overriding mine other.set_fields.each do |field| debug "setting field '#{field}' to be '#{send(field)}' [nuget model: metadata]" m_next.send(:"#{field}=", other.send(field)) end m_next end |
#to_s ⇒ Object
179 180 181 |
# File 'lib/albacore/nuget_model.rb', line 179 def to_s "NugetModel::Metadata(#{ @set_fields.map { |f| "#{f}=#{send(f)}" }.join(', ') })" end |
#to_xml ⇒ Object
transform the data structure to the corresponding xml
149 150 151 |
# File 'lib/albacore/nuget_model.rb', line 149 def to_xml to_xml_builder.to_xml end |
#to_xml_builder ⇒ Object
132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 |
# File 'lib/albacore/nuget_model.rb', line 132 def to_xml_builder # alt: new(encoding: 'utf-8') Nokogiri::XML::Builder.new do |x| x. { @set_fields.each do |f| x.send(Metadata.pascal_case(f), send(f)) end x.dependencies { @dependencies.each { |k, d| x.dependency id: d.id, version: d.version } } } end end |