Git Product home page Git Product logo

workshopper-adventure's Introduction

Workshopper

Join the chat at https://gitter.im/nodeschool/workshoppers

Workshopper is no longer maintained

In mid-term workshopper will be replaced with workshopper-adventure. Please try to build new workshoppers against workshopper-adventure. Thanks. (your maintainer)

Readme until now:

A terminal workshop runner framework

NPM NPM

Learn You The Node.js For Much Win!

Workshopper is used by learnyounode, and other Node.js command-line workshop applications.

*Documentation is being written for the v1 rewrite right now! Ping @rvagg if you need anything. learnyounode is now using this new version, for now you can use it to see how this works.

For now, @linclark has written a good introduction on creating your own workshop, available here.

High-level overview

Workshopper is essentially a test-runner with a fancy terminal UI. The Workshopper package itself is largely concerned with the menu system and some of the basic command-line parsing. Much of the work for executing the exercise validation is handled by workshopper-exercise.

Contributors

workshopper is proudly brought to you by the following hackers:

Maintainers

License

Workshopper is Copyright (c) 2013-2015 Rod Vagg @rvagg and licenced under the MIT licence. All rights not explicitly granted in the MIT license are reserved. See the included LICENSE file for more details.

Workshopper builds on the excellent work by @substack and @maxogden who created stream-adventure which serves as the original foundation for Workshopper and learnyounode. Portions of Workshopper may also be Copyright (c) 2013 @substack and @maxogden given that it builds on their original code.

workshopper-adventure's People

Contributors

braz avatar ccarruitero avatar cjb avatar claudiopro avatar cronopio avatar denysdovhan avatar dominhhai avatar elkorn avatar flet avatar geek avatar greenkeeperio-bot avatar haradats avatar imakewebthings avatar isruslan avatar julianduque avatar leftiefriele avatar lisposter avatar marocchino avatar martinheidegger avatar marxo avatar max-mapper avatar molcay avatar nizaroni avatar olizilla avatar phillipj avatar ralphtheninja avatar rvagg avatar sampathsris avatar tdd avatar tgfjt avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

workshopper-adventure's Issues

Select the current menu item in the menus

Currently the menu items in either menu are not automatically selected. I.e. in the exercises menu it should select the current exercise and in the language menu it should show the current language as preselected.

Publish a new version?

Hi,

are you planning to publish a new version of workshopper-adventure by any chance? We're translating some workshops to Norwegian and some have this module as a i18n dependency, but my commits merged in june hasnt been released yet..

Deprecation Warning with Node.js 7.5.0

There seems to be an deprecation warning that pops up right after choosing an exercise from the learnyounode exercise list.

(node:115452) DeprecationWarning: os.tmpDir() is deprecated. Use os.tmpdir() instead.

I do want to point out that this is a very new issue, as it exclusively happens with 7.5.0, and is not found when using Node.js 7.4.0 or earlier.

While I'm not sure, my apologies if this a misplaced issue for adventure-storage, but I can definitely say it is an adventure-only issue, as this warning is not experienced in learnyoumongo when using workshopper.

msee broken dependency

Due to a problem in dependency inside msee library firede/msee#58
All workshops which use workshopper-adventure got incomplete output:
For example:

  To keep things organized, let's create a folder for this workshop.

  Run this command to make a directory called  (or something else if you
  like):

     mkdir javascripting

  Change directory into the  folder:

     cd javascripting

  Create a file named :

As you can see all inline code parts are missed and it's impossible to see problem description correctly.
As a workaround shrinkwrap can be used.

Persist `--no-color` and `--no-tty`

