colorly 0.0.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 203252a3e4c17ec95aa97615d18480e6ba3491abb3b6d7723525940dc30e19a2
4
- data.tar.gz: 24b8f4b7dab4cbcc5e2a2fbfb7af9037649219f732eb54b7de1957b61f40b435
3
+ metadata.gz: e7535f4f4f8e3bfddf9fd52b898c9d9462cadff128268a6be84d8f36dc701f58
4
+ data.tar.gz: 58066978fcee8cbfaac56e8f4be3e11550756083e3e490af10e29245d19a82f5
5
5
  SHA512:
6
- metadata.gz: 0ec3960059f744883ef5897a5767f09797355f360c3662077ffc06d7324e89e36f61b1a60252ff83859978f8ace16643ecd6b1f69b1649b6bcc1cbafdbed91a2
7
- data.tar.gz: 04c24635d279d4ca9ce689d3e8c993bc8272a3e3dfd1021e066befced21c60a24cd98cde556f9514d1ac009efbfd4de3049c9d10b49139f8fab25e849409b785
6
+ metadata.gz: a66ca24e08128a4922e3b0249b4b577fb9cebc6ecbe1fe65a4d877e05d18a67d3499309c819a0c0d67f24afef4640c6b8ec5e0e5a79bc92185907bbc1ce05132
7
+ data.tar.gz: 702180db6d13a1a8da042257c06f51983791234d4113591552cc8e33def5c007ad2ff1cd0d2c3f2fbfa4126c9c3d8fdd62c9ba855e8cf44bb49c90045d77fa42
data/README.md CHANGED
@@ -2,10 +2,11 @@
2
2
 
