Sha256: 672ab9183b5f5be6bf42befdd08df8d110500378bd28c107185b5a062a43e848
Contents?: true
Size: 877 Bytes
Versions: 2
Compression:
Stored size: 877 Bytes
Contents
require 'saru/list' require 'saru/radical' require 'saru/kanji' require 'saru/vocabulary' module Saru class Builder TYPES = %w(radical kanji vocabulary) attr_reader :type, :levels def initialize type, levels = nil @type = type @levels = levels end def call raise ArgumentError, 'Not valid type' unless TYPES.include?(type) build end private def build request_items = request['requested_information'] items = request_items.map{|item| build_class.new flatten(item) } List.new items end def request Connection.send(type, levels) end def build_class Module.const_get "Saru::#{type.capitalize}" end def flatten item item.merge!(item['user_specific']) if item['user_specific'] item.delete_if{|key, _value| key == 'user_specific' } end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
saru-0.2.0 | lib/saru/builder.rb |
saru-0.1.0 | lib/saru/builder.rb |