ballonizer 0.5.0 → 0.5.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8b70575ef73f0f6eb75c78152bc2528cf5b265f8
4
- data.tar.gz: ee3aca3f015051952cf27d02f566ba82db4d9202
3
+ metadata.gz: 780ce40c1dc740975c9efab98d89424a0b985fc3
4
+ data.tar.gz: 59e8ef21b8d41b5ecf3967f9d970ff9128980856
5
5
  SHA512:
6
- metadata.gz: 3e2c3f7d30a6e276d71cbb2cbd3b024e537fb0cd1701afa191a240bbab4d74d7a474ced17b23a5d2a8ebf2cce38939b9787ce1455eaecd6a695dd4be50a03209
7
- data.tar.gz: 4314720810323104e83f0cc6b9c9049966b75de5df711126aead63092900a3d9e3824b8ab2b85794898e106e964340f21ef94daeebf581add700087b00d29a1f
6
+ metadata.gz: 6a326072d5470694d5be5130b74adea5ce2099c2b0ccb1c0943bcffcb93b7f8054e6e2b51a878ced816e238d3c5e2dbfab2ecee1f61dbdc3279866ef2b75e180
7
+ data.tar.gz: c82f1c4356ffe12dcdf2cf8a3ec483f143c8930bab14c9513114a3bd127e497a7df25dc47b360cfe8609d58a0667c2553c0e7d82783e06c78250a7f28d796019
Binary file
data/lib/ballonizer.rb CHANGED
@@ -55,6 +55,16 @@ require 'sprockets'
55
55
  # ballonized_image_ballons.
56
56
  #
57
57
  # Changelog:
58
+ # v0.5.1:
59
+ # * js_load_snippet can take a settings arg too. Fixed ballonize_page to
60
+ # use the :form_handler_url from the settings argument.
61
+ # v0.5.0:
62
+ # * The *_html_links methods can take a settings argument.
63
+ # * Fixed bug where passing a new asset path to the ballonize_page don't
64
+ # settings parameter change the asset path that it uses.
65
+ # * Asset path settings now are parsed as real URIs (need to have a
66
+ # trailing slash if the intent is use as a dir).
67
+ # * Updated the rspec version used by the gem (fixed deprecation).
58
68
  # v0.4.0:
59
69
  # * Changed the way the Javascript module add containers in the page
60
70
  # to avoid creating invalid HTML4.0.1/XHTML1.1/HTML5 documents.
@@ -403,7 +413,7 @@ class Ballonizer
403
413
  # @raise [Ballonizer::Error] If the mime-type don't match either 'text/html'
404
414
  # or 'application/xhtml+xml'.
405
415
  def ballonize_page(page, page_url, mime_type, settings = {})
406
- settings = self.settings.merge(settings)
416
+ settings = @settings.merge(settings)
407
417
 
408
418
  # can raise Ballonizer::Error if the mime-type is invalid
409
419
  parsed_page = Workaround.parse_html_or_xhtml(page, mime_type)
@@ -437,7 +447,7 @@ class Ballonizer
437
447
  head.children.last.add_next_sibling(js_libs_html_links(settings))
438
448
  end
439
449
  if settings[:add_js_for_edition]
440
- head.children.last.add_next_sibling(self.js_load_snippet)
450
+ head.children.last.add_next_sibling(js_load_snippet(settings))
441
451
  end
442
452
  end
443
453
 
@@ -481,17 +491,20 @@ class Ballonizer
481
491
  end
482
492
 
483
493
  # Return a String with the snippet added to the pages to allow edition in them.
494
+ # @param settings [Hash{Symbol => String}] Optional. Hash to be merged with
495
+ # the instance #settings (this argument override the #settings ones).
484
496
  # @return [String] The added snippet. Already with the <script/> tag around it.
485
- def js_load_snippet
486
- <<-end
497
+ def js_load_snippet(settings = {})
498
+ settings = @settings.merge(settings)
499
+ <<-EOF
487
500
  <script type="text/javascript">
