class Mumukit::Sync::Store::Github::GuideBuilder

Attributes

exercises[W]

Public Class Methods

new(slug) click to toggle source
Calls superclass method
# File lib/mumukit/sync/store/github/guide_builder.rb, line 7
def initialize(slug)
  super()
  self.slug = slug
end

Public Instance Methods

add_exercise(exercise) click to toggle source
# File lib/mumukit/sync/store/github/guide_builder.rb, line 20
def add_exercise(exercise)
  self.exercises << exercise
end
build() click to toggle source
# File lib/mumukit/sync/store/github/guide_builder.rb, line 16
def build
  build_json.compact
end
exercises() click to toggle source
# File lib/mumukit/sync/store/github/guide_builder.rb, line 12
def exercises
  @exercises ||= []
end
language() click to toggle source
# File lib/mumukit/sync/store/github/guide_builder.rb, line 28
def language
  meta['language']
end
locale() click to toggle source
# File lib/mumukit/sync/store/github/guide_builder.rb, line 24
def locale
  meta['locale']
end

Private Instance Methods

build_json() click to toggle source
# File lib/mumukit/sync/store/github/guide_builder.rb, line 34
def build_json
  raise Mumukit::Sync::SyncError, "Missing guide language" if language.blank?
  file = build_fields_h(guide_schema.file_fields) { |field| self[field.reverse_name] }
  metadata = build_fields_h(guide_schema.metadata_fields) { |field| self.meta[field.name.to_s] }
  file.merge(metadata).merge(
    expectations: expectations.to_a,
    slug: slug,
    exercises: exercises.sort_by { |e| order.position_for(e[:id]) }).compact
end