lib/trackler/problem.rb in trackler-2.1.0.24 vs lib/trackler/problem.rb in trackler-2.1.0.25
- old
+ new
@@ -1,101 +1,7 @@
-require 'yaml'
-require_relative 'metadata'
-require_relative 'description'
-require_relative 'null_track'
+require_relative 'specification'
module Trackler
# Problem is a language-independent definition of an exercise.
- class Problem
- attr_reader :slug, :root, :metadata
- def initialize(slug, root, track = NullTrack.new)
- @slug = slug
- @root = root
- @file_root = File.join(root, 'common', 'exercises', self.slug)
- @repo_root = "https://github.com/exercism/x-common/blob/master/exercises/%s/" % self.slug
-
- @metadata = Metadata.for(problem: self, track: track)
- self.description_object = Description.for(problem: self, track: track)
- end
-
- def exists?
- description_object.exists? && metadata.exists?
- end
-
- def deprecated?
- @deprecated ||= File.exists?(file_path(deprecation_file_name, @file_root))
- end
-
- def active?
- exists? && !deprecated?
- end
-
- def name
- slug.split('-').map(&:capitalize).join(' ')
- end
-
- def description
- description_object.to_s
- end
-
- def source_markdown
- text = [source, markdown_link(source_url)].reject(&:empty?).join(" ")
- text.empty? ? text : "## Source\n\n#{text}"
- end
-
- def description_url
- description_object.url
- end
-
- def canonical_data_url
- repo_url(canonical_data_file_name) if File.exists?(file_path(canonical_data_file_name, @file_root))
- end
-
- def metadata_url
- metadata.url
- end
-
- def blurb
- metadata.blurb
- end
-
- def source
- metadata.source
- end
-
- def source_url
- metadata.source_url
- end
-
- private
-
- attr_accessor :description_object
-
- def canonical_data_file_name
- "canonical-data.json"
- end
-
- def description_file_name
- "description.md"
- end
-
- def metadata_file_name
- "metadata.yml"
- end
-
- def deprecation_file_name
- ".deprecated"
- end
-
- def repo_url(filename)
- @repo_root + filename
- end
-
- def file_path(filename, root = @file_root)
- File.join(root, filename)
- end
-
- def markdown_link(url)
- url.empty? ? url : format("[%s](%s)", url, url)
- end
+ class Problem < Trackler::Specification
end
end