Module: GoodData::Bam::Sink
- Defined in:
- lib/base/sink.rb
Class Method Summary collapse
- .add_target_type(sink) ⇒ Object
- .create(sink) ⇒ Object
- .find_field(sink, name) ⇒ Object
- .get_date_fields(sink) ⇒ Object
- .get_fact_fields(sink) ⇒ Object
- .has_field?(sink, name) ⇒ Boolean
Class Method Details
.add_target_type(sink) ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/base/sink.rb', line 28 def self.add_target_type(sink) target = sink[:target].to_s path = Pathname(target) uri = URI(target) if target == "gooddata" sink.merge({ :target => :gooddata, :target_type => :gooddata }) elsif uri.absolute? && (uri.scheme == "http" || uri.scheme == "https") sink.merge({ :target => uri, :target_type => :web }) elsif target =~ /^\./ || target =~ /^\// sink.merge({ :target => path, :target_type => :file }) end end |
.create(sink) ⇒ Object
5 6 7 8 9 10 |
# File 'lib/base/sink.rb', line 5 def self.create(sink) fail "Sink should have id. You defined \"#{sink}\"" if sink[:id].blank? fail "Sink should have target. You defined \"#{sink}\"" if sink[:target].blank? sink = {:fields => []}.merge(sink).merge({:type => :sink}) add_target_type(sink) end |
.find_field(sink, name) ⇒ Object
12 13 14 |
# File 'lib/base/sink.rb', line 12 def self.find_field(sink, name) sink[:fields].detect {|f| f[:name] == name} end |
.get_date_fields(sink) ⇒ Object
20 21 22 |
# File 'lib/base/sink.rb', line 20 def self.get_date_fields(sink) sink[:fields].find_all {|f| f[:type] == "date"} end |
.get_fact_fields(sink) ⇒ Object
24 25 26 |
# File 'lib/base/sink.rb', line 24 def self.get_fact_fields(sink) sink[:fields].find_all {|f| f[:type] == "fact"} end |
.has_field?(sink, name) ⇒ Boolean
16 17 18 |
# File 'lib/base/sink.rb', line 16 def self.has_field?(sink, name) !find_field(sink, name).nil? end |