trackler 2.1.0.42 → 2.1.0.43
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/update +3 -3
- data/common/CONTRIBUTING.md +5 -5
- data/common/exercises/rna-transcription/canonical-data.json +9 -9
- data/lib/trackler/track.rb +40 -6
- data/lib/trackler/version.rb +1 -1
- data/tracks/clojure/config.json +7 -0
- data/tracks/clojure/exercises/rotational-cipher/project.clj +4 -0
- data/tracks/clojure/exercises/rotational-cipher/src/example.clj +21 -0
- data/tracks/clojure/exercises/rotational-cipher/test/rotational_cipher_test.clj +34 -0
- data/tracks/elm/README.md +3 -3
- data/tracks/elm/config.json +1 -1
- data/tracks/elm/exercises/accumulate/elm-package.json +1 -1
- data/tracks/elm/exercises/accumulate/package.json +1 -1
- data/tracks/elm/exercises/accumulate/tests/elm-package.json +1 -1
- data/tracks/elm/exercises/allergies/elm-package.json +1 -1
- data/tracks/elm/exercises/allergies/package.json +1 -1
- data/tracks/elm/exercises/allergies/tests/elm-package.json +1 -1
- data/tracks/elm/exercises/anagram/elm-package.json +1 -1
- data/tracks/elm/exercises/anagram/package.json +1 -1
- data/tracks/elm/exercises/anagram/tests/elm-package.json +1 -1
- data/tracks/elm/exercises/atbash-cipher/elm-package.json +1 -1
- data/tracks/elm/exercises/atbash-cipher/package.json +1 -1
- data/tracks/elm/exercises/atbash-cipher/tests/elm-package.json +1 -1
- data/tracks/elm/exercises/bob/elm-package.json +1 -1
- data/tracks/elm/exercises/bob/package.json +1 -1
- data/tracks/elm/exercises/bob/tests/elm-package.json +1 -1
- data/tracks/elm/exercises/difference-of-squares/elm-package.json +1 -1
- data/tracks/elm/exercises/difference-of-squares/package.json +1 -1
- data/tracks/elm/exercises/difference-of-squares/tests/elm-package.json +1 -1
- data/tracks/elm/exercises/gigasecond/elm-package.json +1 -1
- data/tracks/elm/exercises/gigasecond/package.json +1 -1
- data/tracks/elm/exercises/gigasecond/tests/elm-package.json +1 -1
- data/tracks/elm/exercises/grade-school/elm-package.json +1 -1
- data/tracks/elm/exercises/grade-school/package.json +1 -1
- data/tracks/elm/exercises/grade-school/tests/elm-package.json +1 -1
- data/tracks/elm/exercises/grains/elm-package.json +1 -1
- data/tracks/elm/exercises/grains/package.json +1 -1
- data/tracks/elm/exercises/grains/tests/elm-package.json +1 -1
- data/tracks/elm/exercises/hamming/elm-package.json +1 -1
- data/tracks/elm/exercises/hamming/package.json +1 -1
- data/tracks/elm/exercises/hamming/tests/elm-package.json +1 -1
- data/tracks/elm/exercises/hello-world/elm-package.json +1 -1
- data/tracks/elm/exercises/hello-world/package.json +1 -1
- data/tracks/elm/exercises/hello-world/tests/elm-package.json +1 -1
- data/tracks/elm/exercises/largest-series-product/elm-package.json +1 -1
- data/tracks/elm/exercises/largest-series-product/package.json +1 -1
- data/tracks/elm/exercises/largest-series-product/tests/elm-package.json +1 -1
- data/tracks/elm/exercises/leap/elm-package.json +1 -1
- data/tracks/elm/exercises/leap/package.json +1 -1
- data/tracks/elm/exercises/leap/tests/elm-package.json +1 -1
- data/tracks/elm/exercises/list-ops/elm-package.json +1 -1
- data/tracks/elm/exercises/list-ops/package.json +1 -1
- data/tracks/elm/exercises/list-ops/tests/elm-package.json +1 -1
- data/tracks/elm/exercises/nucleotide-count/elm-package.json +1 -1
- data/tracks/elm/exercises/nucleotide-count/package.json +1 -1
- data/tracks/elm/exercises/nucleotide-count/tests/elm-package.json +1 -1
- data/tracks/elm/exercises/pangram/elm-package.json +1 -1
- data/tracks/elm/exercises/pangram/package.json +1 -1
- data/tracks/elm/exercises/pangram/tests/elm-package.json +1 -1
- data/tracks/elm/exercises/phone-number/elm-package.json +1 -1
- data/tracks/elm/exercises/phone-number/package.json +1 -1
- data/tracks/elm/exercises/phone-number/tests/elm-package.json +1 -1
- data/tracks/elm/exercises/raindrops/elm-package.json +1 -1
- data/tracks/elm/exercises/raindrops/package.json +1 -1
- data/tracks/elm/exercises/raindrops/tests/elm-package.json +1 -1
- data/tracks/elm/exercises/rna-transcription/elm-package.json +1 -1
- data/tracks/elm/exercises/rna-transcription/package.json +1 -1
- data/tracks/elm/exercises/rna-transcription/tests/elm-package.json +1 -1
- data/tracks/elm/exercises/robot-simulator/elm-package.json +1 -1
- data/tracks/elm/exercises/robot-simulator/package.json +1 -1
- data/tracks/elm/exercises/robot-simulator/tests/elm-package.json +1 -1
- data/tracks/elm/exercises/roman-numerals/elm-package.json +1 -1
- data/tracks/elm/exercises/roman-numerals/package.json +1 -1
- data/tracks/elm/exercises/roman-numerals/tests/elm-package.json +1 -1
- data/tracks/elm/exercises/run-length-encoding/elm-package.json +1 -1
- data/tracks/elm/exercises/run-length-encoding/package.json +1 -1
- data/tracks/elm/exercises/run-length-encoding/tests/elm-package.json +1 -1
- data/tracks/elm/exercises/say/elm-package.json +1 -1
- data/tracks/elm/exercises/say/package.json +1 -1
- data/tracks/elm/exercises/say/tests/elm-package.json +1 -1
- data/tracks/elm/exercises/scrabble-score/elm-package.json +1 -1
- data/tracks/elm/exercises/scrabble-score/package.json +1 -1
- data/tracks/elm/exercises/scrabble-score/tests/elm-package.json +1 -1
- data/tracks/elm/exercises/series/elm-package.json +1 -1
- data/tracks/elm/exercises/series/package.json +1 -1
- data/tracks/elm/exercises/series/tests/elm-package.json +1 -1
- data/tracks/elm/exercises/space-age/elm-package.json +1 -1
- data/tracks/elm/exercises/space-age/package.json +1 -1
- data/tracks/elm/exercises/space-age/tests/elm-package.json +1 -1
- data/tracks/elm/exercises/strain/elm-package.json +1 -1
- data/tracks/elm/exercises/strain/package.json +1 -1
- data/tracks/elm/exercises/strain/tests/elm-package.json +1 -1
- data/tracks/elm/exercises/sublist/elm-package.json +1 -1
- data/tracks/elm/exercises/sublist/package.json +1 -1
- data/tracks/elm/exercises/sublist/tests/elm-package.json +1 -1
- data/tracks/elm/exercises/sum-of-multiples/elm-package.json +1 -1
- data/tracks/elm/exercises/sum-of-multiples/package.json +1 -1
- data/tracks/elm/exercises/sum-of-multiples/tests/elm-package.json +1 -1
- data/tracks/elm/exercises/triangle/elm-package.json +1 -1
- data/tracks/elm/exercises/triangle/package.json +1 -1
- data/tracks/elm/exercises/triangle/tests/elm-package.json +1 -1
- data/tracks/elm/exercises/word-count/elm-package.json +1 -1
- data/tracks/elm/exercises/word-count/package.json +1 -1
- data/tracks/elm/exercises/word-count/tests/elm-package.json +1 -1
- data/tracks/perl5/README.md +1 -1
- data/tracks/prolog/exercises/hello-world/hello_world_tests.plt +3 -3
- data/tracks/purescript/config.json +0 -5
- data/tracks/python/README.md +4 -4
- data/tracks/python/config.json +1 -1
- data/tracks/ruby/exercises/hamming/RUNNING_TESTS.md +56 -0
- data/tracks/ruby/exercises/hello-world/GETTING_STARTED.md +10 -33
- data/tracks/rust/config.json +1 -1
- metadata +6 -4
- data/fixtures/tracks/fake/docs/STRAY.md +0 -1
- data/lib/trackler/doc_file.rb +0 -88
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c43137b06d69eb9c5ce58551bced2480a9ca5828
|
4
|
+
data.tar.gz: 5f23d77ff7e8a5ab23f3de0f7f205245e278603d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fbe255899f20a8b2bf5692a9fe7cb91fb11b06e6dbebb44892f41bf561501749f994794872de5be3140428556b339c399a8e12c0cfd8aafa353b3d4eee06a481
|
7
|
+
data.tar.gz: 6f510c310c9e110afa88805be6b4273216c4c22fcfd7a7f87c426f909f9e4d86ed0020ae85a388426e10643f5d89550763f310212f113b5de8660d42143e1da8
|
data/bin/update
CHANGED
data/common/CONTRIBUTING.md
CHANGED
@@ -93,13 +93,13 @@ language name. For example, _C++_ has the ID `cpp`. This ID is used throughout
|
|
93
93
|
the Exercism ecosystem.
|
94
94
|
|
95
95
|
Each language-specific repository can be found under the Exercism GitHub
|
96
|
-
organization
|
96
|
+
organization named with the track ID.
|
97
97
|
|
98
98
|
```
|
99
|
-
https://github.com/exercism/
|
99
|
+
https://github.com/exercism/{TRACK_ID}
|
100
100
|
```
|
101
101
|
|
102
|
-
For example, the C++ repository is [exercism/
|
102
|
+
For example, the C++ repository is [exercism/cpp](https://github.com/exercism/cpp).
|
103
103
|
|
104
104
|
### Problem Metadata
|
105
105
|
|
@@ -230,7 +230,7 @@ A problem must have a unique slug. This slug is used as
|
|
230
230
|
* Bonus: `exercises/<slug>/canonical-data.json` with inputs/outputs for the test suite.
|
231
231
|
* Submit a pull request.
|
232
232
|
|
233
|
-
### In exercism
|
233
|
+
### In exercism/<TRACK_ID>
|
234
234
|
|
235
235
|
* Do the same as when [porting an
|
236
236
|
exercise](#porting-an-exercise-to-another-language-track).
|
@@ -263,7 +263,7 @@ Each track should have the following structure:
|
|
263
263
|
└── hello-world_test.file
|
264
264
|
```
|
265
265
|
|
266
|
-
The example template for a track can be found
|
266
|
+
The example template for a track can be found in the [request-new-language-track repository](https://github.com/exercism/request-new-language-track).
|
267
267
|
|
268
268
|
* `LICENSE` - The MIT License (MIT)
|
269
269
|
* `README.md` - a thorough explanation of how to contribute to the track.
|
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"exercise": "rna-transcription",
|
3
|
-
"version": "1.0.
|
3
|
+
"version": "1.0.1",
|
4
4
|
"comments": [
|
5
5
|
"Language implementations vary on the issue of invalid input data.",
|
6
6
|
"A language may elect to simplify this task by only presenting valid",
|
@@ -15,49 +15,49 @@
|
|
15
15
|
],
|
16
16
|
"cases": [
|
17
17
|
{
|
18
|
-
"description": "
|
18
|
+
"description": "RNA complement of cytosine is guanine",
|
19
19
|
"property": "toRna",
|
20
20
|
"dna": "C",
|
21
21
|
"expected": "G"
|
22
22
|
},
|
23
23
|
{
|
24
|
-
"description": "
|
24
|
+
"description": "RNA complement of guanine is cytosine",
|
25
25
|
"property": "toRna",
|
26
26
|
"dna": "G",
|
27
27
|
"expected": "C"
|
28
28
|
},
|
29
29
|
{
|
30
|
-
"description": "
|
30
|
+
"description": "RNA complement of thymine is adenine",
|
31
31
|
"property": "toRna",
|
32
32
|
"dna": "T",
|
33
33
|
"expected": "A"
|
34
34
|
},
|
35
35
|
{
|
36
|
-
"description": "
|
36
|
+
"description": "RNA complement of adenine is uracil",
|
37
37
|
"property": "toRna",
|
38
38
|
"dna": "A",
|
39
39
|
"expected": "U"
|
40
40
|
},
|
41
41
|
{
|
42
|
-
"description": "
|
42
|
+
"description": "RNA complement",
|
43
43
|
"property": "toRna",
|
44
44
|
"dna": "ACGTGGTCTTAA",
|
45
45
|
"expected": "UGCACCAGAAUU"
|
46
46
|
},
|
47
47
|
{
|
48
|
-
"description": "
|
48
|
+
"description": "correctly handles invalid input (RNA instead of DNA)",
|
49
49
|
"property": "toRna",
|
50
50
|
"dna": "U",
|
51
51
|
"expected": null
|
52
52
|
},
|
53
53
|
{
|
54
|
-
"description": "
|
54
|
+
"description": "correctly handles completely invalid DNA input",
|
55
55
|
"property": "toRna",
|
56
56
|
"dna": "XXX",
|
57
57
|
"expected": null
|
58
58
|
},
|
59
59
|
{
|
60
|
-
"description": "
|
60
|
+
"description": "correctly handles partially invalid DNA input",
|
61
61
|
"property": "toRna",
|
62
62
|
"dna": "ACGTXXXCTTAA",
|
63
63
|
"expected": null
|
data/lib/trackler/track.rb
CHANGED
@@ -8,7 +8,7 @@ module Trackler
|
|
8
8
|
# Track is a collection of exercises in a given language.
|
9
9
|
class Track
|
10
10
|
TOPICS = %w(about installation tests learning resources)
|
11
|
-
DEFAULT_IMAGE_PATH =
|
11
|
+
DEFAULT_IMAGE_PATH = "/docs/img"
|
12
12
|
|
13
13
|
Image = Struct.new(:path) do
|
14
14
|
def exists?
|
@@ -100,9 +100,9 @@ module Trackler
|
|
100
100
|
end
|
101
101
|
|
102
102
|
def doc_format
|
103
|
-
|
104
|
-
|
105
|
-
|
103
|
+
default_format = 'md'
|
104
|
+
path = File.join(dir, "docs", "*.*")
|
105
|
+
most_popular_format(path) || default_format
|
106
106
|
end
|
107
107
|
|
108
108
|
def global_zip
|
@@ -119,11 +119,19 @@ module Trackler
|
|
119
119
|
end
|
120
120
|
|
121
121
|
def hints
|
122
|
-
|
122
|
+
if File.exist?(track_hints_filename)
|
123
|
+
File.read(track_hints_filename)
|
124
|
+
else
|
125
|
+
""
|
126
|
+
end
|
123
127
|
end
|
124
128
|
|
125
129
|
private
|
126
130
|
|
131
|
+
def track_hints_filename
|
132
|
+
File.join(dir, 'docs', 'EXERCISE_README_INSERT.md')
|
133
|
+
end
|
134
|
+
|
127
135
|
def active_slugs
|
128
136
|
(config["exercises"] || []).map { |ex| ex["slug"] }
|
129
137
|
end
|
@@ -136,6 +144,13 @@ module Trackler
|
|
136
144
|
config["deprecated"] || []
|
137
145
|
end
|
138
146
|
|
147
|
+
def most_popular_format(path)
|
148
|
+
formats = Dir.glob(path).map do |filename|
|
149
|
+
File.extname(filename).sub(/^\./, '')
|
150
|
+
end
|
151
|
+
formats.max_by { |format| formats.count(format) }
|
152
|
+
end
|
153
|
+
|
139
154
|
def config
|
140
155
|
@config ||= JSON.parse(File.read(config_filename))
|
141
156
|
end
|
@@ -144,16 +159,35 @@ module Trackler
|
|
144
159
|
File.join(dir, "config.json")
|
145
160
|
end
|
146
161
|
|
162
|
+
def document_contents(topic)
|
163
|
+
filename = document_filename(topic)
|
164
|
+
case filename
|
165
|
+
when /\.md$/
|
166
|
+
File.read(filename)
|
167
|
+
when /\.org$/
|
168
|
+
Orgmode::Parser.new(File.read(filename)).to_markdown
|
169
|
+
else
|
170
|
+
''
|
171
|
+
end
|
172
|
+
end
|
173
|
+
|
147
174
|
def docs_by_topic(image_path)
|
175
|
+
src = Regexp.new("]\\(%s" % DEFAULT_IMAGE_PATH)
|
176
|
+
dst = "](%s" % image_path.gsub(Regexp.new("/$"), "")
|
148
177
|
Hash[
|
149
178
|
TOPICS.zip(
|
150
179
|
TOPICS.map { |topic|
|
151
|
-
|
180
|
+
document_contents(topic).gsub(src, dst)
|
152
181
|
}
|
153
182
|
)
|
154
183
|
]
|
155
184
|
end
|
156
185
|
|
186
|
+
def document_filename(topic)
|
187
|
+
path = File.join(dir, "docs", topic.upcase)
|
188
|
+
Dir.glob("%s.*" % path).sort.first
|
189
|
+
end
|
190
|
+
|
157
191
|
def svg_icon
|
158
192
|
@svg_icon ||= Image.new(File.join(dir, "img/icon.svg"))
|
159
193
|
end
|
data/lib/trackler/version.rb
CHANGED
data/tracks/clojure/config.json
CHANGED
@@ -0,0 +1,21 @@
|
|
1
|
+
(ns rotational-cipher)
|
2
|
+
|
3
|
+
(def ^:private string (partial apply str))
|
4
|
+
|
5
|
+
(def ^:private lower-case "abcdefghijklmnopqrstuvwxyz")
|
6
|
+
|
7
|
+
(def ^:private upper-case (->> lower-case (map clojure.string/upper-case) string))
|
8
|
+
|
9
|
+
(def ^:private letters (into #{} (concat lower-case upper-case)))
|
10
|
+
|
11
|
+
(defn- rotater [shift]
|
12
|
+
(let [encoding (->> (cycle letters)
|
13
|
+
(drop (* shift 2))
|
14
|
+
(take 52)
|
15
|
+
(zipmap letters))]
|
16
|
+
(fn [char] (get encoding char char))))
|
17
|
+
|
18
|
+
(defn rotate [message shift]
|
19
|
+
(->> message
|
20
|
+
(map (rotater shift))
|
21
|
+
string))
|
@@ -0,0 +1,34 @@
|
|
1
|
+
(ns rotational-cipher-test
|
2
|
+
(:require [clojure.test :refer [deftest is testing]]
|
3
|
+
rotational-cipher))
|
4
|
+
|
5
|
+
(deftest rotational-cipher-test
|
6
|
+
(testing "rotate a by 1"
|
7
|
+
(is (= (rotational-cipher/rotate "a" 1) "b")))
|
8
|
+
|
9
|
+
(testing "rotate a by 26, same output as input"
|
10
|
+
(is (= (rotational-cipher/rotate "a" 26) "a")))
|
11
|
+
|
12
|
+
(testing "rotate a by 0, same output as input"
|
13
|
+
(is (= (rotational-cipher/rotate "a" 0) "a")))
|
14
|
+
|
15
|
+
(testing "rotate m by 13"
|
16
|
+
(is (= (rotational-cipher/rotate "m" 13) "z")))
|
17
|
+
|
18
|
+
(testing "rotate n by 13 with wrap around alphabet"
|
19
|
+
(is (= (rotational-cipher/rotate "n" 13) "a")))
|
20
|
+
|
21
|
+
(testing "rotate capital letters"
|
22
|
+
(is (= (rotational-cipher/rotate "OMG" 5) "TRL")))
|
23
|
+
|
24
|
+
(testing "rotate spaces"
|
25
|
+
(is (= (rotational-cipher/rotate "O M G" 5) "T R L")))
|
26
|
+
|
27
|
+
(testing "rotate numbers"
|
28
|
+
(is (= (rotational-cipher/rotate "Testing 1 2 3 testing" 4) "Xiwxmrk 1 2 3 xiwxmrk")))
|
29
|
+
|
30
|
+
(testing "rotate punctuation"
|
31
|
+
(is (= (rotational-cipher/rotate "Let's eat, Grandma!" 21) "Gzo'n zvo, Bmviyhv!")))
|
32
|
+
|
33
|
+
(testing "rotate all letters"
|
34
|
+
(is (= (rotational-cipher/rotate "The quick brown fox jumps over the lazy dog." 13) "Gur dhvpx oebja sbk whzcf bire gur ynml qbt."))))
|
data/tracks/elm/README.md
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
#
|
2
|
-
[![build status](https://travis-ci.org/exercism/
|
1
|
+
# Exercism Elm Track
|
2
|
+
[![build status](https://travis-ci.org/exercism/elm.svg?branch=master)](https://travis-ci.org/exercism/elm)
|
3
3
|
|
4
4
|
Exercism Exercises in Elm
|
5
5
|
|
@@ -76,7 +76,7 @@ tests =
|
|
76
76
|
]
|
77
77
|
```
|
78
78
|
|
79
|
-
- All the tests for
|
79
|
+
- All the tests for Exercism Elm Track exercises can be run from the top level of the repo with `bin/build.sh`. Please run this command before submitting your PR.
|
80
80
|
|
81
81
|
- If you are submitting a new exercise, be sure to add it to the appropriate place in the `config.json` file. Also, please run `bin/fetch-configlet && bin/configlet` to ensure the exercise is configured correctly.
|
82
82
|
|
data/tracks/elm/config.json
CHANGED