marked-conductor 1.0.16 → 1.0.17

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6f209ada6b97abd9b51e73fef5c26ef265ebaab7ef534b949fa25ce537735133
4
- data.tar.gz: 27ed686709dee1e38e6516170d47243177eded3070744e4110304ed4ce558399
3
+ metadata.gz: a78acbdf0f9693636a7456265dca72cf53cfa771aaa4fe0e2ad848c4b3526612
4
+ data.tar.gz: c913dc807337b977cc0caa4b843512991df890f48cff913a06fe660831aa0f53
5
5
  SHA512:
6
- metadata.gz: 8699203cb1a9a6338ebea63dc8fbf20ca212dd5e0278127d952fd1975c1cc60f89a38c3c7372a9b298b05be7548a72127291c91f8a6da3e186636ab1f7efdef1
7
- data.tar.gz: 2806880345adbe1859d93ffbf6b6dd9b803b30458e4133468f5bf0f8ea0033a9a10891946ec5f259b67171817909ced4015fe1032d064037ba318132ba16fb96
6
+ metadata.gz: b2c6979fcb015ac31d51895772ed83c9aad4644bb8b3f151f31e6e5015ca0fda4ca0b1a994adef1c388fe5c557747cd787da8a9325a2bb543295ac3bcaddbb18
7
+ data.tar.gz: c4759af9e3af7495e659464018eaf8eb858d6d10fdb93ed8b137c85c01b71fec23d3d062b91ba1deedcc4859b6ee832064e91a476929cb89e5898d62fbdba469
data/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ ### 1.0.17
2
+
3
+ 2024-07-02 10:27
4
+
5
+ #### NEW
6
+
7
+ - AutoLink() filter will self-link bare URLs
8
+
1
9
  ### 1.0.16
2
10
 
