class TestClass

Public Class Methods

custom_lens(type) click to toggle source
# File lib/test_class.rb, line 6
def self.custom_lens(type)
  Lens[
    get: lambda do |doc|
      if node = doc.at_css("relationship[type=#{type}]")
        node.content
      else
        ""
      end
    end,
    put: lambda do |doc, value|
      # TODO: create missing nodes
      # doc.at_css(selector).content = value; doc
      doc << Nokogiri::XML::Node.new("relationships", doc) if doc.root.nil?
      root = doc.root
      relationship = root.at_css("relationship[type=#{type}]")
      if relationship.nil?
        relationship = Nokogiri::XML::Node.new("relationship", doc)
        relationship.set_attribute("type", type)
        root << relationship
      end
      relationship.content = value
      doc
    end,
    create: lambda do |value|
      Nokogiri::XML("<relationships>
        <relationship type=\"#{type}\">#{value}</relationship>
      </relationships>")
    end
  ]
end