Giter Site home page Giter Site logo

tcl's Introduction

Exercism Tcl Track

build status

Exercism exercises in Tcl.

Setup

Tcl installation is described in the INSTALLATION document.

Contributing

Thank you so much for contributing! ๐ŸŽ‰

Please read about how to get involved in a track. Be sure to read the Exercism Code of Conduct.

We welcome pull requests of all kinds. No contribution is too small.

We encourage contributions that provide fixes and improvements to existing exercises. Please note that this track's exercises must conform to the Exercism-wide standards described in the documentation. If you're unsure about how to make a change, then go ahead and open a GitHub issue (see below) and we'll discuss it.

Exercise Tests

At the most basic level, Exercism is all about the tests. You can read more about how we think about test suites in the Exercism documentation.

Tcl test files use the tcltest core package. Here are two excellent introductory overviews:

Opening an Issue

If you plan to make significant or breaking changes, please open an issue so we can discuss it first. If this is a discussion that is relevant to more than just the Tcl track, please open an issue in exercism/discussions.

Submitting a Pull Request

Pull requests should be focused on a single exercise, issue, or conceptually cohesive change. Please refer to Exercism's pull request guidelines.

Please follow the coding standards for Tcl. (TODO: reference one...)

Verifying Your Change

Before submitting your pull request, you'll want to verify the changes in two ways:

  • Run all the tests for the Tcl exercises
  • Run an Exercism-specific linter to verify the track

All the tests for Tcl exercises can be run from the top level of the repo with

$ bin/check_exercise_versions
# ensure you have committed your code before running the following:
$ bin/test_all_exercises

Note that the test_all_exercises script will overwrite the "slug".tcl and then check it out again from git when the test is complete. If you have not committed your code, you risk losing that template file.

To run the linter, use the configlet tool:

$ path/to/configlet lint .

Contributing a New Exercise

Please see the documentation about adding new exercises.

Note that:

  • Each exercise must stand on its own. Do not reference files outside the exercise directory. They will not be included when the user fetches the exercise.

  • Exercises should use only the Tcl core libraries.

  • Exercises must conform to the Exercism-wide standards described in the documentation.

  • Each exercise should have a test suite, an example solution and a template file for the real implementation. Use the canonical-data.json file for the exercise from the problem-specifications repo to guide your test implementation.

  • The CI build expects files to be named using the following convention:

      exercises/
      โ””โ”€โ”€ hello-world/            # (dir name == "slug" name)
          โ”œโ”€โ”€ .meta
          โ”‚   โ”œโ”€โ”€ hints.md        # (optional)
          โ”‚   โ””โ”€โ”€ version         # (required)
          โ”œโ”€โ”€ example.tcl
          โ”œโ”€โ”€ hello-world.tcl     # "slug".tcl
          โ”œโ”€โ”€ hello-world.test    # "slug".test
          โ””โ”€โ”€ README.md           # (generated)
    
  • use configlet generate . --only $slug to generate the README file. The contents of .meta/hints.md will be incorporated into the README if you need to add Tcl-specific information.

  • Please do not commit any configuration files or directories inside the exercise.

  • Be sure to reference the new exercise at the appropriate place in the config.json file.

    • Core exercises are placed at the top of the config file, in the order we want them to occur.
    • Side exercises (that are unlocked when a core exercise is completed) are placed below, grouped and ordered by their parent core exercise.

tcl's People

Contributors

glennj avatar ihid avatar sshine avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.