Sha256: bc468442e9ec76c03174fdcb42ec21ef53654d2d7ea0fd3830f3c6b84775ea42

Contents?: true

Size: 614 Bytes

Versions: 229

Compression:

Stored size: 614 Bytes

Contents

class Exercise
  class << self
    def all
      slugs.map { |e| new(e) }
    end

    private

    def slugs
      FileList['exercises/*'].pathmap('%f').exclude('TRACK_HINTS.md')
    end
  end

  attr_reader :slug
  alias :to_s :slug

  def initialize(slug)
    @slug = slug
  end

  def directory
    "exercises/#{slug}/."
  end

  def example_file
    File.join('.meta', 'solutions', "#{exercise_name}.rb")
  end

  def testable_example_file
    "#{exercise_name}.rb"
  end

  def test_file
    "#{exercise_name}_test.rb"
  end

  private

  def exercise_name
    @exercise_name ||= slug.tr('-', '_')
  end
end

Version data entries

229 entries across 229 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/ruby/lib/tasks/exercise.rb
trackler-2.2.1.179 tracks/ruby/lib/tasks/exercise.rb
trackler-2.2.1.178 tracks/ruby/lib/tasks/exercise.rb
trackler-2.2.1.177 tracks/ruby/lib/tasks/exercise.rb
trackler-2.2.1.176 tracks/ruby/lib/tasks/exercise.rb
trackler-2.2.1.175 tracks/ruby/lib/tasks/exercise.rb
trackler-2.2.1.174 tracks/ruby/lib/tasks/exercise.rb
trackler-2.2.1.173 tracks/ruby/lib/tasks/exercise.rb
trackler-2.2.1.172 tracks/ruby/lib/tasks/exercise.rb
trackler-2.2.1.171 tracks/ruby/lib/tasks/exercise.rb
trackler-2.2.1.170 tracks/ruby/lib/tasks/exercise.rb
trackler-2.2.1.169 tracks/ruby/lib/tasks/exercise.rb
trackler-2.2.1.167 tracks/ruby/lib/tasks/exercise.rb
trackler-2.2.1.166 tracks/ruby/lib/tasks/exercise.rb
trackler-2.2.1.165 tracks/ruby/lib/tasks/exercise.rb
trackler-2.2.1.164 tracks/ruby/lib/tasks/exercise.rb
trackler-2.2.1.163 tracks/ruby/lib/tasks/exercise.rb
trackler-2.2.1.162 tracks/ruby/lib/tasks/exercise.rb
trackler-2.2.1.161 tracks/ruby/lib/tasks/exercise.rb
trackler-2.2.1.160 tracks/ruby/lib/tasks/exercise.rb