Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/gavinlaking/vedeu

A framework written in Ruby for building GUI/TUI terminal/console applications.
https://github.com/gavinlaking/vedeu

Last synced: about 2 months ago
JSON representation

A framework written in Ruby for building GUI/TUI terminal/console applications.

Awesome Lists containing this project

README

        

[![Code Climate](https://codeclimate.com/github/gavinlaking/vedeu.png)](https://codeclimate.com/github/gavinlaking/vedeu)
[![Build Status](https://travis-ci.org/gavinlaking/vedeu.svg?branch=master)](https://travis-ci.org/gavinlaking/vedeu)

# Vedeu

Vedeu (vee-dee-you; aka VDU) is my attempt at creating a terminal based
application framework without the need for Ncurses. I've tried to make Vedeu
as simple and flexible as possible.

## Requirements

- Ruby (see [.ruby-version](https://github.com/gavinlaking/vedeu/blob/master/.ruby-version) for current version)
- Linux/MacOSX

**Note**: You may have trouble running Vedeu with Windows installations. (Pull
requests welcome!)

## Dependencies

Vedeu relies on the following gems, these will be automatically
installed when you install Vedeu (as documented below).

- bundler
- rake
- vedeu_cli
- thor

## Installation

To install Vedeu, simply:

gem install vedeu

To use Vedeu's application scaffolding, see the
[RubyDoc](http://www.rubydoc.info/gems/vedeu/file/docs/getting_started.md)

## Example

Have a look at: [Playa](https://github.com/gavinlaking/playa). Please browse the
source of Playa and Vedeu to get a feel for how it all works.

**Note**: Playa is based on an old version of Vedeu. Vedeu has significantly
improved since then and a better example is coming soon!

If you have produced software which uses Vedeu, please let me know, I'll link
to your project here.

## Documentation & Usage

Vedeu is documented using Yard. I hope to produce more 'General Usage'
documentation shortly. In the meantime, please browse the
[RubyDoc](http://rubydoc.info/gems/vedeu). Finally, here is some
documentation for the various aspects of Vedeu (not comprehensive):

- [The Vedeu API](http://rubydoc.info/gems/vedeu/file/docs/api.md)
- [Borders](http://rubydoc.info/gems/vedeu/file/docs/borders.md)
- [Buffers](http://rubydoc.info/gems/vedeu/file/docs/buffer.md)
- [Cell](http://rubydoc.info/gems/vedeu/file/docs/cell.md)
- [Chars](http://rubydoc.info/gems/vedeu/file/docs/chars.md)
- [Colours & Styles](http://rubydoc.info/gems/vedeu/file/docs/colours_styles.md)
- [Configuration](http://rubydoc.info/gems/vedeu/file/docs/configuration.md)
- [Cursors](http://rubydoc.info/gems/vedeu/file/docs/cursors.md)
- [The Vedeu DSL](http://rubydoc.info/gems/vedeu/file/docs/dsl.md)
- [Events](http://rubydoc.info/gems/vedeu/file/docs/events.md)
- [Application Events](http://rubydoc.info/gems/vedeu/file/docs/events/application.md)
- [Document Events](http://rubydoc.info/gems/vedeu/file/docs/events/document.md)
- [Focus Events](http://rubydoc.info/gems/vedeu/file/docs/events/focus.md)
- [Menu Events](http://rubydoc.info/gems/vedeu/file/docs/events/menu.md)
- [Movement Events](http://rubydoc.info/gems/vedeu/file/docs/events/movement.md)
- [Refresh Events](http://rubydoc.info/gems/vedeu/file/docs/events/refresh.md)
- [System Events](http://rubydoc.info/gems/vedeu/file/docs/events/system.md)
- [View Events](http://rubydoc.info/gems/vedeu/file/docs/events/view.md)
- [Visibility Events](http://rubydoc.info/gems/vedeu/file/docs/events/visibility.md)
- [Geometry](http://rubydoc.info/gems/vedeu/file/docs/geometry.md)
- [Getting Started](http://rubydoc.info/gems/vedeu/file/docs/getting_started.md)
- [Groups](http://rubydoc.info/gems/vedeu/file/docs/group.md)
- [Input](http://rubydoc.info/gems/vedeu/file/docs/input.md)
- [Interfaces](http://rubydoc.info/gems/vedeu/file/docs/.md)
- [Keymaps](http://rubydoc.info/gems/vedeu/file/docs/keymaps.md)
- [Lines](http://rubydoc.info/gems/vedeu/file/docs/lines.md)
- [Object Graphs](http://rubydoc.info/gems/vedeu/file/docs/object_graph.md)
- [Output](http://rubydoc.info/gems/vedeu/file/docs/output.md)
- [Streams](http://rubydoc.info/gems/vedeu/file/docs/streams.md)
- [Template](http://rubydoc.info/gems/vedeu/file/docs/template.md)
- [Views](http://rubydoc.info/gems/vedeu/file/docs/view.md)

There are also some small, simple applications in the
[examples/](https://github.com/gavinlaking/vedeu/blob/master/examples)
directory to show some concepts and basic functionality. This is not
exhaustive, but are being added to and improved fairly regularly.

## Development / Contributing

* Documentation hosted at [RubyDoc](http://rubydoc.info/gems/vedeu).
* Source hosted at [GitHub](https://github.com/gavinlaking/vedeu).

Pull requests are very welcome! Please try to follow these simple rules if
applicable:

* Please create a topic branch for every separate change you make.
* Make sure your patches are well tested.
* Update the [Yard](http://yardoc.org/) documentation.
(Use `yard stats --list-undoc` to locate undocumented code)
* Update the
[README](https://github.com/gavinlaking/vedeu/blob/master/README.md),
if appropriate.
* Please **do not change** the version number.

Raising issues and finding bugs, updating documentation and improving
the code are all welcome contributions. I may also have left some TODO
items lying around, which you're quite welcome to and can find
with either Yard, or git:

yard list --query '@todo'

git grep --line-number '@todo'

Any branch on the repository that is not `master` is probably experimental; do
not rely on anything in these branches. Typically, `twerks` will be merged
into `master` before a release, and branches prefixed with `spike/` are me
playing with ideas- they aren't guaranteed to work at all.

Various environment variables are available to you to help with testing, all of
which can be used in combination, prefaced to `rake`:

- Produce statistics on the slowest performing parts of the
application/tests. Useful when used multiple times. See
`test/test_helper.rb` for configuration.

PERFORMANCE=1 rake

- Produce a 'SimpleCov' test coverage report in the `coverage/`
directory.

SIMPLECOV=1 rake

- Produces a 'SimpleCov' test coverage report with output to the
console.

CONSOLE_COVERAGE=1 rake

- Enable Ruby's warnings mode (this can usually be quote verbose, but
thankfully more so with gem dependencies rather than Vedeu itself).

WARNINGS=1 rake

- Disable Ruby's garbage collection for this test run.

DISABLE_GC=1 rake

- Use Rubocop to catch coding misdemeanours for this test run. (Or
use `rake rubocop`).

RUBOCOP=1 rake

- Build the Yard documentation for the project. (Or use `rake yard`).

YARD=1 rake

### General contribution help

1. Fork it ([https://github.com/gavinlaking/vedeu/fork](https://github.com/gavinlaking/vedeu/fork))
2. Clone it
3. Run `bundle`
4. Run `rake` (runs all tests and coverage report) or `bundle exec guard`
5. Create your feature branch (`git checkout -b my-new-feature`)
6. Write some tests, write some code, **have some fun!**
7. Commit your changes (`git commit -am 'Add some feature'`)
8. Push to the branch (`git push origin my-new-feature`)
9. Create a new pull request.

## Author & Contributors

### Author

[Gavin Laking](https://github.com/gavinlaking)
([@gavinlaking](http://twitter.com/gavinlaking))

### Contributors

[https://github.com/gavinlaking/vedeu/graphs/contributors](https://github.com/gavinlaking/vedeu/graphs/contributors)