rails-env-favicon 0.0.3 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f1918a28b4ed51533dee46b589aa6f7e690af35a
4
- data.tar.gz: 1c42969fd6aef0ab57a0094e4e61508749a255b0
3
+ metadata.gz: 360876ef2a17013757041f0c08850c43c7cd5a46
4
+ data.tar.gz: 061d6dbb8015cfc604289a955dc2bb9e07febf66
5
5
  SHA512:
6
- metadata.gz: 3cbf4ab69b3bf4508346662c68845ade2a61fadbf404f5bac7d4c3345ac775b6b5a73fc49e443ac2d9e1e732b0737648cefa82b62209ada141b3d3de572a7341
7
- data.tar.gz: 58969accc533706b41476b602f663343c1748aa77ed5f9d695bb09e67a0247e6c2fbffe4ae3ff286161e13c83cb83c47a01e0186d307ec151219ff0991817560
6
+ metadata.gz: 7ee020c8021c9d3d5d3980f9db9f5fa123c7abdfa6a5aa1faa904e70e106a8135adb5940f26659c21ad573c1f2dcddb0c947b1a0d2ffadbb6d159eb498acfde9
7
+ data.tar.gz: 122b036f8bacbd22753edc1193773bb562bd3ebcc2839290056e700168f942436ec1fa8d0108c97fe523301bb2f8b84b337b8efbda4506fc9505711b4c7ff317
data/README.md CHANGED
@@ -15,6 +15,12 @@ This means that on the first tab we have development environment, on second stag
15
15
 
