Code Monkey home page Code Monkey logo

hyhyhy's Introduction

hyhyhy Gem Version

A Ruby library for creating and outputting professional, business-looking (HTML5) presentations that can be viewed inside the browser!

Introduction

hyhyhy is used from the Ruby CLI and relies on a series of steps that developers (and even regular users) can go through to build a simple presentation.

Once these steps completed, an HTML5 file is generated which can be accessed, viewed, and hosted online.

Features

All hyhyhy presentations come with support for a wide range of features, like Markdown text formatting, page transitions, sequential transitions for objects on the page, syntax highlighting, and mathematical functions.

There’s also support for keyboard shortcuts, showing the position inside the overall presentation timeline, hashed URLs for easy deep-linking, automatic rebuilds on content changes, responsive layouts, and touch gestures on mobile devices.

All presentations are very well supported across browsers and the library also includes lots of documentation.

More reading:

  • Installation: Step-by-step instructions for getting hyhyhy running on your computer.
  • Quickstart: Step-by-step instructions for creating new project.
  • Commands: List of Ruby CLI commands.
  • Usage: Instructions stating how to use the framework.
  • Configuration: Explanation of configure the tool.
  • Dependencies: List of used dependencies in the project.
  • Supported browsers: Explanation of browser support and fallbacks.
  • Presentation: Explanation of use the generated project.
  • Example: Sample available immediately after installation.
  • Contributing: Explanation of how you can join the project.
  • Conceptions: List of ideas for the future.
  • License: Clarification of certain rules.

Installation

Binary installers for the latest released version are available at the RubyGems.

$ gem install hyhyhy

You can create a new project by generating structure like this. Make sure that the destination folder does not exist because it will be overwritten.

my-new-presentation
├── _assets                # Assets, own catalogs
│   ├── javascripts        # Scripts
│   │   └── main.js        # Core (presentation)
│   └── stylesheets        # Styles
│       └── main.css       # Default
├── _includes              # Bower components
│   └── bower.json         # Package list
├── _layouts               # Layouts
│   └── default.erb        # Basic template
├── _slides                # Slides/Sections
│   ├── 1.introduction.md  # First group
│   ├── 2.packages.md      # Second group
│   ├── ...                # ...
│   └── n.html             # Last gruop
├── .bowerrc               # Bower configure
├── .hyhyhy                # Hyhyhy configure
└── README.md              # Simplified guide

Quickstart

$ gem install hyhyhy
$ hyhyhy new
$ cd new_empty_presentation
$ hyhyhy build --watch --serve

Commands

New

Creates a default structure.

$ hyhyhy new

Build

This function should splice all your slides/sections in one presentation. When you build your project it will generate a static version in the build folder that you can use.

$ hyhyhy build

Serve

Serve your presentation locally.

$ hyhyhy serve

Help

Displays a brief summary of the basic functions.

$ hyhyhy --help

Version

Displays a version.

$ hyhyhy --version

Usage

NOT READY, YET! SEE MAIN PRESENTATION...

Configuration

For now, you can change the basic variables in the .hyhyhy configuration file.

{
  "title": "hyhyhy",
  "description": "Pure & Professional presentations",
  "author": "Maciej A. Czyzewski"
}

Dependencies

  • Ruby (>= 1.9.3)
    • commander
    • kramdown
    • launchy
    • listen
    • erubis
    • bundler
    • rake
  • Javascript
    • prism.js
    • MetricsGraphics.js
    • katex.js
  • Others
    • bower (optional)

Supported browsers

  • Firefox 2+
  • Safari 3+
  • Opera 9.64+
  • Chrome
  • IE9, IE10, IE11

Presentation

  • Press (space or shift + space), (left arrow or right arrow) and (k or j) to navigate.
  • Press h to launch fullscreen.
  • Press ESC to exit fullscreen mode.
  • Press gg/shift + g to move to top/bottom.
  • Browser zooming is supported.
  • Touch events are supported.

Example

Sample available immediately after installation. You can see it live by clicking this link.

Contributing

The goal was to make package that will speed up work on own presentation.Please feel free to contribute to this project! Pull requests and feature requests welcome! ✌️

Conceptions

  • speaker notes
  • travis tests
  • compression

License

See LICENSE file in this repository.

Credits

Thanks

hyhyhy's People

Contributors

