class Tamiyo::Yaml::YamlSource

Constants

Prototype

Public Instance Methods

parse_card_data_from(events, proto) click to toggle source
# File lib/tamiyo/yaml/yaml_source.rb, line 27
def parse_card_data_from(events, proto)
  events.on_keys(
    'name' => ->{ proto.name = events.assume_scalar },
    'identity' => ->{
      events.each_within_sequence do
        proto.colors << events.assume_scalar
      end },
    'mana cost' => ->{
      events.on_types(
        scalar: ->{ proto.cost = events.value },
        seq: ->{
          events.each_within_sequence do
            proto.cost ||= []
            proto.cost << events.assume_scalar
          end }) },
    'type' => ->{ proto.type = events.assume_scalar },
    'text' => ->{ proto.text = events.assume_scalar },
    'pt' => ->{ proto.pt = events.assume_scalar },
    'loyalty' => ->{ proto.loyalty = events.assume_scalar },
    'row' => ->{ proto.table_row = events.assume_scalar.to_sym },
    'played tapped' => ->{
      events.assume_scalar
      proto.played_tapped = true },
    'picture url' => ->{ proto.picture_url = events.assume_scalar })
end
pull() click to toggle source
# File lib/tamiyo/yaml/yaml_source.rb, line 12
def pull
  using_object [] do |cards|
    with_the_cards_file do |events|
      events.each_within_sequence do
        proto = using_object(Prototype.new) do |proto|
          events.each_within_mapping do
            parse_card_data_from(events, proto)
          end
        end
        cards << proto.build_card
      end
    end
  end
end
using_object(obj) { |obj| ... } click to toggle source
# File lib/tamiyo/yaml/yaml_source.rb, line 63
def using_object(obj)
  yield obj
  obj
end
with_the_cards_file() { |yaml_event_stream_for file| ... } click to toggle source
# File lib/tamiyo/yaml/yaml_source.rb, line 53
def with_the_cards_file
  data_store = DataStore.new
  path = data_store.path_for 'cards.yaml'
  if block_given?
    File.open(path, 'r') do |file|
      yield yaml_event_stream_for file
    end
  end
end