Sha256: 49687589ea2ecc5c4d0c4f9b93a66226c0012469be0f0ac9a6075fd92d304fb6
Contents?: true
Size: 964 Bytes
Versions: 2
Compression:
Stored size: 964 Bytes
Contents
class Arstotzka::Fetcher include Sinclair::OptionsParser attr_reader :path, :json, :instance delegate :after, :flatten, to: :options_object delegate :wrap, to: :wrapper def initialize(json, instance, path:, **options) @path = path.to_s.split('.') @json = json @instance = instance @options = options end def fetch value = crawler.value(json) value.flatten! if flatten && value.respond_to?(:flatten!) value = instance.send(after, value) if after value end private def crawler @crawler ||= buidl_crawler end def buidl_crawler Arstotzka::Crawler.new(crawler_options) do |value| wrap(value) end end def crawler_options options.slice(:case_type, :compact, :default).merge(path: path) end def wrapper @wrapper ||= build_wrapper end def build_wrapper Arstotzka::Wrapper.new(wrapper_options) end def wrapper_options options.slice(:clazz, :type) end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
arstotzka-1.0.1 | lib/arstotzka/fetcher.rb |
arstotzka-1.0.0 | lib/arstotzka/fetcher.rb |