3
3
  [![Gem Version](https://badge.fury.io/rb/colorly.svg)](https://badge.fury.io/rb/colorly)
4
4
  [![Build Status](https://github.com/DannyBen/colorly/workflows/Test/badge.svg)](https://github.com/DannyBen/colorly/actions?query=workflow%3ATest)
5
+ [![Maintainability](https://api.codeclimate.com/v1/badges/a708b1651a6caf451d53/maintainability)](https://codeclimate.com/github/DannyBen/colorly/maintainability)
5
6
 
6
7
  ---
7
8
 
8
- Colorly is a command line urility and a Ruby library for generating color
9
+ Colorly is a command line utility and a Ruby library for generating color
9
10
  palettes using a simple DSL.
10
11
 
11
12
  It is a thin wrapper around the [chroma] gem.
@@ -20,11 +21,136 @@ The colorly command line outputs the palette as JSON, YAML or HTML.
20
21
  $ gem install colorly
21
22
  ```
22
23
 
24
+ ## Example
25
+
26
+ Colorly provides you with a simple ruby-based DSL for generating a color palette.
27
+
28
+ Start by creating this file:
29
+
30
+ ```ruby
31
+ # sample.rb
32
+ title "Set 1"
33
+ add 'red'.lighten 20
34
+ add last.spin 60
35
+ add last.spin 60
36
+ ```
37
+
38
+ then run it by calling:
39
+
40
+ ```
41
+ $ colorly sample.rb output.html
42
+ ```
43
+
44
+ output:
45
+
46
+ ![](assets/readme-sample-1.png)
47
+
48
+ For more detailed examples, view the [examples folder](examples).
49
+
50
+
51
+ ## Usage
52
+
53
+ Colorly scripts are built with a minimalist set of Ruby commands (DSL):
54
+
55
+ ```ruby
56
+ # Start a new color set
57
+ title "Any unique name for this set"
58
+
59
+ # Add colors to this set
60
+ add 'yellow'.darken(10).desaturate(10)
61
+ add last.spin 20
62
+
63
+ # Start another set
64
+ title "New set"
65
+ add '#ff3344'
66
+ # ...
67
+ ```
68
+
69
+ The colors provided to the `add` command can be
70
+ [anything that is supported by `Chroma`](https://github.com/jfairbank/chroma#creating-colors),
71
+ or an array of the same.
72
+
73
+ In addition, you can call the below `Chroma` methods directly on any color.
74
+ They will be forwarded to `Chroma`:
75
+
76
+ ```ruby
77
+ 'red'.spin # same as 'red'.paint.spin
78
+ 'red'.brighten # same as 'red'.paint.brighten
79
+ 'red'.darken # same as 'red'.paint.darken
80
+ 'red'.lighten # same as 'red'.paint.lighten
81
+ 'red'.saturate # same as 'red'.paint.saturate
82
+ 'red'.desaturate # same as 'red'.paint.desaturate
83
+ 'red'.greyscale # same as 'red'.paint.greyscale (also grayscale)
84
+ 'red'.palette # same as 'red'.paint.palette
85
+ ```
86
+
87
+ You can use the last added color with the variable `last`, and generate a
88
+ random color by calling `random`:
89
+
90
+ ```ruby
91
+ title "Example"
92
+ add 'red'.spin 10
93
+ add last.spin 30
94
+ add last.spin 30
95
+ add random.desaturate 10
96
+ ```
97
+
98
+ ## Using from Ruby code
99
+
100
+ If you wish to use Colorly from your own Ruby code, simply load a script to
101
+ the Script class:
102
+
103
+ ```ruby
104
+ require 'colorly'
105
+
106
+ # Load from a file
107
+ script = Colorly::Script.load 'script_file.rb'
108
+
109
+ # ... or from a string
110
+ script_string = "title 'Hello'; add params[:base_color] ; add last.spin 90"
111
+ script = Colorly::Script.new script_string
112
+
113
+ # Optionally, pass parameters to the script, which you can use in the script
114
+ # by accessing the `params` hash.
115
+ script.params = { base_color: '#cdc' }
116
+ # or
117
+ script.params[:base_color] = '#cdc'
118
+
119
+ # Run it
120
+ script.run
121
+
122
+ # Get its output - each color is a Chroma::Color object
123
+ p script.output
124
+ p script.output["Hello"].first.class
125
+ #=> {"Hello"=>[#ff2b00, #ff5500]}
126
+ #=> Chroma::Color
127
+
128
+ # Get a simplified output where each color is just its hex string
129
+ p script.simple_output
130
+ #=> {"Hello"=>["#ff2b00", "#ff5500"]}
131
+
132
+ # Get a simplified output, including color names (slower)
133
+ # Get a simplified output, including color names (slower)
134
+ pp script.simple_output names: true
135
+ #=> {"Hello"=>
136
+ #=> [{:hex=>"#ff2b00", :name=>["Scarlet", "Red"]},
137
+ #=> {:hex=>"#ff5500", :name=>["International Orange", "Orange"]}]}
138
+ ```
139
+
140
+ ## Contributing / Support
141
+
142
+ If you experience any issue, have a question or a suggestion, or if you wish
143
+ to contribute, feel free to [open an issue][issues].
144
+
145
+ ## Credits
146
+
147
+ - [Jeremy Fairbank](https://github.com/jfairbank) for the [chroma] gem.
148
+ - [Chirag Mehta](https://chir.ag/) for the original Javascript [color naming functions](https://chir.ag/projects/name-that-color).
149
+ - [Colblindor](https://www.color-blindness.com/color-name-hue/) for the additional base color (shade) work.
23
150
 
24
- ## Usage
25
151
 
26
- SOON
27
152
 
28
153
  ---
29
154
 
30
155
  [chroma]: https://github.com/jfairbank/chroma
156
+ [issues]: https://github.com/DannyBen/colorly/issues
@@ -10,28 +10,33 @@ module Colorly
10
10
  class Command < MisterBin::Command
11
11
  include Colsole
12
12
  summary "Run a colorly script"
13
+ version Colorly::VERSION
13
14
 
14
15
  help "Execute a colorly script and save or print its output"
15
16
 
16
- usage "colorly SCRIPT [OUTPUT_PATH] [--watch]"
17
- usage "colorly --help"
17
+ usage "colorly SCRIPT [OUTPUT_PATH] [--watch --names]"
18
+ usage "colorly --help | --version"
18
19
 
19
- option "-w, --watch", "Watch the script file and regenerate on change"
20
+ option "-w --watch", "Watch the script file and regenerate on change"
21
+ option "-n --names", "Also show color names and shades (slower)"
20
22
 
21
23
  param "SCRIPT", "Path to script file"
22
24
  param "OUTPUT_PATH", "Path to output file. The output format is determined by the file extension. Supported formats:\n- YAML (.yaml or .yml)\n- JSON (.json)\n- HTML (.html)\nIf left empty, YAML format will be sent to STDOUT."
23
25
 
24
- example "colorly examples/sample.rb"
25
- example "colorly examples/sample.rb out.json"
26
- example "colorly examples/sample.rb out.html --watch"
26
+ example "colorly examples/example.rb"
27
+ example "colorly examples/example.rb --names"
28
+ example "colorly examples/example.rb out.json"
29
+ example "colorly examples/example.rb out.html --watch --names"
27
30
 
28
- attr_reader :script_path, :script, :out_path
31
+ attr_reader :script_path, :script, :out_path, :use_names
29
32
 
30
33
  def run
31
34
  @script_path = args['SCRIPT']
32
35
  @out_path = args['OUTPUT_PATH']
36
+ @use_names = args['--names']
33
37
 
34
38
  if args['--watch']
39
+ generate
35
40
  watch_and_generate
36
41
  else
37
42
  generate
@@ -55,17 +60,21 @@ module Colorly
55
60
  end
56
61
 
57
62
  def show_output
58
- puts script.to_h.to_yaml
63
+ puts simple_output.to_yaml
64
+ end
65
+
66
+ def simple_output
67
+ script.simple_output names: use_names
59
68
  end
60
69
 
61
70
  def save_file
62
71
  out_string = case out_path
63
72
  when /\.json$/
64
- JSON.pretty_generate script.to_h
73
+ JSON.pretty_generate simple_output
65
74
  when /\.ya?ml$/
66
- script.to_h.to_yaml
75
+ simple_output.to_yaml
67
76
  when /\.html$/
68
- erb html_template, { output: script.output }
77
+ erb html_template, { output: script.output, use_names: use_names }
69
78
  else
70
79
  raise Colorly::ArgumentError, "Unknown output format for #{out_path}"
71
80
  end
@@ -83,8 +92,7 @@ module Colorly
83
92
  end
84
93
 
85
94
  def erb(template, vars)
86
- ERB.new(template).result(OpenStruct.new(vars).instance_eval { binding })
95
+ ERB.new(template, trim_mode: '%-').result(OpenStruct.new(vars).instance_eval { binding })
87
96
  end
88
-
89
97
  end
90
98
  end