docks_app 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/config/json/docks_config.json +0 -2
- data/config/ruby/docks_config.rb +0 -2
- data/config/yaml/docks_config.yml +0 -2
- data/lib/docks/build.rb +7 -2
- data/lib/docks/configuration.rb +19 -7
- data/lib/docks/helpers.rb +1 -0
- data/lib/docks/helpers/path_helper.rb +2 -2
- data/lib/docks/helpers/render_helper.rb +5 -18
- data/lib/docks/renderers/common_features/helperable.rb +1 -1
- data/lib/docks/version.rb +1 -1
- data/spec/lib/build_spec.rb +9 -2
- data/spec/lib/configuration_spec.rb +1 -2
- data/spec/lib/helpers/path_helper_spec.rb +5 -4
- data/spec/lib/helpers/render_helper_spec.rb +6 -51
- data/spec/lib/helpers_spec.rb +18 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
MTZkNGY3ZjlkOTJlNTA4OGUwOWNhNzA0OWZmNjdjYjQ5ZDc5YjgzYg==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
OWRlMjYyMDllNzM3YTdlMjI2ZjhjMWIzOGE4ZDA4YjliMGZmYTJiOA==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
MTk0NTk4YWQ1NDM2ODU2OTlkNmVlM2Q1MmM0MzExYTRkNDAxZTZlOTgwZDlh
|
10
|
+
OWY0YjdjNzAwOWFjODgzMzM4MDJiYjc5MDJhYWMyOTAwMTZjZWUyYTcxZTdm
|
11
|
+
MDBjNTQ4YmI1ZTAwM2IzZWY3YTZmOThlNjUwODA2YzhiYzVlMGQ=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
MGRlNjcwZjZlZWU3ZDFjNzIxNzNkYTVkYWUzOTk1MzU3YjlmNzQ3ZDk3MzVh
|
14
|
+
NmI5NTlkNjI4MjhmOWMwY2I5OTUzYmUwOTJhZDJlNjkyNjY5ZDZjOWM5ZTRi
|
15
|
+
ZWQ4ZTQwM2JhMmEwODBlZWMzYzRkNDg3NGRiNTViNTVjMzc4YzY=
|
@@ -25,8 +25,6 @@
|
|
25
25
|
// all pattern files will be nested inside this directory.
|
26
26
|
"mount_at": {{{mount_at}}},
|
27
27
|
|
28
|
-
"use_theme_assets": {{{use_theme_assets}}},
|
29
|
-
|
30
28
|
// The name of the Github repo for this project. This can either be the URL or
|
31
29
|
// in the form `<username>/<repo>`. The default theme uses this option, if
|
32
30
|
// passed, to provide links to create issue and view source for your pattern
|
data/config/ruby/docks_config.rb
CHANGED
@@ -26,8 +26,6 @@ Docks.configure do |config|
|
|
26
26
|
# all pattern files will be nested inside this directory.
|
27
27
|
config.mount_at = {{{mount_at}}}
|
28
28
|
|
29
|
-
config.use_theme_assets = {{{use_theme_assets}}}
|
30
|
-
|
31
29
|
# The name of the Github repo for this project. This can either be the URL or
|
32
30
|
# in the form `<username>/<repo>`. The default theme uses this option, if
|
33
31
|
# passed, to provide links to create issue and view source for your pattern
|
@@ -25,8 +25,6 @@ templates: {{{templates}}}
|
|
25
25
|
# all pattern files will be nested inside this directory.
|
26
26
|
mount_at: {{{mount_at}}}
|
27
27
|
|
28
|
-
use_theme_assets: {{{use_theme_assets}}}
|
29
|
-
|
30
28
|
# The name of the Github repo for this project. This can either be the URL or
|
31
29
|
# in the form `<username>/<repo>`. The default theme uses this option, if
|
32
30
|
# passed, to provide links to create issue and view source for your pattern
|
data/lib/docks/build.rb
CHANGED
@@ -20,7 +20,7 @@ module Docks
|
|
20
20
|
def method_missing(meth)
|
21
21
|
if options.respond_to?(meth)
|
22
22
|
present(options.send(meth), meth)
|
23
|
-
elsif (result = default_config.instance_variable_get("@#{meth}".to_sym))
|
23
|
+
elsif !(result = default_config.instance_variable_get("@#{meth}".to_sym)).nil?
|
24
24
|
present(result, meth)
|
25
25
|
else
|
26
26
|
super
|
@@ -104,10 +104,15 @@ module Docks
|
|
104
104
|
end
|
105
105
|
|
106
106
|
def self.setup(options)
|
107
|
-
@options = OpenStruct.new(options)
|
107
|
+
@options = options = OpenStruct.new(options)
|
108
108
|
@assets_dir = File.join(Dir.pwd, Docks::ASSETS_DIR)
|
109
109
|
FileUtils.mkdir_p(@assets_dir)
|
110
110
|
|
111
|
+
if options.theme
|
112
|
+
theme = Themes.for(options.theme)
|
113
|
+
theme.configure(Docks.config) if theme && theme.respond_to?(:configure)
|
114
|
+
end
|
115
|
+
|
111
116
|
if Dir[CONFIG_FILE].empty?
|
112
117
|
setup_config
|
113
118
|
end
|
data/lib/docks/configuration.rb
CHANGED
@@ -16,8 +16,7 @@ module Docks
|
|
16
16
|
:sources,
|
17
17
|
:destination,
|
18
18
|
:cache_location,
|
19
|
-
:templates
|
20
|
-
:helpers
|
19
|
+
:templates
|
21
20
|
]
|
22
21
|
|
23
22
|
# Key details — these are required
|
@@ -28,7 +27,7 @@ module Docks
|
|
28
27
|
|
29
28
|
# Random assortment of other stuff
|
30
29
|
attr_accessor :github_repo, :mount_at, :helpers, :compiled_assets,
|
31
|
-
:naming_convention, :pattern_id, :paginate
|
30
|
+
:naming_convention, :pattern_id, :paginate
|
32
31
|
|
33
32
|
# Stateful stuff
|
34
33
|
attr_reader :configured
|
@@ -68,6 +67,10 @@ module Docks
|
|
68
67
|
!!@paginate
|
69
68
|
end
|
70
69
|
|
70
|
+
def has_theme?
|
71
|
+
!!@theme
|
72
|
+
end
|
73
|
+
|
71
74
|
def pattern_id(*args)
|
72
75
|
Docks.pattern_id(*args)
|
73
76
|
end
|
@@ -104,6 +107,16 @@ module Docks
|
|
104
107
|
yield Parser
|
105
108
|
end
|
106
109
|
|
110
|
+
def helpers
|
111
|
+
@helpers.map do |helper|
|
112
|
+
if helper.kind_of?(String)
|
113
|
+
make_path_absolute(helper)
|
114
|
+
else
|
115
|
+
helper
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
107
120
|
ROOT_DEPENDENT_PATHS.each do |path|
|
108
121
|
define_method(path) do
|
109
122
|
paths = instance_variable_get("@#{path.to_s}".to_sym)
|
@@ -125,12 +138,11 @@ module Docks
|
|
125
138
|
]
|
126
139
|
@compiled_assets = []
|
127
140
|
@github_repo = ""
|
128
|
-
@paginate = :pattern
|
129
141
|
@naming_convention = NamingConventions::BEM.instance
|
130
142
|
@helpers = []
|
131
143
|
|
132
|
-
@theme =
|
133
|
-
@
|
144
|
+
@theme = false
|
145
|
+
@paginate = false
|
134
146
|
|
135
147
|
@root = Pathname.pwd
|
136
148
|
@cache_location = ".#{Docks::Cache::DIR}"
|
@@ -186,7 +198,7 @@ module Docks
|
|
186
198
|
end
|
187
199
|
|
188
200
|
if File.extname(configurer) =~ /rb/
|
189
|
-
self.class_eval(File.read(configurer))
|
201
|
+
self.class_eval(File.read(configurer), configurer, 0)
|
190
202
|
else
|
191
203
|
Languages.register_bundled_languages
|
192
204
|
language = Languages.language_for(configurer)
|
data/lib/docks/helpers.rb
CHANGED
@@ -34,13 +34,13 @@ module Docks
|
|
34
34
|
end
|
35
35
|
|
36
36
|
def docks_stylesheet(stylesheet = :main)
|
37
|
-
return unless Docks.config.
|
37
|
+
return unless Docks.config.has_theme?
|
38
38
|
postfix = (stylesheet.to_sym == :main ? "" : "-#{stylesheet.to_s}")
|
39
39
|
stylesheet_link_tag("docks#{postfix}.css")
|
40
40
|
end
|
41
41
|
|
42
42
|
def docks_javascript(script = :main)
|
43
|
-
return unless Docks.config.
|
43
|
+
return unless Docks.config.has_theme?
|
44
44
|
postfix = (script.to_sym == :main ? "" : "_#{script.to_s}")
|
45
45
|
javascript_include_tag("docks#{postfix}.js")
|
46
46
|
end
|
@@ -58,29 +58,16 @@ module Docks
|
|
58
58
|
end
|
59
59
|
|
60
60
|
def render_description(description, options = {})
|
61
|
-
@example_count ||= 0
|
62
61
|
description.gsub! /(href\s*=\s*['"])@link\s([^'"]*)(.)/ do |match|
|
63
62
|
"#{$1}#{docks_path($2, options)}#{$3}"
|
64
63
|
end
|
65
64
|
|
66
|
-
render(layout: false, inline: description
|
67
|
-
|
68
|
-
code = $1.dup
|
69
|
-
has_demo = match.include?("data-has-demo")
|
70
|
-
language = match.match(/data\-language=["']([^'"]*)/).captures.first
|
71
|
-
|
72
|
-
code_details = []
|
73
|
-
code_details << { code: code, language: language, label: "Helper" }
|
74
|
-
|
75
|
-
if has_demo
|
76
|
-
code_details << { code: render(inline: code, layout: false), language: "html", label: "Markup" }
|
77
|
-
end
|
65
|
+
render(layout: false, inline: render_description_with_theme(description, options))
|
66
|
+
end
|
78
67
|
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
demo?: has_demo
|
83
|
-
})
|
68
|
+
# To be (optionally) overriden in themes
|
69
|
+
def render_description_with_theme(description, options = {})
|
70
|
+
description
|
84
71
|
end
|
85
72
|
end
|
86
73
|
end
|
data/lib/docks/version.rb
CHANGED
data/spec/lib/build_spec.rb
CHANGED
@@ -69,6 +69,13 @@ describe Docks::Builder do
|
|
69
69
|
expect(File.read(copied_file)).to eq "# foo"
|
70
70
|
end
|
71
71
|
|
72
|
+
it "preconfigures with the specified theme" do
|
73
|
+
default_options[:theme] = "API"
|
74
|
+
subject.setup(default_options)
|
75
|
+
expect(Docks.config.theme).to be_a Docks::Themes::API
|
76
|
+
expect(Docks.config.paginate).to eq "pattern"
|
77
|
+
end
|
78
|
+
|
72
79
|
it "configures the pattern library with the new config file" do
|
73
80
|
expect(Docks).to receive(:configure).with no_args
|
74
81
|
subject.setup(default_options)
|
@@ -183,7 +190,7 @@ describe Docks::Builder do
|
|
183
190
|
|
184
191
|
describe ".parse" do
|
185
192
|
before :each do
|
186
|
-
Docks.configure_with(root: empty_dir
|
193
|
+
Docks.configure_with(root: empty_dir)
|
187
194
|
end
|
188
195
|
|
189
196
|
it "adds the parse function to the top-level Docks namespace" do
|
@@ -228,7 +235,7 @@ describe Docks::Builder do
|
|
228
235
|
FileUtils.mkdir_p(existing_dir)
|
229
236
|
FileUtils.cd(existing_dir)
|
230
237
|
Docks::Templates.send(:clean)
|
231
|
-
Docks.configure_with(destination: destination, root: existing_dir)
|
238
|
+
Docks.configure_with(destination: destination, root: existing_dir, theme: "API", paginate: "pattern")
|
232
239
|
|
233
240
|
default_options[:script_language] = "coffeescript"
|
234
241
|
subject.setup(default_options)
|
@@ -49,8 +49,7 @@ describe Docks::Configuration do
|
|
49
49
|
expect(subject.templates).to eq subject.root + "#{Docks::ASSETS_DIR}/templates"
|
50
50
|
expect(subject.asset_folders).to eq OpenStruct.new(styles: "styles", scripts: "scripts")
|
51
51
|
expect(subject.mount_at).to eq "pattern-library"
|
52
|
-
expect(subject.theme).to
|
53
|
-
expect(subject.use_theme_assets).to be true
|
52
|
+
expect(subject.theme).to be false
|
54
53
|
end
|
55
54
|
|
56
55
|
describe "#root=" do
|
@@ -11,6 +11,7 @@ describe Docks::Helpers::Path do
|
|
11
11
|
before(:each) do
|
12
12
|
Docks::Languages.register_bundled_languages
|
13
13
|
Docks.current_render_destination = Docks.config.destination + "baz/index.html"
|
14
|
+
Docks.configure_with(theme: "API")
|
14
15
|
subject.instance_variable_set(:@pattern_library, pattern_library)
|
15
16
|
subject.instance_variable_set(:@pattern, pattern)
|
16
17
|
end
|
@@ -178,8 +179,8 @@ describe Docks::Helpers::Path do
|
|
178
179
|
expect(subject.docks_stylesheet(:demo)).to eq subject.stylesheet_link_tag("docks-demo.css")
|
179
180
|
end
|
180
181
|
|
181
|
-
it "returns nothing when
|
182
|
-
Docks.configure_with(
|
182
|
+
it "returns nothing when there is no theme" do
|
183
|
+
Docks.configure_with(theme: false)
|
183
184
|
expect(subject.docks_stylesheet).to be nil
|
184
185
|
end
|
185
186
|
end
|
@@ -193,8 +194,8 @@ describe Docks::Helpers::Path do
|
|
193
194
|
expect(subject.docks_javascript(:demo)).to eq subject.javascript_include_tag("docks_demo.js")
|
194
195
|
end
|
195
196
|
|
196
|
-
it "returns nothing when
|
197
|
-
Docks.configure_with(
|
197
|
+
it "returns nothing when there is no theme" do
|
198
|
+
Docks.configure_with(theme: false)
|
198
199
|
expect(subject.docks_javascript).to be nil
|
199
200
|
end
|
200
201
|
end
|
@@ -102,57 +102,12 @@ describe Docks::Helpers::Render do
|
|
102
102
|
expect(pattern.description).to eq "foo bar <a href='/pattern-library/baz'>baz</a>"
|
103
103
|
end
|
104
104
|
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
let(:language) { "html" }
|
112
|
-
let(:markdown) { Redcarpet::Markdown.new(Docks::Markdown::Renderer, fenced_code_blocks: true) }
|
113
|
-
|
114
|
-
it "renders a code block" do
|
115
|
-
pattern.description = markdown.render(markdown_code_block)
|
116
|
-
expect(subject).to receive(:docks_code_block) do |options|
|
117
|
-
expect(options[:hideable?]).to be false
|
118
|
-
expect(options[:demo?]).to be false
|
119
|
-
|
120
|
-
code = options[:code]
|
121
|
-
expect(code.length).to be 1
|
122
|
-
expect(code.first[:code].strip).to eq code_block
|
123
|
-
expect(code.first[:language]).to eq language
|
124
|
-
end
|
125
|
-
|
126
|
-
subject.render_everything
|
127
|
-
end
|
128
|
-
|
129
|
-
it "renders a code block with the a demo" do
|
130
|
-
pattern.description = markdown.render(markdown_code_block(with_demo: true))
|
131
|
-
expect(subject).to receive(:docks_code_block) do |options|
|
132
|
-
expect(options[:hideable?]).to be true
|
133
|
-
expect(options[:demo?]).to be true
|
134
|
-
end
|
135
|
-
|
136
|
-
subject.render_everything
|
137
|
-
end
|
138
|
-
|
139
|
-
it "adds a unique ID to each demo" do
|
140
|
-
pattern.description = markdown.render(markdown_code_block * 2)
|
141
|
-
|
142
|
-
ids = []
|
143
|
-
expect(subject).to receive(:docks_code_block).twice do |options|
|
144
|
-
ids.push(options[:id])
|
145
|
-
end
|
146
|
-
|
147
|
-
subject.render_everything
|
148
|
-
expect(ids).to eq ids.uniq
|
149
|
-
end
|
150
|
-
|
151
|
-
private
|
152
|
-
|
153
|
-
def markdown_code_block(options = {})
|
154
|
-
options.fetch(:with_demo, false) ? "```#{language}_demo\n#{code_block}\n```" : "```#{language}\n#{code_block}\n```\n"
|
155
|
-
end
|
105
|
+
it "calls the theme's render description helper" do
|
106
|
+
allow(subject).to receive(:render) { |opts| opts[:inline] }
|
107
|
+
pattern.description = "foo bar"
|
108
|
+
expect(subject).to receive(:render_description_with_theme).with("foo bar", hash_including(:language)).and_return("baz qux")
|
109
|
+
subject.render_everything
|
110
|
+
expect(pattern.description).to eq "baz qux"
|
156
111
|
end
|
157
112
|
end
|
158
113
|
end
|
data/spec/lib/helpers_spec.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require "spec_helper"
|
2
|
+
require "docks_theme_api"
|
2
3
|
|
3
4
|
describe Docks::Helpers do
|
4
5
|
describe ".add_helpers_to" do
|
@@ -17,8 +18,24 @@ describe Docks::Helpers do
|
|
17
18
|
end
|
18
19
|
end
|
19
20
|
|
21
|
+
it "adds all theme helpers" do
|
22
|
+
theme = Docks::Themes::API.instance
|
23
|
+
helpers = []
|
24
|
+
|
25
|
+
Docks.configure_with(theme: theme)
|
26
|
+
allow(renderer).to receive(:helpers) do |*args|
|
27
|
+
helpers = helpers.concat(args)
|
28
|
+
end
|
29
|
+
|
30
|
+
described_class.add_helpers_to(renderer)
|
31
|
+
|
32
|
+
Docks.config.theme.helpers.each do |helper|
|
33
|
+
expect(helpers).to include helper
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
20
37
|
it "adds any user-configured helpers" do
|
21
|
-
Docks.configure_with
|
38
|
+
Docks.configure_with(helpers: ["foo.txt", "bar.txt"])
|
22
39
|
|
23
40
|
helpers = []
|
24
41
|
allow(renderer).to receive(:helpers) do |*args|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: docks_app
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Sauve
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-08-
|
11
|
+
date: 2015-08-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: redcarpet
|