social_snippet 0.0.13 → 0.0.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +8 -8
- data/lib/social_snippet.rb +1 -0
- data/lib/social_snippet/config.rb +4 -0
- data/lib/social_snippet/resolvers/insert_resolver.rb +42 -1
- data/lib/social_snippet/version.rb +1 -1
- data/social_snippet.gemspec +1 -0
- data/spec/lib/api/insert_snippet_spec.rb +10 -0
- data/spec/lib/core_spec.rb +1 -0
- data/spec/lib/insert_resolver_spec.rb +252 -0
- data/spec/lib/snippet_spec.rb +34 -0
- data/test/insert_snippet_test.rb +10 -0
- metadata +18 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
MThiMzVkNmUyMjI0MjdhY2M4ZmU3YjM4OWZlM2Y1MzIyYjQzYjc3MQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
Njk0NzQzZWI1NWI3MzgyNWJmYWVmY2I1ZGI2MDU4ZmFlNWM3ZWVjOA==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
OWEwYTA2MGEyYmI1YmMyMjAxZWMzYzljZjg2NDRhYTJmNWYwNTgyNGNlZTUw
|
10
|
+
ZDg0M2I2YWI5MjQxYjQxMjNkZmRjYjJhODgxYTQ4N2FmM2U5YWE2ODgyNTQ5
|
11
|
+
N2EyN2JjYjdmZDdiNzAzYzcyMzg4NjRlNmZkYzYzMTQ3NTg1YjU=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
YTZkMjI0MTAwYzBjNzZkZmI0ZWY5N2FlMjk1OGZiMmQ4MWNlNDY0YmJkYjQ3
|
14
|
+
OGY4NWYwMDZkNTUxNTYyYzY5ZmIxNjJlNDIyNzRlODE0NmViMTNmYzZjMjAw
|
15
|
+
ZWRkYjFhN2U1YmVhZTA3YmYzOTFiYjkyZmU3NzAyODhiMmIxODU=
|
data/lib/social_snippet.rb
CHANGED
@@ -16,10 +16,51 @@ module SocialSnippet
|
|
16
16
|
end
|
17
17
|
|
18
18
|
def init_options
|
19
|
-
|
19
|
+
# apply local snippet.css
|
20
|
+
parse_snippet_css "snippet.css"
|
21
|
+
|
22
|
+
# apply global snippet.css
|
23
|
+
parse_snippet_css core.config.snippet_css
|
24
|
+
|
25
|
+
# use default value
|
26
|
+
options[:margin_bottom] = options.fetch(:margin_bottom, 1)
|
20
27
|
options[:margin_top] = options.fetch(:margin_top, 0)
|
21
28
|
end
|
22
29
|
|
30
|
+
def convert_to_option_key(prop)
|
31
|
+
case prop
|
32
|
+
when "margin-bottom"
|
33
|
+
:margin_bottom
|
34
|
+
when "margin-top"
|
35
|
+
:margin_top
|
36
|
+
else
|
37
|
+
prop.to_sym
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
# Example of snippet.css
|
42
|
+
# ```css
|
43
|
+
# snippet {
|
44
|
+
# margin-top: 3;
|
45
|
+
# margin-bottom: 3;
|
46
|
+
# }
|
47
|
+
# ```
|
48
|
+
def parse_snippet_css(path)
|
49
|
+
return unless core.storage.file?(path)
|
50
|
+
parser = ::CssParser::Parser.new
|
51
|
+
parser.add_block! core.storage.read(path)
|
52
|
+
apply_styles parser, "snippet"
|
53
|
+
end
|
54
|
+
|
55
|
+
def apply_styles(parser, selector)
|
56
|
+
style = parser.find_by_selector(selector).first
|
57
|
+
rules = ::CssParser::RuleSet.new(nil, style)
|
58
|
+
rules.each_declaration do |prop, val, imp|
|
59
|
+
key = convert_to_option_key(prop)
|
60
|
+
options[key] = options.fetch(key, val.to_i)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
23
64
|
# Insert snippets to given text
|
24
65
|
#
|
25
66
|
# @param text [String] The text of source code
|
data/social_snippet.gemspec
CHANGED
@@ -24,6 +24,7 @@ Gem::Specification.new do |spec|
|
|
24
24
|
spec.add_runtime_dependency "highline", "~> 1.7.0"
|
25
25
|
spec.add_runtime_dependency "wisper", "~> 1.6.0"
|
26
26
|
spec.add_runtime_dependency "social_snippet-supports-git", "~> 0.1.0"
|
27
|
+
spec.add_runtime_dependency "css_parser", "~> 1.3.6"
|
27
28
|
|
28
29
|
spec.add_development_dependency "bundler"
|
29
30
|
spec.add_development_dependency "rake"
|
@@ -4,6 +4,16 @@ module SocialSnippet
|
|
4
4
|
|
5
5
|
describe Api::InsertSnippetApi do
|
6
6
|
|
7
|
+
before do
|
8
|
+
# prepare snippet.css (global)
|
9
|
+
fake_core.storage.write fake_core.config.snippet_css, [
|
10
|
+
"snippet {",
|
11
|
+
" margin-top: 0;",
|
12
|
+
" margin-bottom: 0;",
|
13
|
+
"}",
|
14
|
+
].join($/)
|
15
|
+
end
|
16
|
+
|
7
17
|
describe "#insert_snippet()", :without_fakefs => true do
|
8
18
|
|
9
19
|
class FakeDriver < ::SocialSnippet::Repository::Drivers::DriverBase
|
data/spec/lib/core_spec.rb
CHANGED
@@ -26,6 +26,16 @@ describe SocialSnippet::Resolvers::InsertResolver do
|
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
29
|
+
before do
|
30
|
+
# prepare snippet.css (global)
|
31
|
+
fake_core.storage.write fake_core.config.snippet_css, [
|
32
|
+
"snippet {",
|
33
|
+
" margin-top: 0;",
|
34
|
+
" margin-bottom: 0;",
|
35
|
+
"}",
|
36
|
+
].join($/)
|
37
|
+
end
|
38
|
+
|
29
39
|
describe "@begin_cut / @end_cut" do
|
30
40
|
|
31
41
|
describe "ruby's require()" do
|
@@ -191,6 +201,248 @@ describe SocialSnippet::Resolvers::InsertResolver do
|
|
191
201
|
|
192
202
|
end # :margin_bottom
|
193
203
|
|
204
|
+
describe "snippet.css", :current => true do
|
205
|
+
|
206
|
+
context "snippet { margin-bottom: 3 }" do
|
207
|
+
|
208
|
+
before do
|
209
|
+
fake_core.storage.write "snippet.css", [
|
210
|
+
"snippet { margin-bottom: 3; }"
|
211
|
+
].join($/)
|
212
|
+
end
|
213
|
+
|
214
|
+
let(:resolver) do
|
215
|
+
::SocialSnippet::Resolvers::InsertResolver.new(fake_core, ::Hash.new)
|
216
|
+
end
|
217
|
+
|
218
|
+
let(:input) do
|
219
|
+
[
|
220
|
+
"// @snip <my-repo-1:path/to/file.d>",
|
221
|
+
"// @snip <my-repo-2:path/to/file.d>",
|
222
|
+
"// @snip <my-repo-3:path/to/file.d>",
|
223
|
+
].join($/)
|
224
|
+
end
|
225
|
+
|
226
|
+
let(:expected) do
|
227
|
+
[
|
228
|
+
"// @snippet <my-repo-1:path/to/file.d>",
|
229
|
+
"my-repo-1",
|
230
|
+
"",
|
231
|
+
"",
|
232
|
+
"",
|
233
|
+
"// @snippet <my-repo-2:path/to/file.d>",
|
234
|
+
"my-repo-2",
|
235
|
+
"",
|
236
|
+
"",
|
237
|
+
"",
|
238
|
+
"// @snippet <my-repo-3:path/to/file.d>",
|
239
|
+
"my-repo-3",
|
240
|
+
"",
|
241
|
+
"",
|
242
|
+
"",
|
243
|
+
].join($/)
|
244
|
+
end
|
245
|
+
|
246
|
+
subject { resolver.insert input }
|
247
|
+
it { should eq expected }
|
248
|
+
|
249
|
+
end # snippet { margin-bottom: 3 }
|
250
|
+
|
251
|
+
context "snippet { margin-top: 3; margin-bottom: 3 }" do
|
252
|
+
|
253
|
+
before do
|
254
|
+
fake_core.storage.write "snippet.css", [
|
255
|
+
"snippet {",
|
256
|
+
" margin-top: 3;",
|
257
|
+
" margin-bottom: 3;",
|
258
|
+
"}",
|
259
|
+
].join($/)
|
260
|
+
end
|
261
|
+
|
262
|
+
let(:resolver) do
|
263
|
+
::SocialSnippet::Resolvers::InsertResolver.new(fake_core, ::Hash.new)
|
264
|
+
end
|
265
|
+
|
266
|
+
let(:input) do
|
267
|
+
[
|
268
|
+
"// @snip <my-repo-1:path/to/file.d>",
|
269
|
+
"// @snip <my-repo-2:path/to/file.d>",
|
270
|
+
"// @snip <my-repo-3:path/to/file.d>",
|
271
|
+
].join($/)
|
272
|
+
end
|
273
|
+
|
274
|
+
let(:expected) do
|
275
|
+
[
|
276
|
+
"",
|
277
|
+
"",
|
278
|
+
"",
|
279
|
+
"// @snippet <my-repo-1:path/to/file.d>",
|
280
|
+
"my-repo-1",
|
281
|
+
"",
|
282
|
+
"",
|
283
|
+
"",
|
284
|
+
"",
|
285
|
+
"",
|
286
|
+
"",
|
287
|
+
"// @snippet <my-repo-2:path/to/file.d>",
|
288
|
+
"my-repo-2",
|
289
|
+
"",
|
290
|
+
"",
|
291
|
+
"",
|
292
|
+
"",
|
293
|
+
"",
|
294
|
+
"",
|
295
|
+
"// @snippet <my-repo-3:path/to/file.d>",
|
296
|
+
"my-repo-3",
|
297
|
+
"",
|
298
|
+
"",
|
299
|
+
"",
|
300
|
+
].join($/)
|
301
|
+
end
|
302
|
+
|
303
|
+
subject { resolver.insert input }
|
304
|
+
it { should eq expected }
|
305
|
+
|
306
|
+
end # snippet { margin-top: 3; margin-bottom: 3 }
|
307
|
+
|
308
|
+
context "global - snippet { margin-bottom: 3 }" do
|
309
|
+
|
310
|
+
before do
|
311
|
+
fake_core.storage.write fake_core.config.snippet_css, [
|
312
|
+
"snippet{ margin-top: 3; margin-bottom: 0 }"
|
313
|
+
].join($/)
|
314
|
+
end
|
315
|
+
|
316
|
+
let(:resolver) do
|
317
|
+
::SocialSnippet::Resolvers::InsertResolver.new(fake_core, ::Hash.new)
|
318
|
+
end
|
319
|
+
|
320
|
+
let(:input) do
|
321
|
+
[
|
322
|
+
"// @snip <my-repo-1:path/to/file.d>",
|
323
|
+
"// @snip <my-repo-2:path/to/file.d>",
|
324
|
+
"// @snip <my-repo-3:path/to/file.d>",
|
325
|
+
].join($/)
|
326
|
+
end
|
327
|
+
|
328
|
+
let(:expected) do
|
329
|
+
[
|
330
|
+
"",
|
331
|
+
"",
|
332
|
+
"",
|
333
|
+
"// @snippet <my-repo-1:path/to/file.d>",
|
334
|
+
"my-repo-1",
|
335
|
+
"",
|
336
|
+
"",
|
337
|
+
"",
|
338
|
+
"// @snippet <my-repo-2:path/to/file.d>",
|
339
|
+
"my-repo-2",
|
340
|
+
"",
|
341
|
+
"",
|
342
|
+
"",
|
343
|
+
"// @snippet <my-repo-3:path/to/file.d>",
|
344
|
+
"my-repo-3",
|
345
|
+
].join($/)
|
346
|
+
end
|
347
|
+
|
348
|
+
subject { resolver.insert input }
|
349
|
+
it { should eq expected }
|
350
|
+
|
351
|
+
end
|
352
|
+
|
353
|
+
context "local css > global css" do
|
354
|
+
|
355
|
+
before do
|
356
|
+
fake_core.storage.write fake_core.config.snippet_css, [
|
357
|
+
"snippet{ margin-top: 0; margin-bottom: 0 }"
|
358
|
+
].join($/)
|
359
|
+
|
360
|
+
fake_core.storage.write "snippet.css", [
|
361
|
+
"snippet{ margin-top: 3; margin-bottom: 0 }"
|
362
|
+
].join($/)
|
363
|
+
end
|
364
|
+
|
365
|
+
let(:resolver) do
|
366
|
+
::SocialSnippet::Resolvers::InsertResolver.new(fake_core, ::Hash.new)
|
367
|
+
end
|
368
|
+
|
369
|
+
let(:input) do
|
370
|
+
[
|
371
|
+
"// @snip <my-repo-1:path/to/file.d>",
|
372
|
+
"// @snip <my-repo-2:path/to/file.d>",
|
373
|
+
"// @snip <my-repo-3:path/to/file.d>",
|
374
|
+
].join($/)
|
375
|
+
end
|
376
|
+
|
377
|
+
let(:expected) do
|
378
|
+
[
|
379
|
+
"",
|
380
|
+
"",
|
381
|
+
"",
|
382
|
+
"// @snippet <my-repo-1:path/to/file.d>",
|
383
|
+
"my-repo-1",
|
384
|
+
"",
|
385
|
+
"",
|
386
|
+
"",
|
387
|
+
"// @snippet <my-repo-2:path/to/file.d>",
|
388
|
+
"my-repo-2",
|
389
|
+
"",
|
390
|
+
"",
|
391
|
+
"",
|
392
|
+
"// @snippet <my-repo-3:path/to/file.d>",
|
393
|
+
"my-repo-3",
|
394
|
+
].join($/)
|
395
|
+
end
|
396
|
+
|
397
|
+
subject { resolver.insert input }
|
398
|
+
it { should eq expected }
|
399
|
+
|
400
|
+
end # local css > global css
|
401
|
+
|
402
|
+
context "multi-selector case" do
|
403
|
+
|
404
|
+
before do
|
405
|
+
fake_core.storage.write fake_core.config.snippet_css, [
|
406
|
+
"abcde, snippet, .test, #testtest { margin-top: 2; margin-bottom: 0 }"
|
407
|
+
].join($/)
|
408
|
+
end
|
409
|
+
|
410
|
+
let(:resolver) do
|
411
|
+
::SocialSnippet::Resolvers::InsertResolver.new(fake_core, ::Hash.new)
|
412
|
+
end
|
413
|
+
|
414
|
+
let(:input) do
|
415
|
+
[
|
416
|
+
"// @snip <my-repo-1:path/to/file.d>",
|
417
|
+
"// @snip <my-repo-2:path/to/file.d>",
|
418
|
+
"// @snip <my-repo-3:path/to/file.d>",
|
419
|
+
].join($/)
|
420
|
+
end
|
421
|
+
|
422
|
+
let(:expected) do
|
423
|
+
[
|
424
|
+
"",
|
425
|
+
"",
|
426
|
+
"// @snippet <my-repo-1:path/to/file.d>",
|
427
|
+
"my-repo-1",
|
428
|
+
"",
|
429
|
+
"",
|
430
|
+
"// @snippet <my-repo-2:path/to/file.d>",
|
431
|
+
"my-repo-2",
|
432
|
+
"",
|
433
|
+
"",
|
434
|
+
"// @snippet <my-repo-3:path/to/file.d>",
|
435
|
+
"my-repo-3",
|
436
|
+
].join($/)
|
437
|
+
end
|
438
|
+
|
439
|
+
subject { resolver.insert input }
|
440
|
+
it { should eq expected }
|
441
|
+
|
442
|
+
end # multi-selectors case
|
443
|
+
|
444
|
+
end # snippet.css
|
445
|
+
|
194
446
|
end # test styling
|
195
447
|
|
196
448
|
end # prepare stubs
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe ::SocialSnippet::Snippet, :current => true do
|
4
|
+
|
5
|
+
describe "snippet.css" do
|
6
|
+
|
7
|
+
context "prepare snippet" do
|
8
|
+
|
9
|
+
let(:snippet) do
|
10
|
+
::SocialSnippet::Snippet.new_text fake_core, [
|
11
|
+
"line-1",
|
12
|
+
"line-2",
|
13
|
+
"line-3",
|
14
|
+
].join($/)
|
15
|
+
end
|
16
|
+
|
17
|
+
context "no styles" do
|
18
|
+
subject { snippet.lines }
|
19
|
+
let(:expected) do
|
20
|
+
[
|
21
|
+
"line-1",
|
22
|
+
"line-2",
|
23
|
+
"line-3",
|
24
|
+
]
|
25
|
+
end
|
26
|
+
it { should eq expected }
|
27
|
+
end
|
28
|
+
|
29
|
+
end # prepare snippet
|
30
|
+
|
31
|
+
end # snippet.css
|
32
|
+
|
33
|
+
end # ::SocialSnippet::Snippet
|
34
|
+
|
data/test/insert_snippet_test.rb
CHANGED
@@ -50,6 +50,16 @@ describe SocialSnippet::Api::InsertSnippetApi do
|
|
50
50
|
end
|
51
51
|
end
|
52
52
|
|
53
|
+
before do
|
54
|
+
# prepare snippet.css (global)
|
55
|
+
fake_core.storage.write fake_core.config.snippet_css, [
|
56
|
+
"snippet {",
|
57
|
+
" margin-top: 0;",
|
58
|
+
" margin-bottom: 0;",
|
59
|
+
"}",
|
60
|
+
].join($/)
|
61
|
+
end
|
62
|
+
|
53
63
|
describe "#insert_snippet" do
|
54
64
|
|
55
65
|
context "use commit id" do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: social_snippet
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.14
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hiroyuki Sano
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-03-
|
11
|
+
date: 2015-03-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: version_sorter
|
@@ -80,6 +80,20 @@ dependencies:
|
|
80
80
|
- - ~>
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: 0.1.0
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: css_parser
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ~>
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 1.3.6
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ~>
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 1.3.6
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
98
|
name: bundler
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -318,6 +332,7 @@ files:
|
|
318
332
|
- spec/lib/repository/package_spec.rb
|
319
333
|
- spec/lib/repository/repository_manager_spec.rb
|
320
334
|
- spec/lib/repository/repository_spec.rb
|
335
|
+
- spec/lib/snippet_spec.rb
|
321
336
|
- spec/lib/tag_parser_spec.rb
|
322
337
|
- spec/lib/tag_spec.rb
|
323
338
|
- spec/lib/yaml_document_spec.rb
|
@@ -385,6 +400,7 @@ test_files:
|
|
385
400
|
- spec/lib/repository/package_spec.rb
|
386
401
|
- spec/lib/repository/repository_manager_spec.rb
|
387
402
|
- spec/lib/repository/repository_spec.rb
|
403
|
+
- spec/lib/snippet_spec.rb
|
388
404
|
- spec/lib/tag_parser_spec.rb
|
389
405
|
- spec/lib/tag_spec.rb
|
390
406
|
- spec/lib/yaml_document_spec.rb
|