ballonizer 0.4.0 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/examples/ballonizer_app/config.ru +2 -2
- data/lib/ballonizer.rb +20 -17
- data/spec/ballonizer_spec.rb +47 -7
- metadata +5 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8b70575ef73f0f6eb75c78152bc2528cf5b265f8
|
4
|
+
data.tar.gz: ee3aca3f015051952cf27d02f566ba82db4d9202
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3e2c3f7d30a6e276d71cbb2cbd3b024e537fb0cd1701afa191a240bbab4d74d7a474ced17b23a5d2a8ebf2cce38939b9787ce1455eaecd6a695dd4be50a03209
|
7
|
+
data.tar.gz: 4314720810323104e83f0cc6b9c9049966b75de5df711126aead63092900a3d9e3824b8ab2b85794898e106e964340f21ef94daeebf581add700087b00d29a1f
|
@@ -17,9 +17,9 @@ ballonizer = Ballonizer.new(db_uri, {
|
|
17
17
|
create_tables_if_none: true,
|
18
18
|
form_handler_url: '/request_handler',
|
19
19
|
add_required_css: true,
|
20
|
-
css_asset_path_for_link: '/assets',
|
20
|
+
css_asset_path_for_link: '/assets/',
|
21
21
|
add_required_js_libs_for_edition: true,
|
22
|
-
js_asset_path_for_link: '/assets'
|
22
|
+
js_asset_path_for_link: '/assets/'
|
23
23
|
})
|
24
24
|
|
25
25
|
app = Rack::Builder.new do
|
data/lib/ballonizer.rb
CHANGED
@@ -84,7 +84,6 @@ class Ballonizer
|
|
84
84
|
# @api private Don't use the methods of this module. They are for internal use only.
|
85
85
|
module Workaround
|
86
86
|
def self.join_uris(base, relative)
|
87
|
-
base = base.end_with?('/') ? base : base + '/'
|
88
87
|
Addressable::URI.parse(base).join(relative).to_s
|
89
88
|
end
|
90
89
|
|
@@ -395,8 +394,8 @@ class Ballonizer
|
|
395
394
|
# @param page [String] The (X)HTML page.
|
396
395
|
# @param page_url [String] The url of the page to be ballonized, necessary
|
397
396
|
# to make absolute the src attribute of img (if it's relative).
|
398
|
-
# @param settings [Hash{Symbol => String}] Optional.
|
399
|
-
# #settings
|
397
|
+
# @param settings [Hash{Symbol => String}] Optional. Hash to be merged with
|
398
|
+
# the instance #settings (this argument override the #settings ones).
|
400
399
|
# @param mime_type A string that have the substring 'text/html' or
|
401
400
|
# 'application/xhtml+xml'.
|
402
401
|
# @return [String] The ballonized page (new string), or the same string,
|
@@ -432,10 +431,10 @@ class Ballonizer
|
|
432
431
|
|
433
432
|
head = parsed_page.at_css('head')
|
434
433
|
if settings[:add_required_css]
|
435
|
-
head.children.last.add_next_sibling(
|
434
|
+
head.children.last.add_next_sibling(css_html_links(settings))
|
436
435
|
end
|
437
436
|
if settings[:add_required_js_libs_for_edition]
|
438
|
-
head.children.last.add_next_sibling(
|
437
|
+
head.children.last.add_next_sibling(js_libs_html_links(settings))
|
439
438
|
end
|
440
439
|
if settings[:add_js_for_edition]
|
441
440
|
head.children.last.add_next_sibling(self.js_load_snippet)
|
@@ -531,12 +530,14 @@ class Ballonizer
|
|
531
530
|
|
532
531
|
# The (X)HTML fragment with the link tags that are added to the page by
|
533
532
|
# ballonize_page if the :add_required_css setting is true (the default
|
534
|
-
# is false).
|
535
|
-
#
|
536
|
-
#
|
537
|
-
|
533
|
+
# is false).
|
534
|
+
# @param settings [Hash{Symbol => String}] Optional. Hash to be merged with
|
535
|
+
# the instance #settings (this argument override the #settings ones).
|
536
|
+
# @return [String,NilClass] A String when the :css_asset_path_for_link is
|
537
|
+
# defined, nil otherwise.
|
538
|
+
def css_html_links(settings = {})
|
539
|
+
settings = self.settings.merge(settings)
|
538
540
|
return nil unless settings[:css_asset_path_for_link]
|
539
|
-
return @css_html_links if @css_html_links
|
540
541
|
|
541
542
|
link_template = '<link rel="stylesheet" type="text/css" href="PATH" />'
|
542
543
|
css_paths = self.class.asset_logical_paths.select do | p |
|
@@ -548,17 +549,19 @@ class Ballonizer
|
|
548
549
|
link_template.sub('PATH', p)
|
549
550
|
end
|
550
551
|
|
551
|
-
|
552
|
+
links.join('')
|
552
553
|
end
|
553
554
|
|
554
555
|
# The (X)HTML fragment with the script tags that are added to the page by
|
555
556
|
# ballonize_page if the :add_required_js_libs_for_edition setting is true
|
556
|
-
# (the default is false).
|
557
|
-
#
|
558
|
-
#
|
559
|
-
|
557
|
+
# (the default is false).
|
558
|
+
# @param settings [Hash{Symbol => String}] Optional. Hash to be merged with
|
559
|
+
# the instance #settings (this argument override the #settings ones).
|
560
|
+
# @return [String,NilClass] A String when the :js_asset_path_for_link is
|
561
|
+
# defined, nil otherwise.
|
562
|
+
def js_libs_html_links(settings = {})
|
563
|
+
settings = self.settings.merge(settings)
|
560
564
|
return nil unless settings[:js_asset_path_for_link]
|
561
|
-
return @js_libs_html_links if @js_libs_html_links
|
562
565
|
|
563
566
|
link_template = '<script type="text/javascript" src="PATH" ></script>'
|
564
567
|
js_libs_paths = self.class.asset_logical_paths.select do | p |
|
@@ -570,7 +573,7 @@ class Ballonizer
|
|
570
573
|
link_template.sub('PATH', p)
|
571
574
|
end
|
572
575
|
|
573
|
-
|
576
|
+
links.join('')
|
574
577
|
end
|
575
578
|
|
576
579
|
# List of paths (relative to the gem root directory) to the directories with
|
data/spec/ballonizer_spec.rb
CHANGED
@@ -269,7 +269,7 @@ describe Ballonizer do
|
|
269
269
|
let (:ballonizer_settings) do
|
270
270
|
ballonizer_settings_example.merge({
|
271
271
|
add_required_css: true,
|
272
|
-
css_asset_path_for_link: 'assets/css'
|
272
|
+
css_asset_path_for_link: '/assets/css/'
|
273
273
|
})
|
274
274
|
end
|
275
275
|
|
@@ -285,7 +285,7 @@ describe Ballonizer do
|
|
285
285
|
# this option is added to avoid a false positive in the test
|
286
286
|
add_js_for_edition: false,
|
287
287
|
add_required_js_libs_for_edition: true,
|
288
|
-
js_asset_path_for_link: 'assets/js'
|
288
|
+
js_asset_path_for_link: '/assets/js/'
|
289
289
|
})
|
290
290
|
end
|
291
291
|
|
@@ -530,7 +530,7 @@ describe Ballonizer do
|
|
530
530
|
lambda { instance.valid_submit_hash?(submit_hash, true) }
|
531
531
|
end
|
532
532
|
|
533
|
-
it { expect(method_call).to_not raise_error
|
533
|
+
it { expect(method_call).to_not raise_error }
|
534
534
|
it { expect(method_call.call).to be_true }
|
535
535
|
end
|
536
536
|
end
|
@@ -652,47 +652,87 @@ describe Ballonizer do
|
|
652
652
|
end
|
653
653
|
end
|
654
654
|
|
655
|
+
# to be used with #css_html_links and #js_libs_html_links
|
655
656
|
describe '#css_html_links' do
|
657
|
+
shared_examples 'using settings parameter' do
|
658
|
+
context 'and a path is passed by the settings hash argument' do
|
659
|
+
it 'use the path from the argument' do
|
660
|
+
css_links = instance.css_html_links({
|
661
|
+
css_asset_path_for_link: '/other_assets/css/'
|
662
|
+
})
|
663
|
+
|
664
|
+
REXML::Document.new("<root>#{css_links}</root>")
|
665
|
+
.root.children.each do | e |
|
666
|
+
expect(e.attributes['href']).to match(/^\/other_assets\/css\//)
|
667
|
+
end
|
668
|
+
end
|
669
|
+
end
|
670
|
+
end
|
671
|
+
|
656
672
|
context "when the path for the css isn't configured" do
|
657
673
|
it 'returns nil' do
|
658
674
|
expect(instance.css_html_links).to eq nil
|
659
675
|
end
|
676
|
+
|
677
|
+
include_examples 'using settings parameter'
|
660
678
|
end
|
661
679
|
context 'when the path for the css is configured' do
|
662
680
|
let (:ballonizer_settings) do
|
663
681
|
ballonizer_settings_example.merge({
|
664
|
-
css_asset_path_for_link: 'assets/css'
|
682
|
+
css_asset_path_for_link: '/assets/css/'
|
665
683
|
})
|
666
684
|
end
|
667
685
|
|
668
686
|
it 'return a HTML string with links prefixed by the path' do
|
669
687
|
REXML::Document.new("<root>#{instance.css_html_links}</root>")
|
670
688
|
.root.children.each do | e |
|
671
|
-
expect(e.attributes['href']).to match(
|
689
|
+
expect(e.attributes['href']).to match(/^\/assets\/css\//)
|
672
690
|
end
|
673
691
|
end
|
692
|
+
|
693
|
+
include_examples 'using settings parameter'
|
674
694
|
end
|
675
695
|
end
|
676
696
|
|
677
697
|
describe '#js_libs_html_links' do
|
698
|
+
shared_examples 'using settings parameter' do
|
699
|
+
context 'and a path is passed by the settings hash argument' do
|
700
|
+
it 'use the path from the argument' do
|
701
|
+
js_scripts = instance.js_libs_html_links({
|
702
|
+
js_asset_path_for_link: '/other_assets/js/'
|
703
|
+
})
|
704
|
+
|
705
|
+
REXML::Document.new("<root>#{js_scripts}</root>")
|
706
|
+
.root.children.each do | e |
|
707
|
+
expect(e.attributes['src']).to match(/^\/other_assets\/js\//)
|
708
|
+
end
|
709
|
+
end
|
710
|
+
end
|
711
|
+
end
|
712
|
+
|
678
713
|
context "when the path for the js libs isn't configured" do
|
679
714
|
it 'returns nil' do
|
680
715
|
expect(instance.js_libs_html_links).to eq nil
|
681
716
|
end
|
717
|
+
|
718
|
+
include_examples 'using settings parameter'
|
682
719
|
end
|
720
|
+
|
683
721
|
context 'when the path for the js libs is configured' do
|
684
722
|
let (:ballonizer_settings) do
|
685
723
|
ballonizer_settings_example.merge({
|
686
|
-
js_asset_path_for_link: 'assets/js'
|
724
|
+
js_asset_path_for_link: '/assets/js/'
|
687
725
|
})
|
688
726
|
end
|
689
727
|
|
690
728
|
it 'return a HTML string with links prefixed by the path' do
|
691
729
|
REXML::Document.new("<root>#{instance.js_libs_html_links}</root>")
|
692
730
|
.root.children.each do | e |
|
693
|
-
expect(e.attributes['src']).to match(
|
731
|
+
expect(e.attributes['src']).to match(/^\/assets\/js\//)
|
694
732
|
end
|
695
733
|
end
|
734
|
+
|
735
|
+
include_examples 'using settings parameter'
|
696
736
|
end
|
697
737
|
end
|
698
738
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ballonizer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Henrique Becker
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-07-
|
11
|
+
date: 2013-07-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|
@@ -151,33 +151,19 @@ dependencies:
|
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: 0.8.4
|
153
153
|
- !ruby/object:Gem::Dependency
|
154
|
-
name: rspec
|
154
|
+
name: rspec
|
155
155
|
requirement: !ruby/object:Gem::Requirement
|
156
156
|
requirements:
|
157
157
|
- - ~>
|
158
158
|
- !ruby/object:Gem::Version
|
159
|
-
version: '2.
|
159
|
+
version: '2.14'
|
160
160
|
type: :development
|
161
161
|
prerelease: false
|
162
162
|
version_requirements: !ruby/object:Gem::Requirement
|
163
163
|
requirements:
|
164
164
|
- - ~>
|
165
165
|
- !ruby/object:Gem::Version
|
166
|
-
version: '2.
|
167
|
-
- !ruby/object:Gem::Dependency
|
168
|
-
name: rspec-expectations
|
169
|
-
requirement: !ruby/object:Gem::Requirement
|
170
|
-
requirements:
|
171
|
-
- - ~>
|
172
|
-
- !ruby/object:Gem::Version
|
173
|
-
version: '2.13'
|
174
|
-
type: :development
|
175
|
-
prerelease: false
|
176
|
-
version_requirements: !ruby/object:Gem::Requirement
|
177
|
-
requirements:
|
178
|
-
- - ~>
|
179
|
-
- !ruby/object:Gem::Version
|
180
|
-
version: '2.13'
|
166
|
+
version: '2.14'
|
181
167
|
- !ruby/object:Gem::Dependency
|
182
168
|
name: rspec-html-matchers
|
183
169
|
requirement: !ruby/object:Gem::Requirement
|