488
501
  $(document).ready(function() {
489
- Ballonizer('#{self.settings[:form_handler_url]}',
502
+ Ballonizer('#{settings[:form_handler_url]}',
490
503
  '.ballonizer_image_container',
491
504
  $('body'));
492
505
  })
493
506
  </script>
494
- end
507
+ EOF
495
508
  end
496
509
 
497
510
  # Executes the create_table operations over the Sequel::Database argument.
@@ -536,7 +549,7 @@ class Ballonizer
536
549
  # @return [String,NilClass] A String when the :css_asset_path_for_link is
537
550
  # defined, nil otherwise.
538
551
  def css_html_links(settings = {})
539
- settings = self.settings.merge(settings)
552
+ settings = @settings.merge(settings)
540
553
  return nil unless settings[:css_asset_path_for_link]
541
554
 
542
555
  link_template = '<link rel="stylesheet" type="text/css" href="PATH" />'
@@ -4,6 +4,7 @@ require 'rspec-html-matchers'
4
4
  require 'equivalent-xml'
5
5
  require 'stringio'
6
6
  require 'rexml/document'
7
+ require 'nokogiri'
7
8
 
8
9
  # make the changes in the BD restricted to the example
9
10
  RSpec.configure do |c|
@@ -108,6 +109,7 @@ describe Ballonizer do
108
109
  # definitions to be overriden in need, but who doesn't need a *_example
109
110
  # counterpart (are so simple that clone and change isn't pratical)
110
111
  let (:mime_type) { 'application/xhtml+xml' }
112
+ let (:ballonize_page_settings_arg) { {} }
111
113
 
112
114
  # Definitions ending with '_example' are to be cloned and defined in a
113
115
  # context without the sufix. Definitions without the sufix are used in the
@@ -163,9 +165,6 @@ describe Ballonizer do
163
165
  let (:page_url_example) do
164
166
  'http://comic-translation.com/tr/pt-BR/a_comic/'
165
167
  end
166
- let (:settings_example) do
167
- {}
168
- end
169
168
  let (:submit_json_example) do
170
169
  '{"http://imgs.xkcd.com/comics/cells.png":[{"left":0,"top":0,"width":1,"height":0.23837209302325582,"font_size":15,"text":"When you see a claim that a common drug or vitamin \"kills cancer cells in a petri dish\", keep in mind:"},{"left":0.0963302752293578,"top":0.9273255813953488,"width":0.7798165137614679,"height":0.055232558139534885,"font_size":16,"text":"So does a handgun."}]}'
171
170
  end
@@ -180,14 +179,15 @@ describe Ballonizer do
180
179
  let (:env) { env_example }
181
180
  let (:original_page) { original_page_example.to_s }
182
181
  let (:page_url) { page_url_example }
183
- let (:settings) { settings_example }
184
182
  let (:submit_json) { submit_json_example }
185
183
  let (:submit_hash) { submit_hash_example }
186
184
 
187
185
  # Definition who need others (no *_example)
188
186
  let (:instance) { described_class.new(*ballonizer_new_args) }
189
187
  let (:ballonize_page_call) do
190
- lambda { instance.ballonize_page(original_page, page_url, mime_type, settings) }
188
+ lambda { instance.ballonize_page(
189
+ original_page, page_url, mime_type, ballonize_page_settings_arg
190
+ )}
191
191
  end
192
192
  let (:ballonized_page) do
193
193
  ballonize_page_call.call
@@ -273,10 +273,24 @@ describe Ballonizer do
273
273
  })
274
274
  end
275
275
 
276
- it do
276
+ it 'insert the link tag (with the correct path)' do
277
277
  # the example html don't have any link tag, so if there one
278
278
  # it was added by the method
279
279
  should have_tag('link', :with => { type: 'text/css' })
280
+ # we are using xhtml, so we parse as xml
281
+ link_href = Nokogiri::XML(subject).at_css('link').attr('href')
282
+ expect(link_href).to match(/^\/assets\/css\//)
283
+ end
284
+
285
+ context 'but the settings argument override the path' do
286
+ let (:ballonize_page_settings_arg) do
287
+ { css_asset_path_for_link: '/other_assets/css/' }
288
+ end
289
+ it 'use the settings argument path' do
290
+ # we are using xhtml, so we parse as xml
291
+ link_href = Nokogiri::XML(subject).at_css('link').attr('href')
292
+ expect(link_href).to match(/^\/other_assets\/css\//)
293
+ end
280
294
  end
281
295
  end
282
296
  context 'and the settings define to insert js' do
@@ -289,8 +303,35 @@ describe Ballonizer do
289
303
  })
290
304
  end
291
305
 
292
- it do
306
+ it 'insert the script tag (with the correct src)' do
293
307
  should have_tag('script', :with => { type: 'text/javascript' })
308
+ # we are using xhtml, so we parse as xml
309
+ script_src = Nokogiri::XML(subject).at_css('script').attr('src')
310
+ expect(script_src).to match(/^\/assets\/js\//)
311
+ end
312
+
313
+ context 'but the settings argument override the path' do
314
+ let (:ballonize_page_settings_arg) do
315
+ { js_asset_path_for_link: '/other_assets/js/' }
316
+ end
317
+ it 'use the settings argument path' do
318
+ # we are using xhtml, so we parse as xml
319
+ script_src = Nokogiri::XML(subject).at_css('script').attr('src')
320
+ expect(script_src).to match(/^\/other_assets\/js\//)
321
+ end
322
+ end
323
+ end
324
+ context 'and the settings argument override the form_handler_url' do
325
+ let (:ballonize_page_settings_arg) do
326
+ { form_handler_url: '/other_request_handler',
327
+ add_js_for_edition: true,
328
+ add_required_js_libs_for_edition: false
329
+ }
330
+ end
331
+ it 'change the js snippet to use the argument one' do
332
+ # we are using xhtml, so we parse as xml
333
+ script_text = Nokogiri::XML(subject).at_css('script').text
334
+ expect(script_text).to match(/\/other_request_handler/)
294
335
  end
295
336
  end
296
337
  end
@@ -652,7 +693,32 @@ describe Ballonizer do
652
693
  end
653
694
  end
654
695
 
655
- # to be used with #css_html_links and #js_libs_html_links
696
+ describe '#js_load_snippet' do
697
+ subject { instance.js_load_snippet(settings_arg) }
698
+
699
+ let (:settings_arg) { Hash.new }
700
+ let (:ballonizer_settings) do
701
+ ballonizer_settings_example.merge({
702
+ form_handler_url: '/request_handler'
703
+ })
704
+ end
705
+
706
+ it 'return contains the :form_handler_url setting' do
707
+ should match(instance.settings[:form_handler_url])
708
+ end
709
+
710
+ context 'when the settings argument is passed' do
711
+ let (:settings_arg) do
712
+ { form_handler_url: '/other_request_handler' }
713
+ end
714
+
715
+ it 'use the argument one' do
716
+ should match(settings_arg[:form_handler_url])
717
+ should_not match(instance.settings[:form_handler_url])
718
+ end
719
+ end
720
+ end
721
+
656
722
  describe '#css_html_links' do
657
723
  shared_examples 'using settings parameter' do
658
724
  context 'and a path is passed by the settings hash argument' do
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.5.0
4
+ version: 0.5.1
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-17 00:00:00.000000000 Z
11
+ date: 2013-07-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri