marked-conductor 1.0.16 → 1.0.17
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/CHANGELOG.md +8 -0
- data/README.md +6 -0
- data/html/Filter.html +4 -2
- data/html/String.html +27 -2
- data/html/YuiCompressor/Yui.html +447 -0
- data/html/YuiCompressor.html +93 -0
- data/html/created.rid +3 -3
- data/html/js/search_index.js +1 -1
- data/html/js/search_index.js.gz +0 -0
- data/html/table_of_contents.html +14 -9
- data/lib/conductor/filter.rb +7 -0
- data/lib/conductor/version.rb +1 -1
- data/src/_README.md +6 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a78acbdf0f9693636a7456265dca72cf53cfa771aaa4fe0e2ad848c4b3526612
|
4
|
+
data.tar.gz: c913dc807337b977cc0caa4b843512991df890f48cff913a06fe660831aa0f53
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b2c6979fcb015ac31d51895772ed83c9aad4644bb8b3f151f31e6e5015ca0fda4ca0b1a994adef1c388fe5c557747cd787da8a9325a2bb543295ac3bcaddbb18
|
7
|
+
data.tar.gz: c4759af9e3af7495e659464018eaf8eb858d6d10fdb93ed8b137c85c01b71fec23d3d062b91ba1deedcc4859b6ee832064e91a476929cb89e5898d62fbdba469
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -161,13 +161,19 @@ The action can be `script`, `command`, or `filter`.
|
|
161
161
|
| `prepend/appendFile(path)` | insert a file as Markdown at beginning or end of content |
|
162
162
|
| `prepend/appendRaw(path)` | insert a file as raw HTML at beginning or end of content |
|
163
163
|
| `prepend/appendCode(path)` | insert a file as a code block at beginning or end of content |
|
164
|
+
| `insertCSS(path)` | insert custom CSS into document |
|
165
|
+
| `autoLink()` | Turn bare URLs into \<self-linked\> urls |
|
164
166
|
|
165
167
|
For `replace` and `replaceAll`: If *search* is surrounded with forward slashes followed by optional flags (*i* for case-insensitive, *m* to make dot match newlines), e.g. `/contribut(ing)?/i`, it will be interpreted as a regular expression. The *replace* value can include numeric capture groups, e.g. `Follow$2`.
|
166
168
|
|
167
169
|
For `insertScript`, if path is just a filename it will look for a match in `~/.config/conductor/javascript` or `~/.config/conductor/scripts` and turn that into an absolute path if the file is found.
|
168
170
|
|
171
|
+
For `insertCSS`, if path is just a filename (with or without .css extension), the file will be searched for in `~/.config/conductor/css` or `~/.config/conductor/files` and injected. CSS will be compressed using the YUI algorithm and inserted at the top of the document, but after any existing metadata.
|
172
|
+
|
169
173
|
For all of the prepend/append file filters, you can store files in `~/.config/conductor/files` and reference them with just a filename. Otherwise a full path will be assumed.
|
170
174
|
|
175
|
+
For `autoLink`, any URL that's not contained in parenthesis or following a `[]: url` pattern will be autolinked (surrounded by angle brackets). URLs must contain `//` to be recognized, but any protocol will work, e.g. `x-marked://refresh`.
|
176
|
+
|
171
177
|
> Example:
|
172
178
|
>
|
173
179
|
> filter: setStyle(github)
|
data/html/Filter.html
CHANGED
@@ -145,7 +145,7 @@
|
|
145
145
|
</div>
|
146
146
|
|
147
147
|
<div class="method-source-code" id="new-source">
|
148
|
-
<pre><span class="ruby-comment"># File lib/conductor/filter.rb, line
|
148
|
+
<pre><span class="ruby-comment"># File lib/conductor/filter.rb, line 329</span>
|
149
149
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">initialize</span>(<span class="ruby-identifier">filter</span>)
|
150
150
|
<span class="ruby-ivar">@filter</span>, <span class="ruby-ivar">@params</span> = <span class="ruby-identifier">filter</span>.<span class="ruby-identifier">normalize_filter</span>
|
151
151
|
<span class="ruby-keyword">super</span>
|
@@ -176,7 +176,7 @@
|
|
176
176
|
|
177
177
|
|
178
178
|
<div class="method-source-code" id="process-source">
|
179
|
-
<pre><span class="ruby-comment"># File lib/conductor/filter.rb, line
|
179
|
+
<pre><span class="ruby-comment"># File lib/conductor/filter.rb, line 334</span>
|
180
180
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">process</span>
|
181
181
|
<span class="ruby-identifier">content</span> = <span class="ruby-constant">Conductor</span>.<span class="ruby-identifier">stdin</span>
|
182
182
|
|
@@ -245,6 +245,8 @@
|
|
245
245
|
<span class="ruby-keyword">end</span>
|
246
246
|
|
247
247
|
<span class="ruby-identifier">content</span>.<span class="ruby-identifier">replace</span>(<span class="ruby-ivar">@params</span>[<span class="ruby-value">0</span>], <span class="ruby-ivar">@params</span>[<span class="ruby-value">1</span>])
|
248
|
+
<span class="ruby-keyword">when</span> <span class="ruby-regexp">/(auto|self)link/</span>
|
249
|
+
<span class="ruby-identifier">content</span>.<span class="ruby-identifier">autolink</span>
|
248
250
|
<span class="ruby-keyword">end</span>
|
249
251
|
<span class="ruby-keyword">end</span></pre>
|
250
252
|
</div>
|
data/html/String.html
CHANGED
@@ -76,6 +76,7 @@
|
|
76
76
|
<li ><a href="#method-i-add_mmd">#add_mmd</a>
|
77
77
|
<li ><a href="#method-i-add_yaml">#add_yaml</a>
|
78
78
|
<li ><a href="#method-i-append">#append</a>
|
79
|
+
<li ><a href="#method-i-autolink">#autolink</a>
|
79
80
|
<li ><a href="#method-i-bool-3F">#bool?</a>
|
80
81
|
<li ><a href="#method-i-bool_to_symbol">#bool_to_symbol</a>
|
81
82
|
<li ><a href="#method-i-date-3F">#date?</a>
|
@@ -251,6 +252,30 @@
|
|
251
252
|
</div>
|
252
253
|
|
253
254
|
|
255
|
+
</div>
|
256
|
+
|
257
|
+
<div id="method-i-autolink" class="method-detail ">
|
258
|
+
<div class="method-header">
|
259
|
+
<div class="method-heading">
|
260
|
+
<span class="method-name">autolink</span><span
|
261
|
+
class="method-args">()</span>
|
262
|
+
<span class="method-click-advice">click to toggle source</span>
|
263
|
+
</div>
|
264
|
+
</div>
|
265
|
+
|
266
|
+
<div class="method-description">
|
267
|
+
|
268
|
+
|
269
|
+
<div class="method-source-code" id="autolink-source">
|
270
|
+
<pre><span class="ruby-comment"># File lib/conductor/filter.rb, line 304</span>
|
271
|
+
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">autolink</span>
|
272
|
+
<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp">%r{(?mi)(?<!\(|]: )\b((?:[\w-]+?://)[-a-zA-Z0-9@:%._+~#=]{2,256}\b(?:[-a-zA-Z0-9@:%_+.~#?&/=]*))}</span>,
|
273
|
+
<span class="ruby-string">'<\1>'</span>)
|
274
|
+
<span class="ruby-keyword">end</span></pre>
|
275
|
+
</div>
|
276
|
+
</div>
|
277
|
+
|
278
|
+
|
254
279
|
</div>
|
255
280
|
|
256
281
|
<div id="method-i-bool-3F" class="method-detail ">
|
@@ -1278,7 +1303,7 @@
|
|
1278
1303
|
|
1279
1304
|
|
1280
1305
|
<div class="method-source-code" id="to_pattern-source">
|
1281
|
-
<pre><span class="ruby-comment"># File lib/conductor/filter.rb, line
|
1306
|
+
<pre><span class="ruby-comment"># File lib/conductor/filter.rb, line 320</span>
|
1282
1307
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">to_pattern</span>
|
1283
1308
|
<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp">/\$(\d+)/</span>, <span class="ruby-string">'\\\\\1'</span>).<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp">/(^["']|["']$)/</span>, <span class="ruby-string">""</span>)
|
1284
1309
|
<span class="ruby-keyword">end</span></pre>
|
@@ -1301,7 +1326,7 @@
|
|
1301
1326
|
|
1302
1327
|
|
1303
1328
|
<div class="method-source-code" id="to_rx-source">
|
1304
|
-
<pre><span class="ruby-comment"># File lib/conductor/filter.rb, line
|
1329
|
+
<pre><span class="ruby-comment"># File lib/conductor/filter.rb, line 309</span>
|
1305
1330
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">to_rx</span>
|
1306
1331
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp">%r{^/(.*?)/([im]+)?$}</span>
|
1307
1332
|
<span class="ruby-identifier">m</span> = <span class="ruby-constant">Regexp</span>.<span class="ruby-identifier">last_match</span>
|
@@ -0,0 +1,447 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
|
3
|
+
<html>
|
4
|
+
<head>
|
5
|
+
<meta charset="UTF-8">
|
6
|
+
|
7
|
+
<title>class YuiCompressor::Yui - Marked Conductor</title>
|
8
|
+
|
9
|
+
<script type="text/javascript">
|
10
|
+
var rdoc_rel_prefix = "../";
|
11
|
+
var index_rel_prefix = "../";
|
12
|
+
</script>
|
13
|
+
|
14
|
+
<script src="../js/navigation.js" defer></script>
|
15
|
+
<script src="../js/search.js" defer></script>
|
16
|
+
<script src="../js/search_index.js" defer></script>
|
17
|
+
<script src="../js/searcher.js" defer></script>
|
18
|
+
<script src="../js/darkfish.js" defer></script>
|
19
|
+
|
20
|
+
<link href="../css/fonts.css" rel="stylesheet">
|
21
|
+
<link href="../css/rdoc.css" rel="stylesheet">
|
22
|
+
|
23
|
+
|
24
|
+
<body id="top" role="document" class="class">
|
25
|
+
<nav role="navigation">
|
26
|
+
<div id="project-navigation">
|
27
|
+
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
|
28
|
+
<h2>
|
29
|
+
<a href="../index.html" rel="home">Home</a>
|
30
|
+
</h2>
|
31
|
+
|
32
|
+
<div id="table-of-contents-navigation">
|
33
|
+
<a href="../table_of_contents.html#pages">Pages</a>
|
34
|
+
<a href="../table_of_contents.html#classes">Classes</a>
|
35
|
+
<a href="../table_of_contents.html#methods">Methods</a>
|
36
|
+
</div>
|
37
|
+
</div>
|
38
|
+
|
39
|
+
<div id="search-section" role="search" class="project-section initially-hidden">
|
40
|
+
<form action="#" method="get" accept-charset="utf-8">
|
41
|
+
<div id="search-field-wrapper">
|
42
|
+
<input id="search-field" role="combobox" aria-label="Search"
|
43
|
+
aria-autocomplete="list" aria-controls="search-results"
|
44
|
+
type="text" name="search" placeholder="Search (/) for a class, method, ..." spellcheck="false"
|
45
|
+
title="Type to search, Up and Down to navigate, Enter to load">
|
46
|
+
</div>
|
47
|
+
|
48
|
+
<ul id="search-results" aria-label="Search Results"
|
49
|
+
aria-busy="false" aria-expanded="false"
|
50
|
+
aria-atomic="false" class="initially-hidden"></ul>
|
51
|
+
</form>
|
52
|
+
</div>
|
53
|
+
|
54
|
+
</div>
|
55
|
+
|
56
|
+
|
57
|
+
|
58
|
+
<div id="class-metadata">
|
59
|
+
|
60
|
+
|
61
|
+
<div id="parent-class-section" class="nav-section">
|
62
|
+
<h3>Parent</h3>
|
63
|
+
|
64
|
+
<p class="link"><a href="../Object.html">Object</a>
|
65
|
+
</div>
|
66
|
+
|
67
|
+
|
68
|
+
|
69
|
+
|
70
|
+
<!-- Method Quickref -->
|
71
|
+
<div id="method-list-section" class="nav-section">
|
72
|
+
<h3>Methods</h3>
|
73
|
+
|
74
|
+
<ul class="link-list" role="directory">
|
75
|
+
<li ><a href="#method-c-new">::new</a>
|
76
|
+
<li ><a href="#method-i-compress">#compress</a>
|
77
|
+
<li ><a href="#method-i-process_comments_and_strings">#process_comments_and_strings</a>
|
78
|
+
<li ><a href="#method-i-restore_preserved_comments_and_strings">#restore_preserved_comments_and_strings</a>
|
79
|
+
</ul>
|
80
|
+
</div>
|
81
|
+
|
82
|
+
</div>
|
83
|
+
</nav>
|
84
|
+
|
85
|
+
<main role="main" aria-labelledby="class-YuiCompressor::Yui">
|
86
|
+
<h1 id="class-YuiCompressor::Yui" class="class">
|
87
|
+
class YuiCompressor::Yui
|
88
|
+
</h1>
|
89
|
+
|
90
|
+
<section class="description">
|
91
|
+
|
92
|
+
<p>Compress CSS rules using a variety of techniques</p>
|
93
|
+
|
94
|
+
</section>
|
95
|
+
|
96
|
+
<section id="5Buntitled-5D" class="documentation-section">
|
97
|
+
|
98
|
+
|
99
|
+
|
100
|
+
<section class="attribute-method-details" class="method-section">
|
101
|
+
<header>
|
102
|
+
<h3>Attributes</h3>
|
103
|
+
</header>
|
104
|
+
|
105
|
+
<div id="attribute-i-input_size" class="method-detail">
|
106
|
+
<div class="method-heading attribute-method-heading">
|
107
|
+
<span class="method-name">input_size</span><span
|
108
|
+
class="attribute-access-type">[R]</span>
|
109
|
+
</div>
|
110
|
+
|
111
|
+
<div class="method-description">
|
112
|
+
|
113
|
+
</div>
|
114
|
+
</div>
|
115
|
+
<div id="attribute-i-output_size" class="method-detail">
|
116
|
+
<div class="method-heading attribute-method-heading">
|
117
|
+
<span class="method-name">output_size</span><span
|
118
|
+
class="attribute-access-type">[R]</span>
|
119
|
+
</div>
|
120
|
+
|
121
|
+
<div class="method-description">
|
122
|
+
|
123
|
+
</div>
|
124
|
+
</div>
|
125
|
+
</section>
|
126
|
+
|
127
|
+
|
128
|
+
<section id="public-class-5Buntitled-5D-method-details" class="method-section">
|
129
|
+
<header>
|
130
|
+
<h3>Public Class Methods</h3>
|
131
|
+
</header>
|
132
|
+
|
133
|
+
<div id="method-c-new" class="method-detail ">
|
134
|
+
<div class="method-header">
|
135
|
+
<div class="method-heading">
|
136
|
+
<span class="method-name">new</span><span
|
137
|
+
class="method-args">()</span>
|
138
|
+
<span class="method-click-advice">click to toggle source</span>
|
139
|
+
</div>
|
140
|
+
</div>
|
141
|
+
|
142
|
+
<div class="method-description">
|
143
|
+
|
144
|
+
|
145
|
+
<div class="method-source-code" id="new-source">
|
146
|
+
<pre><span class="ruby-comment"># File lib/conductor/yui-compressor.rb, line 10</span>
|
147
|
+
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">initialize</span>
|
148
|
+
<span class="ruby-ivar">@preservedTokens</span> = []
|
149
|
+
<span class="ruby-ivar">@comments</span> = []
|
150
|
+
<span class="ruby-ivar">@input_size</span> = <span class="ruby-value">0</span>
|
151
|
+
<span class="ruby-ivar">@output_size</span> = <span class="ruby-value">0</span>
|
152
|
+
<span class="ruby-keyword">end</span></pre>
|
153
|
+
</div>
|
154
|
+
</div>
|
155
|
+
|
156
|
+
|
157
|
+
</div>
|
158
|
+
|
159
|
+
</section>
|
160
|
+
|
161
|
+
<section id="public-instance-5Buntitled-5D-method-details" class="method-section">
|
162
|
+
<header>
|
163
|
+
<h3>Public Instance Methods</h3>
|
164
|
+
</header>
|
165
|
+
|
166
|
+
<div id="method-i-compress" class="method-detail ">
|
167
|
+
<div class="method-header">
|
168
|
+
<div class="method-heading">
|
169
|
+
<span class="method-name">compress</span><span
|
170
|
+
class="method-args">(css, line_length = 0)</span>
|
171
|
+
<span class="method-click-advice">click to toggle source</span>
|
172
|
+
</div>
|
173
|
+
</div>
|
174
|
+
|
175
|
+
<div class="method-description">
|
176
|
+
|
177
|
+
|
178
|
+
<div class="method-source-code" id="compress-source">
|
179
|
+
<pre><span class="ruby-comment"># File lib/conductor/yui-compressor.rb, line 17</span>
|
180
|
+
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">compress</span>(<span class="ruby-identifier">css</span>, <span class="ruby-identifier">line_length</span> = <span class="ruby-value">0</span>)
|
181
|
+
<span class="ruby-ivar">@input_size</span> = <span class="ruby-identifier">css</span>.<span class="ruby-identifier">length</span>
|
182
|
+
|
183
|
+
<span class="ruby-identifier">css</span> = <span class="ruby-identifier">process_comments_and_strings</span>(<span class="ruby-identifier">css</span>)
|
184
|
+
|
185
|
+
<span class="ruby-comment"># Normalize all whitespace strings to single spaces. Easier to work with that way.</span>
|
186
|
+
<span class="ruby-identifier">css</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-regexp">/\s+/</span>, <span class="ruby-string">' '</span>)
|
187
|
+
|
188
|
+
<span class="ruby-comment"># Remove the spaces before the things that should not have spaces before them.</span>
|
189
|
+
<span class="ruby-comment"># But, be careful not to turn "p :link {...}" into "p:link{...}"</span>
|
190
|
+
<span class="ruby-comment"># Swap out any pseudo-class colons with the token, and then swap back.</span>
|
191
|
+
<span class="ruby-identifier">css</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-regexp">/(?:^|\})[^{:]+\s+:+[^{]*\{/</span>) <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">match</span><span class="ruby-operator">|</span>
|
192
|
+
<span class="ruby-identifier">match</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-string">':'</span>, <span class="ruby-string">'___PSEUDOCLASSCOLON___'</span>)
|
193
|
+
<span class="ruby-keyword">end</span>
|
194
|
+
<span class="ruby-identifier">css</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-regexp">/\s+([!{};:>+()\],])/</span>, <span class="ruby-string">'\1'</span>)
|
195
|
+
<span class="ruby-identifier">css</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-regexp">/([!{}:;>+(\[,])\s+/</span>, <span class="ruby-string">'\1'</span>)
|
196
|
+
<span class="ruby-identifier">css</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-string">'___PSEUDOCLASSCOLON___'</span>, <span class="ruby-string">':'</span>)
|
197
|
+
|
198
|
+
<span class="ruby-comment"># special case for IE</span>
|
199
|
+
<span class="ruby-identifier">css</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-regexp">/:first-(line|letter)(\{|,)/</span>, <span class="ruby-string">':first-\1 \2'</span>)
|
200
|
+
|
201
|
+
<span class="ruby-comment"># no space after the end of a preserved comment</span>
|
202
|
+
<span class="ruby-identifier">css</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-regexp">%r{\*/ }</span>, <span class="ruby-string">'*/'</span>)
|
203
|
+
|
204
|
+
<span class="ruby-comment"># If there is a @charset, then only allow one, and push to the top of the file.</span>
|
205
|
+
<span class="ruby-identifier">css</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-regexp">/^(.*)(@charset "[^"]*";)/i</span>, <span class="ruby-string">'\2\1'</span>)
|
206
|
+
<span class="ruby-identifier">css</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-regexp">/^(\s*@charset [^;]+;\s*)+/i</span>, <span class="ruby-string">'\1'</span>)
|
207
|
+
|
208
|
+
<span class="ruby-comment"># Put the space back in some cases, to support stuff like</span>
|
209
|
+
<span class="ruby-comment"># @media screen and (-webkit-min-device-pixel-ratio:0){</span>
|
210
|
+
<span class="ruby-identifier">css</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-regexp">/\band\(/i</span>, <span class="ruby-string">'and ('</span>)
|
211
|
+
|
212
|
+
<span class="ruby-comment"># remove unnecessary semicolons</span>
|
213
|
+
<span class="ruby-identifier">css</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-regexp">/;+\}/</span>, <span class="ruby-string">'}'</span>)
|
214
|
+
|
215
|
+
<span class="ruby-comment"># Replace 0(%, em, ex, px, in, cm, mm, pt, pc) with just 0.</span>
|
216
|
+
<span class="ruby-identifier">css</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-regexp">/([\s:])([+-]?0)(?:%|em|ex|px|in|cm|mm|pt|pc)/i</span>, <span class="ruby-string">'\1\2'</span>)
|
217
|
+
|
218
|
+
<span class="ruby-comment"># Replace 0 0 0 0; with 0.</span>
|
219
|
+
<span class="ruby-identifier">css</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-regexp">/:(?:0 )+0(;|\})/</span>, <span class="ruby-string">':0\1'</span>)
|
220
|
+
|
221
|
+
<span class="ruby-comment"># Restore background-position:0 0; if required</span>
|
222
|
+
<span class="ruby-identifier">css</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-regexp">/(background-position|transform-origin|webkit-transform-origin|moz-transform-origin|o-transform-origin|ms-transform-origin):0(;|\})/i</span>) {
|
223
|
+
<span class="ruby-node">"#{::Regexp.last_match(1).downcase}:0 0#{::Regexp.last_match(2)}"</span> }
|
224
|
+
|
225
|
+
<span class="ruby-comment"># Replace 0.6 with .6, but only when preceded by : or a space.</span>
|
226
|
+
<span class="ruby-identifier">css</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-regexp">/(:|\s)0+\.(\d+)/</span>, <span class="ruby-string">'\1.\2'</span>)
|
227
|
+
|
228
|
+
<span class="ruby-comment"># Shorten colors from rgb(51,102,153) to #336699</span>
|
229
|
+
<span class="ruby-comment"># This makes it more likely that it'll get further compressed in the next step.</span>
|
230
|
+
<span class="ruby-identifier">css</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-regexp">/rgb\s*\(\s*([0-9,\s]+)\s*\)/</span>) <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">_match</span><span class="ruby-operator">|</span>
|
231
|
+
<span class="ruby-string">'#'</span> <span class="ruby-operator"><<</span> <span class="ruby-operator">::</span><span class="ruby-constant">Regexp</span>.<span class="ruby-identifier">last_match</span>(<span class="ruby-value">1</span>).<span class="ruby-identifier">scan</span>(<span class="ruby-regexp">/\d+/</span>).<span class="ruby-identifier">map</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">n</span><span class="ruby-operator">|</span> <span class="ruby-identifier">n</span>.<span class="ruby-identifier">to_i</span>.<span class="ruby-identifier">to_s</span>(<span class="ruby-value">16</span>).<span class="ruby-identifier">rjust</span>(<span class="ruby-value">2</span>, <span class="ruby-string">'0'</span>) }.<span class="ruby-identifier">join</span>
|
232
|
+
<span class="ruby-keyword">end</span>
|
233
|
+
|
234
|
+
<span class="ruby-comment"># Shorten colors from #AABBCC to #ABC. Note that we want to make sure</span>
|
235
|
+
<span class="ruby-comment"># the color is not preceded by either ", " or =. Indeed, the property</span>
|
236
|
+
<span class="ruby-comment"># filter: chroma(color="#FFFFFF");</span>
|
237
|
+
<span class="ruby-comment"># would become</span>
|
238
|
+
<span class="ruby-comment"># filter: chroma(color="#FFF");</span>
|
239
|
+
<span class="ruby-comment"># which makes the filter break in IE.</span>
|
240
|
+
<span class="ruby-identifier">css</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-regexp">/([^"'=\s])(\s?)\s*#([0-9a-f])\3([0-9a-f])\4([0-9a-f])\5/i</span>, <span class="ruby-string">'\1\2#\3\4\5'</span>)
|
241
|
+
|
242
|
+
<span class="ruby-comment"># border: none -> border:0</span>
|
243
|
+
<span class="ruby-identifier">css</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-regexp">/(border|border-top|border-right|border-bottom|border-right|outline|background):none(;|\})/i</span>) {
|
244
|
+
<span class="ruby-node">"#{::Regexp.last_match(1).downcase}:0#{::Regexp.last_match(2)}"</span> }
|
245
|
+
|
246
|
+
<span class="ruby-comment"># shorter opacity IE filter</span>
|
247
|
+
<span class="ruby-identifier">css</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-regexp">/progid:DXImageTransform\.Microsoft\.Alpha\(Opacity=/i</span>, <span class="ruby-string">'alpha(opacity='</span>)
|
248
|
+
|
249
|
+
<span class="ruby-comment"># Remove empty rules.</span>
|
250
|
+
<span class="ruby-identifier">css</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-regexp">%r{[^\};\{/]+\{\}}</span>, <span class="ruby-string">''</span>)
|
251
|
+
|
252
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">line_length</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
253
|
+
<span class="ruby-comment"># Some source control tools don't like it when files containing lines longer</span>
|
254
|
+
<span class="ruby-comment"># than, say 8000 characters, are checked in. The linebreak option is used in</span>
|
255
|
+
<span class="ruby-comment"># that case to split long lines after a specific column.</span>
|
256
|
+
<span class="ruby-identifier">startIndex</span> = <span class="ruby-value">0</span>
|
257
|
+
<span class="ruby-identifier">index</span> = <span class="ruby-value">0</span>
|
258
|
+
<span class="ruby-identifier">length</span> = <span class="ruby-identifier">css</span>.<span class="ruby-identifier">length</span>
|
259
|
+
<span class="ruby-keyword">while</span> <span class="ruby-identifier">index</span> <span class="ruby-operator"><</span> <span class="ruby-identifier">length</span>
|
260
|
+
<span class="ruby-identifier">index</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
|
261
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">css</span>[<span class="ruby-identifier">index</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>, <span class="ruby-value">1</span>] <span class="ruby-operator">===</span> <span class="ruby-string">'}'</span> <span class="ruby-operator">&&</span> <span class="ruby-identifier">index</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">startIndex</span> <span class="ruby-operator">></span> <span class="ruby-identifier">line_length</span>
|
262
|
+
<span class="ruby-identifier">css</span> = <span class="ruby-identifier">css</span>.<span class="ruby-identifier">slice</span>(<span class="ruby-value">0</span>, <span class="ruby-identifier">index</span>) <span class="ruby-operator">+</span> <span class="ruby-string">"\n"</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">css</span>.<span class="ruby-identifier">slice</span>(<span class="ruby-identifier">index</span>, <span class="ruby-identifier">length</span>)
|
263
|
+
<span class="ruby-identifier">startIndex</span> = <span class="ruby-identifier">index</span>
|
264
|
+
<span class="ruby-keyword">end</span>
|
265
|
+
<span class="ruby-keyword">end</span>
|
266
|
+
<span class="ruby-keyword">end</span>
|
267
|
+
|
268
|
+
<span class="ruby-comment"># Replace multiple semi-colons in a row by a single one</span>
|
269
|
+
<span class="ruby-comment"># See SF bug #1980989</span>
|
270
|
+
<span class="ruby-identifier">css</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-regexp">/;+/</span>, <span class="ruby-string">';'</span>)
|
271
|
+
|
272
|
+
<span class="ruby-comment"># restore preserved comments and strings</span>
|
273
|
+
<span class="ruby-identifier">css</span> = <span class="ruby-identifier">restore_preserved_comments_and_strings</span>(<span class="ruby-identifier">css</span>)
|
274
|
+
|
275
|
+
<span class="ruby-comment"># top and tail whitespace</span>
|
276
|
+
<span class="ruby-identifier">css</span>.<span class="ruby-identifier">strip!</span>
|
277
|
+
|
278
|
+
<span class="ruby-ivar">@output_size</span> = <span class="ruby-identifier">css</span>.<span class="ruby-identifier">length</span>
|
279
|
+
<span class="ruby-identifier">css</span>
|
280
|
+
<span class="ruby-keyword">end</span></pre>
|
281
|
+
</div>
|
282
|
+
</div>
|
283
|
+
|
284
|
+
|
285
|
+
</div>
|
286
|
+
|
287
|
+
<div id="method-i-process_comments_and_strings" class="method-detail ">
|
288
|
+
<div class="method-header">
|
289
|
+
<div class="method-heading">
|
290
|
+
<span class="method-name">process_comments_and_strings</span><span
|
291
|
+
class="method-args">(css_text)</span>
|
292
|
+
<span class="method-click-advice">click to toggle source</span>
|
293
|
+
</div>
|
294
|
+
</div>
|
295
|
+
|
296
|
+
<div class="method-description">
|
297
|
+
|
298
|
+
|
299
|
+
<div class="method-source-code" id="process_comments_and_strings-source">
|
300
|
+
<pre><span class="ruby-comment"># File lib/conductor/yui-compressor.rb, line 119</span>
|
301
|
+
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">process_comments_and_strings</span>(<span class="ruby-identifier">css_text</span>)
|
302
|
+
<span class="ruby-identifier">css</span> = <span class="ruby-identifier">css_text</span>.<span class="ruby-identifier">clone</span>
|
303
|
+
|
304
|
+
<span class="ruby-identifier">startIndex</span> = <span class="ruby-value">0</span>
|
305
|
+
<span class="ruby-identifier">endIndex</span> = <span class="ruby-value">0</span>
|
306
|
+
<span class="ruby-identifier">i</span> = <span class="ruby-value">0</span>
|
307
|
+
<span class="ruby-identifier">max</span> = <span class="ruby-value">0</span>
|
308
|
+
<span class="ruby-identifier">token</span> = <span class="ruby-string">''</span>
|
309
|
+
<span class="ruby-identifier">totallen</span> = <span class="ruby-identifier">css</span>.<span class="ruby-identifier">length</span>
|
310
|
+
<span class="ruby-identifier">placeholder</span> = <span class="ruby-string">''</span>
|
311
|
+
|
312
|
+
<span class="ruby-comment"># collect all comment blocks</span>
|
313
|
+
<span class="ruby-keyword">while</span> (<span class="ruby-identifier">startIndex</span> = <span class="ruby-identifier">css</span>.<span class="ruby-identifier">index</span>(<span class="ruby-regexp">%r{/\*}</span>, <span class="ruby-identifier">startIndex</span>))
|
314
|
+
<span class="ruby-identifier">endIndex</span> = <span class="ruby-identifier">css</span>.<span class="ruby-identifier">index</span>(<span class="ruby-regexp">%r{\*/}</span>, <span class="ruby-identifier">startIndex</span> <span class="ruby-operator">+</span> <span class="ruby-value">2</span>)
|
315
|
+
<span class="ruby-identifier">endIndex</span> = <span class="ruby-identifier">totallen</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">endIndex</span>
|
316
|
+
<span class="ruby-identifier">token</span> = <span class="ruby-identifier">css</span>.<span class="ruby-identifier">slice</span>(<span class="ruby-identifier">startIndex</span> <span class="ruby-operator">+</span> <span class="ruby-value">2</span><span class="ruby-operator">..</span><span class="ruby-identifier">endIndex</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>)
|
317
|
+
<span class="ruby-ivar">@comments</span>.<span class="ruby-identifier">push</span>(<span class="ruby-identifier">token</span>)
|
318
|
+
<span class="ruby-identifier">css</span> = <span class="ruby-identifier">css</span>.<span class="ruby-identifier">slice</span>(<span class="ruby-value">0</span><span class="ruby-operator">..</span><span class="ruby-identifier">startIndex</span> <span class="ruby-operator">+</span> <span class="ruby-value">1</span>).<span class="ruby-identifier">to_s</span> <span class="ruby-operator">+</span> <span class="ruby-string">'___YUICSSMIN_PRESERVE_CANDIDATE_COMMENT_'</span> <span class="ruby-operator">+</span> (<span class="ruby-ivar">@comments</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>).<span class="ruby-identifier">to_s</span> <span class="ruby-operator">+</span> <span class="ruby-string">'___'</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">css</span>.<span class="ruby-identifier">slice</span>(
|
319
|
+
<span class="ruby-identifier">endIndex</span>, <span class="ruby-identifier">totallen</span>).<span class="ruby-identifier">to_s</span>
|
320
|
+
<span class="ruby-identifier">startIndex</span> <span class="ruby-operator">+=</span> <span class="ruby-value">2</span>
|
321
|
+
<span class="ruby-keyword">end</span>
|
322
|
+
|
323
|
+
<span class="ruby-comment"># preserve strings so their content doesn't get accidentally minified</span>
|
324
|
+
<span class="ruby-identifier">css</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-regexp">/("([^\\"]|\\.|\\)*")|('([^\\']|\\.|\\)*')/</span>) <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">match</span><span class="ruby-operator">|</span>
|
325
|
+
<span class="ruby-identifier">quote</span> = <span class="ruby-identifier">match</span>[<span class="ruby-value">0</span>, <span class="ruby-value">1</span>]
|
326
|
+
<span class="ruby-identifier">string</span> = <span class="ruby-identifier">match</span>.<span class="ruby-identifier">slice</span>(<span class="ruby-value">1</span><span class="ruby-operator">..</span><span class="ruby-value">-2</span>)
|
327
|
+
|
328
|
+
<span class="ruby-comment"># maybe the string contains a comment-like substring?</span>
|
329
|
+
<span class="ruby-comment"># one, maybe more? put'em back then</span>
|
330
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">string</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp">/___YUICSSMIN_PRESERVE_CANDIDATE_COMMENT_/</span>
|
331
|
+
<span class="ruby-ivar">@comments</span>.<span class="ruby-identifier">each_index</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">index</span><span class="ruby-operator">|</span>
|
332
|
+
<span class="ruby-identifier">string</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-regexp">/___YUICSSMIN_PRESERVE_CANDIDATE_COMMENT_#{index}___/</span>, <span class="ruby-ivar">@comments</span>[<span class="ruby-identifier">index</span>])
|
333
|
+
<span class="ruby-keyword">end</span>
|
334
|
+
<span class="ruby-keyword">end</span>
|
335
|
+
|
336
|
+
<span class="ruby-comment"># minify alpha opacity in filter strings</span>
|
337
|
+
<span class="ruby-identifier">string</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-regexp">/progid:DXImageTransform\.Microsoft\.Alpha\(Opacity=/i</span>, <span class="ruby-string">'alpha(opacity='</span>)
|
338
|
+
<span class="ruby-ivar">@preservedTokens</span>.<span class="ruby-identifier">push</span>(<span class="ruby-identifier">string</span>)
|
339
|
+
|
340
|
+
<span class="ruby-identifier">quote</span> <span class="ruby-operator">+</span> <span class="ruby-string">'___YUICSSMIN_PRESERVED_TOKEN_'</span> <span class="ruby-operator">+</span> (<span class="ruby-ivar">@preservedTokens</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>).<span class="ruby-identifier">to_s</span> <span class="ruby-operator">+</span> <span class="ruby-string">'___'</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">quote</span>
|
341
|
+
<span class="ruby-keyword">end</span>
|
342
|
+
|
343
|
+
<span class="ruby-comment"># used to jump one index in loop</span>
|
344
|
+
<span class="ruby-identifier">ie5_hack</span> = <span class="ruby-keyword">false</span>
|
345
|
+
<span class="ruby-comment"># strings are safe, now wrestle the comments</span>
|
346
|
+
<span class="ruby-ivar">@comments</span>.<span class="ruby-identifier">each_index</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">index</span><span class="ruby-operator">|</span>
|
347
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">ie5_hack</span>
|
348
|
+
<span class="ruby-identifier">ie5_hack</span> = <span class="ruby-keyword">false</span>
|
349
|
+
<span class="ruby-keyword">next</span>
|
350
|
+
<span class="ruby-keyword">end</span>
|
351
|
+
|
352
|
+
<span class="ruby-identifier">token</span> = <span class="ruby-ivar">@comments</span>[<span class="ruby-identifier">index</span>]
|
353
|
+
<span class="ruby-identifier">placeholder</span> = <span class="ruby-string">'___YUICSSMIN_PRESERVE_CANDIDATE_COMMENT_'</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">index</span>.<span class="ruby-identifier">to_s</span> <span class="ruby-operator">+</span> <span class="ruby-string">'___'</span>
|
354
|
+
|
355
|
+
<span class="ruby-comment"># ! in the first position of the comment means preserve</span>
|
356
|
+
<span class="ruby-comment"># so push to the preserved tokens keeping the !</span>
|
357
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">token</span>[<span class="ruby-value">0</span>, <span class="ruby-value">1</span>] <span class="ruby-operator">===</span> <span class="ruby-string">'!'</span>
|
358
|
+
<span class="ruby-ivar">@preservedTokens</span>.<span class="ruby-identifier">push</span>(<span class="ruby-identifier">token</span>)
|
359
|
+
<span class="ruby-identifier">css</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-regexp">/#{placeholder}/i</span>, <span class="ruby-string">'___YUICSSMIN_PRESERVED_TOKEN_'</span> <span class="ruby-operator">+</span> (<span class="ruby-ivar">@preservedTokens</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>).<span class="ruby-identifier">to_s</span> <span class="ruby-operator">+</span> <span class="ruby-string">'___'</span>)
|
360
|
+
<span class="ruby-keyword">next</span>
|
361
|
+
<span class="ruby-keyword">end</span>
|
362
|
+
|
363
|
+
<span class="ruby-comment"># \ in the last position looks like hack for Mac/IE5</span>
|
364
|
+
<span class="ruby-comment"># shorten that to /*\*/ and the next one to /**/</span>
|
365
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">token</span>[<span class="ruby-value">-1</span>, <span class="ruby-value">1</span>] <span class="ruby-operator">===</span> <span class="ruby-string">'\\'</span>
|
366
|
+
<span class="ruby-ivar">@preservedTokens</span>.<span class="ruby-identifier">push</span>(<span class="ruby-string">'\\'</span>)
|
367
|
+
<span class="ruby-identifier">css</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-regexp">/#{placeholder}/</span>, <span class="ruby-string">'___YUICSSMIN_PRESERVED_TOKEN_'</span> <span class="ruby-operator">+</span> (<span class="ruby-ivar">@preservedTokens</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>).<span class="ruby-identifier">to_s</span> <span class="ruby-operator">+</span> <span class="ruby-string">'___'</span>)
|
368
|
+
<span class="ruby-comment"># keep the next comment but remove its content</span>
|
369
|
+
<span class="ruby-ivar">@preservedTokens</span>.<span class="ruby-identifier">push</span>(<span class="ruby-string">''</span>)
|
370
|
+
<span class="ruby-identifier">css</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-regexp">/___YUICSSMIN_PRESERVE_CANDIDATE_COMMENT_#{index + 1}___/</span>,
|
371
|
+
<span class="ruby-string">'___YUICSSMIN_PRESERVED_TOKEN_'</span> <span class="ruby-operator">+</span> (<span class="ruby-ivar">@preservedTokens</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>).<span class="ruby-identifier">to_s</span> <span class="ruby-operator">+</span> <span class="ruby-string">'___'</span>)
|
372
|
+
<span class="ruby-identifier">ie5_hack</span> = <span class="ruby-keyword">true</span>
|
373
|
+
<span class="ruby-keyword">next</span>
|
374
|
+
<span class="ruby-keyword">end</span>
|
375
|
+
|
376
|
+
<span class="ruby-comment"># keep empty comments after child selectors (IE7 hack)</span>
|
377
|
+
<span class="ruby-comment"># e.g. html >/**/ body</span>
|
378
|
+
<span class="ruby-keyword">if</span> (<span class="ruby-identifier">token</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">===</span> <span class="ruby-value">0</span>) <span class="ruby-operator">&&</span> (<span class="ruby-identifier">startIndex</span> = <span class="ruby-identifier">css</span>.<span class="ruby-identifier">index</span>(<span class="ruby-regexp">/#{placeholder}/</span>))
|
379
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">startIndex</span> <span class="ruby-operator">></span> <span class="ruby-value">2</span>
|
380
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">css</span>[<span class="ruby-identifier">startIndex</span> <span class="ruby-operator">-</span> <span class="ruby-value">3</span>, <span class="ruby-value">1</span>] <span class="ruby-operator">===</span> <span class="ruby-string">'>'</span>
|
381
|
+
<span class="ruby-ivar">@preservedTokens</span>.<span class="ruby-identifier">push</span>(<span class="ruby-string">''</span>)
|
382
|
+
<span class="ruby-identifier">css</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-regexp">/#{placeholder}/</span>, <span class="ruby-string">'___YUICSSMIN_PRESERVED_TOKEN_'</span> <span class="ruby-operator">+</span> (<span class="ruby-ivar">@preservedTokens</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>).<span class="ruby-identifier">to_s</span> <span class="ruby-operator">+</span> <span class="ruby-string">'___'</span>)
|
383
|
+
<span class="ruby-keyword">end</span>
|
384
|
+
<span class="ruby-keyword">end</span>
|
385
|
+
<span class="ruby-keyword">end</span>
|
386
|
+
|
387
|
+
<span class="ruby-comment"># in all other cases kill the comment</span>
|
388
|
+
<span class="ruby-identifier">css</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-regexp">%r{/\*#{placeholder}\*/}</span>, <span class="ruby-string">''</span>)
|
389
|
+
<span class="ruby-keyword">end</span>
|
390
|
+
|
391
|
+
<span class="ruby-identifier">css</span>
|
392
|
+
<span class="ruby-keyword">end</span></pre>
|
393
|
+
</div>
|
394
|
+
</div>
|
395
|
+
|
396
|
+
|
397
|
+
</div>
|
398
|
+
|
399
|
+
<div id="method-i-restore_preserved_comments_and_strings" class="method-detail ">
|
400
|
+
<div class="method-header">
|
401
|
+
<div class="method-heading">
|
402
|
+
<span class="method-name">restore_preserved_comments_and_strings</span><span
|
403
|
+
class="method-args">(clean_css)</span>
|
404
|
+
<span class="method-click-advice">click to toggle source</span>
|
405
|
+
</div>
|
406
|
+
</div>
|
407
|
+
|
408
|
+
<div class="method-description">
|
409
|
+
|
410
|
+
|
411
|
+
<div class="method-source-code" id="restore_preserved_comments_and_strings-source">
|
412
|
+
<pre><span class="ruby-comment"># File lib/conductor/yui-compressor.rb, line 212</span>
|
413
|
+
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">restore_preserved_comments_and_strings</span>(<span class="ruby-identifier">clean_css</span>)
|
414
|
+
<span class="ruby-identifier">css</span> = <span class="ruby-identifier">clean_css</span>.<span class="ruby-identifier">clone</span>
|
415
|
+
<span class="ruby-identifier">css_length</span> = <span class="ruby-identifier">css</span>.<span class="ruby-identifier">length</span>
|
416
|
+
<span class="ruby-ivar">@preservedTokens</span>.<span class="ruby-identifier">each_index</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">index</span><span class="ruby-operator">|</span>
|
417
|
+
<span class="ruby-comment"># slice these back into place rather than regex, because</span>
|
418
|
+
<span class="ruby-comment"># complex nested strings cause the replacement to fail</span>
|
419
|
+
<span class="ruby-identifier">placeholder</span> = <span class="ruby-node">"___YUICSSMIN_PRESERVED_TOKEN_#{index}___"</span>
|
420
|
+
<span class="ruby-identifier">startIndex</span> = <span class="ruby-identifier">css</span>.<span class="ruby-identifier">index</span>(<span class="ruby-identifier">placeholder</span>, <span class="ruby-value">0</span>)
|
421
|
+
<span class="ruby-keyword">next</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">startIndex</span> <span class="ruby-comment"># skip if nil</span>
|
422
|
+
|
423
|
+
<span class="ruby-identifier">endIndex</span> = <span class="ruby-identifier">startIndex</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">placeholder</span>.<span class="ruby-identifier">length</span>
|
424
|
+
|
425
|
+
<span class="ruby-identifier">css</span> = <span class="ruby-identifier">css</span>.<span class="ruby-identifier">slice</span>(<span class="ruby-value">0</span><span class="ruby-operator">..</span><span class="ruby-identifier">startIndex</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>).<span class="ruby-identifier">to_s</span> <span class="ruby-operator">+</span> <span class="ruby-ivar">@preservedTokens</span>[<span class="ruby-identifier">index</span>] <span class="ruby-operator">+</span> <span class="ruby-identifier">css</span>.<span class="ruby-identifier">slice</span>(<span class="ruby-identifier">endIndex</span>, <span class="ruby-identifier">css_length</span>).<span class="ruby-identifier">to_s</span>
|
426
|
+
<span class="ruby-keyword">end</span>
|
427
|
+
|
428
|
+
<span class="ruby-identifier">css</span>
|
429
|
+
<span class="ruby-keyword">end</span></pre>
|
430
|
+
</div>
|
431
|
+
</div>
|
432
|
+
|
433
|
+
|
434
|
+
</div>
|
435
|
+
|
436
|
+
</section>
|
437
|
+
|
438
|
+
</section>
|
439
|
+
</main>
|
440
|
+
|
441
|
+
|
442
|
+
<footer id="validator-badges" role="contentinfo">
|
443
|
+
<p><a href="https://validator.w3.org/check/referer">Validate</a>
|
444
|
+
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.7.0.
|
445
|
+
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
|
446
|
+
</footer>
|
447
|
+
|
@@ -0,0 +1,93 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
|
3
|
+
<html>
|
4
|
+
<head>
|
5
|
+
<meta charset="UTF-8">
|
6
|
+
|
7
|
+
<title>module YuiCompressor - Marked Conductor</title>
|
8
|
+
|
9
|
+
<script type="text/javascript">
|
10
|
+
var rdoc_rel_prefix = "./";
|
11
|
+
var index_rel_prefix = "./";
|
12
|
+
</script>
|
13
|
+
|
14
|
+
<script src="./js/navigation.js" defer></script>
|
15
|
+
<script src="./js/search.js" defer></script>
|
16
|
+
<script src="./js/search_index.js" defer></script>
|
17
|
+
<script src="./js/searcher.js" defer></script>
|
18
|
+
<script src="./js/darkfish.js" defer></script>
|
19
|
+
|
20
|
+
<link href="./css/fonts.css" rel="stylesheet">
|
21
|
+
<link href="./css/rdoc.css" rel="stylesheet">
|
22
|
+
|
23
|
+
|
24
|
+
<body id="top" role="document" class="module">
|
25
|
+
<nav role="navigation">
|
26
|
+
<div id="project-navigation">
|
27
|
+
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
|
28
|
+
<h2>
|
29
|
+
<a href="./index.html" rel="home">Home</a>
|
30
|
+
</h2>
|
31
|
+
|
32
|
+
<div id="table-of-contents-navigation">
|
33
|
+
<a href="./table_of_contents.html#pages">Pages</a>
|
34
|
+
<a href="./table_of_contents.html#classes">Classes</a>
|
35
|
+
<a href="./table_of_contents.html#methods">Methods</a>
|
36
|
+
</div>
|
37
|
+
</div>
|
38
|
+
|
39
|
+
<div id="search-section" role="search" class="project-section initially-hidden">
|
40
|
+
<form action="#" method="get" accept-charset="utf-8">
|
41
|
+
<div id="search-field-wrapper">
|
42
|
+
<input id="search-field" role="combobox" aria-label="Search"
|
43
|
+
aria-autocomplete="list" aria-controls="search-results"
|
44
|
+
type="text" name="search" placeholder="Search (/) for a class, method, ..." spellcheck="false"
|
45
|
+
title="Type to search, Up and Down to navigate, Enter to load">
|
46
|
+
</div>
|
47
|
+
|
48
|
+
<ul id="search-results" aria-label="Search Results"
|
49
|
+
aria-busy="false" aria-expanded="false"
|
50
|
+
aria-atomic="false" class="initially-hidden"></ul>
|
51
|
+
</form>
|
52
|
+
</div>
|
53
|
+
|
54
|
+
</div>
|
55
|
+
|
56
|
+
|
57
|
+
|
58
|
+
<div id="class-metadata">
|
59
|
+
|
60
|
+
|
61
|
+
|
62
|
+
|
63
|
+
|
64
|
+
</div>
|
65
|
+
</nav>
|
66
|
+
|
67
|
+
<main role="main" aria-labelledby="module-YuiCompressor">
|
68
|
+
<h1 id="module-YuiCompressor" class="module">
|
69
|
+
module YuiCompressor
|
70
|
+
</h1>
|
71
|
+
|
72
|
+
<section class="description">
|
73
|
+
|
74
|
+
<p>This is a Ruby port of the YUI CSS compressor See LICENSE for license information</p>
|
75
|
+
|
76
|
+
</section>
|
77
|
+
|
78
|
+
<section id="5Buntitled-5D" class="documentation-section">
|
79
|
+
|
80
|
+
|
81
|
+
|
82
|
+
|
83
|
+
|
84
|
+
</section>
|
85
|
+
</main>
|
86
|
+
|
87
|
+
|
88
|
+
<footer id="validator-badges" role="contentinfo">
|
89
|
+
<p><a href="https://validator.w3.org/check/referer">Validate</a>
|
90
|
+
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.7.0.
|
91
|
+
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
|
92
|
+
</footer>
|
93
|
+
|
data/html/created.rid
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
Tue, 02 Jul 2024 10:27:18 -0500
|
2
2
|
README.rdoc Sun, 28 Apr 2024 13:21:34 -0500
|
3
3
|
lib/conductor.rb Fri, 28 Jun 2024 12:29:13 -0500
|
4
4
|
lib/conductor/array.rb Sat, 27 Apr 2024 11:54:28 -0500
|
@@ -7,10 +7,10 @@ lib/conductor/command.rb Sat, 27 Apr 2024 11:54:28 -0500
|
|
7
7
|
lib/conductor/condition.rb Mon, 29 Apr 2024 09:19:15 -0500
|
8
8
|
lib/conductor/config.rb Sat, 27 Apr 2024 11:54:28 -0500
|
9
9
|
lib/conductor/env.rb Mon, 29 Apr 2024 09:28:21 -0500
|
10
|
-
lib/conductor/filter.rb
|
10
|
+
lib/conductor/filter.rb Tue, 02 Jul 2024 10:26:09 -0500
|
11
11
|
lib/conductor/hash.rb Sat, 27 Apr 2024 11:54:28 -0500
|
12
12
|
lib/conductor/script.rb Sun, 28 Apr 2024 16:21:49 -0500
|
13
13
|
lib/conductor/string.rb Sat, 25 May 2024 10:58:38 -0500
|
14
|
-
lib/conductor/version.rb
|
14
|
+
lib/conductor/version.rb Fri, 28 Jun 2024 12:41:13 -0500
|
15
15
|
lib/conductor/yui-compressor.rb Fri, 28 Jun 2024 12:35:00 -0500
|
16
16
|
bin/conductor Fri, 24 May 2024 12:39:06 -0500
|
data/html/js/search_index.js
CHANGED
@@ -1 +1 @@
|
|
1
|
-
var search_data = {"index":{"searchIndex":["array","conductor","command","condition","config","env","script","falseclass","filter","hash","object","string","trueclass","yuicompressor","yui","add_comment()","add_mmd()","add_yaml()","append()","args=()","args=()","bool?()","bool?()","bool?()","bool_to_symbol()","clean_condition()","compress()","conduct()","create_config()","date?()","delete_meta()","delete_mmd()","delete_yaml()","env()","execute_track()","first_h1()","first_h2()","get_title()","has_comment?()","insert_css()","insert_file()","insert_script()","insert_title()","insert_toc()","load_test_env()","meta?()","meta_insert_point()","meta_type()","new()","new()","new()","new()","new()","new()","normalize_filter()","normalize_include_type()","normalize_position()","number?()","operator_to_symbol()","parse_condition()","path=()","path=()","process()","process_comments_and_strings()","replace()","replace_all()","restore_preserved_comments_and_strings()","run()","run()","sample_config()","set_meta()","split_booleans()","split_condition()","stdin()","strip_meta()","strip_time()","symbolize_keys()","symbolize_keys()","symbolize_keys!()","symbolize_keys!()","test_condition()","test_meta()","test_operator()","test_pandoc()","test_string()","test_tree()","test_truthy()","test_type()","test_yaml()","time?()","title_from_slug()","titleize()","to_bool()","to_bool!()","to_date()","to_day()","to_pattern()","to_rx()","to_s()","true?()","wrap_style()","yaml?()","readme"],"longSearchIndex":["array","conductor","conductor::command","conductor::condition","conductor::config","conductor::env","conductor::script","falseclass","filter","hash","object","string","trueclass","yuicompressor","yuicompressor::yui","string#add_comment()","string#add_mmd()","string#add_yaml()","string#append()","conductor::command#args=()","conductor::script#args=()","falseclass#bool?()","string#bool?()","trueclass#bool?()","string#bool_to_symbol()","object#clean_condition()","yuicompressor::yui#compress()","conductor::conduct()","conductor#create_config()","string#date?()","string#delete_meta()","string#delete_mmd()","string#delete_yaml()","conductor::env::env()","conductor::execute_track()","string#first_h1()","string#first_h2()","string#get_title()","string#has_comment?()","string#insert_css()","string#insert_file()","string#insert_script()","string#insert_title()","string#insert_toc()","conductor::env::load_test_env()","string#meta?()","string#meta_insert_point()","string#meta_type()","conductor::command::new()","conductor::condition::new()","conductor::config::new()","conductor::script::new()","filter::new()","yuicompressor::yui::new()","string#normalize_filter()","string#normalize_include_type()","string#normalize_position()","string#number?()","conductor::condition#operator_to_symbol()","conductor::condition#parse_condition()","conductor::command#path=()","conductor::script#path=()","filter#process()","yuicompressor::yui#process_comments_and_strings()","string#replace()","string#replace_all()","yuicompressor::yui#restore_preserved_comments_and_strings()","conductor::command#run()","conductor::script#run()","conductor#sample_config()","string#set_meta()","conductor::condition#split_booleans()","conductor::condition#split_condition()","conductor::stdin()","string#strip_meta()","string#strip_time()","array#symbolize_keys()","hash#symbolize_keys()","array#symbolize_keys!()","hash#symbolize_keys!()","conductor::condition#test_condition()","conductor::condition#test_meta()","conductor::condition#test_operator()","conductor::condition#test_pandoc()","conductor::condition#test_string()","conductor::condition#test_tree()","conductor::condition#test_truthy()","conductor::condition#test_type()","conductor::condition#test_yaml()","string#time?()","string#title_from_slug()","string#titleize()","string#to_bool()","string#to_bool!()","string#to_date()","string#to_day()","string#to_pattern()","string#to_rx()","conductor::env::to_s()","conductor::condition#true?()","string#wrap_style()","string#yaml?()",""],"info":[["Array","","Array.html","",""],["Conductor","","Conductor.html","","<p>Main Conductor class\n"],["Conductor::Command","","Conductor/Command.html","","<p>Command runner\n"],["Conductor::Condition","","Conductor/Condition.html","",""],["Conductor::Config","","Conductor/Config.html","","<p>Configuration methods\n"],["Conductor::Env","","Conductor/Env.html","","<p>Environment variables\n"],["Conductor::Script","","Conductor/Script.html","","<p>Script runner\n"],["FalseClass","","FalseClass.html","","<p>False class\n"],["Filter","","Filter.html","","<p>String filtering\n"],["Hash","","Hash.html","",""],["Object","","Object.html","",""],["String","","String.html","","<p>String helpers\n<p>String helpers\n"],["TrueClass","","TrueClass.html","","<p>True class\n"],["YuiCompressor","","YuiCompressor.html","","<p>This is a Ruby port of the YUI CSS compressor See LICENSE for license information\n"],["YuiCompressor::Yui","","YuiCompressor/Yui.html","","<p>Compress CSS rules using a variety of techniques\n"],["add_comment","String","String.html#method-i-add_comment","(key, value)",""],["add_mmd","String","String.html#method-i-add_mmd","(key, value)",""],["add_yaml","String","String.html#method-i-add_yaml","(key, value)",""],["append","String","String.html#method-i-append","(string)",""],["args=","Conductor::Command","Conductor/Command.html#method-i-args-3D","(array)",""],["args=","Conductor::Script","Conductor/Script.html#method-i-args-3D","(array)","<p>Set the args array\n<p>@param array The array\n"],["bool?","FalseClass","FalseClass.html#method-i-bool-3F","()",""],["bool?","String","String.html#method-i-bool-3F","()","<p>Test if a string is a boolean\n<p>@return [Boolean] test result\n"],["bool?","TrueClass","TrueClass.html#method-i-bool-3F","()",""],["bool_to_symbol","String","String.html#method-i-bool_to_symbol","()","<p>Convert a string boolean to symbol\n<p>@return [Symbol] symbolized version\n"],["clean_condition","Object","Object.html#method-i-clean_condition","(condition)","<p>Clean up conditions for output\n<p>@param condition The condition\n"],["compress","YuiCompressor::Yui","YuiCompressor/Yui.html#method-i-compress","(css, line_length = 0)",""],["conduct","Conductor","Conductor.html#method-c-conduct","(tracks, res = nil, condition = nil)","<p>Main function to parse conditions and\n\n<pre>execute actions. Executes recursively for\nsub-tracks.</pre>\n<p>@param …\n"],["create_config","Conductor","Conductor.html#method-i-create_config","(config_file)",""],["date?","String","String.html#method-i-date-3F","()","<p>Test a string to see if it’s a UTC date\n<p>@return [Boolean] test result\n"],["delete_meta","String","String.html#method-i-delete_meta","(key)",""],["delete_mmd","String","String.html#method-i-delete_mmd","(key)",""],["delete_yaml","String","String.html#method-i-delete_yaml","(key)",""],["env","Conductor::Env","Conductor/Env.html#method-c-env","()","<p>Define @env using Marked environment variables\n"],["execute_track","Conductor","Conductor.html#method-c-execute_track","(track)","<p>Execute commands/scripts in the track\n<p>@param track The track\n<p>@return Resulting STDOUT output …\n"],["first_h1","String","String.html#method-i-first_h1","()",""],["first_h2","String","String.html#method-i-first_h2","()",""],["get_title","String","String.html#method-i-get_title","()",""],["has_comment?","String","String.html#method-i-has_comment-3F","(key)",""],["insert_css","String","String.html#method-i-insert_css","(path)",""],["insert_file","String","String.html#method-i-insert_file","(path, type = :file, position = :end)",""],["insert_script","String","String.html#method-i-insert_script","(path)",""],["insert_title","String","String.html#method-i-insert_title","()",""],["insert_toc","String","String.html#method-i-insert_toc","(max = nil, after = :h1)",""],["load_test_env","Conductor::Env","Conductor/Env.html#method-c-load_test_env","()","<p>Loads a test environment.\n"],["meta?","String","String.html#method-i-meta-3F","()","<p>Test if a string starts with MMD metadata\n<p>@return [Boolean] test result\n"],["meta_insert_point","String","String.html#method-i-meta_insert_point","()",""],["meta_type","String","String.html#method-i-meta_type","()",""],["new","Conductor::Command","Conductor/Command.html#method-c-new","(command)",""],["new","Conductor::Condition","Conductor/Condition.html#method-c-new","(condition)","<p>Initializes the given condition.\n<p>@param condition The condition\n"],["new","Conductor::Config","Conductor/Config.html#method-c-new","()",""],["new","Conductor::Script","Conductor/Script.html#method-c-new","(script)","<p>Initializes the given script.\n<p>@param script The script/path\n"],["new","Filter","Filter.html#method-c-new","(filter)",""],["new","YuiCompressor::Yui","YuiCompressor/Yui.html#method-c-new","()",""],["normalize_filter","String","String.html#method-i-normalize_filter","()",""],["normalize_include_type","String","String.html#method-i-normalize_include_type","()",""],["normalize_position","String","String.html#method-i-normalize_position","()",""],["number?","String","String.html#method-i-number-3F","()","<p>Test if a string is a number\n<p>@return [Boolean] test result\n"],["operator_to_symbol","Conductor::Condition","Conductor/Condition.html#method-i-operator_to_symbol","(operator)",""],["parse_condition","Conductor::Condition","Conductor/Condition.html#method-i-parse_condition","()",""],["path=","Conductor::Command","Conductor/Command.html#method-i-path-3D","(path)",""],["path=","Conductor::Script","Conductor/Script.html#method-i-path-3D","(path)","<p>Set script path, automatically expands/tests\n<p>@param path The path\n"],["process","Filter","Filter.html#method-i-process","()",""],["process_comments_and_strings","YuiCompressor::Yui","YuiCompressor/Yui.html#method-i-process_comments_and_strings","(css_text)",""],["replace","String","String.html#method-i-replace","(regex, pattern)",""],["replace_all","String","String.html#method-i-replace_all","(regex, pattern)",""],["restore_preserved_comments_and_strings","YuiCompressor::Yui","YuiCompressor/Yui.html#method-i-restore_preserved_comments_and_strings","(clean_css)",""],["run","Conductor::Command","Conductor/Command.html#method-i-run","()",""],["run","Conductor::Script","Conductor/Script.html#method-i-run","()","<p>Execute the script\n<p>@return [String] script results (STDOUT)\n"],["sample_config","Conductor","Conductor.html#method-i-sample_config","()",""],["set_meta","String","String.html#method-i-set_meta","(key, value, style: :comment)",""],["split_booleans","Conductor::Condition","Conductor/Condition.html#method-i-split_booleans","(condition)","<p>Splits booleans and tests components.\n<p>@param condition The condition to test\n<p>@return [Boolean] …\n"],["split_condition","Conductor::Condition","Conductor/Condition.html#method-i-split_condition","(condition)","<p>Splits a natural language condition.\n<p>@param condition The condition @return [Array] Value, value …\n"],["stdin","Conductor","Conductor.html#method-c-stdin","()",""],["strip_meta","String","String.html#method-i-strip_meta","()",""],["strip_time","String","String.html#method-i-strip_time","()","<p>Remove time from string\n<p>@return [String] string with time removed\n"],["symbolize_keys","Array","Array.html#method-i-symbolize_keys","()",""],["symbolize_keys","Hash","Hash.html#method-i-symbolize_keys","()",""],["symbolize_keys!","Array","Array.html#method-i-symbolize_keys-21","()",""],["symbolize_keys!","Hash","Hash.html#method-i-symbolize_keys-21","()",""],["test_condition","Conductor::Condition","Conductor/Condition.html#method-i-test_condition","(condition)",""],["test_meta","Conductor::Condition","Conductor/Condition.html#method-i-test_meta","(content, value, key, operator)","<p>Test for MultiMarkdown metadata,\n\n<pre class=\"ruby\"><span class=\"ruby-identifier\">optionally</span> <span class=\"ruby-identifier\">key</span> <span class=\"ruby-keyword\">and</span> <span class=\"ruby-identifier\">value</span>\n</pre>\n<p>@param content [String] The text content …\n"],["test_operator","Conductor::Condition","Conductor/Condition.html#method-i-test_operator","(value1, value2, operator)","<p>Test operators\n<p>@param value1 Value @param value2 Value to test @param operator …\n"],["test_pandoc","Conductor::Condition","Conductor/Condition.html#method-i-test_pandoc","(content, operator)",""],["test_string","Conductor::Condition","Conductor/Condition.html#method-i-test_string","(val1, val2, operator)","<p>Compare a string based on operator\n<p>@param val1 The string to test against @param val2 …\n"],["test_tree","Conductor::Condition","Conductor/Condition.html#method-i-test_tree","(origin, value, operator)","<p>Test for the existince of a\n\n<pre>file/directory in the parent tree</pre>\n<p>@param origin Starting directory …\n"],["test_truthy","Conductor::Condition","Conductor/Condition.html#method-i-test_truthy","(value1, value2, operator)","<p>Test “truthiness”\n<p>@param value1 Value to test against @param value2 Value to …\n"],["test_type","Conductor::Condition","Conductor/Condition.html#method-i-test_type","(val1, val2, operator)","<p>Test for type of value\n<p>@param val1 value @param val2 value to test against @param …\n"],["test_yaml","Conductor::Condition","Conductor/Condition.html#method-i-test_yaml","(content, value, key, operator)","<p>Test for presence of yaml, optionall for\n\n<pre>a key, optionally for a key's value</pre>\n<p>@param content Text …\n"],["time?","String","String.html#method-i-time-3F","()","<p>Test a string to see if it includes a time\n<p>@return [Boolean] test result\n"],["title_from_slug","String","String.html#method-i-title_from_slug","()",""],["titleize","String","String.html#method-i-titleize","()","<p>Titlecase a string\n<p>@return Titleized string\n"],["to_bool","String","String.html#method-i-to_bool","()","<p>Returns a bool representation of the string.\n<p>@return [Boolean] Bool representation of the object. …\n"],["to_bool!","String","String.html#method-i-to_bool-21","()","<p>Destructive version of #to_bool\n<p>@see #to_bool\n"],["to_date","String","String.html#method-i-to_date","()","<p>Convert a natural language string to a Date\n\n<pre class=\"ruby\"><span class=\"ruby-identifier\">object</span>\n</pre>\n<p>@return [Date] Resulting Date object\n"],["to_day","String","String.html#method-i-to_day","(time = :end)",""],["to_pattern","String","String.html#method-i-to_pattern","()",""],["to_rx","String","String.html#method-i-to_rx","()",""],["to_s","Conductor::Env","Conductor/Env.html#method-c-to_s","()","<p>env to string\n<p>@return [String] shell-compatible string representation of @env\n"],["true?","Conductor::Condition","Conductor/Condition.html#method-i-true-3F","()","<p>Tests condition\n<p>@return [Boolean] test result\n"],["wrap_style","String","String.html#method-i-wrap_style","()",""],["yaml?","String","String.html#method-i-yaml-3F","()","<p>Test if string starts with YAML\n<p>@return [Boolean] test result\n"],["README","","README_rdoc.html","","<p>Marked Conductor\n<p>A command line tool that functions as a custom processor handler for Marked 2.\n"]]}}
|
1
|
+
var search_data = {"index":{"searchIndex":["array","conductor","command","condition","config","env","script","falseclass","filter","hash","object","string","trueclass","yuicompressor","yui","add_comment()","add_mmd()","add_yaml()","append()","args=()","args=()","autolink()","bool?()","bool?()","bool?()","bool_to_symbol()","clean_condition()","compress()","conduct()","create_config()","date?()","delete_meta()","delete_mmd()","delete_yaml()","env()","execute_track()","first_h1()","first_h2()","get_title()","has_comment?()","insert_css()","insert_file()","insert_script()","insert_title()","insert_toc()","load_test_env()","meta?()","meta_insert_point()","meta_type()","new()","new()","new()","new()","new()","new()","normalize_filter()","normalize_include_type()","normalize_position()","number?()","operator_to_symbol()","parse_condition()","path=()","path=()","process()","process_comments_and_strings()","replace()","replace_all()","restore_preserved_comments_and_strings()","run()","run()","sample_config()","set_meta()","split_booleans()","split_condition()","stdin()","strip_meta()","strip_time()","symbolize_keys()","symbolize_keys()","symbolize_keys!()","symbolize_keys!()","test_condition()","test_meta()","test_operator()","test_pandoc()","test_string()","test_tree()","test_truthy()","test_type()","test_yaml()","time?()","title_from_slug()","titleize()","to_bool()","to_bool!()","to_date()","to_day()","to_pattern()","to_rx()","to_s()","true?()","wrap_style()","yaml?()","readme"],"longSearchIndex":["array","conductor","conductor::command","conductor::condition","conductor::config","conductor::env","conductor::script","falseclass","filter","hash","object","string","trueclass","yuicompressor","yuicompressor::yui","string#add_comment()","string#add_mmd()","string#add_yaml()","string#append()","conductor::command#args=()","conductor::script#args=()","string#autolink()","falseclass#bool?()","string#bool?()","trueclass#bool?()","string#bool_to_symbol()","object#clean_condition()","yuicompressor::yui#compress()","conductor::conduct()","conductor#create_config()","string#date?()","string#delete_meta()","string#delete_mmd()","string#delete_yaml()","conductor::env::env()","conductor::execute_track()","string#first_h1()","string#first_h2()","string#get_title()","string#has_comment?()","string#insert_css()","string#insert_file()","string#insert_script()","string#insert_title()","string#insert_toc()","conductor::env::load_test_env()","string#meta?()","string#meta_insert_point()","string#meta_type()","conductor::command::new()","conductor::condition::new()","conductor::config::new()","conductor::script::new()","filter::new()","yuicompressor::yui::new()","string#normalize_filter()","string#normalize_include_type()","string#normalize_position()","string#number?()","conductor::condition#operator_to_symbol()","conductor::condition#parse_condition()","conductor::command#path=()","conductor::script#path=()","filter#process()","yuicompressor::yui#process_comments_and_strings()","string#replace()","string#replace_all()","yuicompressor::yui#restore_preserved_comments_and_strings()","conductor::command#run()","conductor::script#run()","conductor#sample_config()","string#set_meta()","conductor::condition#split_booleans()","conductor::condition#split_condition()","conductor::stdin()","string#strip_meta()","string#strip_time()","array#symbolize_keys()","hash#symbolize_keys()","array#symbolize_keys!()","hash#symbolize_keys!()","conductor::condition#test_condition()","conductor::condition#test_meta()","conductor::condition#test_operator()","conductor::condition#test_pandoc()","conductor::condition#test_string()","conductor::condition#test_tree()","conductor::condition#test_truthy()","conductor::condition#test_type()","conductor::condition#test_yaml()","string#time?()","string#title_from_slug()","string#titleize()","string#to_bool()","string#to_bool!()","string#to_date()","string#to_day()","string#to_pattern()","string#to_rx()","conductor::env::to_s()","conductor::condition#true?()","string#wrap_style()","string#yaml?()",""],"info":[["Array","","Array.html","",""],["Conductor","","Conductor.html","","<p>Main Conductor class\n"],["Conductor::Command","","Conductor/Command.html","","<p>Command runner\n"],["Conductor::Condition","","Conductor/Condition.html","",""],["Conductor::Config","","Conductor/Config.html","","<p>Configuration methods\n"],["Conductor::Env","","Conductor/Env.html","","<p>Environment variables\n"],["Conductor::Script","","Conductor/Script.html","","<p>Script runner\n"],["FalseClass","","FalseClass.html","","<p>False class\n"],["Filter","","Filter.html","","<p>String filtering\n"],["Hash","","Hash.html","",""],["Object","","Object.html","",""],["String","","String.html","","<p>String helpers\n<p>String helpers\n"],["TrueClass","","TrueClass.html","","<p>True class\n"],["YuiCompressor","","YuiCompressor.html","","<p>This is a Ruby port of the YUI CSS compressor See LICENSE for license information\n"],["YuiCompressor::Yui","","YuiCompressor/Yui.html","","<p>Compress CSS rules using a variety of techniques\n"],["add_comment","String","String.html#method-i-add_comment","(key, value)",""],["add_mmd","String","String.html#method-i-add_mmd","(key, value)",""],["add_yaml","String","String.html#method-i-add_yaml","(key, value)",""],["append","String","String.html#method-i-append","(string)",""],["args=","Conductor::Command","Conductor/Command.html#method-i-args-3D","(array)",""],["args=","Conductor::Script","Conductor/Script.html#method-i-args-3D","(array)","<p>Set the args array\n<p>@param array The array\n"],["autolink","String","String.html#method-i-autolink","()",""],["bool?","FalseClass","FalseClass.html#method-i-bool-3F","()",""],["bool?","String","String.html#method-i-bool-3F","()","<p>Test if a string is a boolean\n<p>@return [Boolean] test result\n"],["bool?","TrueClass","TrueClass.html#method-i-bool-3F","()",""],["bool_to_symbol","String","String.html#method-i-bool_to_symbol","()","<p>Convert a string boolean to symbol\n<p>@return [Symbol] symbolized version\n"],["clean_condition","Object","Object.html#method-i-clean_condition","(condition)","<p>Clean up conditions for output\n<p>@param condition The condition\n"],["compress","YuiCompressor::Yui","YuiCompressor/Yui.html#method-i-compress","(css, line_length = 0)",""],["conduct","Conductor","Conductor.html#method-c-conduct","(tracks, res = nil, condition = nil)","<p>Main function to parse conditions and\n\n<pre>execute actions. Executes recursively for\nsub-tracks.</pre>\n<p>@param …\n"],["create_config","Conductor","Conductor.html#method-i-create_config","(config_file)",""],["date?","String","String.html#method-i-date-3F","()","<p>Test a string to see if it’s a UTC date\n<p>@return [Boolean] test result\n"],["delete_meta","String","String.html#method-i-delete_meta","(key)",""],["delete_mmd","String","String.html#method-i-delete_mmd","(key)",""],["delete_yaml","String","String.html#method-i-delete_yaml","(key)",""],["env","Conductor::Env","Conductor/Env.html#method-c-env","()","<p>Define @env using Marked environment variables\n"],["execute_track","Conductor","Conductor.html#method-c-execute_track","(track)","<p>Execute commands/scripts in the track\n<p>@param track The track\n<p>@return Resulting STDOUT output …\n"],["first_h1","String","String.html#method-i-first_h1","()",""],["first_h2","String","String.html#method-i-first_h2","()",""],["get_title","String","String.html#method-i-get_title","()",""],["has_comment?","String","String.html#method-i-has_comment-3F","(key)",""],["insert_css","String","String.html#method-i-insert_css","(path)",""],["insert_file","String","String.html#method-i-insert_file","(path, type = :file, position = :end)",""],["insert_script","String","String.html#method-i-insert_script","(path)",""],["insert_title","String","String.html#method-i-insert_title","()",""],["insert_toc","String","String.html#method-i-insert_toc","(max = nil, after = :h1)",""],["load_test_env","Conductor::Env","Conductor/Env.html#method-c-load_test_env","()","<p>Loads a test environment.\n"],["meta?","String","String.html#method-i-meta-3F","()","<p>Test if a string starts with MMD metadata\n<p>@return [Boolean] test result\n"],["meta_insert_point","String","String.html#method-i-meta_insert_point","()",""],["meta_type","String","String.html#method-i-meta_type","()",""],["new","Conductor::Command","Conductor/Command.html#method-c-new","(command)",""],["new","Conductor::Condition","Conductor/Condition.html#method-c-new","(condition)","<p>Initializes the given condition.\n<p>@param condition The condition\n"],["new","Conductor::Config","Conductor/Config.html#method-c-new","()",""],["new","Conductor::Script","Conductor/Script.html#method-c-new","(script)","<p>Initializes the given script.\n<p>@param script The script/path\n"],["new","Filter","Filter.html#method-c-new","(filter)",""],["new","YuiCompressor::Yui","YuiCompressor/Yui.html#method-c-new","()",""],["normalize_filter","String","String.html#method-i-normalize_filter","()",""],["normalize_include_type","String","String.html#method-i-normalize_include_type","()",""],["normalize_position","String","String.html#method-i-normalize_position","()",""],["number?","String","String.html#method-i-number-3F","()","<p>Test if a string is a number\n<p>@return [Boolean] test result\n"],["operator_to_symbol","Conductor::Condition","Conductor/Condition.html#method-i-operator_to_symbol","(operator)",""],["parse_condition","Conductor::Condition","Conductor/Condition.html#method-i-parse_condition","()",""],["path=","Conductor::Command","Conductor/Command.html#method-i-path-3D","(path)",""],["path=","Conductor::Script","Conductor/Script.html#method-i-path-3D","(path)","<p>Set script path, automatically expands/tests\n<p>@param path The path\n"],["process","Filter","Filter.html#method-i-process","()",""],["process_comments_and_strings","YuiCompressor::Yui","YuiCompressor/Yui.html#method-i-process_comments_and_strings","(css_text)",""],["replace","String","String.html#method-i-replace","(regex, pattern)",""],["replace_all","String","String.html#method-i-replace_all","(regex, pattern)",""],["restore_preserved_comments_and_strings","YuiCompressor::Yui","YuiCompressor/Yui.html#method-i-restore_preserved_comments_and_strings","(clean_css)",""],["run","Conductor::Command","Conductor/Command.html#method-i-run","()",""],["run","Conductor::Script","Conductor/Script.html#method-i-run","()","<p>Execute the script\n<p>@return [String] script results (STDOUT)\n"],["sample_config","Conductor","Conductor.html#method-i-sample_config","()",""],["set_meta","String","String.html#method-i-set_meta","(key, value, style: :comment)",""],["split_booleans","Conductor::Condition","Conductor/Condition.html#method-i-split_booleans","(condition)","<p>Splits booleans and tests components.\n<p>@param condition The condition to test\n<p>@return [Boolean] …\n"],["split_condition","Conductor::Condition","Conductor/Condition.html#method-i-split_condition","(condition)","<p>Splits a natural language condition.\n<p>@param condition The condition @return [Array] Value, value …\n"],["stdin","Conductor","Conductor.html#method-c-stdin","()",""],["strip_meta","String","String.html#method-i-strip_meta","()",""],["strip_time","String","String.html#method-i-strip_time","()","<p>Remove time from string\n<p>@return [String] string with time removed\n"],["symbolize_keys","Array","Array.html#method-i-symbolize_keys","()",""],["symbolize_keys","Hash","Hash.html#method-i-symbolize_keys","()",""],["symbolize_keys!","Array","Array.html#method-i-symbolize_keys-21","()",""],["symbolize_keys!","Hash","Hash.html#method-i-symbolize_keys-21","()",""],["test_condition","Conductor::Condition","Conductor/Condition.html#method-i-test_condition","(condition)",""],["test_meta","Conductor::Condition","Conductor/Condition.html#method-i-test_meta","(content, value, key, operator)","<p>Test for MultiMarkdown metadata,\n\n<pre class=\"ruby\"><span class=\"ruby-identifier\">optionally</span> <span class=\"ruby-identifier\">key</span> <span class=\"ruby-keyword\">and</span> <span class=\"ruby-identifier\">value</span>\n</pre>\n<p>@param content [String] The text content …\n"],["test_operator","Conductor::Condition","Conductor/Condition.html#method-i-test_operator","(value1, value2, operator)","<p>Test operators\n<p>@param value1 Value @param value2 Value to test @param operator …\n"],["test_pandoc","Conductor::Condition","Conductor/Condition.html#method-i-test_pandoc","(content, operator)",""],["test_string","Conductor::Condition","Conductor/Condition.html#method-i-test_string","(val1, val2, operator)","<p>Compare a string based on operator\n<p>@param val1 The string to test against @param val2 …\n"],["test_tree","Conductor::Condition","Conductor/Condition.html#method-i-test_tree","(origin, value, operator)","<p>Test for the existince of a\n\n<pre>file/directory in the parent tree</pre>\n<p>@param origin Starting directory …\n"],["test_truthy","Conductor::Condition","Conductor/Condition.html#method-i-test_truthy","(value1, value2, operator)","<p>Test “truthiness”\n<p>@param value1 Value to test against @param value2 Value to …\n"],["test_type","Conductor::Condition","Conductor/Condition.html#method-i-test_type","(val1, val2, operator)","<p>Test for type of value\n<p>@param val1 value @param val2 value to test against @param …\n"],["test_yaml","Conductor::Condition","Conductor/Condition.html#method-i-test_yaml","(content, value, key, operator)","<p>Test for presence of yaml, optionall for\n\n<pre>a key, optionally for a key's value</pre>\n<p>@param content Text …\n"],["time?","String","String.html#method-i-time-3F","()","<p>Test a string to see if it includes a time\n<p>@return [Boolean] test result\n"],["title_from_slug","String","String.html#method-i-title_from_slug","()",""],["titleize","String","String.html#method-i-titleize","()","<p>Titlecase a string\n<p>@return Titleized string\n"],["to_bool","String","String.html#method-i-to_bool","()","<p>Returns a bool representation of the string.\n<p>@return [Boolean] Bool representation of the object. …\n"],["to_bool!","String","String.html#method-i-to_bool-21","()","<p>Destructive version of #to_bool\n<p>@see #to_bool\n"],["to_date","String","String.html#method-i-to_date","()","<p>Convert a natural language string to a Date\n\n<pre class=\"ruby\"><span class=\"ruby-identifier\">object</span>\n</pre>\n<p>@return [Date] Resulting Date object\n"],["to_day","String","String.html#method-i-to_day","(time = :end)",""],["to_pattern","String","String.html#method-i-to_pattern","()",""],["to_rx","String","String.html#method-i-to_rx","()",""],["to_s","Conductor::Env","Conductor/Env.html#method-c-to_s","()","<p>env to string\n<p>@return [String] shell-compatible string representation of @env\n"],["true?","Conductor::Condition","Conductor/Condition.html#method-i-true-3F","()","<p>Tests condition\n<p>@return [Boolean] test result\n"],["wrap_style","String","String.html#method-i-wrap_style","()",""],["yaml?","String","String.html#method-i-yaml-3F","()","<p>Test if string starts with YAML\n<p>@return [Boolean] test result\n"],["README","","README_rdoc.html","","<p>Marked Conductor\n<p>A command line tool that functions as a custom processor handler for Marked 2.\n"]]}}
|
data/html/js/search_index.js.gz
CHANGED
Binary file
|
data/html/table_of_contents.html
CHANGED
@@ -179,7 +179,7 @@
|
|
179
179
|
<span class="container">Conductor::Script</span>
|
180
180
|
|
181
181
|
<li class="method">
|
182
|
-
<a href="String.html#method-i-
|
182
|
+
<a href="String.html#method-i-autolink">#autolink</a>
|
183
183
|
—
|
184
184
|
<span class="container">String</span>
|
185
185
|
|
@@ -188,6 +188,11 @@
|
|
188
188
|
—
|
189
189
|
<span class="container">TrueClass</span>
|
190
190
|
|
191
|
+
<li class="method">
|
192
|
+
<a href="String.html#method-i-bool-3F">#bool?</a>
|
193
|
+
—
|
194
|
+
<span class="container">String</span>
|
195
|
+
|
191
196
|
<li class="method">
|
192
197
|
<a href="FalseClass.html#method-i-bool-3F">#bool?</a>
|
193
198
|
—
|
@@ -324,14 +329,14 @@
|
|
324
329
|
<span class="container">Conductor::Condition</span>
|
325
330
|
|
326
331
|
<li class="method">
|
327
|
-
<a href="Conductor/
|
332
|
+
<a href="Conductor/Script.html#method-i-path-3D">#path=</a>
|
328
333
|
—
|
329
|
-
<span class="container">Conductor::
|
334
|
+
<span class="container">Conductor::Script</span>
|
330
335
|
|
331
336
|
<li class="method">
|
332
|
-
<a href="Conductor/
|
337
|
+
<a href="Conductor/Command.html#method-i-path-3D">#path=</a>
|
333
338
|
—
|
334
|
-
<span class="container">Conductor::
|
339
|
+
<span class="container">Conductor::Command</span>
|
335
340
|
|
336
341
|
<li class="method">
|
337
342
|
<a href="Filter.html#method-i-process">#process</a>
|
@@ -359,14 +364,14 @@
|
|
359
364
|
<span class="container">YuiCompressor::Yui</span>
|
360
365
|
|
361
366
|
<li class="method">
|
362
|
-
<a href="Conductor/
|
367
|
+
<a href="Conductor/Script.html#method-i-run">#run</a>
|
363
368
|
—
|
364
|
-
<span class="container">Conductor::
|
369
|
+
<span class="container">Conductor::Script</span>
|
365
370
|
|
366
371
|
<li class="method">
|
367
|
-
<a href="Conductor/
|
372
|
+
<a href="Conductor/Command.html#method-i-run">#run</a>
|
368
373
|
—
|
369
|
-
<span class="container">Conductor::
|
374
|
+
<span class="container">Conductor::Command</span>
|
370
375
|
|
371
376
|
<li class="method">
|
372
377
|
<a href="Conductor.html#method-i-sample_config">#sample_config</a>
|
data/lib/conductor/filter.rb
CHANGED
@@ -301,6 +301,11 @@ class ::String
|
|
301
301
|
sub(regex.to_rx, pattern.to_pattern)
|
302
302
|
end
|
303
303
|
|
304
|
+
def autolink
|
305
|
+
gsub(%r{(?mi)(?<!\(|]: )\b((?:[\w-]+?://)[-a-zA-Z0-9@:%._+~#=]{2,256}\b(?:[-a-zA-Z0-9@:%_+.~#?&/=]*))},
|
306
|
+
'<\1>')
|
307
|
+
end
|
308
|
+
|
304
309
|
def to_rx
|
305
310
|
if self =~ %r{^/(.*?)/([im]+)?$}
|
306
311
|
m = Regexp.last_match
|
@@ -394,6 +399,8 @@ class Filter < String
|
|
394
399
|
end
|
395
400
|
|
396
401
|
content.replace(@params[0], @params[1])
|
402
|
+
when /(auto|self)link/
|
403
|
+
content.autolink
|
397
404
|
end
|
398
405
|
end
|
399
406
|
end
|
data/lib/conductor/version.rb
CHANGED
data/src/_README.md
CHANGED
@@ -161,13 +161,19 @@ The action can be `script`, `command`, or `filter`.
|
|
161
161
|
| `prepend/appendFile(path)` | insert a file as Markdown at beginning or end of content |
|
162
162
|
| `prepend/appendRaw(path)` | insert a file as raw HTML at beginning or end of content |
|
163
163
|
| `prepend/appendCode(path)` | insert a file as a code block at beginning or end of content |
|
164
|
+
| `insertCSS(path)` | insert custom CSS into document |
|
165
|
+
| `autoLink()` | Turn bare URLs into \<self-linked\> urls |
|
164
166
|
|
165
167
|
For `replace` and `replaceAll`: If *search* is surrounded with forward slashes followed by optional flags (*i* for case-insensitive, *m* to make dot match newlines), e.g. `/contribut(ing)?/i`, it will be interpreted as a regular expression. The *replace* value can include numeric capture groups, e.g. `Follow$2`.
|
166
168
|
|
167
169
|
For `insertScript`, if path is just a filename it will look for a match in `~/.config/conductor/javascript` or `~/.config/conductor/scripts` and turn that into an absolute path if the file is found.
|
168
170
|
|
171
|
+
For `insertCSS`, if path is just a filename (with or without .css extension), the file will be searched for in `~/.config/conductor/css` or `~/.config/conductor/files` and injected. CSS will be compressed using the YUI algorithm and inserted at the top of the document, but after any existing metadata.
|
172
|
+
|
169
173
|
For all of the prepend/append file filters, you can store files in `~/.config/conductor/files` and reference them with just a filename. Otherwise a full path will be assumed.
|
170
174
|
|
175
|
+
For `autoLink`, any URL that's not contained in parenthesis or following a `[]: url` pattern will be autolinked (surrounded by angle brackets). URLs must contain `//` to be recognized, but any protocol will work, e.g. `x-marked://refresh`.
|
176
|
+
|
171
177
|
> Example:
|
172
178
|
>
|
173
179
|
> filter: setStyle(github)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: marked-conductor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.17
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brett Terpstra
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-07-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: awesome_print
|
@@ -218,6 +218,8 @@ files:
|
|
218
218
|
- html/README_rdoc.html
|
219
219
|
- html/String.html
|
220
220
|
- html/TrueClass.html
|
221
|
+
- html/YuiCompressor.html
|
222
|
+
- html/YuiCompressor/Yui.html
|
221
223
|
- html/created.rid
|
222
224
|
- html/css/fonts.css
|
223
225
|
- html/css/rdoc.css
|