mashed 0.9.0 → 0.9.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,43 @@
1
+ <!DOCTYPE html>
2
+
3
+ <html>
4
+ <head>
5
+ <title>mashed.rb</title>
6
+ <meta http-equiv="content-type" content="text/html; charset=UTF-8">
7
+ <meta name="viewport" content="width=device-width, target-densitydpi=160dpi, initial-scale=1.0; maximum-scale=1.0; user-scalable=0;">
8
+ <link rel="stylesheet" media="all" href="docco.css" />
9
+ </head>
10
+ <body>
11
+ <div id="container">
12
+ <div id="background"></div>
13
+
14
+ <ul class="sections">
15
+
16
+ <li id="title">
17
+ <div class="annotation">
18
+ <h1>mashed.rb</h1>
19
+ </div>
20
+ </li>
21
+
22
+
23
+
24
+ <li id="section-1">
25
+ <div class="annotation">
26
+
27
+ <div class="pilwrap ">
28
+ <a class="pilcrow" href="#section-1">&#182;</a>
29
+ </div>
30
+
31
+ </div>
32
+
33
+ <div class="content"><div class='highlight'><pre><span class="hljs-keyword">require</span> <span class="hljs-string">"mashed/version"</span>
34
+
35
+ <span class="hljs-keyword">require</span> <span class="hljs-string">"mashed/stringy_hash"</span>
36
+ <span class="hljs-keyword">require</span> <span class="hljs-string">"mashed/mash"</span></pre></div></div>
37
+
38
+ </li>
39
+
40
+ </ul>
41
+ </div>
42
+ </body>
43
+ </html>
@@ -0,0 +1,206 @@
1
+ <!DOCTYPE html>
2
+
3
+ <html>
4
+ <head>
5
+ <title>mash.rb</title>
6
+ <meta http-equiv="content-type" content="text/html; charset=UTF-8">
7
+ <meta name="viewport" content="width=device-width, target-densitydpi=160dpi, initial-scale=1.0; maximum-scale=1.0; user-scalable=0;">
8
+ <link rel="stylesheet" media="all" href="docco.css" />
9
+ </head>
10
+ <body>
11
+ <div id="container">
12
+ <div id="background"></div>
13
+
14
+ <ul id="jump_to">
15
+ <li>
16
+ <a class="large" href="javascript:void(0);">Jump To &hellip;</a>
17
+ <a class="small" href="javascript:void(0);">+</a>
18
+ <div id="jump_wrapper">
19
+ <div id="jump_page">
20
+
21
+
22
+ <a class="source" href="mash.html">
23
+ mash.rb
24
+ </a>
25
+
26
+
27
+ <a class="source" href="stringy_hash.html">
28
+ stringy_hash.rb
29
+ </a>
30
+
31
+
32
+ <a class="source" href="version.html">
33
+ version.rb
34
+ </a>
35
+
36
+ </div>
37
+ </li>
38
+ </ul>
39
+
40
+ <ul class="sections">
41
+
42
+ <li id="title">
43
+ <div class="annotation">
44
+ <h1>mash.rb</h1>
45
+ </div>
46
+ </li>
47
+
48
+
49
+
50
+ <li id="section-1">
51
+ <div class="annotation">
52
+
53
+ <div class="pilwrap ">
54
+ <a class="pilcrow" href="#section-1">&#182;</a>
55
+ </div>
56
+
57
+ </div>
58
+
59
+ <div class="content"><div class='highlight'><pre><span class="hljs-class"><span class="hljs-keyword">module</span> <span class="hljs-title">Mashed</span></span>
60
+ <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Mash</span> <span class="hljs-inheritance">&lt; <span class="hljs-parent">BasicObject</span></span></span>
61
+ <span class="hljs-function"><span class="hljs-keyword">def</span> </span>singleton_method_added(symbol)
62
+ <span class="hljs-variable">@singleton_methods</span> ||= []
63
+ <span class="hljs-variable">@singleton_methods</span> &lt;&lt; symbol
64
+ <span class="hljs-keyword">end</span>
65
+ <span class="hljs-function"><span class="hljs-keyword">def</span> </span>singleton_method_removed(symbol)
66
+ <span class="hljs-variable">@singleton_methods</span> ||= []
67
+ <span class="hljs-variable">@singleton_methods</span>.delete symbol
68
+ <span class="hljs-keyword">end</span>
69
+ <span class="hljs-function"><span class="hljs-keyword">def</span> </span>singleton_method_undefined(symbol)
70
+ singleton_method_removed(symbol)
71
+ <span class="hljs-keyword">end</span>
72
+
73
+ <span class="hljs-keyword">unless</span> <span class="hljs-keyword">defined</span>?(object_id)
74
+ <span class="hljs-function"><span class="hljs-keyword">def</span> </span>object_id
75
+ __id_<span class="hljs-number">_</span>
76
+ <span class="hljs-keyword">end</span>
77
+ <span class="hljs-keyword">end</span>
78
+
79
+ <span class="hljs-function"><span class="hljs-keyword">def</span> </span>to_hash
80
+ unwrap <span class="hljs-variable">@hash</span>
81
+ <span class="hljs-keyword">end</span>
82
+ <span class="hljs-keyword">alias</span> to_h to_hash
83
+
84
+ <span class="hljs-function"><span class="hljs-keyword">def</span> </span>to_json(*args)
85
+ to_hash.to_json(*args)
86
+ <span class="hljs-keyword">end</span>
87
+
88
+ <span class="hljs-function"><span class="hljs-keyword">def</span> </span>puts(*args)
89
+ <span class="hljs-constant">::Kernel</span>.puts(*args)
90
+ <span class="hljs-keyword">end</span>
91
+
92
+ klass = <span class="hljs-keyword">self</span>
93
+ define_method(<span class="hljs-symbol">:class</span>) { klass }
94
+ define_method(<span class="hljs-symbol">:methods</span>) { klass.instance_methods + <span class="hljs-variable">@singleton_methods</span> + keys }
95
+
96
+ <span class="hljs-function"><span class="hljs-keyword">def</span> </span><span class="hljs-keyword">self</span>.name
97
+ <span class="hljs-string">"Mashed::Mash"</span>
98
+ <span class="hljs-keyword">end</span>
99
+
100
+ <span class="hljs-function"><span class="hljs-keyword">def</span> </span>initialize(hash)
101
+ <span class="hljs-variable">@singleton_methods</span> ||= []
102
+ hash = <span class="hljs-keyword">if</span> hash.respond_to?(<span class="hljs-symbol">:to_h</span>)
103
+ hash.to_h
104
+ <span class="hljs-keyword">else</span>
105
+ hash.to_hash
106
+ <span class="hljs-keyword">end</span>
107
+ <span class="hljs-variable">@hash</span> = hash.stringify
108
+ <span class="hljs-keyword">end</span>
109
+
110
+ <span class="hljs-function"><span class="hljs-keyword">def</span> </span>is_a?(other)
111
+ other == <span class="hljs-keyword">self</span>.<span class="hljs-keyword">class</span>
112
+ <span class="hljs-keyword">end</span>
113
+ <span class="hljs-keyword">alias</span> kind_of? is_a?
114
+
115
+ <span class="hljs-function"><span class="hljs-keyword">def</span> </span>delete(key)
116
+ wrap_up <span class="hljs-variable">@hash</span>.delete(key)
117
+ <span class="hljs-keyword">end</span>
118
+
119
+ <span class="hljs-function"><span class="hljs-keyword">def</span> </span>method_missing(symbol, *args, &amp;blk)
120
+ string = symbol.to_s
121
+ <span class="hljs-keyword">if</span> blk
122
+ <span class="hljs-keyword">super</span>
123
+ <span class="hljs-keyword">elsif</span> args.length == <span class="hljs-number">0</span>
124
+ <span class="hljs-keyword">if</span> <span class="hljs-variable">@hash</span>.key?(string)
125
+ <span class="hljs-keyword">self</span>[string]
126
+ <span class="hljs-keyword">elsif</span> string =~ <span class="hljs-regexp">/\?$/</span>
127
+ !!<span class="hljs-keyword">self</span>[string[<span class="hljs-number">0</span>..-<span class="hljs-number">2</span>]]
128
+ <span class="hljs-keyword">else</span>
129
+ <span class="hljs-keyword">nil</span>
130
+ <span class="hljs-keyword">end</span>
131
+ <span class="hljs-keyword">elsif</span> args.length == <span class="hljs-number">1</span> &amp;&amp; string =~ <span class="hljs-regexp">/=$/</span>
132
+ <span class="hljs-keyword">self</span>[string[<span class="hljs-number">0</span>..-<span class="hljs-number">2</span>]] = args.first
133
+ <span class="hljs-keyword">else</span>
134
+ <span class="hljs-keyword">super</span>
135
+ <span class="hljs-keyword">end</span>
136
+ <span class="hljs-keyword">end</span>
137
+
138
+ <span class="hljs-function"><span class="hljs-keyword">def</span> </span>respond_to?(symbol)
139
+ methods.map(&amp;<span class="hljs-symbol">:to_s</span>).<span class="hljs-keyword">include</span>?(symbol.to_s)
140
+ <span class="hljs-keyword">end</span>
141
+
142
+ <span class="hljs-function"><span class="hljs-keyword">def</span> </span>inspect
143
+ <span class="hljs-string">"#&lt;Mashed::Mash @hash=&gt;<span class="hljs-subst">#{<span class="hljs-variable">@hash</span>.inspect}</span>&gt;"</span>
144
+ <span class="hljs-keyword">end</span>
145
+ <span class="hljs-keyword">alias</span> to_s inspect
146
+
147
+ <span class="hljs-function"><span class="hljs-keyword">def</span> </span>pretty_inspect
148
+ inspect
149
+ <span class="hljs-keyword">end</span>
150
+
151
+ <span class="hljs-function"><span class="hljs-keyword">def</span> </span>pretty_print
152
+ inspect
153
+ <span class="hljs-keyword">end</span>
154
+
155
+ private
156
+
157
+ <span class="hljs-function"><span class="hljs-keyword">def</span> </span>[](key)
158
+ key = key.to_s
159
+ wrap_up <span class="hljs-variable">@hash</span>[key]
160
+ <span class="hljs-keyword">end</span>
161
+
162
+ <span class="hljs-function"><span class="hljs-keyword">def</span> </span>[]=(key, value)
163
+ key = key.to_s
164
+ <span class="hljs-variable">@hash</span>[key] = value
165
+ <span class="hljs-keyword">end</span>
166
+
167
+ <span class="hljs-function"><span class="hljs-keyword">def</span> </span>keys
168
+ <span class="hljs-variable">@hash</span>.keys
169
+ <span class="hljs-keyword">end</span>
170
+
171
+ <span class="hljs-function"><span class="hljs-keyword">def</span> </span>wrap_up(thing)
172
+ <span class="hljs-keyword">if</span> thing.respond_to?(<span class="hljs-symbol">:to_ary</span>)
173
+ thing.map { |t| wrap(t) }
174
+ <span class="hljs-keyword">else</span>
175
+ wrap(thing)
176
+ <span class="hljs-keyword">end</span>
177
+ <span class="hljs-keyword">end</span>
178
+
179
+ <span class="hljs-function"><span class="hljs-keyword">def</span> </span>wrap(thing)
180
+ <span class="hljs-keyword">if</span> thing.respond_to?(<span class="hljs-symbol">:to_hash</span>)
181
+ <span class="hljs-keyword">self</span>.<span class="hljs-keyword">class</span>.new thing
182
+ <span class="hljs-keyword">else</span>
183
+ thing
184
+ <span class="hljs-keyword">end</span>
185
+ <span class="hljs-keyword">end</span>
186
+
187
+ <span class="hljs-function"><span class="hljs-keyword">def</span> </span>unwrap(thing)
188
+ <span class="hljs-keyword">if</span> thing.respond_to?(<span class="hljs-symbol">:to_hash</span>)
189
+ thing.to_hash.each_with_object({}) <span class="hljs-keyword">do</span> |(key, value), hash|
190
+ hash[key] = unwrap(value)
191
+ <span class="hljs-keyword">end</span>
192
+ <span class="hljs-keyword">elsif</span> thing.respond_to?(<span class="hljs-symbol">:to_ary</span>)
193
+ thing.map { |t| unwrap(t) }
194
+ <span class="hljs-keyword">else</span>
195
+ thing
196
+ <span class="hljs-keyword">end</span>
197
+ <span class="hljs-keyword">end</span>
198
+ <span class="hljs-keyword">end</span>
199
+ <span class="hljs-keyword">end</span></pre></div></div>
200
+
201
+ </li>
202
+
203
+ </ul>
204
+ </div>
205
+ </body>
206
+ </html>
@@ -0,0 +1,43 @@
1
+ <!DOCTYPE html>
2
+
3
+ <html>
4
+ <head>
5
+ <title>mashed.rb</title>
6
+ <meta http-equiv="content-type" content="text/html; charset=UTF-8">
7
+ <meta name="viewport" content="width=device-width, target-densitydpi=160dpi, initial-scale=1.0; maximum-scale=1.0; user-scalable=0;">
8
+ <link rel="stylesheet" media="all" href="docco.css" />
9
+ </head>
10
+ <body>
11
+ <div id="container">
12
+ <div id="background"></div>
13
+
14
+ <ul class="sections">
15
+
16
+ <li id="title">
17
+ <div class="annotation">
18
+ <h1>mashed.rb</h1>
19
+ </div>
20
+ </li>
21
+
22
+
23
+
24
+ <li id="section-1">
25
+ <div class="annotation">
26
+
27
+ <div class="pilwrap ">
28
+ <a class="pilcrow" href="#section-1">&#182;</a>
29
+ </div>
30
+
31
+ </div>
32
+
33
+ <div class="content"><div class='highlight'><pre><span class="hljs-keyword">require</span> <span class="hljs-string">"mashed/version"</span>
34
+
35
+ <span class="hljs-keyword">require</span> <span class="hljs-string">"mashed/stringy_hash"</span>
36
+ <span class="hljs-keyword">require</span> <span class="hljs-string">"mashed/mash"</span></pre></div></div>
37
+
38
+ </li>
39
+
40
+ </ul>
41
+ </div>
42
+ </body>
43
+ </html>
@@ -0,0 +1,375 @@
1
+ /*! normalize.css v2.0.1 | MIT License | git.io/normalize */
2
+
3
+ /* ==========================================================================
4
+ HTML5 display definitions
5
+ ========================================================================== */
6
+
7
+ /*
8
+ * Corrects `block` display not defined in IE 8/9.
9
+ */
10
+
11
+ article,
12
+ aside,
13
+ details,
14
+ figcaption,
15
+ figure,
16
+ footer,
17
+ header,
18
+ hgroup,
19
+ nav,
20
+ section,
21
+ summary {
22
+ display: block;
23
+ }
24
+
25
+ /*
26
+ * Corrects `inline-block` display not defined in IE 8/9.
27
+ */
28
+
29
+ audio,
30
+ canvas,
31
+ video {
32
+ display: inline-block;
33
+ }
34
+
35
+ /*
36
+ * Prevents modern browsers from displaying `audio` without controls.
37
+ * Remove excess height in iOS 5 devices.
38
+ */
39
+
40
+ audio:not([controls]) {
41
+ display: none;
42
+ height: 0;
43
+ }
44
+
45
+ /*
46
+ * Addresses styling for `hidden` attribute not present in IE 8/9.
47
+ */
48
+
49
+ [hidden] {
50
+ display: none;
51
+ }
52
+
53
+ /* ==========================================================================
54
+ Base
55
+ ========================================================================== */
56
+
57
+ /*
58
+ * 1. Sets default font family to sans-serif.
59
+ * 2. Prevents iOS text size adjust after orientation change, without disabling
60
+ * user zoom.
61
+ */
62
+
63
+ html {
64
+ font-family: sans-serif; /* 1 */
65
+ -webkit-text-size-adjust: 100%; /* 2 */
66
+ -ms-text-size-adjust: 100%; /* 2 */
67
+ }
68
+
69
+ /*
70
+ * Removes default margin.
71
+ */
72
+
73
+ body {
74
+ margin: 0;
75
+ }
76
+
77
+ /* ==========================================================================
78
+ Links
79
+ ========================================================================== */
80
+
81
+ /*
82
+ * Addresses `outline` inconsistency between Chrome and other browsers.
83
+ */
84
+
85
+ a:focus {
86
+ outline: thin dotted;
87
+ }
88
+
89
+ /*
90
+ * Improves readability when focused and also mouse hovered in all browsers.
91
+ */
92
+
93
+ a:active,
94
+ a:hover {
95
+ outline: 0;
96
+ }
97
+
98
+ /* ==========================================================================
99
+ Typography
100
+ ========================================================================== */
101
+
102
+ /*
103
+ * Addresses `h1` font sizes within `section` and `article` in Firefox 4+,
104
+ * Safari 5, and Chrome.
105
+ */
106
+
107
+ h1 {
108
+ font-size: 2em;
109
+ }
110
+
111
+ /*
112
+ * Addresses styling not present in IE 8/9, Safari 5, and Chrome.
113
+ */
114
+
115
+ abbr[title] {
116
+ border-bottom: 1px dotted;
117
+ }
118
+
119
+ /*
120
+ * Addresses style set to `bolder` in Firefox 4+, Safari 5, and Chrome.
121
+ */
122
+
123
+ b,
124
+ strong {
125
+ font-weight: bold;
126
+ }
127
+
128
+ /*
129
+ * Addresses styling not present in Safari 5 and Chrome.
130
+ */
131
+
132
+ dfn {
133
+ font-style: italic;
134
+ }
135
+
136
+ /*
137
+ * Addresses styling not present in IE 8/9.
138
+ */
139
+
140
+ mark {
141
+ background: #ff0;
142
+ color: #000;
143
+ }
144
+
145
+
146
+ /*
147
+ * Corrects font family set oddly in Safari 5 and Chrome.
148
+ */
149
+
150
+ code,
151
+ kbd,
152
+ pre,
153
+ samp {
154
+ font-family: monospace, serif;
155
+ font-size: 1em;
156
+ }
157
+
158
+ /*
159
+ * Improves readability of pre-formatted text in all browsers.
160
+ */
161
+
162
+ pre {
163
+ white-space: pre;
164
+ white-space: pre-wrap;
165
+ word-wrap: break-word;
166
+ }
167
+
168
+ /*
169
+ * Sets consistent quote types.
170
+ */
171
+
172
+ q {
173
+ quotes: "\201C" "\201D" "\2018" "\2019";
174
+ }
175
+
176
+ /*
177
+ * Addresses inconsistent and variable font size in all browsers.
178
+ */
179
+
180
+ small {
181
+ font-size: 80%;
182
+ }
183
+
184
+ /*
185
+ * Prevents `sub` and `sup` affecting `line-height` in all browsers.
186
+ */
187
+
188
+ sub,
189
+ sup {
190
+ font-size: 75%;
191
+ line-height: 0;
192
+ position: relative;
193
+ vertical-align: baseline;
194
+ }
195
+
196
+ sup {
197
+ top: -0.5em;
198
+ }
199
+
200
+ sub {
201
+ bottom: -0.25em;
202
+ }
203
+
204
+ /* ==========================================================================
205
+ Embedded content
206
+ ========================================================================== */
207
+
208
+ /*
209
+ * Removes border when inside `a` element in IE 8/9.
210
+ */
211
+
212
+ img {
213
+ border: 0;
214
+ }
215
+
216
+ /*
217
+ * Corrects overflow displayed oddly in IE 9.
218
+ */
219
+
220
+ svg:not(:root) {
221
+ overflow: hidden;
222
+ }
223
+
224
+ /* ==========================================================================
225
+ Figures
226
+ ========================================================================== */
227
+
228
+ /*
229
+ * Addresses margin not present in IE 8/9 and Safari 5.
230
+ */
231
+
232
+ figure {
233
+ margin: 0;
234
+ }
235
+
236
+ /* ==========================================================================
237
+ Forms
238
+ ========================================================================== */
239
+
240
+ /*
241
+ * Define consistent border, margin, and padding.
242
+ */
243
+
244
+ fieldset {
245
+ border: 1px solid #c0c0c0;
246
+ margin: 0 2px;
247
+ padding: 0.35em 0.625em 0.75em;
248
+ }
249
+
250
+ /*
251
+ * 1. Corrects color not being inherited in IE 8/9.
252
+ * 2. Remove padding so people aren't caught out if they zero out fieldsets.
253
+ */
254
+
255
+ legend {
256
+ border: 0; /* 1 */
257
+ padding: 0; /* 2 */
258
+ }
259
+
260
+ /*
261
+ * 1. Corrects font family not being inherited in all browsers.
262
+ * 2. Corrects font size not being inherited in all browsers.
263
+ * 3. Addresses margins set differently in Firefox 4+, Safari 5, and Chrome
264
+ */
265
+
266
+ button,
267
+ input,
268
+ select,
269
+ textarea {
270
+ font-family: inherit; /* 1 */
271
+ font-size: 100%; /* 2 */
272
+ margin: 0; /* 3 */
273
+ }
274
+
275
+ /*
276
+ * Addresses Firefox 4+ setting `line-height` on `input` using `!important` in
277
+ * the UA stylesheet.
278
+ */
279
+
280
+ button,
281
+ input {
282
+ line-height: normal;
283
+ }
284
+
285
+ /*
286
+ * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
287
+ * and `video` controls.
288
+ * 2. Corrects inability to style clickable `input` types in iOS.
289
+ * 3. Improves usability and consistency of cursor style between image-type
290
+ * `input` and others.
291
+ */
292
+
293
+ button,
294
+ html input[type="button"], /* 1 */
295
+ input[type="reset"],
296
+ input[type="submit"] {
297
+ -webkit-appearance: button; /* 2 */
298
+ cursor: pointer; /* 3 */
299
+ }
300
+
301
+ /*
302
+ * Re-set default cursor for disabled elements.
303
+ */
304
+
305
+ button[disabled],
306
+ input[disabled] {
307
+ cursor: default;
308
+ }
309
+
310
+ /*
311
+ * 1. Addresses box sizing set to `content-box` in IE 8/9.
312
+ * 2. Removes excess padding in IE 8/9.
313
+ */
314
+
315
+ input[type="checkbox"],
316
+ input[type="radio"] {
317
+ box-sizing: border-box; /* 1 */
318
+ padding: 0; /* 2 */
319
+ }
320
+
321
+ /*
322
+ * 1. Addresses `appearance` set to `searchfield` in Safari 5 and Chrome.
323
+ * 2. Addresses `box-sizing` set to `border-box` in Safari 5 and Chrome
324
+ * (include `-moz` to future-proof).
325
+ */
326
+
327
+ input[type="search"] {
328
+ -webkit-appearance: textfield; /* 1 */
329
+ -moz-box-sizing: content-box;
330
+ -webkit-box-sizing: content-box; /* 2 */
331
+ box-sizing: content-box;
332
+ }
333
+
334
+ /*
335
+ * Removes inner padding and search cancel button in Safari 5 and Chrome
336
+ * on OS X.
337
+ */
338
+
339
+ input[type="search"]::-webkit-search-cancel-button,
340
+ input[type="search"]::-webkit-search-decoration {
341
+ -webkit-appearance: none;
342
+ }
343
+
344
+ /*
345
+ * Removes inner padding and border in Firefox 4+.
346
+ */
347
+
348
+ button::-moz-focus-inner,
349
+ input::-moz-focus-inner {
350
+ border: 0;
351
+ padding: 0;
352
+ }
353
+
354
+ /*
355
+ * 1. Removes default vertical scrollbar in IE 8/9.
356
+ * 2. Improves readability and alignment in all browsers.
357
+ */
358
+
359
+ textarea {
360
+ overflow: auto; /* 1 */
361
+ vertical-align: top; /* 2 */
362
+ }
363
+
364
+ /* ==========================================================================
365
+ Tables
366
+ ========================================================================== */
367
+
368
+ /*
369
+ * Remove most spacing between table cells.
370
+ */
371
+
372
+ table {
373
+ border-collapse: collapse;
374
+ border-spacing: 0;
375
+ }