docks_app 0.0.2 → 0.0.3
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/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
|