andersonba avatar chive avatar fisle avatar hermanya avatar maciejczyzewski avatar ryuheechul 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

hyhyhy's Issues

Order of section files

Hi, i'm using hyhyhy to build awesome presentations, but i have a little problem on the file names of the slides, i'm using the default names (e.g 1.html, 2.html, ..., 10.md), but hyhyhy seems to pick 10.md immediately after 1.html.
This seems to be because glob just checks the filesystem, so it's not numerically ordered, maybe we could use the sorted builtin and a custom key function for numerical ordering.

Feature idea: remote controller.

Like a mobile or another desktop. This way the presenter (master) can switch slides on one or multiple presentations (slaves).
I did a proof-of-concept some time ago : th3m4ri0/multi-presentation. The code is faaaaaaar from interesting but the following GIF gives you an idea of what I mean. (left side = master, right side = slave(s))
multi-presentation
Also, great work ! :octocat:

Support code highlighting on markdown

Hi, i wanted to highlight some code on my slides, i'm using markdown, i know i could use html syntax like you did on the example slides.

Maybe we could use the codehilite extension of the markdown module and add the pygments css to the main.css, but we would have two different styles for code highlight ...

Dosn't work on WP8 ( IE11 )

Dosn't work on WP8 ( IE11 ) and probably on other mobile devices. Worth mentioning or even better - fixing :)

hyhyhy watch stacktraces

I'm on Ubuntu 14.04. I believe I'm on hyhyhy 1.1.6 because i installed with pip, but this is the output of hyhyhy --version

[boucha@dasalt hytest]$ hyhyhy --version
{u'--help': False,
 u'--version': True,
 u'build': False,
 u'create': False,
 u'status': False,
 u'watch': False}

Is hyhyhy --version just outputting some debug info?

I'm attempting to run hyhyhy watch and am getting the following stacktrace:

[boucha@dasalt hytest]$ hyhyhy watch
[OK] Parsing file sections/1.html ...
[OK] Parsing file sections/2.md ...
[OK] Parsing file sections/3.html ...
[OK] Parsing file sections/4.html ...
[OK] Parsing file sections/5.html ...
[OK] Parsing file sections/6.html ...
[OK] Parsing file sections/7.html ...
[OK] Parsing file sections/8.html ...
[OK] Parsing file sections/9.html ...
[OK] Compressing file main.js ...
[OK] Compressing file main.css ...
[OK] Saved in build/index.html -> Dave's test presentation
Traceback (most recent call last):
  File "/usr/local/bin/hyhyhy", line 9, in <module>
    load_entry_point('hyhyhy==1.1.6', 'console_scripts', 'hyhyhy')()
  File "/usr/local/lib/python2.7/dist-packages/hyhyhy/__init__.py", line 167, in main
    cli.watch()
  File "/usr/local/lib/python2.7/dist-packages/hyhyhy/__init__.py", line 118, in watch
    observer.schedule(event_handler, path, recursive=True)
  File "/usr/local/lib/python2.7/dist-packages/watchdog/observers/api.py", line 329, in schedule
    timeout=self.timeout)
  File "/usr/local/lib/python2.7/dist-packages/watchdog/observers/inotify.py", line 128, in __init__
    self._inotify = Inotify(watch.path, watch.is_recursive)
  File "/usr/local/lib/python2.7/dist-packages/watchdog/observers/inotify_c.py", line 202, in __init__
    self._add_dir_watch(path, recursive, event_mask)
  File "/usr/local/lib/python2.7/dist-packages/watchdog/observers/inotify_c.py", line 380, in _add_dir_watch
    raise OSError('Path is not a directory')
OSError: Path is not a directory

Problems with special characters

Command:
$ hyhyhy new

Then filling the basic information, the bash throws an error with encoding special characters (like ñ a spanish character):

"error: "\xC3" on US-ASCII. Use --trace to view backtrace"

Support single-file presentation

I'd like to have all the slides in a single file as it enables me to use doctests for the example code.

Is this possible or easy to implement ?

Feature idea: Support for more than one presentation

Hi, the tool works just great with HTML5 and Markup support. Good work :-)

Just one enhancement I wanted to request,
Is it possible to add support for presenting more than one presentations using the single code repository?
The URLs for the presentations may be like localhost:4000/my-presentation-1#1 and localhost:4000/my-presentation-2#1 and ...

Thanks.

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.