Giter Club home page Giter Club logo

supernova's Introduction

Supernova

Fennel 0.5 on Lua 5.1 Fennel 0.5 on Lua 5.2 Fennel 0.5 on Lua 5.3 Fennel 0.5 on Lua 5.4

Terminal string styling. Put some color in your console! Support for Fennel, Lua, and Shell.

Photo of the Veil Nebula from the Hubble Space Telescope.
Veil Nebula | hubblesite.org

fortune | cowsay | supernova

Quote by Richard Feynman in different foreground colors and an illustration of a cow.

Fennel

"Fennel is a programming language that brings together the speed, simplicity, and reach of Lua with the flexibility of a lisp syntax and macro system." fennel-lang.org

(local supernova (require :supernova))

(print (supernova.italic.yellow "WARNING: Intense color found."))
(print (supernova.underline.color "Beautiful pink." "#e317e0"))

(print (supernova.gradient
        "Reflection, refraction and dispersion."
        ["#FF0000" "#FFFF00" "#00FF00" "#0FF0FE" "#233CFE"]))

Screenshot of a Terminal containing texts with several foreground colors.

Check the installation instructions.

Check the complete documentation for the Fennel library.

Lua

local supernova = require 'supernova'

print(supernova.italic.yellow('WARNING: Intense color found.'))
print(supernova.underline.color('Beautiful pink.', '#e317e0'))

print(supernova.gradient(
  'Reflection, refraction and dispersion.',
  { '#FF0000', '#FFFF00', '#00FF00', '#0FF0FE', '#233CFE' }
))

Screenshot of a Terminal containing texts with several foreground colors.

Check the complete documentation for the Lua library.

Shell

supernova inspect '#eb4934'

Screenshot of a Terminal containing information about the Cascara color.

echo WARNING: Intense color found. | supernova italic.yellow
echo Beautiful pink. | supernova underline.color '#e317e0'

echo Reflection, refraction and dispersion. | \
  supernova gradient \
  '#FF0000' '#FFFF00' '#00FF00' '#0FF0FE' '#233CFE'

Screenshot of a Terminal containing texts with several foreground colors.

Check the complete documentation for the Shell CLI.

Installing

Ensure that you have Lua and LuaRocks installed.

Installation through LuaRocks:

Installing for the user (recommended):

luarocks install supernova --local

Installing for the system:

sudo luarocks install supernova

Installing for Fennel

To install through fnx, add to your .fnx.fnl:

:supernova {:lua/rock ">= 0.0.2"}

; Example:

{:name    "my-project"
 :version "0.0.1"

 :dependencies {
   :supernova {:lua/rock ">= 0.0.2"}}}

Principles

This project is a spark towards a higher purpose. There are principles to ensure that we are on track. These principles should help with discussions and decision making:

1) Portability

There must be no external dependencies other than Lua. There must be no need to use LuaJIT or any special implementation than the standard Lua. The code must work on any platform where it is possible to run Lua.

Maintainers' priority in the pursuit of this principle:

  1. Free Software and Free Hardware
  2. Open Source Software and Open Source Hardware
  3. Proprietary Software and Proprietary Hardware

Room for Improvement

Chaining

The current strategy with metatables has its flaws. You can explore the problem by analyzing these samples of code:

Color Proximity

The math for the distance between two colors ain't flawless. We can do better. Current code:

local distance = (
  ((rgb_color[1] - cadidate_color.rgb[1]) ^ 2) +
  ((rgb_color[2] - cadidate_color.rgb[2]) ^ 2) +
  ((rgb_color[3] - cadidate_color.rgb[3]) ^ 2)
)

Gradient

We have a naive approach for gradient generation. Other algorithms could produce better results: Color gradient algorithm

Current code:

local color = {
  math.floor((from_rgb[1] * (1 - mix)) + (to_rgb[1] * mix)),
  math.floor((from_rgb[2] * (1 - mix)) + (to_rgb[2] * mix)),
  math.floor((from_rgb[3] * (1 - mix)) + (to_rgb[3] * mix))
}

VGA Mode 13h

The current 256 VGA color representation may not be accurate enough. Some references that are worth exploring:

Packages

We currently only have luarocks packages. We have some experiments with standalone binaries and AUR packages that could be released.

Contributing

Style Guide

We ensure that Luacheck is valid for any Pull Request or commit.

Also, we follow the Olivine Labs' Lua Style Guide. The LuaRocks' Lua Style Guide is a great reference as well. If their suggestions conflict with each other, the Olivine Labs' Guide prevails.

Acknowledgments

The names for the colors come from the color-names project.

References

supernova's People

Contributors

gbaptista 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

Watchers

 avatar  avatar

supernova's Issues

Gradient

Make a 3 color gradient algorithm.

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.