3
11
  2024-06-28 12:40
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 324</span>
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 329</span>
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)(?&lt;!\(|]: )\b((?:[\w-]+?://)[-a-zA-Z0-9@:%._+~#=]{2,256}\b(?:[-a-zA-Z0-9@:%_+.~#?&amp;/=]*))}</span>,
273
+ <span class="ruby-string">&#39;&lt;\1&gt;&#39;</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 315</span>
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">&#39;\\\\\1&#39;</span>).<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp">/(^[&quot;&#39;]|[&quot;&#39;]$)/</span>, <span class="ruby-string">&quot;&quot;</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 304</span>
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">&#39; &#39;</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 &quot;p :link {...}&quot; into &quot;p:link{...}&quot;</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">&#39;:&#39;</span>, <span class="ruby-string">&#39;___PSEUDOCLASSCOLON___&#39;</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+([!{};:&gt;+()\],])/</span>, <span class="ruby-string">&#39;\1&#39;</span>)
195
+ <span class="ruby-identifier">css</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-regexp">/([!{}:;&gt;+(\[,])\s+/</span>, <span class="ruby-string">&#39;\1&#39;</span>)
196
+ <span class="ruby-identifier">css</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-string">&#39;___PSEUDOCLASSCOLON___&#39;</span>, <span class="ruby-string">&#39;:&#39;</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">&#39;:first-\1 \2&#39;</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">&#39;*/&#39;</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 &quot;[^&quot;]*&quot;;)/i</span>, <span class="ruby-string">&#39;\2\1&#39;</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">&#39;\1&#39;</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">&#39;and (&#39;</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">&#39;}&#39;</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">&#39;\1\2&#39;</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">&#39;:0\1&#39;</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">&quot;#{::Regexp.last_match(1).downcase}:0 0#{::Regexp.last_match(2)}&quot;</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">&#39;\1.\2&#39;</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&#39;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">&#39;#&#39;</span> <span class="ruby-operator">&lt;&lt;</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">&#39;0&#39;</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 &quot;, &quot; or =. Indeed, the property</span>
236
+ <span class="ruby-comment"># filter: chroma(color=&quot;#FFFFFF&quot;);</span>
237
+ <span class="ruby-comment"># would become</span>
238
+ <span class="ruby-comment"># filter: chroma(color=&quot;#FFF&quot;);</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">/([^&quot;&#39;=\s])(\s?)\s*#([0-9a-f])\3([0-9a-f])\4([0-9a-f])\5/i</span>, <span class="ruby-string">&#39;\1\2#\3\4\5&#39;</span>)
241
+
242
+ <span class="ruby-comment"># border: none -&gt; 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">&quot;#{::Regexp.last_match(1).downcase}:0#{::Regexp.last_match(2)}&quot;</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">&#39;alpha(opacity=&#39;</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">&#39;&#39;</span>)
251
+
252
+ <span class="ruby-keyword">if</span> <span class="ruby-identifier">line_length</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
253
+ <span class="ruby-comment"># Some source control tools don&#39;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">&lt;</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">&#39;}&#39;</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">index</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">startIndex</span> <span class="ruby-operator">&gt;</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">&quot;\n&quot;</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">&#39;;&#39;</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">&#39;&#39;</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">&#39;&#39;</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">&#39;___YUICSSMIN_PRESERVE_CANDIDATE_COMMENT_&#39;</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">&#39;___&#39;</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&#39;t get accidentally minified</span>
324
+ <span class="ruby-identifier">css</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-regexp">/(&quot;([^\\&quot;]|\\.|\\)*&quot;)|(&#39;([^\\&#39;]|\\.|\\)*&#39;)/</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&#39;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">&#39;alpha(opacity=&#39;</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">&#39;___YUICSSMIN_PRESERVED_TOKEN_&#39;</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">&#39;___&#39;</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">&#39;___YUICSSMIN_PRESERVE_CANDIDATE_COMMENT_&#39;</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">&#39;___&#39;</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">&#39;!&#39;</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">&#39;___YUICSSMIN_PRESERVED_TOKEN_&#39;</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">&#39;___&#39;</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">&#39;\\&#39;</span>
366
+ <span class="ruby-ivar">@preservedTokens</span>.<span class="ruby-identifier">push</span>(<span class="ruby-string">&#39;\\&#39;</span>)
367
+ <span class="ruby-identifier">css</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-regexp">/#{placeholder}/</span>, <span class="ruby-string">&#39;___YUICSSMIN_PRESERVED_TOKEN_&#39;</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">&#39;___&#39;</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">&#39;&#39;</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">&#39;___YUICSSMIN_PRESERVED_TOKEN_&#39;</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">&#39;___&#39;</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 &gt;/**/ 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">&amp;&amp;</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">&gt;</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">&#39;&gt;&#39;</span>
381
+ <span class="ruby-ivar">@preservedTokens</span>.<span class="ruby-identifier">push</span>(<span class="ruby-string">&#39;&#39;</span>)
382
+ <span class="ruby-identifier">css</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-regexp">/#{placeholder}/</span>, <span class="ruby-string">&#39;___YUICSSMIN_PRESERVED_TOKEN_&#39;</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">&#39;___&#39;</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">&#39;&#39;</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">&quot;___YUICSSMIN_PRESERVED_TOKEN_#{index}___&quot;</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
- Fri, 28 Jun 2024 12:41:02 -0500
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 Fri, 28 Jun 2024 12:35:15 -0500
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 Sat, 25 May 2024 11:14:29 -0500
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
@@ -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&#39;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&#39;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"]]}}
Binary file
@@ -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-bool-3F">#bool?</a>
182
+ <a href="String.html#method-i-autolink">#autolink</a>
183
183
  &mdash;
184
184
  <span class="container">String</span>
185
185
 
@@ -188,6 +188,11 @@
188
188
  &mdash;
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
+ &mdash;
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
  &mdash;
@@ -324,14 +329,14 @@
324
329
  <span class="container">Conductor::Condition</span>
325
330
 
326
331
  <li class="method">
327
- <a href="Conductor/Command.html#method-i-path-3D">#path=</a>
332
+ <a href="Conductor/Script.html#method-i-path-3D">#path=</a>
328
333
  &mdash;
329
- <span class="container">Conductor::Command</span>
334
+ <span class="container">Conductor::Script</span>
330
335
 
331
336
  <li class="method">
332
- <a href="Conductor/Script.html#method-i-path-3D">#path=</a>
337
+ <a href="Conductor/Command.html#method-i-path-3D">#path=</a>
333
338
  &mdash;
334
- <span class="container">Conductor::Script</span>
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/Command.html#method-i-run">#run</a>
367
+ <a href="Conductor/Script.html#method-i-run">#run</a>
363
368
  &mdash;
364
- <span class="container">Conductor::Command</span>
369
+ <span class="container">Conductor::Script</span>
365
370
 
366
371
  <li class="method">
367
- <a href="Conductor/Script.html#method-i-run">#run</a>
372
+ <a href="Conductor/Command.html#method-i-run">#run</a>
368
373
  &mdash;
369
- <span class="container">Conductor::Script</span>
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>
@@ -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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Conductor
4
- VERSION = '1.0.16'
4
+ VERSION = '1.0.17'
5
5
  end
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.16
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-06-28 00:00:00.000000000 Z
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