class DCA::Models::NokogiriBinder

Public Class Methods

parse(object, content, params) click to toggle source
# File lib/dca/models/nokogiri_binder.rb, line 6
def self.parse object, content, params
  if params[:association] == :one
    parse_one object, content, params
  elsif params[:association] == :many
    parse_many object, content, params
  end
end
parse_many(object, content, params) click to toggle source
# File lib/dca/models/nokogiri_binder.rb, line 28
def self.parse_many object, content, params
  result = nil

  options = params[:options] || {}
  selector = options[:selector]
  type = params[:type]
  type = find_type object, params[:field], options[:polymorphic] if type.nil? || options[:polymorphic]

  unless selector.nil?
    result = content.css(selector)
    result = object.send(options[:parser], result) unless options[:parser].nil?

    result = result.map { |node| type.new.bind node } unless result.nil?
  end
  result
end
parse_one(object, content, params) click to toggle source
# File lib/dca/models/nokogiri_binder.rb, line 14
def self.parse_one object, content, params
  result = nil

  options = params[:options] || {}
  selector = options[:selector]
  element = selector.nil? ? content : content.at_css(selector)
  unless element.nil?
    result = options[:attribute].nil? ? element.content : element[options[:attribute]]
  end
  result = self.parse_options object, result, options

  convert result, params[:type]
end