16
16
  It uses [Tinycon](https://github.com/tommoor/tinycon) - A small library for manipulating the favicon.
17
17
 
18
+ And one more option:
19
+
20
+ ![ScreenShot](https://raw.github.com/accessd/rails-env-favicon/master/doc/img/sample-grayscale.png)
21
+
22
+ Icon will be gray on non production environment.
23
+
18
24
  Installation
19
25
  ------------
20
26
 
@@ -41,10 +47,14 @@ Config
41
47
  In config/initializers/rails_env_favicon.rb
42
48
 
43
49
  RailsEnvFavicon.setup do |config|
50
+ # If true then favicon will be gray on non production env
51
+ config.make_grayscale = false
52
+ # or if make_grayscale = false then draw badge on favicon with this options:
44
53
  config.text_color = '#ffffff'
45
54
  config.background_color = '#549a2f'
46
55
  end
47
56
 
57
+
48
58
  Contributing
49
59
  -------------
50
60
 
@@ -0,0 +1,143 @@
1
+ /*!
2
+ * GrayscaleFavicon - A small library for make the Favicon grayscale
3
+ * Accessd, https://github.com/accessd
4
+ * Copyright (c) 2014 Accessd
5
+ * @license MIT Licensed
6
+ * @version 0.0.1
7
+ */
8
+
9
+ (function(){
10
+
11
+ var GrayscaleFavicon = {};
12
+ var currentFavicon = null;
13
+ var originalFavicon = null;
14
+ var faviconImage = null;
15
+ var canvas = null;
16
+ var size = 32;
17
+
18
+ // private methods
19
+ var getFaviconTag = function(){
20
+
21
+ var links = document.getElementsByTagName('link');
22
+
23
+ for(var i=0, len=links.length; i < len; i++) {
24
+ if ((links[i].getAttribute('rel') || '').match(/\bicon\b/)) {
25
+ return links[i];
26
+ }
27
+ }
28
+
29
+ return false;
30
+ };
31
+
32
+ var removeFaviconTag = function(){
33
+
34
+ var links = document.getElementsByTagName('link');
35
+ var head = document.getElementsByTagName('head')[0];
36
+
37
+ for(var i=0, len=links.length; i < len; i++) {
38
+ var exists = (typeof(links[i]) !== 'undefined');
39
+ if (exists && (links[i].getAttribute('rel') || '').match(/\bicon\b/)) {
40
+ head.removeChild(links[i]);
41
+ }
42
+ }
43
+ };
44
+
45
+ var getCurrentFavicon = function(){
46
+
47
+ if (!originalFavicon || !currentFavicon) {
48
+ var tag = getFaviconTag();
49
+ originalFavicon = currentFavicon = tag ? tag.getAttribute('href') : './favicon.ico';
50
+ }
51
+
52
+ return currentFavicon;
53
+ };
54
+
55
+ var getCanvas = function (){
56
+
57
+ if (!canvas) {
58
+ canvas = document.createElement("canvas");
59
+ canvas.width = size;
60
+ canvas.height = size;
61
+ }
62
+
63
+ return canvas;
64
+ };
65
+
66
+ var setFaviconTag = function(url){
67
+ removeFaviconTag();
68
+
69
+ var link = document.createElement('link');
70
+ link.type = 'image/x-icon';
71
+ link.rel = 'icon';
72
+ link.href = url;
73
+ document.getElementsByTagName('head')[0].appendChild(link);
74
+ };
75
+
76
+ var log = function(message){
77
+ if (window.console) window.console.log(message);
78
+ };
79
+
80
+ var drawFavicon = function(label, colour) {
81
+
82
+ var context = getCanvas().getContext("2d");
83
+ var colour = colour || '#000000';
84
+ var src = getCurrentFavicon();
85
+
86
+ faviconImage = document.createElement('img');
87
+ faviconImage.onload = function() {
88
+
89
+ // clear canvas
90
+ context.clearRect(0, 0, size, size);
91
+
92
+ // draw the favicon
93
+ context.drawImage(faviconImage, 0, 0, faviconImage.width, faviconImage.height, 0, 0, size, size);
94
+
95
+ var imgPixels = context.getImageData(0, 0, faviconImage.width, faviconImage.height);
96
+
97
+ for(var y = 0; y < imgPixels.height; y++){
98
+ for(var x = 0; x < imgPixels.width; x++){
99
+ var i = (y * 4) * imgPixels.width + x * 4;
100
+ var avg = (imgPixels.data[i] + imgPixels.data[i + 1] + imgPixels.data[i + 2]) / 3;
101
+ imgPixels.data[i] = avg;
102
+ imgPixels.data[i + 1] = avg;
103
+ imgPixels.data[i + 2] = avg;
104
+ }
105
+ }
106
+ context.putImageData(imgPixels, 0, 0, 0, 0, imgPixels.width, imgPixels.height);
107
+
108
+ // refresh tag in page
109
+ refreshFavicon();
110
+ };
111
+
112
+ // allow cross origin resource requests if the image is not a data:uri
113
+ // as detailed here: https://github.com/mrdoob/three.js/issues/1305
114
+ if (!src.match(/^data/)) {
115
+ faviconImage.crossOrigin = 'anonymous';
116
+ }
117
+
118
+ faviconImage.src = src;
119
+ };
120
+
121
+ var refreshFavicon = function(){
122
+ // check support
123
+ if (!getCanvas().getContext) return;
124
+
125
+ setFaviconTag(getCanvas().toDataURL());
126
+ };
127
+
128
+ GrayscaleFavicon.grayscale = function(){
129
+ drawFavicon();
130
+ return this;
131
+ };
132
+
133
+ GrayscaleFavicon.reset = function(){
134
+ setFaviconTag(originalFavicon);
135
+ };
136
+
137
+ window.GrayscaleFavicon = GrayscaleFavicon;
138
+
139
+ if(typeof define === 'function' && define.amd) {
140
+ define(GrayscaleFavicon);
141
+ }
142
+
143
+ })();
@@ -1,13 +1,17 @@
1
1
  <% unless Rails.env.production? %>
2
- <%= require_asset "tinycon.min.js" %>
3
- Tinycon.setOptions({
4
- width: 8,
5
- height: 9,
6
- font: '10px arial',
7
- colour: '<%= RailsEnvFavicon.text_color %>',
8
- background: '<%= RailsEnvFavicon.background_color %>',
9
- fallback: true
10
- });
2
+ <% if RailsEnvFavicon.make_grayscale %>
3
+ <%= require_asset "grayscale-favicon.js" %>
4
+ GrayscaleFavicon.grayscale();
5
+ <% else %>
6
+ <%= require_asset "tinycon.min.js" %>
7
+ Tinycon.setOptions({
8
+ width: 8,
9
+ height: 9,
10
+ colour: '<%= RailsEnvFavicon.text_color %>',
11
+ background: '<%= RailsEnvFavicon.background_color %>',
12
+ fallback: true
13
+ });
11
14
 
12
- Tinycon.setBubble("<%= RailsEnvFavicon.env_letter %>");
15
+ Tinycon.setBubble("<%= RailsEnvFavicon.env_letter %>");
16
+ <% end %>
13
17
  <% end %>
@@ -1,6 +1,9 @@
1
1
  require 'rails-env-favicon'
2
2
 
3
3
  RailsEnvFavicon.setup do |config|
4
+ # If true then favicon will be gray on non production env
5
+ config.make_grayscale = false
6
+ # or if make_grayscale = false then draw badge on favicon with this options:
4
7
  config.text_color = '#ffffff'
5
8
  config.background_color = '#549a2f'
6
9
  end
@@ -7,6 +7,9 @@ module RailsEnvFavicon
7
7
  mattr_accessor :background_color
8
8
  self.background_color = '#549a2f'
9
9
 
10
+ mattr_accessor :make_grayscale
11
+ self.make_grayscale = false
12
+
10
13
  def self.env_letter
11
14
  ::Rails.env.first.upcase
12
15
  end
@@ -1,3 +1,3 @@
1
1
  module RailsEnvFavicon
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails-env-favicon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Accessd
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-06-06 00:00:00.000000000 Z
11
+ date: 2014-06-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: railties
@@ -78,8 +78,10 @@ files:
78
78
  - LICENSE.txt
79
79
  - README.md
80
80
  - Rakefile
81
+ - app/assets/javascripts/grayscale-favicon.js
81
82
  - app/assets/javascripts/rails_env_favicon.js.erb
82
83
  - config/initializers/rails_env_favicon.rb
84
+ - doc/img/sample-grayscale.png
83
85
  - doc/img/sample.png
84
86
  - lib/generators/rails_env_favicon/install_generator.rb
85
87
  - lib/rails-env-favicon.rb