Class: DdbRuby::FifthEdition::TopLevelClass

Inherits:
Dry::Struct
  • Object
show all
Defined in:
lib/ddb_ruby/fifth_edition/structs.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.from_dynamic!(d) ⇒ Object



2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
# File 'lib/ddb_ruby/fifth_edition/structs.rb', line 2327

def self.from_dynamic!(d)
  d = Types::Hash[d]
  new(
    id:                     d.fetch("id"),
    entity_type_id:         d.fetch("entityTypeId"),
    level:                  d.fetch("level"),
    is_starting_class:      d.fetch("isStartingClass"),
    hit_dice_used:          d.fetch("hitDiceUsed"),
    definition_id:          d.fetch("definitionId"),
    subclass_definition_id: d.fetch("subclassDefinitionId"),
    definition:             SubclassDefinitionClass.from_dynamic!(d.fetch("definition")),
    subclass_definition:    d.fetch("subclassDefinition") ? SubclassDefinitionClass.from_dynamic!(d.fetch("subclassDefinition")) : nil,
    class_features:         d.fetch("classFeatures").map { |x| ClassClassFeature.from_dynamic!(x) },
  )
end

.from_json!(json) ⇒ Object



2343
2344
2345
# File 'lib/ddb_ruby/fifth_edition/structs.rb', line 2343

def self.from_json!(json)
  from_dynamic!(JSON.parse(json))
end

Instance Method Details

#to_dynamicObject



2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
# File 'lib/ddb_ruby/fifth_edition/structs.rb', line 2347

def to_dynamic
  {
    "id"                   => id,
    "entityTypeId"         => entity_type_id,
    "level"                => level,
    "isStartingClass"      => is_starting_class,
    "hitDiceUsed"          => hit_dice_used,
    "definitionId"         => definition_id,
    "subclassDefinitionId" => subclass_definition_id,
    "definition"           => definition.to_dynamic,
    "subclassDefinition"   => subclass_definition&.to_dynamic,
    "classFeatures"        => class_features.map { |x| x.to_dynamic },
  }
end

#to_json(options = nil) ⇒ Object



2362
2363
2364
# File 'lib/ddb_ruby/fifth_edition/structs.rb', line 2362

def to_json(options = nil)
  JSON.generate(to_dynamic, options)
end