class Kugutsu::SceneParser

Public Instance Methods

parse(file, event_bus) click to toggle source
# File lib/kugutsu/scene_parser.rb, line 3
def parse(file, event_bus)
  scene = JSON.parse(file.read)
  
  actions = deserialize_actions(scene['actions'], event_bus)
  
  Scene.new(scene['id'], actions)
end

Private Instance Methods

deserialize_actions(actions_data, event_bus) click to toggle source
# File lib/kugutsu/scene_parser.rb, line 13
def deserialize_actions(actions_data, event_bus)
  actions_data.map do |action_data|
    klass = to_class_string(action_data['type'])
    Object::const_get(klass).new(action_data, event_bus)
  end
end
to_class_string(action_type_raw) click to toggle source
# File lib/kugutsu/scene_parser.rb, line 20
def to_class_string(action_type_raw)
  action_type_formatted =
    action_type_raw.split(":").
      map { |str| to_pascal_case(str) }.
      join("::")

  "::#{action_type_formatted}Action"
end
to_pascal_case(str) click to toggle source
# File lib/kugutsu/scene_parser.rb, line 29
def to_pascal_case(str)
  str.split("_").map(&:capitalize).join
end