pizzazz 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/Readme.markdown CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  Pizzazz is a simple pure Ruby implementation of code coloring, but just for JSON. Basically, if you have a ruby object and want to show it converted to JSON and add HTML around it so you can color it.
4
4
 
5
+ [Cheddar](http://cheddarapp.com) uses this to show example output of it's API calls. [Check it out](https://cheddarapp.com/developer/lists).
6
+
5
7
  ## Usage
6
8
 
7
9
  Pizzazzifing an object is simple:
@@ -25,41 +27,22 @@ This will add an ellipses after the first element.
25
27
  Spans are added around various elements. Here's the classes:
26
28
 
27
29
  * `string`
28
- * `constant` (for `true` or `false`
30
+ * `constant` (`true` or `false`)
29
31
  * `null`
30
32
  * `number`
31
33
 
32
- Everything else is left alone. It is recommended to wrap the output like this:
34
+ Everything else is left alone.
33
35
 
34
- ``` html
35
- <pre><%= Pizzazz.ify(object).html_safe %></pre>
36
- ```
36
+ If you want it wrapped in `<pre class="pizzazz">` (and call `html_safe` if possible), do the following:
37
37
 
38
- Here's my stylesheet if you're interested:
39
-
40
- ``` css
41
- pre {
42
- border-radius: 5px;
43
- background: #f7f7f7;
44
- padding: 0.5em;
45
- margin-bottom: 2em;
46
- border: 1px solid #ddd;
47
- }
48
-
49
- .string {
50
- color: #ee6132;
51
- }
52
-
53
- .null, .number, .constant {
54
- color: #8e75c3;
55
- }
56
-
57
- .comment {
58
- color: #999;
59
- font-style: italic;
60
- }
38
+ ``` ruby
39
+ Pizzazz.ify_html(object)
61
40
  ```
62
41
 
42
+ ### Stylesheet
43
+
44
+ If you're using the asset pipeline, you can simply require `pizzazz` to get my stylesheet. Be sure your `<pre>` has the `pizzazz` class. If you use `ify_html` it will automatically do this.
45
+
63
46
  ## Installation
64
47
 
65
48
  Add this line to your application's Gemfile:
@@ -0,0 +1,22 @@
1
+ pre.pizzazz {
2
+ border-radius: 5px;
3
+ background: #f7f7f7;
4
+ padding: 0.5em;
5
+ margin-bottom: 2em;
6
+ border: 1px solid #ddd;
7
+ }
8
+
9
+ pre.pizzazz span.string {
10
+ color: #ee6132;
11
+ }
12
+
13
+ pre.pizzazz span.null,
14
+ pre.pizzazz span.number,
15
+ pre.pizzazz span.constant {
16
+ color: #8e75c3;
17
+ }
18
+
19
+ pre.pizzazz span.comment {
20
+ color: #999;
21
+ font-style: italic;
22
+ }
data/lib/pizzazz.rb CHANGED
@@ -1,11 +1,13 @@
1
1
  require 'pizzazz/colorer'
2
+ require 'pizzazz/html'
3
+ require 'pizzazz/engine'
2
4
  require 'pizzazz/version'
3
5
 
4
6
  module Pizzazz
5
7
  TAB_SIZE = 2
6
8
 
7
9
  def self.ify(object, options = nil)
8
- p = Pizzazz::Colorer.new(object, options)
10
+ p = Colorer.new(object, options)
9
11
  p.ify
10
12
  end
11
13
  end
@@ -1,70 +1,72 @@
1
1
  # encoding: UTF-8
2
2
  require 'erb'
3
3
 
4
- class Pizzazz::Colorer
5
- def initialize(object, options = nil)
6
- options ||= {}
7
- @object = object
8
- @indent = 0
9
- @limit = (options[:limit] or 0)
10
- end
11
-
12
- def ify
13
- node(@object, @limit)
14
- end
15
-
16
- private
17
-
18
- def tab
19
- " " * @indent * Pizzazz::TAB_SIZE
20
- end
21
-
22
- def node(object, limit = 0)
23
- case object
24
- when String
25
- %Q{<span class="string">"#{::ERB::Util.h(object)}"</span>}
26
- when Time
27
- %Q{<span class="string">#{object.to_json}</span>}
28
- when TrueClass
29
- %Q{<span class="constant">true</span>}
30
- when FalseClass
31
- %Q{<span class="constant">false</span>}
32
- when NilClass
33
- %Q{<span class="null">null</span>}
34
- when Numeric
35
- %Q{<span class="number">#{object}</span>}
36
- when Hash
37
- s = "{\n"
38
- @indent += 1
39
- rows = []
40
- object.keys.collect(&:to_s).sort.each do |key|
41
- value = (object[key] != nil ? object[key] : object[key.to_sym])
42
- rows << %Q{#{tab}<span class="string">"#{key}"</span>: #{node(value)}}
43
- end
44
- s << rows.join(",\n") + "\n"
45
- @indent -= 1
46
- s << "#{tab}}"
47
- s
48
- when Array
49
- if object.length == 0
50
- "[]"
51
- else
52
- s = "[\n"
4
+ module Pizzazz
5
+ class Colorer
6
+ def initialize(object, options = nil)
7
+ options ||= {}
8
+ @object = object
9
+ @indent = 0
10
+ @limit = (options[:limit] or 0)
11
+ end
12
+
13
+ def ify
14
+ node(@object, @limit)
15
+ end
16
+
17
+ private
18
+
19
+ def tab
20
+ " " * @indent * Pizzazz::TAB_SIZE
21
+ end
22
+
23
+ def node(object, limit = 0)
24
+ case object
25
+ when String
26
+ %Q{<span class="string">"#{::ERB::Util.h(object)}"</span>}
27
+ when Time
28
+ %Q{<span class="string">#{object.to_json}</span>}
29
+ when TrueClass
30
+ %Q{<span class="constant">true</span>}
31
+ when FalseClass
32
+ %Q{<span class="constant">false</span>}
33
+ when NilClass
34
+ %Q{<span class="null">null</span>}
35
+ when Numeric
36
+ %Q{<span class="number">#{object}</span>}
37
+ when Hash
38
+ s = "{\n"
53
39
  @indent += 1
54
40
  rows = []
55
- array = @limit > 0 ? object[0...limit] : object
56
- array.each do |value|
57
- rows << tab + node(value)
41
+ object.keys.collect(&:to_s).sort.each do |key|
42
+ value = (object[key] != nil ? object[key] : object[key.to_sym])
43
+ rows << %Q{#{tab}<span class="string">"#{key}"</span>: #{node(value)}}
58
44
  end
59
-
60
- if limit > 0 and object.length > limit
61
- rows << tab + (object[0].is_a?(Hash) ? '{ … }' : '…')
62
- end
63
-
64
45
  s << rows.join(",\n") + "\n"
65
46
  @indent -= 1
66
- s << "#{tab}]"
47
+ s << "#{tab}}"
67
48
  s
49
+ when Array
50
+ if object.length == 0
51
+ "[]"
52
+ else
53
+ s = "[\n"
54
+ @indent += 1
55
+ rows = []
56
+ array = @limit > 0 ? object[0...limit] : object
57
+ array.each do |value|
58
+ rows << tab + node(value)
59
+ end
60
+
61
+ if limit > 0 and object.length > limit
62
+ rows << tab + (object[0].is_a?(Hash) ? '{ … }' : '…')
63
+ end
64
+
65
+ s << rows.join(",\n") + "\n"
66
+ @indent -= 1
67
+ s << "#{tab}]"
68
+ s
69
+ end
68
70
  end
69
71
  end
70
72
  end
@@ -0,0 +1,4 @@
1
+ module Pizzazz
2
+ class Engine < Rails::Engine
3
+ end
4
+ end
@@ -0,0 +1,8 @@
1
+ module Pizzazz
2
+ def self.ify_html(object, options = nil)
3
+ p = Colorer.new(object, options)
4
+ html = %Q{<pre class="pizzazz">#{p.ify}</pre>}
5
+ html.html_safe if html.respond_to?(:html_safe)
6
+ html
7
+ end
8
+ end
@@ -1,3 +1,3 @@
1
1
  module Pizzazz
2
- VERSION = '0.1.0'
2
+ VERSION = '0.1.1'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pizzazz
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -23,8 +23,11 @@ files:
23
23
  - LICENSE
24
24
  - Rakefile
25
25
  - Readme.markdown
26
+ - app/assets/stylesheets/pizzazz.css
26
27
  - lib/pizzazz.rb
27
28
  - lib/pizzazz/colorer.rb
29
+ - lib/pizzazz/engine.rb
30
+ - lib/pizzazz/html.rb
28
31
  - lib/pizzazz/version.rb
29
32
  - pizzazz.gemspec
30
33
  - test/test_helper.rb
@@ -43,7 +46,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
43
46
  version: '0'
44
47
  segments:
45
48
  - 0
46
- hash: -3216687736282638724
49
+ hash: 3758001213674931689
47
50
  required_rubygems_version: !ruby/object:Gem::Requirement
48
51
  none: false
49
52
  requirements:
@@ -52,7 +55,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
52
55
  version: '0'
53
56
  segments:
54
57
  - 0
55
- hash: -3216687736282638724
58
+ hash: 3758001213674931689
56
59
  requirements: []
57
60
  rubyforge_project:
58
61
  rubygems_version: 1.8.23