trackler 2.2.1.151 → 2.2.1.152
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/trackler/version.rb +1 -1
- data/problem-specifications/exercises/hamming/description.md +4 -3
- data/problem-specifications/exercises/isbn-verifier/canonical-data.json +9 -1
- data/tracks/clojure/exercises/bob/README.md +2 -0
- data/tracks/clojure/exercises/bob/src/example.clj +4 -0
- data/tracks/clojure/exercises/bob/test/bob_test.clj +1 -1
- data/tracks/clojure/exercises/say/README.md +2 -1
- data/tracks/csharp/exercises/acronym/AcronymTest.cs +3 -9
- data/tracks/csharp/exercises/all-your-base/AllYourBaseTest.cs +43 -43
- data/tracks/csharp/exercises/allergies/AllergiesTest.cs +1 -1
- data/tracks/csharp/exercises/alphametics/AlphameticsTest.cs +21 -1
- data/tracks/csharp/exercises/anagram/AnagramTest.cs +1 -35
- data/tracks/csharp/exercises/atbash-cipher/AtbashCipherTest.cs +1 -1
- data/tracks/csharp/exercises/beer-song/BeerSong.cs +1 -6
- data/tracks/csharp/exercises/beer-song/BeerSongTest.cs +20 -28
- data/tracks/csharp/exercises/beer-song/Example.cs +6 -6
- data/tracks/csharp/exercises/binary-search/BinarySearchTest.cs +1 -1
- data/tracks/csharp/exercises/bob/BobTest.cs +1 -1
- data/tracks/csharp/exercises/book-store/BookStoreTest.cs +1 -1
- data/tracks/csharp/exercises/bowling/BowlingTest.cs +47 -29
- data/tracks/csharp/exercises/bracket-push/BracketPushTest.cs +36 -29
- data/tracks/csharp/exercises/change/Change.cs +1 -1
- data/tracks/csharp/exercises/change/ChangeTest.cs +48 -21
- data/tracks/csharp/exercises/change/Example.cs +31 -18
- data/tracks/csharp/exercises/circular-buffer/CircularBuffer.cs +2 -2
- data/tracks/csharp/exercises/circular-buffer/CircularBufferTest.cs +88 -111
- data/tracks/csharp/exercises/circular-buffer/Example.cs +7 -7
- data/tracks/csharp/exercises/clock/ClockTest.cs +37 -37
- data/tracks/csharp/exercises/collatz-conjecture/CollatzConjectureTest.cs +1 -1
- data/tracks/csharp/exercises/complex-numbers/ComplexNumbersTest.cs +19 -10
- data/tracks/csharp/exercises/connect/ConnectTest.cs +1 -1
- data/tracks/csharp/exercises/crypto-square/CryptoSquareTest.cs +1 -1
- data/tracks/csharp/exercises/custom-set/.meta/hints.md +3 -3
- data/tracks/csharp/exercises/custom-set/CustomSet.cs +10 -49
- data/tracks/csharp/exercises/custom-set/CustomSetTest.cs +153 -157
- data/tracks/csharp/exercises/custom-set/Example.cs +26 -54
- data/tracks/csharp/exercises/difference-of-squares/DifferenceOfSquaresTest.cs +1 -1
- data/tracks/csharp/exercises/dominoes/DominoesTest.cs +25 -25
- data/tracks/csharp/exercises/etl/Etl.cs +1 -1
- data/tracks/csharp/exercises/etl/EtlTest.cs +4 -4
- data/tracks/csharp/exercises/etl/Example.cs +1 -1
- data/tracks/csharp/exercises/flatten-array/FlattenArrayTest.cs +13 -13
- data/tracks/csharp/exercises/food-chain/Example.cs +5 -0
- data/tracks/csharp/exercises/food-chain/FoodChain.cs +5 -0
- data/tracks/csharp/exercises/food-chain/FoodChainTest.cs +9 -9
- data/tracks/csharp/exercises/forth/Example.cs +28 -33
- data/tracks/csharp/exercises/forth/Forth.cs +1 -19
- data/tracks/csharp/exercises/forth/ForthTest.cs +215 -52
- data/tracks/csharp/exercises/gigasecond/GigasecondTest.cs +1 -1
- data/tracks/csharp/exercises/grains/GrainsTest.cs +1 -1
- data/tracks/csharp/exercises/grep/Example.cs +1 -1
- data/tracks/csharp/exercises/grep/Grep.cs +1 -1
- data/tracks/csharp/exercises/grep/GrepTest.cs +268 -237
- data/tracks/csharp/exercises/hamming/HammingTest.cs +1 -1
- data/tracks/csharp/exercises/hello-world/HelloWorldTest.cs +1 -1
- data/tracks/csharp/exercises/house/Example.cs +7 -2
- data/tracks/csharp/exercises/house/House.cs +5 -0
- data/tracks/csharp/exercises/house/HouseTest.cs +40 -223
- data/tracks/csharp/exercises/isbn-verifier/IsbnVerifierTest.cs +14 -2
- data/tracks/csharp/exercises/isogram/IsogramTest.cs +1 -1
- data/tracks/csharp/exercises/kindergarten-garden/KindergartenGardenTest.cs +1 -1
- data/tracks/csharp/exercises/largest-series-product/LargestSeriesProductTest.cs +1 -1
- data/tracks/csharp/exercises/leap/LeapTest.cs +1 -1
- data/tracks/csharp/exercises/luhn/LuhnTest.cs +1 -1
- data/tracks/csharp/exercises/markdown/MarkdownTest.cs +34 -27
- data/tracks/csharp/exercises/minesweeper/MinesweeperTest.cs +29 -34
- data/tracks/csharp/exercises/nth-prime/NthPrimeTest.cs +1 -1
- data/tracks/csharp/exercises/nucleotide-count/NucleotideCountTest.cs +1 -1
- data/tracks/csharp/exercises/ocr-numbers/OcrNumbersTest.cs +35 -35
- data/tracks/csharp/exercises/pangram/PangramTest.cs +1 -1
- data/tracks/csharp/exercises/pascals-triangle/PascalsTriangleTest.cs +1 -1
- data/tracks/csharp/exercises/perfect-numbers/PerfectNumbersTest.cs +1 -1
- data/tracks/csharp/exercises/phone-number/PhoneNumberTest.cs +17 -3
- data/tracks/csharp/exercises/pig-latin/PigLatinTest.cs +1 -1
- data/tracks/csharp/exercises/poker/PokerTest.cs +1 -1
- data/tracks/csharp/exercises/prime-factors/PrimeFactorsTest.cs +1 -1
- data/tracks/csharp/exercises/protein-translation/Example.cs +4 -4
- data/tracks/csharp/exercises/protein-translation/ProteinTranslation.cs +1 -1
- data/tracks/csharp/exercises/protein-translation/ProteinTranslationTest.cs +104 -45
- data/tracks/csharp/exercises/proverb/ProverbTest.cs +38 -6
- data/tracks/csharp/exercises/queen-attack/QueenAttackTest.cs +1 -1
- data/tracks/csharp/exercises/rail-fence-cipher/RailFenceCipherTest.cs +1 -1
- data/tracks/csharp/exercises/raindrops/RaindropsTest.cs +1 -1
- data/tracks/csharp/exercises/rectangles/RectanglesTest.cs +63 -21
- data/tracks/csharp/exercises/reverse-string/ReverseStringTest.cs +1 -1
- data/tracks/csharp/exercises/rna-transcription/RnaTranscriptionTest.cs +1 -1
- data/tracks/csharp/exercises/roman-numerals/RomanNumeralsTest.cs +7 -1
- data/tracks/csharp/exercises/rotational-cipher/RotationalCipherTest.cs +1 -1
- data/tracks/csharp/exercises/run-length-encoding/RunLengthEncodingTest.cs +1 -1
- data/tracks/csharp/exercises/saddle-points/SaddlePointsTest.cs +11 -11
- data/tracks/csharp/exercises/say/SayTest.cs +1 -1
- data/tracks/csharp/exercises/scale-generator/Example.cs +5 -0
- data/tracks/csharp/exercises/scale-generator/ScaleGenerator.cs +5 -0
- data/tracks/csharp/exercises/scale-generator/ScaleGeneratorTest.cs +56 -47
- data/tracks/csharp/exercises/scrabble-score/ScrabbleScoreTest.cs +1 -1
- data/tracks/csharp/exercises/secret-handshake/SecretHandshakeTest.cs +1 -1
- data/tracks/csharp/exercises/sieve/SieveTest.cs +1 -1
- data/tracks/csharp/exercises/space-age/SpaceAgeTest.cs +1 -1
- data/tracks/csharp/exercises/spiral-matrix/SpiralMatrixTest.cs +28 -34
- data/tracks/csharp/exercises/sum-of-multiples/SumOfMultiplesTest.cs +1 -1
- data/tracks/csharp/exercises/tournament/Example.cs +15 -7
- data/tracks/csharp/exercises/tournament/TournamentTest.cs +97 -99
- data/tracks/csharp/exercises/transpose/TransposeTest.cs +50 -96
- data/tracks/csharp/exercises/triangle/TriangleTest.cs +1 -1
- data/tracks/csharp/exercises/twelve-days/TwelveDays.cs +1 -1
- data/tracks/csharp/exercises/two-bucket/TwoBucketTest.cs +1 -1
- data/tracks/csharp/exercises/two-fer/TwoFerTest.cs +1 -1
- data/tracks/csharp/exercises/variable-length-quantity/Example.cs +3 -3
- data/tracks/csharp/exercises/variable-length-quantity/VariableLengthQuantity.cs +2 -2
- data/tracks/csharp/exercises/variable-length-quantity/VariableLengthQuantityTest.cs +165 -40
- data/tracks/csharp/exercises/word-count/Example.cs +1 -1
- data/tracks/csharp/exercises/word-count/WordCount.cs +1 -1
- data/tracks/csharp/exercises/word-count/WordCountTest.cs +12 -12
- data/tracks/csharp/exercises/wordy/WordyTest.cs +1 -1
- data/tracks/csharp/exercises/yacht/Example.cs +2 -5
- data/tracks/csharp/exercises/yacht/YachtTest.cs +7 -1
- data/tracks/csharp/exercises/zebra-puzzle/Example.cs +4 -4
- data/tracks/csharp/exercises/zebra-puzzle/ZebraPuzzle.cs +2 -2
- data/tracks/csharp/exercises/zebra-puzzle/ZebraPuzzleTest.cs +7 -5
- data/tracks/csharp/generators/Exercises/AllYourBase.cs +1 -0
- data/tracks/csharp/generators/Exercises/Alphametics.cs +5 -2
- data/tracks/csharp/generators/Exercises/BeerSong.cs +3 -0
- data/tracks/csharp/generators/Exercises/BinarySearch.cs +1 -0
- data/tracks/csharp/generators/Exercises/BookStore.cs +2 -0
- data/tracks/csharp/generators/Exercises/Bowling.cs +20 -15
- data/tracks/csharp/generators/Exercises/BracketPush.cs +1 -1
- data/tracks/csharp/generators/Exercises/Change.cs +20 -0
- data/tracks/csharp/generators/Exercises/CircularBuffer.cs +74 -0
- data/tracks/csharp/generators/Exercises/Clock.cs +7 -8
- data/tracks/csharp/generators/Exercises/ComplexNumbers.cs +9 -16
- data/tracks/csharp/generators/Exercises/Connect.cs +6 -6
- data/tracks/csharp/generators/Exercises/CustomSet.cs +56 -0
- data/tracks/csharp/generators/Exercises/Dominoes.cs +2 -2
- data/tracks/csharp/generators/Exercises/Etl.cs +7 -35
- data/tracks/csharp/generators/Exercises/FlattenArray.cs +9 -13
- data/tracks/csharp/generators/Exercises/FoodChain.cs +5 -0
- data/tracks/csharp/generators/Exercises/Forth.cs +25 -0
- data/tracks/csharp/generators/Exercises/Gigasecond.cs +4 -4
- data/tracks/csharp/generators/Exercises/Grains.cs +1 -1
- data/tracks/csharp/generators/Exercises/Grep.cs +106 -0
- data/tracks/csharp/generators/Exercises/Hamming.cs +1 -1
- data/tracks/csharp/generators/Exercises/House.cs +5 -0
- data/tracks/csharp/generators/Exercises/KindergartenGarden.cs +3 -3
- data/tracks/csharp/generators/Exercises/Markdown.cs +25 -0
- data/tracks/csharp/generators/Exercises/Meetup.cs +6 -6
- data/tracks/csharp/generators/Exercises/Minesweeper.cs +14 -4
- data/tracks/csharp/generators/Exercises/OcrNumbers.cs +12 -3
- data/tracks/csharp/generators/Exercises/PascalsTriangle.cs +0 -7
- data/tracks/csharp/generators/Exercises/ProteinTranslation.cs +8 -0
- data/tracks/csharp/generators/Exercises/Proverb.cs +7 -5
- data/tracks/csharp/generators/Exercises/QueenAttack.cs +3 -3
- data/tracks/csharp/generators/Exercises/Rectangles.cs +17 -0
- data/tracks/csharp/generators/Exercises/RobotSimulator.cs +6 -6
- data/tracks/csharp/generators/Exercises/SaddlePoints.cs +2 -2
- data/tracks/csharp/generators/Exercises/Say.cs +1 -1
- data/tracks/csharp/generators/Exercises/ScaleGenerator.cs +15 -0
- data/tracks/csharp/generators/Exercises/SpiralMatrix.cs +45 -0
- data/tracks/csharp/generators/Exercises/Sublist.cs +4 -5
- data/tracks/csharp/generators/Exercises/SumOfMultiples.cs +10 -1
- data/tracks/csharp/generators/Exercises/Tournament.cs +11 -19
- data/tracks/csharp/generators/Exercises/Transpose.cs +2 -2
- data/tracks/csharp/generators/Exercises/Triangle.cs +1 -3
- data/tracks/csharp/generators/Exercises/TwelveDays.cs +3 -4
- data/tracks/csharp/generators/Exercises/TwoBucket.cs +5 -5
- data/tracks/csharp/generators/Exercises/TwoFer.cs +11 -2
- data/tracks/csharp/generators/Exercises/VariableLengthQuantity.cs +44 -0
- data/tracks/csharp/generators/Exercises/Yacht.cs +11 -10
- data/tracks/csharp/generators/Exercises/ZebraPuzzle.cs +19 -0
- data/tracks/csharp/generators/GeneratorExercise.cs +6 -6
- data/tracks/csharp/generators/Input/CanonicalData.cs +6 -9
- data/tracks/csharp/generators/Input/CanonicalDataCase.cs +13 -46
- data/tracks/csharp/generators/Input/CanonicalDataCaseParser.cs +170 -0
- data/tracks/csharp/generators/Input/CanonicalDataFile.cs +1 -2
- data/tracks/csharp/generators/Input/CanonicalDataParser.cs +16 -12
- data/tracks/csharp/generators/Input/ConfigFile.cs +0 -5
- data/tracks/csharp/generators/Input/ConvertHelper.cs +20 -0
- data/tracks/csharp/generators/Output/Templates/_TestClassDisposable.liquid +14 -0
- data/tracks/csharp/generators/Output/TestMethodBodyData.cs +11 -14
- data/tracks/csharp/generators/Output/ValueFormatter.cs +20 -7
- data/tracks/delphi/config.json +22 -0
- data/tracks/delphi/exercises/grade-school/GradeSchool.dpr +60 -0
- data/tracks/delphi/exercises/grade-school/README.md +62 -0
- data/tracks/delphi/exercises/grade-school/uGradeSchoolExample.pas +134 -0
- data/tracks/delphi/exercises/grade-school/uGradeSchoolTest.pas +150 -0
- data/tracks/delphi/exercises/hamming/README.md +4 -3
- data/tracks/delphi/exercises/proverb/Proverb.dpr +60 -0
- data/tracks/delphi/exercises/proverb/README.md +44 -0
- data/tracks/delphi/exercises/proverb/uProverbExample.pas +60 -0
- data/tracks/delphi/exercises/proverb/uProverbTests.pas +124 -0
- data/tracks/go/exercises/bracket-push/README.md +3 -2
- data/tracks/go/exercises/bracket-push/cases_test.go +7 -2
- data/tracks/go/exercises/isbn-verifier/cases_test.go +4 -3
- data/tracks/go/exercises/yacht/cases_test.go +8 -2
- data/tracks/java/exercises/armstrong-numbers/README.md +1 -1
- data/tracks/java/exercises/binary-search-tree/src/test/java/BinarySearchTreeTest.java +22 -22
- data/tracks/java/exercises/bracket-push/README.md +3 -2
- data/tracks/java/exercises/crypto-square/README.md +23 -19
- data/tracks/java/exercises/grade-school/src/test/java/SchoolTest.java +1 -1
- data/tracks/java/exercises/poker/.meta/{version.txt → version} +0 -0
- data/tracks/java/exercises/queen-attack/src/test/java/QueenAttackCalculatorTest.java +7 -7
- data/tracks/java/exercises/rail-fence-cipher/.meta/version +1 -0
- data/tracks/java/exercises/robot-simulator/src/test/java/RobotTest.java +45 -45
- data/tracks/nim/config.json +24 -0
- data/tracks/nim/exercises/armstrong-numbers/README.md +18 -0
- data/tracks/nim/exercises/armstrong-numbers/armstrong_number_test.nim +29 -0
- data/tracks/nim/exercises/armstrong-numbers/example.nim +11 -0
- data/tracks/nim/exercises/leap/leap_test.nim +12 -10
- data/tracks/nim/exercises/two-fer/README.md +19 -0
- data/tracks/nim/exercises/two-fer/example.nim +3 -0
- data/tracks/nim/exercises/two-fer/two_fer_test.nim +16 -0
- data/tracks/python/.travis.yml +0 -1
- data/tracks/python/README.md +1 -1
- data/tracks/python/config/exercise_readme.go.tmpl +1 -1
- data/tracks/python/docs/INSTALLATION.md +1 -1
- data/tracks/python/exercises/accumulate/README.md +1 -1
- data/tracks/python/exercises/acronym/README.md +1 -1
- data/tracks/python/exercises/all-your-base/README.md +1 -1
- data/tracks/python/exercises/allergies/README.md +1 -1
- data/tracks/python/exercises/alphametics/README.md +1 -1
- data/tracks/python/exercises/anagram/README.md +1 -1
- data/tracks/python/exercises/armstrong-numbers/README.md +2 -2
- data/tracks/python/exercises/atbash-cipher/README.md +1 -1
- data/tracks/python/exercises/bank-account/README.md +1 -1
- data/tracks/python/exercises/beer-song/README.md +1 -1
- data/tracks/python/exercises/binary-search-tree/README.md +1 -1
- data/tracks/python/exercises/binary-search/README.md +1 -1
- data/tracks/python/exercises/binary/README.md +1 -1
- data/tracks/python/exercises/bob/README.md +1 -1
- data/tracks/python/exercises/book-store/README.md +1 -1
- data/tracks/python/exercises/bowling/README.md +1 -1
- data/tracks/python/exercises/bracket-push/README.md +4 -3
- data/tracks/python/exercises/change/README.md +1 -1
- data/tracks/python/exercises/circular-buffer/README.md +1 -1
- data/tracks/python/exercises/clock/README.md +1 -1
- data/tracks/python/exercises/collatz-conjecture/README.md +1 -1
- data/tracks/python/exercises/complex-numbers/README.md +1 -1
- data/tracks/python/exercises/connect/README.md +1 -1
- data/tracks/python/exercises/crypto-square/README.md +1 -1
- data/tracks/python/exercises/custom-set/README.md +1 -1
- data/tracks/python/exercises/diamond/README.md +1 -1
- data/tracks/python/exercises/difference-of-squares/README.md +1 -1
- data/tracks/python/exercises/diffie-hellman/README.md +1 -1
- data/tracks/python/exercises/dominoes/README.md +1 -1
- data/tracks/python/exercises/dot-dsl/README.md +1 -1
- data/tracks/python/exercises/error-handling/README.md +1 -1
- data/tracks/python/exercises/etl/README.md +1 -1
- data/tracks/python/exercises/flatten-array/README.md +1 -1
- data/tracks/python/exercises/food-chain/README.md +1 -1
- data/tracks/python/exercises/forth/README.md +1 -1
- data/tracks/python/exercises/gigasecond/README.md +1 -1
- data/tracks/python/exercises/go-counting/README.md +1 -1
- data/tracks/python/exercises/grade-school/README.md +1 -1
- data/tracks/python/exercises/grains/README.md +1 -1
- data/tracks/python/exercises/grep/README.md +1 -1
- data/tracks/python/exercises/hamming/README.md +1 -1
- data/tracks/python/exercises/hello-world/README.md +1 -1
- data/tracks/python/exercises/hexadecimal/README.md +1 -1
- data/tracks/python/exercises/house/README.md +1 -1
- data/tracks/python/exercises/isbn-verifier/README.md +1 -1
- data/tracks/python/exercises/isogram/README.md +1 -1
- data/tracks/python/exercises/kindergarten-garden/README.md +1 -1
- data/tracks/python/exercises/largest-series-product/README.md +1 -1
- data/tracks/python/exercises/leap/README.md +1 -1
- data/tracks/python/exercises/linked-list/README.md +1 -1
- data/tracks/python/exercises/list-ops/README.md +1 -1
- data/tracks/python/exercises/luhn/README.md +1 -1
- data/tracks/python/exercises/markdown/README.md +1 -1
- data/tracks/python/exercises/matrix/README.md +1 -1
- data/tracks/python/exercises/meetup/README.md +1 -1
- data/tracks/python/exercises/minesweeper/README.md +1 -1
- data/tracks/python/exercises/nth-prime/README.md +1 -1
- data/tracks/python/exercises/nucleotide-count/README.md +1 -1
- data/tracks/python/exercises/ocr-numbers/README.md +1 -1
- data/tracks/python/exercises/octal/README.md +1 -1
- data/tracks/python/exercises/palindrome-products/README.md +1 -1
- data/tracks/python/exercises/pangram/README.md +1 -1
- data/tracks/python/exercises/parallel-letter-frequency/README.md +1 -1
- data/tracks/python/exercises/pascals-triangle/README.md +1 -1
- data/tracks/python/exercises/perfect-numbers/README.md +1 -1
- data/tracks/python/exercises/phone-number/README.md +1 -1
- data/tracks/python/exercises/pig-latin/README.md +1 -1
- data/tracks/python/exercises/point-mutations/README.md +1 -1
- data/tracks/python/exercises/poker/README.md +1 -1
- data/tracks/python/exercises/pov/README.md +1 -1
- data/tracks/python/exercises/prime-factors/README.md +1 -1
- data/tracks/python/exercises/protein-translation/README.md +1 -1
- data/tracks/python/exercises/proverb/README.md +1 -1
- data/tracks/python/exercises/pythagorean-triplet/README.md +1 -1
- data/tracks/python/exercises/queen-attack/README.md +1 -1
- data/tracks/python/exercises/rail-fence-cipher/README.md +1 -1
- data/tracks/python/exercises/raindrops/README.md +1 -1
- data/tracks/python/exercises/rational-numbers/README.md +1 -1
- data/tracks/python/exercises/react/README.md +1 -1
- data/tracks/python/exercises/rectangles/README.md +1 -1
- data/tracks/python/exercises/reverse-string/README.md +1 -1
- data/tracks/python/exercises/rna-transcription/README.md +1 -1
- data/tracks/python/exercises/robot-name/README.md +1 -1
- data/tracks/python/exercises/robot-simulator/README.md +1 -1
- data/tracks/python/exercises/roman-numerals/README.md +1 -1
- data/tracks/python/exercises/rotational-cipher/README.md +1 -1
- data/tracks/python/exercises/run-length-encoding/README.md +1 -1
- data/tracks/python/exercises/saddle-points/README.md +1 -1
- data/tracks/python/exercises/say/README.md +1 -1
- data/tracks/python/exercises/scale-generator/README.md +1 -1
- data/tracks/python/exercises/scrabble-score/README.md +1 -1
- data/tracks/python/exercises/secret-handshake/README.md +1 -1
- data/tracks/python/exercises/series/README.md +1 -1
- data/tracks/python/exercises/sgf-parsing/README.md +1 -1
- data/tracks/python/exercises/sieve/README.md +1 -1
- data/tracks/python/exercises/simple-cipher/README.md +1 -1
- data/tracks/python/exercises/simple-linked-list/README.md +1 -1
- data/tracks/python/exercises/space-age/README.md +1 -1
- data/tracks/python/exercises/spiral-matrix/README.md +1 -1
- data/tracks/python/exercises/strain/README.md +1 -1
- data/tracks/python/exercises/sublist/README.md +1 -1
- data/tracks/python/exercises/sum-of-multiples/README.md +1 -1
- data/tracks/python/exercises/tournament/README.md +1 -1
- data/tracks/python/exercises/transpose/README.md +1 -1
- data/tracks/python/exercises/tree-building/README.md +1 -1
- data/tracks/python/exercises/triangle/README.md +1 -1
- data/tracks/python/exercises/trinary/README.md +1 -1
- data/tracks/python/exercises/twelve-days/README.md +1 -1
- data/tracks/python/exercises/two-bucket/README.md +1 -1
- data/tracks/python/exercises/two-fer/README.md +1 -1
- data/tracks/python/exercises/variable-length-quantity/README.md +1 -1
- data/tracks/python/exercises/word-count/README.md +1 -1
- data/tracks/python/exercises/word-search/README.md +1 -1
- data/tracks/python/exercises/wordy/README.md +1 -1
- data/tracks/python/exercises/yacht/README.md +1 -1
- data/tracks/python/exercises/zebra-puzzle/README.md +1 -1
- data/tracks/python/exercises/zipper/README.md +1 -1
- data/tracks/python/requirements-travis.txt +1 -1
- data/tracks/swift/exercises/scale-generator/Tests/ScaleGeneratorTests/ScaleGeneratorTests.swift +1 -1
- metadata +32 -8
- data/tracks/csharp/generators/Input/CanonicalDataCaseJson.cs +0 -73
- data/tracks/csharp/generators/Input/CanonicalDataCaseJsonConverter.cs +0 -49
- data/tracks/csharp/generators/Input/CanonicalDataCasesJson.cs +0 -58
- data/tracks/csharp/generators/Input/CanonicalDataCasesJsonConverter.cs +0 -17
- data/tracks/java/exercises/go-counting/src/main/java/.keep +0 -0
@@ -44,7 +44,7 @@ raise Exception("Meaningful message indicating the source of the error")
|
|
44
44
|
To run the tests, run the appropriate command below ([why they are different](https://github.com/pytest-dev/pytest/issues/1629#issue-161422224)):
|
45
45
|
|
46
46
|
- Python 2.7: `py.test zebra_puzzle_test.py`
|
47
|
-
- Python 3.
|
47
|
+
- Python 3.4+: `pytest zebra_puzzle_test.py`
|
48
48
|
|
49
49
|
Alternatively, you can tell Python to run the pytest module (allowing the same command to be used regardless of Python version):
|
50
50
|
`python -m pytest zebra_puzzle_test.py`
|
@@ -46,7 +46,7 @@ raise Exception("Meaningful message indicating the source of the error")
|
|
46
46
|
To run the tests, run the appropriate command below ([why they are different](https://github.com/pytest-dev/pytest/issues/1629#issue-161422224)):
|
47
47
|
|
48
48
|
- Python 2.7: `py.test zipper_test.py`
|
49
|
-
- Python 3.
|
49
|
+
- Python 3.4+: `pytest zipper_test.py`
|
50
50
|
|
51
51
|
Alternatively, you can tell Python to run the pytest module (allowing the same command to be used regardless of Python version):
|
52
52
|
`python -m pytest zipper_test.py`
|
data/tracks/swift/exercises/scale-generator/Tests/ScaleGeneratorTests/ScaleGeneratorTests.swift
CHANGED
@@ -89,7 +89,7 @@ class ScaleGeneratorTests: XCTestCase {
|
|
89
89
|
}
|
90
90
|
|
91
91
|
func testEnigmatic() {
|
92
|
-
let enigmatic = ScaleGenerator(tonic: "G", scaleName: "enigma", pattern: "
|
92
|
+
let enigmatic = ScaleGenerator(tonic: "G", scaleName: "enigma", pattern: "mAMMMmm")
|
93
93
|
XCTAssertEqual(enigmatic.pitches(), ["G", "G#", "B", "C#", "D#", "F", "F#"])
|
94
94
|
}
|
95
95
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: trackler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.2.1.
|
4
|
+
version: 2.2.1.152
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Katrina Owen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-05-
|
11
|
+
date: 2018-05-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rubyzip
|
@@ -3182,19 +3182,24 @@ files:
|
|
3182
3182
|
- tracks/csharp/generators/Exercises/BookStore.cs
|
3183
3183
|
- tracks/csharp/generators/Exercises/Bowling.cs
|
3184
3184
|
- tracks/csharp/generators/Exercises/BracketPush.cs
|
3185
|
+
- tracks/csharp/generators/Exercises/Change.cs
|
3186
|
+
- tracks/csharp/generators/Exercises/CircularBuffer.cs
|
3185
3187
|
- tracks/csharp/generators/Exercises/Clock.cs
|
3186
3188
|
- tracks/csharp/generators/Exercises/CollatzConjecture.cs
|
3187
3189
|
- tracks/csharp/generators/Exercises/ComplexNumbers.cs
|
3188
3190
|
- tracks/csharp/generators/Exercises/Connect.cs
|
3189
3191
|
- tracks/csharp/generators/Exercises/CryptoSquare.cs
|
3192
|
+
- tracks/csharp/generators/Exercises/CustomSet.cs
|
3190
3193
|
- tracks/csharp/generators/Exercises/Diamond.cs
|
3191
3194
|
- tracks/csharp/generators/Exercises/DifferenceOfSquares.cs
|
3192
3195
|
- tracks/csharp/generators/Exercises/Dominoes.cs
|
3193
3196
|
- tracks/csharp/generators/Exercises/Etl.cs
|
3194
3197
|
- tracks/csharp/generators/Exercises/FlattenArray.cs
|
3195
3198
|
- tracks/csharp/generators/Exercises/FoodChain.cs
|
3199
|
+
- tracks/csharp/generators/Exercises/Forth.cs
|
3196
3200
|
- tracks/csharp/generators/Exercises/Gigasecond.cs
|
3197
3201
|
- tracks/csharp/generators/Exercises/Grains.cs
|
3202
|
+
- tracks/csharp/generators/Exercises/Grep.cs
|
3198
3203
|
- tracks/csharp/generators/Exercises/Hamming.cs
|
3199
3204
|
- tracks/csharp/generators/Exercises/HelloWorld.cs
|
3200
3205
|
- tracks/csharp/generators/Exercises/House.cs
|
@@ -3204,6 +3209,7 @@ files:
|
|
3204
3209
|
- tracks/csharp/generators/Exercises/LargestSeriesProduct.cs
|
3205
3210
|
- tracks/csharp/generators/Exercises/Leap.cs
|
3206
3211
|
- tracks/csharp/generators/Exercises/Luhn.cs
|
3212
|
+
- tracks/csharp/generators/Exercises/Markdown.cs
|
3207
3213
|
- tracks/csharp/generators/Exercises/Matrix.cs
|
3208
3214
|
- tracks/csharp/generators/Exercises/Meetup.cs
|
3209
3215
|
- tracks/csharp/generators/Exercises/Minesweeper.cs
|
@@ -3217,11 +3223,13 @@ files:
|
|
3217
3223
|
- tracks/csharp/generators/Exercises/PigLatin.cs
|
3218
3224
|
- tracks/csharp/generators/Exercises/Poker.cs
|
3219
3225
|
- tracks/csharp/generators/Exercises/PrimeFactors.cs
|
3226
|
+
- tracks/csharp/generators/Exercises/ProteinTranslation.cs
|
3220
3227
|
- tracks/csharp/generators/Exercises/Proverb.cs
|
3221
3228
|
- tracks/csharp/generators/Exercises/QueenAttack.cs
|
3222
3229
|
- tracks/csharp/generators/Exercises/RailFenceCipher.cs
|
3223
3230
|
- tracks/csharp/generators/Exercises/Raindrops.cs
|
3224
3231
|
- tracks/csharp/generators/Exercises/RationalNumbers.cs
|
3232
|
+
- tracks/csharp/generators/Exercises/Rectangles.cs
|
3225
3233
|
- tracks/csharp/generators/Exercises/ReverseString.cs
|
3226
3234
|
- tracks/csharp/generators/Exercises/RnaTranscription.cs
|
3227
3235
|
- tracks/csharp/generators/Exercises/RobotSimulator.cs
|
@@ -3230,10 +3238,12 @@ files:
|
|
3230
3238
|
- tracks/csharp/generators/Exercises/RunLengthEncoding.cs
|
3231
3239
|
- tracks/csharp/generators/Exercises/SaddlePoints.cs
|
3232
3240
|
- tracks/csharp/generators/Exercises/Say.cs
|
3241
|
+
- tracks/csharp/generators/Exercises/ScaleGenerator.cs
|
3233
3242
|
- tracks/csharp/generators/Exercises/ScrabbleScore.cs
|
3234
3243
|
- tracks/csharp/generators/Exercises/SecretHandshake.cs
|
3235
3244
|
- tracks/csharp/generators/Exercises/Sieve.cs
|
3236
3245
|
- tracks/csharp/generators/Exercises/SpaceAge.cs
|
3246
|
+
- tracks/csharp/generators/Exercises/SpiralMatrix.cs
|
3237
3247
|
- tracks/csharp/generators/Exercises/Sublist.cs
|
3238
3248
|
- tracks/csharp/generators/Exercises/SumOfMultiples.cs
|
3239
3249
|
- tracks/csharp/generators/Exercises/Tournament.cs
|
@@ -3242,19 +3252,18 @@ files:
|
|
3242
3252
|
- tracks/csharp/generators/Exercises/TwelveDays.cs
|
3243
3253
|
- tracks/csharp/generators/Exercises/TwoBucket.cs
|
3244
3254
|
- tracks/csharp/generators/Exercises/TwoFer.cs
|
3255
|
+
- tracks/csharp/generators/Exercises/VariableLengthQuantity.cs
|
3245
3256
|
- tracks/csharp/generators/Exercises/WordCount.cs
|
3246
3257
|
- tracks/csharp/generators/Exercises/Wordy.cs
|
3247
3258
|
- tracks/csharp/generators/Exercises/Yacht.cs
|
3259
|
+
- tracks/csharp/generators/Exercises/ZebraPuzzle.cs
|
3248
3260
|
- tracks/csharp/generators/GeneratorExercise.cs
|
3249
3261
|
- tracks/csharp/generators/GeneratorStatus.cs
|
3250
3262
|
- tracks/csharp/generators/Generators.csproj
|
3251
3263
|
- tracks/csharp/generators/Generators.sln
|
3252
3264
|
- tracks/csharp/generators/Input/CanonicalData.cs
|
3253
3265
|
- tracks/csharp/generators/Input/CanonicalDataCase.cs
|
3254
|
-
- tracks/csharp/generators/Input/
|
3255
|
-
- tracks/csharp/generators/Input/CanonicalDataCaseJsonConverter.cs
|
3256
|
-
- tracks/csharp/generators/Input/CanonicalDataCasesJson.cs
|
3257
|
-
- tracks/csharp/generators/Input/CanonicalDataCasesJsonConverter.cs
|
3266
|
+
- tracks/csharp/generators/Input/CanonicalDataCaseParser.cs
|
3258
3267
|
- tracks/csharp/generators/Input/CanonicalDataFile.cs
|
3259
3268
|
- tracks/csharp/generators/Input/CanonicalDataParser.cs
|
3260
3269
|
- tracks/csharp/generators/Input/ConfigFile.cs
|
@@ -3274,6 +3283,7 @@ files:
|
|
3274
3283
|
- tracks/csharp/generators/Output/Templates/_AssertNull.liquid
|
3275
3284
|
- tracks/csharp/generators/Output/Templates/_AssertThrowsException.liquid
|
3276
3285
|
- tracks/csharp/generators/Output/Templates/_TestClass.liquid
|
3286
|
+
- tracks/csharp/generators/Output/Templates/_TestClassDisposable.liquid
|
3277
3287
|
- tracks/csharp/generators/Output/Templates/_TestMethod.liquid
|
3278
3288
|
- tracks/csharp/generators/Output/Templates/_TestMethodBody.liquid
|
3279
3289
|
- tracks/csharp/generators/Output/TestClass.cs
|
@@ -3563,6 +3573,10 @@ files:
|
|
3563
3573
|
- tracks/delphi/exercises/etl/README.md
|
3564
3574
|
- tracks/delphi/exercises/etl/uETLexample.pas
|
3565
3575
|
- tracks/delphi/exercises/etl/uETLtests.pas
|
3576
|
+
- tracks/delphi/exercises/grade-school/GradeSchool.dpr
|
3577
|
+
- tracks/delphi/exercises/grade-school/README.md
|
3578
|
+
- tracks/delphi/exercises/grade-school/uGradeSchoolExample.pas
|
3579
|
+
- tracks/delphi/exercises/grade-school/uGradeSchoolTest.pas
|
3566
3580
|
- tracks/delphi/exercises/grains/Grains.dpr
|
3567
3581
|
- tracks/delphi/exercises/grains/README.md
|
3568
3582
|
- tracks/delphi/exercises/grains/uGrainsExample.pas
|
@@ -3608,6 +3622,10 @@ files:
|
|
3608
3622
|
- tracks/delphi/exercises/poker/README.md
|
3609
3623
|
- tracks/delphi/exercises/poker/uPokerExample.pas
|
3610
3624
|
- tracks/delphi/exercises/poker/uPokerTest.pas
|
3625
|
+
- tracks/delphi/exercises/proverb/Proverb.dpr
|
3626
|
+
- tracks/delphi/exercises/proverb/README.md
|
3627
|
+
- tracks/delphi/exercises/proverb/uProverbExample.pas
|
3628
|
+
- tracks/delphi/exercises/proverb/uProverbTests.pas
|
3611
3629
|
- tracks/delphi/exercises/raindrops/README.md
|
3612
3630
|
- tracks/delphi/exercises/raindrops/raindrops.dpr
|
3613
3631
|
- tracks/delphi/exercises/raindrops/uRaindropsExample.pas
|
@@ -7793,7 +7811,6 @@ files:
|
|
7793
7811
|
- tracks/java/exercises/go-counting/.meta/version
|
7794
7812
|
- tracks/java/exercises/go-counting/README.md
|
7795
7813
|
- tracks/java/exercises/go-counting/build.gradle
|
7796
|
-
- tracks/java/exercises/go-counting/src/main/java/.keep
|
7797
7814
|
- tracks/java/exercises/go-counting/src/main/java/Player.java
|
7798
7815
|
- tracks/java/exercises/go-counting/src/test/java/GoCountingTest.java
|
7799
7816
|
- tracks/java/exercises/grade-school/.meta/src/reference/java/School.java
|
@@ -7978,7 +7995,7 @@ files:
|
|
7978
7995
|
- tracks/java/exercises/poker/.meta/src/reference/java/Card.java
|
7979
7996
|
- tracks/java/exercises/poker/.meta/src/reference/java/Hand.java
|
7980
7997
|
- tracks/java/exercises/poker/.meta/src/reference/java/Poker.java
|
7981
|
-
- tracks/java/exercises/poker/.meta/version
|
7998
|
+
- tracks/java/exercises/poker/.meta/version
|
7982
7999
|
- tracks/java/exercises/poker/README.md
|
7983
8000
|
- tracks/java/exercises/poker/build.gradle
|
7984
8001
|
- tracks/java/exercises/poker/src/main/java/.keep
|
@@ -8015,6 +8032,7 @@ files:
|
|
8015
8032
|
- tracks/java/exercises/queen-attack/src/main/java/.keep
|
8016
8033
|
- tracks/java/exercises/queen-attack/src/test/java/QueenAttackCalculatorTest.java
|
8017
8034
|
- tracks/java/exercises/rail-fence-cipher/.meta/src/reference/java/RailFenceCipher.java
|
8035
|
+
- tracks/java/exercises/rail-fence-cipher/.meta/version
|
8018
8036
|
- tracks/java/exercises/rail-fence-cipher/README.md
|
8019
8037
|
- tracks/java/exercises/rail-fence-cipher/build.gradle
|
8020
8038
|
- tracks/java/exercises/rail-fence-cipher/src/main/java/.keep
|
@@ -9856,6 +9874,9 @@ files:
|
|
9856
9874
|
- tracks/nim/exercises/anagram/README.md
|
9857
9875
|
- tracks/nim/exercises/anagram/anagram_test.nim
|
9858
9876
|
- tracks/nim/exercises/anagram/example.nim
|
9877
|
+
- tracks/nim/exercises/armstrong-numbers/README.md
|
9878
|
+
- tracks/nim/exercises/armstrong-numbers/armstrong_number_test.nim
|
9879
|
+
- tracks/nim/exercises/armstrong-numbers/example.nim
|
9859
9880
|
- tracks/nim/exercises/binary/README.md
|
9860
9881
|
- tracks/nim/exercises/binary/binary_test.nim
|
9861
9882
|
- tracks/nim/exercises/binary/example.nim
|
@@ -9913,6 +9934,9 @@ files:
|
|
9913
9934
|
- tracks/nim/exercises/triangle/README.md
|
9914
9935
|
- tracks/nim/exercises/triangle/example.nim
|
9915
9936
|
- tracks/nim/exercises/triangle/triangle_test.nim
|
9937
|
+
- tracks/nim/exercises/two-fer/README.md
|
9938
|
+
- tracks/nim/exercises/two-fer/example.nim
|
9939
|
+
- tracks/nim/exercises/two-fer/two_fer_test.nim
|
9916
9940
|
- tracks/nim/exercises/word-count/README.md
|
9917
9941
|
- tracks/nim/exercises/word-count/example.nim
|
9918
9942
|
- tracks/nim/exercises/word-count/word_count_test.nim
|
@@ -1,73 +0,0 @@
|
|
1
|
-
using System;
|
2
|
-
using System.Collections.Generic;
|
3
|
-
using System.Linq;
|
4
|
-
using Newtonsoft.Json.Linq;
|
5
|
-
|
6
|
-
namespace Generators.Input
|
7
|
-
{
|
8
|
-
public static class CanonicalDataCaseJson
|
9
|
-
{
|
10
|
-
public static IDictionary<string, dynamic> ToDictionary(JToken jToken) => ConvertProperty(jToken);
|
11
|
-
|
12
|
-
private static dynamic ConvertProperty(dynamic property)
|
13
|
-
{
|
14
|
-
if (property is JArray jArray)
|
15
|
-
return ConvertArrayProperty(property, jArray);
|
16
|
-
|
17
|
-
if (property is JToken jToken)
|
18
|
-
return ConvertTokenProperty(jToken);
|
19
|
-
|
20
|
-
return property;
|
21
|
-
}
|
22
|
-
|
23
|
-
private static dynamic ConvertTokenProperty(JToken jToken)
|
24
|
-
{
|
25
|
-
var properties = jToken.ToObject<IDictionary<string, dynamic>>();
|
26
|
-
|
27
|
-
for (var i = 0; i < properties.Count; i++)
|
28
|
-
{
|
29
|
-
var key = properties.Keys.ElementAt(i);
|
30
|
-
properties[key] = ConvertProperty(properties[key]);
|
31
|
-
}
|
32
|
-
|
33
|
-
return properties;
|
34
|
-
}
|
35
|
-
|
36
|
-
private static dynamic ConvertArrayProperty(dynamic property, JArray jArray)
|
37
|
-
{
|
38
|
-
// We can't determine the type of the array if the array is empty
|
39
|
-
if (!jArray.Any())
|
40
|
-
return property;
|
41
|
-
|
42
|
-
// We can only convert when all values have the same type
|
43
|
-
if (jArray.Select(x => x.Type).Distinct().Count() != 1)
|
44
|
-
return property;
|
45
|
-
|
46
|
-
switch (jArray[0].Type)
|
47
|
-
{
|
48
|
-
case JTokenType.Object:
|
49
|
-
return jArray.Select(ConvertProperty).ToArray();
|
50
|
-
case JTokenType.Integer:
|
51
|
-
return jArray.ToObject<int[]>();
|
52
|
-
case JTokenType.Float:
|
53
|
-
return jArray.ToObject<float[]>();
|
54
|
-
case JTokenType.String:
|
55
|
-
return jArray.ToObject<string[]>();
|
56
|
-
case JTokenType.Boolean:
|
57
|
-
return jArray.ToObject<bool[]>();
|
58
|
-
case JTokenType.Date:
|
59
|
-
return jArray.ToObject<DateTime[]>();
|
60
|
-
case JTokenType.Bytes:
|
61
|
-
return jArray.ToObject<byte[]>();
|
62
|
-
case JTokenType.Guid:
|
63
|
-
return jArray.ToObject<Guid[]>();
|
64
|
-
case JTokenType.Uri:
|
65
|
-
return jArray.ToObject<Uri[]>();
|
66
|
-
case JTokenType.TimeSpan:
|
67
|
-
return jArray.ToObject<TimeSpan[]>();
|
68
|
-
default:
|
69
|
-
return property;
|
70
|
-
}
|
71
|
-
}
|
72
|
-
}
|
73
|
-
}
|
@@ -1,49 +0,0 @@
|
|
1
|
-
using System;
|
2
|
-
using System.Collections.Generic;
|
3
|
-
using System.Linq;
|
4
|
-
using Newtonsoft.Json;
|
5
|
-
using Newtonsoft.Json.Linq;
|
6
|
-
|
7
|
-
namespace Generators.Input
|
8
|
-
{
|
9
|
-
public class CanonicalDataCaseJsonConverter : JsonConverter
|
10
|
-
{
|
11
|
-
private static readonly string[] NonInputProperties = { "description", "property", "expected", "comments" };
|
12
|
-
|
13
|
-
public override bool CanConvert(Type objectType) => typeof(CanonicalDataCase) == objectType;
|
14
|
-
|
15
|
-
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
|
16
|
-
{
|
17
|
-
var jTokenReader = (JTokenReader) reader;
|
18
|
-
|
19
|
-
var canonicalDataCase = new CanonicalDataCase();
|
20
|
-
serializer.Populate(jTokenReader, canonicalDataCase);
|
21
|
-
|
22
|
-
canonicalDataCase.Properties = CanonicalDataCaseJson.ToDictionary(jTokenReader.CurrentToken);
|
23
|
-
canonicalDataCase.SetInputParameters(GetInputProperties(canonicalDataCase.Properties));
|
24
|
-
canonicalDataCase.DescriptionPath = GetDescriptionPath(jTokenReader.CurrentToken);
|
25
|
-
|
26
|
-
return canonicalDataCase;
|
27
|
-
}
|
28
|
-
|
29
|
-
private static string[] GetInputProperties(IDictionary<string, dynamic> properties) => properties.Keys.Except(NonInputProperties).ToArray();
|
30
|
-
|
31
|
-
private static string[] GetDescriptionPath(JToken canonicalDataCaseToken)
|
32
|
-
{
|
33
|
-
var descriptionPath = new Stack<string>();
|
34
|
-
var currentToken = canonicalDataCaseToken;
|
35
|
-
|
36
|
-
while (currentToken != null)
|
37
|
-
{
|
38
|
-
if (currentToken.Type == JTokenType.Object)
|
39
|
-
descriptionPath.Push(currentToken.SelectToken("description").ToObject<string>());
|
40
|
-
|
41
|
-
currentToken = currentToken.Parent;
|
42
|
-
}
|
43
|
-
|
44
|
-
return descriptionPath.Where(x => !string.IsNullOrEmpty(x)).ToArray();
|
45
|
-
}
|
46
|
-
|
47
|
-
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) => throw new NotImplementedException();
|
48
|
-
}
|
49
|
-
}
|
@@ -1,58 +0,0 @@
|
|
1
|
-
using System;
|
2
|
-
using System.Collections.Generic;
|
3
|
-
using System.Linq;
|
4
|
-
using Newtonsoft.Json.Linq;
|
5
|
-
|
6
|
-
namespace Generators.Input
|
7
|
-
{
|
8
|
-
public static class CanonicalDataCasesJson
|
9
|
-
{
|
10
|
-
private const string TokensPath = "$..*[?(@.property)]";
|
11
|
-
|
12
|
-
public static CanonicalDataCase[] ToArray(JToken casesToken)
|
13
|
-
{
|
14
|
-
var caseTokens = casesToken.SelectTokens(TokensPath);
|
15
|
-
var canonicalDataCases = caseTokens.Select(x => x.ToObject<CanonicalDataCase>()).ToArray();
|
16
|
-
|
17
|
-
ConvertEmptyJArrayToArray(canonicalDataCases);
|
18
|
-
|
19
|
-
return canonicalDataCases;
|
20
|
-
}
|
21
|
-
|
22
|
-
private static void ConvertEmptyJArrayToArray(CanonicalDataCase[] canonicalDataCases)
|
23
|
-
{
|
24
|
-
foreach (var groupedCanonicalDataCases in canonicalDataCases.ToLookup(c => c.Property))
|
25
|
-
{
|
26
|
-
foreach (var groupedProperties in groupedCanonicalDataCases.SelectMany(x => x.Properties).ToLookup(x => x.Key))
|
27
|
-
{
|
28
|
-
var arrayType = GetArrayType(groupedProperties);
|
29
|
-
if (arrayType == null)
|
30
|
-
continue;
|
31
|
-
|
32
|
-
foreach (var groupedCanonicalDataCase in GetEmptyJArrays(groupedCanonicalDataCases, groupedProperties))
|
33
|
-
groupedCanonicalDataCase.Properties[groupedProperties.Key] = Array.CreateInstance(arrayType, 0);
|
34
|
-
}
|
35
|
-
}
|
36
|
-
}
|
37
|
-
|
38
|
-
private static Type GetArrayType(IGrouping<string, KeyValuePair<string, dynamic>> groupedProperties)
|
39
|
-
{
|
40
|
-
if (groupedProperties.Any(x => x.Value is string[]))
|
41
|
-
return typeof(string);
|
42
|
-
|
43
|
-
if (groupedProperties.Any(x => x.Value is int[]))
|
44
|
-
return typeof(int);
|
45
|
-
|
46
|
-
if (groupedProperties.Any(x => x.Value is float[]))
|
47
|
-
return typeof(float);
|
48
|
-
|
49
|
-
return null;
|
50
|
-
}
|
51
|
-
|
52
|
-
private static IEnumerable<CanonicalDataCase> GetEmptyJArrays(IGrouping<string, CanonicalDataCase> groupedCanonicalDataCases, IGrouping<string, KeyValuePair<string, dynamic>> groupedProperties)
|
53
|
-
=> groupedCanonicalDataCases.Where(canonicalDataCase => canonicalDataCase.Properties.ContainsKey(groupedProperties.Key) && IsEmptyJArray(canonicalDataCase, groupedProperties));
|
54
|
-
|
55
|
-
private static bool IsEmptyJArray(CanonicalDataCase x, IGrouping<string, KeyValuePair<string, dynamic>> groupedProperties)
|
56
|
-
=> x.Properties[groupedProperties.Key] is JArray jArray && jArray.Count == 0;
|
57
|
-
}
|
58
|
-
}
|
@@ -1,17 +0,0 @@
|
|
1
|
-
using System;
|
2
|
-
using System.Reflection;
|
3
|
-
using Newtonsoft.Json;
|
4
|
-
using Newtonsoft.Json.Linq;
|
5
|
-
|
6
|
-
namespace Generators.Input
|
7
|
-
{
|
8
|
-
public class CanonicalDataCasesJsonConverter : JsonConverter
|
9
|
-
{
|
10
|
-
public override bool CanConvert(Type objectType) => typeof(CanonicalDataCase[]).GetTypeInfo().IsAssignableFrom(objectType);
|
11
|
-
|
12
|
-
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
|
13
|
-
=> CanonicalDataCasesJson.ToArray(JToken.ReadFrom(reader));
|
14
|
-
|
15
|
-
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) => throw new NotImplementedException();
|
16
|
-
}
|
17
|
-
}
|
File without changes
|