<commit_before>require 'exercism/curriculum/clojure'
require 'exercism/curriculum/elixir'
require 'exercism/curriculum/go'
require 'exercism/curriculum/haskell'
require 'exercism/curriculum/javascript'
require 'exercism/curriculum/objective-c'
require 'exercism/curriculum/ocaml'
require 'exercism/curriculum/perl5'
require 'exercism/curriculum/python'
require 'exercism/curriculum/ruby'
require 'exercism/curriculum/scala'

class Exercism
  def self.subjects
    [
      :clojure,
      :elixir,
      :go,
      :haskell,
      :javascript,
      :objective_c,
      :ocaml,
      :perl5,
      :python,
      :ruby,
      :scala,
    ]
  end

  def self.curriculum
    @curriculum ||= begin
      Curriculum.new('./assignments').tap do |curriculum|
        subjects.each do |type|
          curriculum.add "exercism/#{type}_curriculum".classify.constantize.new
        end
      end
    end
  end

  def self.trails
    @trails ||= curriculum.trails.values
  end

  def self.languages
    @languages ||= curriculum.trails.keys.sort
  end

  def self.current
    @current ||= trails.map(&:name).sort
  end

  def self.upcoming
    @upcoming ||= ['Java', 'CoffeeScript', 'Rust', 'Erlang', 'PHP', 'Common Lisp'] - current
  end
end

class Curriculum
  attr_reader :path, :trails
  def initialize(path)
    @path = path
    @trails = {}
  end<commit_msg>Launch coffeescript<commit_after>require 'exercism/curriculum/clojure'
require 'exercism/curriculum/coffeescript'
require 'exercism/curriculum/elixir'
require 'exercism/curriculum/go'
require 'exercism/curriculum/haskell'
require 'exercism/curriculum/javascript'
require 'exercism/curriculum/objective-c'
require 'exercism/curriculum/ocaml'
require 'exercism/curriculum/perl5'
require 'exercism/curriculum/python'
require 'exercism/curriculum/ruby'
require 'exercism/curriculum/scala'

class Exercism
  def self.subjects
    [
      :clojure,
      :coffeescript,
      :elixir,
      :go,
      :haskell,
      :javascript,
      :objective_c,
      :ocaml,
      :perl5,
      :python,
      :ruby,
      :scala,
    ]
  end

  def self.curriculum
    @curriculum ||= begin
      Curriculum.new('./assignments').tap do |curriculum|
        subjects.each do |type|
          curriculum.add "exercism/#{type}_curriculum".classify.constantize.new
        end
      end
    end
  end

  def self.trails
    @trails ||= curriculum.trails.values
  end

  def self.languages
    @languages ||= curriculum.trails.keys.sort
  end

  def self.current
    @current ||= trails.map(&:name).sort
  end

  def self.upcoming
    @upcoming ||= ['Java', 'Rust', 'Erlang', 'PHP', 'Common Lisp'] - current
  end
end

class Curriculum
  attr_reader :path, :trails
  def initialize(path)
    @path = path
    @trails = {}
  end
{'fraction_non_alphanumeric': 0.11920289855072463, 'fraction_numerical': 0.0014492753623188406, 'mean_word_length': 3.0964391691394657, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '893310', 'n_tokens_mistral': 985, 'n_tokens_neox': 997, 'n_words': 188}