Sha256: 3bd3e583d8b0f4e672e8c5d0b7ec7066c4510f7541b57cdfb2c2a2b4942fa53b
Contents?: true
Size: 1.83 KB
Versions: 4
Compression:
Stored size: 1.83 KB
Contents
module PubliSci class Metadata module DSL class Instance include Metadata::DSL def initialize Metadata.registry.clear end end def var(name=nil) set_or_get('var',name) end alias_method :dataset, :var def creator(id=nil) set_or_get('creator',id) end alias_method :name, :creator def description(desc=nil) set_or_get('description',desc) end def title(desc=nil) set_or_get('title',desc) end def topic(sub=nil) add_or_get('topic',sub) end def publishers(pub=nil,&block) if block_given? p = Publisher.new p.instance_eval(&block) @publishers ||= [] << p p else add_or_get('publishers',pub) end end alias_method :publisher, :publishers def generate_n3 opts = {} %w{var creator description title}.each{|field| opts[field.to_sym] = send(field.to_sym) if send(field.to_sym) } opts[:subject] = topic if topic publishers.each{|pub| opts[:publishers] ||= [] << {label: pub.label, uri: pub.uri} } if publishers gen = Class.new {include PubliSci::Metadata::Generator} gen.new.basic(opts) end private def set_or_get(var,input=nil) ivar = instance_variable_get("@#{var}") if input instance_variable_set("@#{var}", input) else ivar end end def add_or_get(var,input) ivar = instance_variable_get("@#{var}") if input instance_variable_set("@#{var}", []) unless ivar instance_variable_get("@#{var}") << input instance_variable_get("@#{var}") else ivar end end end end end
Version data entries
4 entries across 4 versions & 2 rubygems