livingstyleguide 2.0.0.alpha.3 → 2.0.0.alpha.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 +4 -4
- data/lib/livingstyleguide/document.rb +73 -7
- data/lib/livingstyleguide/filters.rb +3 -1
- data/lib/livingstyleguide/filters/css.rb +12 -0
- data/lib/livingstyleguide/filters/html_head.rb +4 -0
- data/lib/livingstyleguide/filters/import.rb +8 -8
- data/lib/livingstyleguide/filters/require.rb +4 -0
- data/lib/livingstyleguide/templates/example.html.erb +1 -3
- data/lib/livingstyleguide/templates/javascript.html.erb +1 -3
- data/lib/livingstyleguide/version.rb +1 -1
- metadata +6 -3
- data/lib/livingstyleguide/filters/scss.rb +0 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 09fd1db6eea766e1fc9ce49ea9093fcba7cb5cf0
|
4
|
+
data.tar.gz: 9e677d67f85cea4e8067e25af350057599fb7b74
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 23abb326faa5c71f9432c9e44d677f12bcc29510e9ce9d13df4d316b1032e43d693798bd03c30be56eb70a573ea3e2f690499ac75303a6aa01e7d02f4af8e963
|
7
|
+
data.tar.gz: 197222fd5eb577683377373f5d0a1034d06c2874851076c0e7a7d494a594aa3de5ee05d34e3efec64dcb726a718d692659aa52cd8f7a95d8b7aee09399d95f9c
|
@@ -39,7 +39,18 @@ class LivingStyleGuide::Document < ::Tilt::Template
|
|
39
39
|
end
|
40
40
|
|
41
41
|
def source
|
42
|
-
@source ||=
|
42
|
+
@source ||= erb.gsub(/<%.*?%>\n?/, '').strip
|
43
|
+
end
|
44
|
+
|
45
|
+
def highlighted_source
|
46
|
+
set_highlights(source.strip) do |without_highlights|
|
47
|
+
if type == :plain
|
48
|
+
without_highlights
|
49
|
+
else
|
50
|
+
without_highlights = ERB::Util.h(without_highlights) if type == :html
|
51
|
+
::MiniSyntax.highlight(without_highlights, type)
|
52
|
+
end
|
53
|
+
end.gsub("\n", "<br>")
|
43
54
|
end
|
44
55
|
|
45
56
|
def css
|
@@ -62,7 +73,6 @@ class LivingStyleGuide::Document < ::Tilt::Template
|
|
62
73
|
|
63
74
|
def evaluate(scope, locals, &block)
|
64
75
|
@scope = scope
|
65
|
-
depend_on file if file and options.has_key?(:livingstyleguide)
|
66
76
|
result = ERB.new(erb).result(@filters.get_binding)
|
67
77
|
@html = case @type
|
68
78
|
when :plain, :example, :html, :javascript
|
@@ -85,14 +95,64 @@ class LivingStyleGuide::Document < ::Tilt::Template
|
|
85
95
|
end
|
86
96
|
|
87
97
|
private
|
88
|
-
def set_highlights(code)
|
89
|
-
code
|
90
|
-
|
98
|
+
def set_highlights(code, &block)
|
99
|
+
code, positions = remove_highlight_marker_and_save_positions(code)
|
100
|
+
html = yield(code)
|
101
|
+
insert_html_highlight_marker(html, positions)
|
102
|
+
end
|
103
|
+
|
104
|
+
private
|
105
|
+
def remove_highlight_marker_and_save_positions(code)
|
106
|
+
positions = []
|
107
|
+
index = 0
|
108
|
+
code_without_highlights = code.gsub(/(.*?)\*\*\*/m) do
|
109
|
+
positions << index += $1.length
|
110
|
+
$1
|
111
|
+
end
|
112
|
+
[code_without_highlights, positions]
|
113
|
+
end
|
114
|
+
|
115
|
+
private
|
116
|
+
def insert_html_highlight_marker(html, positions)
|
117
|
+
code_with_highlights = ""
|
118
|
+
index = 0
|
119
|
+
next_position = positions.shift
|
120
|
+
inside_highlight = false
|
121
|
+
inside_character = false
|
122
|
+
inside_html = false
|
123
|
+
html.each_char do |char|
|
124
|
+
if char == "<"
|
125
|
+
inside_html = true
|
126
|
+
elsif char == ">"
|
127
|
+
inside_html = false
|
128
|
+
elsif not inside_html
|
129
|
+
if index == next_position
|
130
|
+
if inside_highlight
|
131
|
+
code_with_highlights << %Q(</strong>)
|
132
|
+
inside_highlight = false
|
133
|
+
else
|
134
|
+
code_with_highlights << %Q(<strong class="livingstyleguide--code-highlight">)
|
135
|
+
inside_highlight = true
|
136
|
+
end
|
137
|
+
next_position = positions.shift
|
138
|
+
end
|
139
|
+
if char == "&"
|
140
|
+
inside_character = true
|
141
|
+
elsif inside_character and char == ";"
|
142
|
+
inside_character = false
|
143
|
+
index += 1
|
144
|
+
elsif not inside_character
|
145
|
+
index += 1
|
146
|
+
end
|
147
|
+
end
|
148
|
+
code_with_highlights << char
|
149
|
+
end
|
150
|
+
code_with_highlights
|
91
151
|
end
|
92
152
|
|
93
153
|
private
|
94
154
|
def remove_highlights(code)
|
95
|
-
code.gsub(
|
155
|
+
code.gsub(/\*\*\*/, '')
|
96
156
|
end
|
97
157
|
|
98
158
|
private
|
@@ -104,7 +164,7 @@ class LivingStyleGuide::Document < ::Tilt::Template
|
|
104
164
|
def parse_filters
|
105
165
|
data.gsub('<%', '<%%').gsub(/\G(.*?)((```.+?```)|\Z)/m) do
|
106
166
|
content, code_block = $1, $2
|
107
|
-
content.gsub(/^@([\w\d_-]+)(?: ([^\{\n]+))?(?: *\{\n((?:.|\n)*?)\n\}|\n((?:
|
167
|
+
content.gsub(/^@([\w\d_-]+)(?: ([^\{\n]+))?(?: *\{\n((?:.|\n)*?)\n\}|\n((?: .*(\n|\Z))+))?/) do
|
108
168
|
name, arguments, block = $1, $2 || '', $3 || $4
|
109
169
|
name = name.gsub('-', '_').to_sym
|
110
170
|
arguments = arguments.split(',').map(&:strip)
|
@@ -159,6 +219,12 @@ class LivingStyleGuide::Document < ::Tilt::Template
|
|
159
219
|
private
|
160
220
|
def render_scss(scss)
|
161
221
|
sass_options = options.merge(custom: { sprockets_context: @scope })
|
222
|
+
if defined?(Compass)
|
223
|
+
sass_options[:load_paths] ||= []
|
224
|
+
Compass.sass_engine_options[:load_paths].each do |path|
|
225
|
+
sass_options[:load_paths] << path
|
226
|
+
end
|
227
|
+
end
|
162
228
|
scss_template.new(file, sass_options){ scss }.render(@scope)
|
163
229
|
end
|
164
230
|
end
|
@@ -18,6 +18,7 @@ end
|
|
18
18
|
|
19
19
|
require 'livingstyleguide/filters/options'
|
20
20
|
require 'livingstyleguide/filters/import'
|
21
|
+
require 'livingstyleguide/filters/require'
|
21
22
|
require 'livingstyleguide/filters/full_width'
|
22
23
|
require 'livingstyleguide/filters/haml'
|
23
24
|
require 'livingstyleguide/filters/markdown'
|
@@ -26,5 +27,6 @@ require 'livingstyleguide/filters/coffee_script'
|
|
26
27
|
require 'livingstyleguide/filters/add_wrapper_class'
|
27
28
|
require 'livingstyleguide/filters/font_example'
|
28
29
|
require 'livingstyleguide/filters/colors'
|
29
|
-
require 'livingstyleguide/filters/
|
30
|
+
require 'livingstyleguide/filters/css'
|
30
31
|
require 'livingstyleguide/filters/data'
|
32
|
+
require 'livingstyleguide/filters/html_head'
|
@@ -0,0 +1,12 @@
|
|
1
|
+
LivingStyleGuide.add_filter :css, :scss do |source|
|
2
|
+
if source =~ /\.(css|scss|sass)$/
|
3
|
+
if document.file
|
4
|
+
source = File.join(File.dirname(document.file), source)
|
5
|
+
end
|
6
|
+
document.depend_on source
|
7
|
+
document.scss << %Q(@import "#{source}";\n)
|
8
|
+
else
|
9
|
+
document.scss << "##{document.id.gsub('/', '\\/')} {\n#{source}\n}\n"
|
10
|
+
end
|
11
|
+
nil
|
12
|
+
end
|
@@ -1,6 +1,9 @@
|
|
1
1
|
require 'tilt'
|
2
2
|
|
3
3
|
LivingStyleGuide.add_filter :import do |glob, data = nil|
|
4
|
+
if glob =~ /\.s[ac]ss$/
|
5
|
+
raise "Error: Please use `@css #{glob}` instead of `@import #{glob}` for importing Sass."
|
6
|
+
end
|
4
7
|
glob << '.lsg' unless glob =~ /\.(\w+|\*)$/
|
5
8
|
glob.gsub!(/[^\/]+$/, '{_,}\\0')
|
6
9
|
if document.file
|
@@ -8,17 +11,14 @@ LivingStyleGuide.add_filter :import do |glob, data = nil|
|
|
8
11
|
end
|
9
12
|
|
10
13
|
if data
|
11
|
-
require 'json'
|
14
|
+
Kernel.require 'json'
|
12
15
|
data = JSON.parse("{#{data}}")
|
13
16
|
end
|
14
17
|
|
15
18
|
Dir.glob(glob).map do |file|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
else
|
21
|
-
::Tilt.new(file, livingstyleguide: document).render(document.scope, data)
|
22
|
-
end
|
19
|
+
document.depend_on file
|
20
|
+
html = ::Tilt.new(file, livingstyleguide: document).render(document.scope, data)
|
21
|
+
html.gsub!("\n", "\n ")
|
22
|
+
"\n<div>\n#{html}\n</div>\n"
|
23
23
|
end.join
|
24
24
|
end
|
@@ -2,7 +2,5 @@
|
|
2
2
|
<div class="livingstyleguide--html">
|
3
3
|
<%= html %>
|
4
4
|
</div>
|
5
|
-
<pre class="livingstyleguide--code-block"><code class="livingstyleguide--code"><%=
|
6
|
-
[:plain].index(type) ? source : ::MiniSyntax.highlight(type == :html ? ERB::Util.h(source) : source, type)
|
7
|
-
%></code></pre>
|
5
|
+
<pre class="livingstyleguide--code-block"><code class="livingstyleguide--code"><%= highlighted_source %></code></pre>
|
8
6
|
</section>
|
@@ -1,6 +1,4 @@
|
|
1
1
|
<section class="<%= classes.join(' ') %>" id="<%= id %>">
|
2
2
|
<script><%= html %></script>
|
3
|
-
<pre class="livingstyleguide--code-block"><code class="livingstyleguide--code"><%=
|
4
|
-
[:plain].index(type) ? source : ::MiniSyntax.highlight(source, type)
|
5
|
-
%></code></pre>
|
3
|
+
<pre class="livingstyleguide--code-block"><code class="livingstyleguide--code"><%= highlighted_source %></code></pre>
|
6
4
|
</section>
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: livingstyleguide
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.0.alpha.
|
4
|
+
version: 2.0.0.alpha.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nico Hagenburger
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-04-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: minisyntax
|
@@ -183,15 +183,17 @@ files:
|
|
183
183
|
- lib/livingstyleguide/filters/add_wrapper_class.rb
|
184
184
|
- lib/livingstyleguide/filters/coffee_script.rb
|
185
185
|
- lib/livingstyleguide/filters/colors.rb
|
186
|
+
- lib/livingstyleguide/filters/css.rb
|
186
187
|
- lib/livingstyleguide/filters/data.rb
|
187
188
|
- lib/livingstyleguide/filters/font_example.rb
|
188
189
|
- lib/livingstyleguide/filters/full_width.rb
|
189
190
|
- lib/livingstyleguide/filters/haml.rb
|
191
|
+
- lib/livingstyleguide/filters/html_head.rb
|
190
192
|
- lib/livingstyleguide/filters/import.rb
|
191
193
|
- lib/livingstyleguide/filters/javascript.rb
|
192
194
|
- lib/livingstyleguide/filters/markdown.rb
|
193
195
|
- lib/livingstyleguide/filters/options.rb
|
194
|
-
- lib/livingstyleguide/filters/
|
196
|
+
- lib/livingstyleguide/filters/require.rb
|
195
197
|
- lib/livingstyleguide/integration.rb
|
196
198
|
- lib/livingstyleguide/integration/compass.rb
|
197
199
|
- lib/livingstyleguide/integration/rails.rb
|
@@ -236,3 +238,4 @@ signing_key:
|
|
236
238
|
specification_version: 4
|
237
239
|
summary: Generate beautiful front-end style guides
|
238
240
|
test_files: []
|
241
|
+
has_rdoc:
|