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
116 117 118 119 120 121 122 123 |
# File 'lib/albacore/nuget_model.rb', line 116 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
113 114 115 |
# File 'lib/albacore/nuget_model.rb', line 113 def set_fields @set_fields end |
Class Method Details
.from_xml(node) ⇒ Object
188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 |
# File 'lib/albacore/nuget_model.rb', line 188 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
37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/albacore/nuget_model.rb', line 37 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
207 208 209 210 211 |
# File 'lib/albacore/nuget_model.rb', line 207 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
213 214 215 216 217 218 219 |
# File 'lib/albacore/nuget_model.rb', line 213 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
126 127 128 |
# File 'lib/albacore/nuget_model.rb', line 126 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
131 132 133 |
# File 'lib/albacore/nuget_model.rb', line 131 def add_framework_dependency id, version @framework_assemblies[id] = IdVersion.new id, version end |
#merge_with(other) ⇒ Object
156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 |
# File 'lib/albacore/nuget_model.rb', line 156 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
182 183 184 |
# File 'lib/albacore/nuget_model.rb', line 182 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
152 153 154 |
# File 'lib/albacore/nuget_model.rb', line 152 def to_xml to_xml_builder.to_xml end |
#to_xml_builder ⇒ Object
135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 |
# File 'lib/albacore/nuget_model.rb', line 135 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 |