rack-dev-mark 0.2.0 → 0.3.0
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 +8 -8
- data/lib/rack/dev-mark/middleware.rb +4 -2
- data/lib/rack/dev-mark/theme/README.md +6 -0
- data/lib/rack/dev-mark/theme/base.rb +8 -3
- data/lib/rack/dev-mark/theme/github_fork_ribbon.rb +1 -1
- data/lib/rack/dev-mark/theme/title.rb +13 -3
- data/lib/rack/dev-mark/version.rb +1 -1
- data/spec/rack/dev-mark/middleware_spec.rb +9 -2
- data/spec/rack/dev-mark/theme/base_spec.rb +8 -0
- data/spec/rack/dev-mark/theme/github_fork_ribbon_spec.rb +1 -0
- data/spec/rack/dev-mark/theme/title_spec.rb +22 -1
- data/spec/support/theme_helper.rb +9 -3
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
MDZhYWU3YWUzMjdiM2MxMDc2ZmY3ODdjZDA2NTlmZDBjNDMwYzY0ZQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
ZWIwMDliNmZmZmQ5NTg2NTNjNWNiODVlNGI3NDQ0YjM1MDQ5N2E4OA==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
OTFjY2RiMDIzMmY2MGQwNjEzZjk4ZDZmNmFhNjI5NTJlYWZmMWFjYjg0YmU0
|
10
|
+
ZTYzNjhjZDkwYTA0ZTA5OWFkZTRiMDlmMjA3NTdiZjQ3ZGZkNWEwZjI3ZDQ4
|
11
|
+
MGYyZmMxYTZiMWZjNTk3ZGNmNzhjZmJmZmQ5ZjRiZTlkNWMxMmU=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
YzliN2QzODAzMmM2OTdkZWFmNTY5YWQzNDVmYTFhN2RjYjFhY2ZlYjI3YjAw
|
14
|
+
Njg1MDJlYzc1N2IxZmE0MjM1Mzk3MzAyMGZmN2RmNzljYTMyOTJkZTY2OTAy
|
15
|
+
OWY5ZDc1MmMzMDQ3YmUwMzM0MjkyYjY5YmRjMzc2ZDA0NzBmNmI=
|
@@ -7,7 +7,9 @@ module Rack
|
|
7
7
|
def initialize(app, themes = [:title, :github_fork_ribbon])
|
8
8
|
@app = app
|
9
9
|
@themes = [themes].flatten.map do |theme|
|
10
|
-
theme.is_a?(Symbol) ? Rack::DevMark::Theme.const_get(camelize(theme.to_s)).new : theme
|
10
|
+
theme = theme.is_a?(Symbol) ? Rack::DevMark::Theme.const_get(camelize(theme.to_s)).new : theme
|
11
|
+
theme.setup Rack::DevMark.env, Rack::DevMark.revision
|
12
|
+
theme
|
11
13
|
end
|
12
14
|
end
|
13
15
|
|
@@ -39,7 +41,7 @@ module Rack
|
|
39
41
|
|
40
42
|
def insert_dev_marks(body)
|
41
43
|
@themes.each do |theme|
|
42
|
-
body = theme.insert_into(body
|
44
|
+
body = theme.insert_into(body)
|
43
45
|
end
|
44
46
|
body
|
45
47
|
end
|
@@ -8,6 +8,12 @@ e.g.
|
|
8
8
|
|
9
9
|
`My Homepage` on development env will be `(development) My Homepage`
|
10
10
|
|
11
|
+
### options
|
12
|
+
|
13
|
+
`type`: `prefix` (default) or `postfix`
|
14
|
+
|
15
|
+
`upcase`: `true` or `false` (default)
|
16
|
+
|
11
17
|
## github-fork-ribbon
|
12
18
|
|
13
19
|
["Fork Me on GitHub" like ribbon](https://github.com/simonwhitaker/github-fork-ribbon-css) originally created by [simonwhitaker](https://github.com/simonwhitaker)
|
@@ -2,15 +2,20 @@ module Rack
|
|
2
2
|
module DevMark
|
3
3
|
module Theme
|
4
4
|
class Base
|
5
|
+
attr_reader :env, :revision
|
6
|
+
|
5
7
|
def initialize(*args)
|
6
8
|
raise RuntimeError, 'Abstract class can not be instantiated' if self.class == Rack::DevMark::Theme::Base
|
7
9
|
end
|
8
10
|
|
9
|
-
def
|
10
|
-
|
11
|
+
def setup(env, revision)
|
12
|
+
@env = env
|
13
|
+
@revision = revision
|
11
14
|
end
|
12
15
|
|
13
|
-
|
16
|
+
def insert_into(html)
|
17
|
+
|
18
|
+
end
|
14
19
|
|
15
20
|
def stylesheet_link_tag(path)
|
16
21
|
%Q~<style>#{::File.open(::File.join(::File.dirname(__FILE__), '../../../../vendor/assets/stylesheets', path)).read}</style>~
|
@@ -1,9 +1,19 @@
|
|
1
1
|
module Rack
|
2
2
|
module DevMark
|
3
3
|
module Theme
|
4
|
-
class Title
|
5
|
-
def
|
6
|
-
|
4
|
+
class Title < Base
|
5
|
+
def initialize(options = {})
|
6
|
+
@options = options
|
7
|
+
end
|
8
|
+
|
9
|
+
def insert_into(html)
|
10
|
+
s = env.to_s
|
11
|
+
s = s.upcase if @options[:upcase]
|
12
|
+
if @options[:type].to_s == 'postfix'
|
13
|
+
html.sub %r{(</title[^>]*>)}i, " (#{s})\\1"
|
14
|
+
else
|
15
|
+
html.sub %r{(<title[^>]*>)}i, "\\1(#{s}) "
|
16
|
+
end
|
7
17
|
end
|
8
18
|
end
|
9
19
|
end
|
@@ -3,7 +3,7 @@ require 'spec_helper'
|
|
3
3
|
describe Rack::DevMark::Middleware do
|
4
4
|
let(:headers) { {'Content-Type' => 'text/html; charset=utf-8'} }
|
5
5
|
let(:body) { ['response'] }
|
6
|
-
let(:theme) { d = double; allow(d).to receive(:insert_into){ |b
|
6
|
+
let(:theme) { d = double setup: nil; allow(d).to receive(:insert_into){ |b| "#{b} dev-mark" }; d }
|
7
7
|
let(:app) { double call: [200, headers, body] }
|
8
8
|
subject { Rack::DevMark::Middleware.new(app, theme) }
|
9
9
|
before do
|
@@ -21,8 +21,15 @@ describe Rack::DevMark::Middleware do
|
|
21
21
|
_, headers, _ = subject.call({})
|
22
22
|
expect(headers).to include('X-Rack-Dev-Mark-Env' => 'test')
|
23
23
|
end
|
24
|
+
context "symbol theme" do
|
25
|
+
let(:theme) { :title }
|
26
|
+
it "uses title" do
|
27
|
+
expect_any_instance_of(Rack::DevMark::Theme::Title).to receive(:insert_into).once.and_return('')
|
28
|
+
subject.call({})
|
29
|
+
end
|
30
|
+
end
|
24
31
|
context "multiple themes" do
|
25
|
-
let(:_theme) { d = double; allow(d).to receive(:insert_into){ |b
|
32
|
+
let(:_theme) { d = double setup: nil; allow(d).to receive(:insert_into){ |b| "#{b} dev-mark" }; d }
|
26
33
|
let(:theme) { [_theme] * 3 }
|
27
34
|
it "uses title and github_fork_ribbon" do
|
28
35
|
theme.each_with_index do |theme, idx|
|
@@ -6,4 +6,12 @@ describe Rack::DevMark::Theme::Base do
|
|
6
6
|
Rack::DevMark::Theme::Base.new
|
7
7
|
}.to raise_error(Rack::DevMark::RuntimeError)
|
8
8
|
end
|
9
|
+
describe "subclass" do
|
10
|
+
subject { Class.new(Rack::DevMark::Theme::Base).new }
|
11
|
+
it "sets up" do
|
12
|
+
subject.setup 'env', 'rev'
|
13
|
+
expect(subject.env).to eq('env')
|
14
|
+
expect(subject.revision).to eq('rev')
|
15
|
+
end
|
16
|
+
end
|
9
17
|
end
|
@@ -1,15 +1,36 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Rack::DevMark::Theme::Title do
|
4
|
+
include_context "theme context"
|
4
5
|
it_behaves_like "theme" do
|
5
6
|
let (:out) { %Q~<html><head>head<title>(env) title</title></head><body>body</body></html>~ }
|
6
7
|
subject { Rack::DevMark::Theme::Title.new }
|
7
8
|
end
|
9
|
+
context "upcase is true" do
|
10
|
+
let (:out) { %Q~<html><head>head<title>(ENV) title</title></head><body>body</body></html>~ }
|
11
|
+
subject { Rack::DevMark::Theme::Title.new(upcase: true) }
|
12
|
+
it_behaves_like "theme"
|
13
|
+
end
|
14
|
+
context "upcase is true" do
|
15
|
+
let (:out) { %Q~<html><head>head<title>(env) title</title></head><body>body</body></html>~ }
|
16
|
+
subject { Rack::DevMark::Theme::Title.new(upcase: false) }
|
17
|
+
it_behaves_like "theme"
|
18
|
+
end
|
19
|
+
context "type is prefix" do
|
20
|
+
let (:out) { %Q~<html><head>head<title>(env) title</title></head><body>body</body></html>~ }
|
21
|
+
subject { Rack::DevMark::Theme::Title.new(type: 'prefix') }
|
22
|
+
it_behaves_like "theme"
|
23
|
+
end
|
24
|
+
context "type is postfix" do
|
25
|
+
let (:out) { %Q~<html><head>head<title>title (env)</title></head><body>body</body></html>~ }
|
26
|
+
subject { Rack::DevMark::Theme::Title.new(type: 'postfix') }
|
27
|
+
it_behaves_like "theme"
|
28
|
+
end
|
8
29
|
context "no title tag" do
|
9
30
|
let (:src) { %Q~<html><head>head</head><body>body</body></html>~ }
|
10
31
|
let (:out) { %Q~<html><head>head</head><body>body</body></html>~ }
|
11
32
|
it "does not insert anything" do
|
12
|
-
expect(subject.insert_into(src
|
33
|
+
expect(subject.insert_into(src)).to eq(src)
|
13
34
|
end
|
14
35
|
end
|
15
36
|
end
|
@@ -1,10 +1,16 @@
|
|
1
|
-
RSpec.
|
1
|
+
RSpec.shared_context "theme context" do
|
2
2
|
def read_stylesheet(path)
|
3
3
|
::File.open(::File.join(::File.dirname(__FILE__), '../../vendor/assets/stylesheets', path)).read
|
4
4
|
end
|
5
5
|
|
6
|
+
before do
|
7
|
+
subject.setup 'env', 'rev'
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
RSpec.shared_examples "theme" do
|
6
12
|
let (:src) { %Q~<html><head>head<title>title</title></head><body>body</body></html>~ }
|
7
|
-
it "
|
8
|
-
expect(subject.insert_into(src
|
13
|
+
it "inserts env mark" do
|
14
|
+
expect(subject.insert_into(src)).to eq(out)
|
9
15
|
end
|
10
16
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rack-dev-mark
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daisuke Taniwaki
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-06-
|
11
|
+
date: 2014-06-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rack
|