It would be good if --no-color and --no-tty (#30) would be persistently stored in the global settings: i.e. if entered once you don't need to enter them again.

Translation to Turkish language.

Hi,

I have been working to translate learnyounode to Turkish. I have an issue with menu string (see img1 and img2). I think the menu strings coming from workshopper-adventure. I also translated this one and I have a PR(#105) for this.


img1:

Screen Shot 2019-10-15 at 09 56 31

img2:

Screen Shot 2019-10-15 at 09 56 22

Update documentation of command line options and parameters

There are a few things undocumented. For example:

--no-color option and lang-list or completed to get the completed commands. Since the translation should be be added for all language I keep this as an open issue. Particularly since I plan to add a few more commands.

Create a generator of terminal `screenshots` for readme's

In the readme of many workshoppers/adventures there is a screenshot that shows how the workshopper looks like in terminal. It would be awesome if we had a generator that could be automatically run on prepublish that generates a screenshot and adds it to the Readme.

Extract `print.js` into own package

The print.js module is encapsulated from the rest of the workshopper-adventure and can be safely put into an own npm package. Preferably with tests and documentation (:smiley_cat:). Would love if someone could take a little bit of time and create a nice package out of it.

New command `incomplete`

The command competed shows the list of completed exercises. It would be good to have the opposite command incomplete available. This is probably better done be before #23

Fix example code

The current example code is less than desireable:

  1. It doesn't make use of the package.json
  2. It doesn't specify a binary file
  3. It doesn't have any test
  4. There are no varying examples
  5. The example(s) is(are) not being tested against workshopper-adventure-test.
  6. The example is being published to npm (need to exclude it in the package.json)

Use standard linting

I have been planning to move to standard for linting of workshopper-adventure for a while. It would be good (as long as there are no outstanding pull requests open) to make the switch at some point.

missing example code

The module that this package descends from has example code in the readme. I think that is a very nice way to see how to start creating your own workshop.

How do I add simple function testing logic to exercise?

I've been through the Lin Clark tutorial, the Adventure tutorial, and I think I am finally able to make a basic version of my first workshop. The lack of documentation is kind of frustrating, but I was able to come this far from copying the learnyounode and javascripting workshops.

If I am ever able to successfully make my own workshop, I vow to make a tutorial.

Right now, using the workshopper-exercise package, I am able to compare the stdout output of the submitted answer as well as the actual solution (see my exercise.js). But what if I want the user to submit a function to be tested? Something like this:

// make a function to add two numbers
module.exports = function(a, b) {
  return a + b;
}

What do I need to do to make this work? How would I go about this?

The exercise object that I need to return in my exercise.js is not very well documented and I am not sure how to proceed.

You can see my extremely simple workshop here: https://github.com/adrianmcli/math-adventure

New command `improve` to fork a workshopper-adventure

In a sense the workshoppers/adventures are created for a community of people from which we would love to get help. I think it would be cool to have an improve feature that clones the repository to the current folder (or show a dialog to choose it) and optionally create a github fork of the repository and show an explanation on how to proceed.

Fix repository to be less strict about the definition and always return a url.

Right now the workshopper-adventure code looks for the git field in package.json which has a few ugly side-effects:

  1. This logic expects this to be an html link (workshopper/javascripting@232852a#diff-b9cfc7f2cdf78a7f4b91a753d10865a2L6)
  2. This logic breaks with an object. martinheidegger/scope-chains-closures@2f9087e
  3. After the installation when using npm it turns from https://github.com/sethvincent/javascripting.git to git+https://github.com/sethvincent/javascripting.git

New binary tool (aka. fix `makews.js`)

@khalifenizar kindly provided makews.js a long time ago that creates a stub of a workshopper.
It would be good to update this and create a proper workshopper-adventure binary.

npm i workshopper-adventure -g
workshopper-adventure new learnyoufancyframework

should

  1. check if learnyoufancyframework is taken in npm (and abort if it is)
  2. create a new folder learnyoufancyframework
  3. create a package.json that has a dependency workshopper-adventure with the namelearnyoufancyframework the version 1.0.0
  4. create a index.js file that references and specify it as main in the package.json
  5. create an executable bin/learnyoufancyframework file that references index and add it as bin to the package.json
  6. add a dev-dependency to workshopper-adventure-test and add the test to the scripts.test of the package.json
  7. add node_modules to .gitignore
  8. Add readme.md with stubs.
  9. run git init

(optionally)

  1. use the github api to create a learnyoufancyframework project under the current user.
  2. use the github api to add information (email, name, repository) to the package.json
  3. add git remote and push to origin

Discussion If this is added to workshopper-adventure then then this will make workshopper-adventure heavier. Maybe its better to put it into wa-gen or alike npm package.

Semver major?

I'm just looking at updating nodebot-workshop from 4.6.1 to 4.7.1 of workshopper-adventure and there's a whole bunch of commits marked Semver major between 4.7.0 and 4.7.1 - was this intentional?

Support es6

It's the right time we should support es6 solutions

Node 6.x crops some output

This was reported by @embrilliant.

Node 6 introduced some new behavior where process.exit is executed faster than before. This means that if you have some string a stream that sends to process.stout, this stream will not be flushed. In some exercises where the output is too long (for example: the output of JUGGLING ASYNC once it is verified)
node will simply stop outputting the last chunk.

Stream support

Right now the output doesn't support streams like adventure does optionally - only text processing supported - Needs some rather substantial rewrite for this.

Problem header is not translated

Steps to reproduce:

  1. Launch learnyounode
  2. Switch to French
  3. Observe the first exercise is 'BONJOUR, MONDE'
  4. Launch the first exercise

Bug: the title of the exercise is 'HELLO WORLD (Exercice 1 sur 13)', should be 'BONJOUR, MONDE (Exercice 1 sur 13)'

Extract `storage.js` into own package

I took the time to abstract the storage functionality into a own tiny module called storage.js that basically can stand alone from the rest of the workshopper. It would be nice if someone could take the time and create a package out of it (preferably with documentation and tests). The code is not very complex should be doable in a relatively short period time.

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.