ballonizer 0.4.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/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
|