module SkullIsland::Helpers::Meta

Useful for embedding meta-data into special tags

Public Instance Methods

add_meta(key, value) click to toggle source
# File lib/skull_island/helpers/meta.rb, line 7
def add_meta(key, value)
  metatag = "_meta~#{key}~#{value}"

  # filter out any existing duplicate metatags
  existing_tags = raw_tags.reject { |tag| tag.start_with?("_meta~#{key}~") }

  # Add the new tag directly, bypassing preprocessing
  raw_set('tags', existing_tags + [metatag])
end
import_time() click to toggle source
# File lib/skull_island/helpers/meta.rb, line 17
def import_time
  metatags['import_time']
end
import_time=(time) click to toggle source
# File lib/skull_island/helpers/meta.rb, line 21
def import_time=(time)
  add_meta('import_time', time)
end
metatags() click to toggle source
# File lib/skull_island/helpers/meta.rb, line 33
def metatags
  metadata = {}
  raw_tags.select { |tag| tag.start_with?('_meta~') }.each do |tag|
    key, value = tag.gsub('_meta~', '').split('~', 2)
    metadata[key] = value
  end
  metadata
end
postprocess_tags(value) click to toggle source
# File lib/skull_island/helpers/meta.rb, line 63
def postprocess_tags(value)
  (value || []).reject { |tag| tag.start_with?('_meta~') }
end
preprocess_tags(input) click to toggle source
# File lib/skull_island/helpers/meta.rb, line 59
def preprocess_tags(input)
  input.uniq + metatags.map { |k, v| "_meta~#{k}~#{v}" }
end
project() click to toggle source
# File lib/skull_island/helpers/meta.rb, line 42
def project
  metatags['project']
end
project=(project_id) click to toggle source
# File lib/skull_island/helpers/meta.rb, line 46
def project=(project_id)
  unless project_id.is_a?(String) && project_id.match?(/^[\w_\-.~]+$/)
    raise Exceptions::InvalidArguments, 'project'
  end

  add_meta('project', project_id)
end
raw_tags() click to toggle source
# File lib/skull_island/helpers/meta.rb, line 54
def raw_tags
  reload if @lazy && !@entity.key?('tags')
  @entity['tags'] || []
end
remove_meta(key) click to toggle source
# File lib/skull_island/helpers/meta.rb, line 25
def remove_meta(key)
  # filter out an existing metatags
  filtered_tags = raw_tags.reject { |tag| tag.start_with?("_meta~#{key}~") }

  # Bypassing preprocessing
  raw_set('tags', filtered_tags)
end
supports_meta?() click to toggle source
# File lib/skull_island/helpers/meta.rb, line 67
def supports_meta?
  true
end