Module: Notion::ObjectFactory
- Defined in:
- lib/notion/object_factory.rb
Constant Summary collapse
- TYPES =
{ "page" => Objects::Page, "database" => Objects::Database, "data_source" => Objects::DataSource, "block" => Objects::Block, "user" => Objects::User, "comment" => Objects::Comment, "view" => Objects::View, "file_upload" => Objects::File, "async_task" => Objects::AsyncTask, "list" => Objects::List }.freeze
Class Method Summary collapse
Class Method Details
.build(value) ⇒ Object
20 21 22 23 24 25 26 27 28 29 |
# File 'lib/notion/object_factory.rb', line 20 def build(value) return wrap_value(value) unless value.is_a?(Hash) if !value.key?("object") && value.key?("type") && value.key?(value["type"]) return Objects::PropertyValue.build(value) end return Objects::Block.build(value) if value["object"] == "block" klass = value.key?("results") ? Objects::List : TYPES.fetch(value["object"], Objects::Unknown) klass.new(value) end |
.wrap_value(value) ⇒ Object
31 32 33 34 35 36 37 |
# File 'lib/notion/object_factory.rb', line 31 def wrap_value(value) case value when Hash then value.key?("object") ? build(value) : value.transform_values { |item| wrap_value(item) } when Array then value.map { |item| wrap_value(item) } else value end end |