wraith 1.1.1 → 1.1.2
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/.travis.yml +1 -1
- data/README.md +4 -8
- data/{lib/wraith/assets → assets}/invalid.jpg +0 -0
- data/lib/wraith/cli.rb +17 -4
- data/lib/wraith/gallery.rb +79 -65
- data/lib/wraith/gallery_template/gallery_template.erb +6 -6
- data/lib/wraith/images.rb +1 -1
- data/lib/wraith/version.rb +1 -1
- data/templates/assets/invalid.jpg +0 -0
- data/templates/configs/config.yaml +43 -0
- data/templates/javascript/snap.js +85 -0
- metadata +6 -3
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 4b91a9e01056e5ee44ce5a8726152a023023285f
         | 
| 4 | 
            +
              data.tar.gz: 3043cc0f99e7dedee6c0878f09e41ff71f042923
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: e0ea6720ac947da1b0ad1fda376fa288ae3ea58953c8b5cb239b22e08e410df49fd6f89ca8cd3bcd546148c413a29a16de4b7f65dd1a2eb7b10ecf3739a3830a
         | 
| 7 | 
            +
              data.tar.gz: ccec5c11e607f1c3faf657edff070cfff0ba61b6641b135e7f97078290d452a34f0f808ec936ecdc525e08a65d2156cc1b0540aa527f29e6057e445b81076cb0
         | 
    
        data/.travis.yml
    CHANGED
    
    
    
        data/README.md
    CHANGED
    
    | @@ -62,20 +62,16 @@ And then download the PhantomJS binary package from | |
| 62 62 |  | 
| 63 63 | 
             
            Open terminal and run
         | 
| 64 64 |  | 
| 65 | 
            -
                 | 
| 65 | 
            +
                gem install wraith
         | 
| 66 66 |  | 
| 67 | 
            -
            You can then run the following inside the Wraith directory:
         | 
| 67 | 
            +
            You can then run the following inside the Wraith directory to create a template snap.js and config file:
         | 
| 68 68 |  | 
| 69 | 
            -
                 | 
| 70 | 
            -
             | 
| 71 | 
            -
            If you don't have bundler installed, install it :
         | 
| 72 | 
            -
             | 
| 73 | 
            -
                gem install bundler
         | 
| 69 | 
            +
                gem setup
         | 
| 74 70 |  | 
| 75 71 |  | 
| 76 72 | 
             
            Alternatively you can download the install script via curl, this will not create a git repo though.    
         | 
| 77 73 |  | 
| 78 | 
            -
                 | 
| 74 | 
            +
                git clone https://github.com/BBC-News/wraith
         | 
| 79 75 | 
             
                cd wraith
         | 
| 80 76 | 
             
                bundle install    
         | 
| 81 77 |  | 
| 
            File without changes
         | 
    
        data/lib/wraith/cli.rb
    CHANGED
    
    | @@ -7,18 +7,31 @@ require 'wraith/folder' | |
| 7 7 | 
             
            require 'wraith/thumbnails'
         | 
| 8 8 | 
             
            require 'wraith/compare_images'
         | 
| 9 9 | 
             
            require 'wraith/images'
         | 
| 10 | 
            +
            require 'wraith/gallery'
         | 
| 10 11 |  | 
| 11 12 | 
             
            class Wraith::CLI < Thor
         | 
| 13 | 
            +
              include Thor::Actions
         | 
| 12 14 |  | 
| 13 15 | 
             
              attr_accessor :config_name
         | 
| 14 16 |  | 
| 17 | 
            +
              def self.source_root
         | 
| 18 | 
            +
                File.expand_path('../../../templates/',__FILE__)
         | 
| 19 | 
            +
              end
         | 
| 20 | 
            +
             | 
| 21 | 
            +
              desc "setup", "creates config folder and default config"
         | 
| 22 | 
            +
              def setup
         | 
| 23 | 
            +
                template('configs/config.yaml', 'configs/config.yaml')
         | 
| 24 | 
            +
                template('javascript/snap.js', 'javascript/snap.js')
         | 
| 25 | 
            +
                template('assets/invalid.jpg', 'assets/invalid.jpg')
         | 
| 26 | 
            +
              end
         | 
| 27 | 
            +
             | 
| 15 28 | 
             
              desc "reset_shots", "removes all the files in the shots folder"
         | 
| 16 29 | 
             
              def reset_shots(config_name)
         | 
| 17 30 | 
             
                reset = Wraith::FolderManager.new(config_name)
         | 
| 18 31 | 
             
                reset.clear_shots_folder
         | 
| 19 32 | 
             
              end
         | 
| 20 33 |  | 
| 21 | 
            -
              desc " | 
| 34 | 
            +
              desc "folders", "create folders for images"
         | 
| 22 35 | 
             
              def setup_folders(config_name)
         | 
| 23 36 | 
             
                create = Wraith::FolderManager.new(config_name)
         | 
| 24 37 | 
             
                create.create_folders
         | 
| @@ -62,9 +75,9 @@ class Wraith::CLI < Thor | |
| 62 75 |  | 
| 63 76 | 
             
              desc "generate_gallery", "create page for viewing images"
         | 
| 64 77 | 
             
              def generate_gallery(config_name)
         | 
| 65 | 
            -
                 | 
| 66 | 
            -
                 | 
| 67 | 
            -
                 | 
| 78 | 
            +
                gallery = Wraith::GalleryGenerator.new(config_name)
         | 
| 79 | 
            +
                gallery.generate_gallery
         | 
| 80 | 
            +
                puts "Gallery generated"
         | 
| 68 81 | 
             
              end
         | 
| 69 82 |  | 
| 70 83 | 
             
              desc "capture config_name", "A full Wraith job"
         | 
    
        data/lib/wraith/gallery.rb
    CHANGED
    
    | @@ -1,86 +1,100 @@ | |
| 1 | 
            -
            #!/usr/bin/env ruby
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            # Given all the screenshots in the shots/ directory, produces a nice looking
         | 
| 4 | 
            -
            # gallery
         | 
| 5 | 
            -
             | 
| 6 1 | 
             
            require 'erb'
         | 
| 7 2 | 
             
            require 'pp'
         | 
| 8 3 | 
             
            require 'fileutils'
         | 
| 4 | 
            +
            require 'wraith/wraith'
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            class Wraith::GalleryGenerator
         | 
| 7 | 
            +
               attr_reader :wraith
         | 
| 9 8 |  | 
| 10 | 
            -
            MATCH_FILENAME = /(\S+)_(\S+)\.\S+/
         | 
| 11 | 
            -
            TEMPLATE_LOCATION = "lib/wraith/gallery_template/gallery_template.erb"
         | 
| 12 | 
            -
            TEMPLATE_BY_DOMAIN_LOCATION = "lib/wraith/gallery_template/gallery_template.erb"
         | 
| 13 | 
            -
            BOOTSTRAP_LOCATION = "lib/wraith/gallery_template/bootstrap.min.css"
         | 
| 9 | 
            +
              MATCH_FILENAME = /(\S+)_(\S+)\.\S+/
         | 
| 14 10 |  | 
| 15 | 
            -
             | 
| 11 | 
            +
              TEMPLATE_LOCATION = File.expand_path('gallery_template/gallery_template.erb', File.dirname(__FILE__))
         | 
| 12 | 
            +
              TEMPLATE_BY_DOMAIN_LOCATION = File.expand_path('gallery_template/gallery_template.erb', File.dirname(__FILE__))
         | 
| 13 | 
            +
              BOOTSTRAP_LOCATION = File.expand_path('gallery_template/bootstrap.min.css', File.dirname(__FILE__))
         | 
| 14 | 
            +
             | 
| 15 | 
            +
              def initialize(config)
         | 
| 16 | 
            +
                @wraith = Wraith::Wraith.new(config)
         | 
| 17 | 
            +
                @location = wraith.directory
         | 
| 18 | 
            +
              end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
              def parse_directories(dirname)
         | 
| 16 21 | 
             
                dirs = {}
         | 
| 17 22 | 
             
                categories = Dir.foreach(dirname).select do |category|
         | 
| 18 | 
            -
             | 
| 19 | 
            -
             | 
| 20 | 
            -
             | 
| 21 | 
            -
             | 
| 22 | 
            -
             | 
| 23 | 
            -
             | 
| 24 | 
            -
             | 
| 25 | 
            -
             | 
| 26 | 
            -
             | 
| 23 | 
            +
                  if ['.', '..', 'thumbnails'].include? category
         | 
| 24 | 
            +
                    # Ignore special dirs
         | 
| 25 | 
            +
                    false
         | 
| 26 | 
            +
                  elsif File.directory? "#{dirname}/#{category}" then
         | 
| 27 | 
            +
                    # Ignore stray files
         | 
| 28 | 
            +
                    true
         | 
| 29 | 
            +
                  else
         | 
| 30 | 
            +
                    false
         | 
| 31 | 
            +
                  end
         | 
| 27 32 | 
             
                end
         | 
| 28 33 |  | 
| 29 34 | 
             
                categories.each do |category|
         | 
| 30 | 
            -
             | 
| 31 | 
            -
             | 
| 32 | 
            -
             | 
| 33 | 
            -
             | 
| 34 | 
            -
             | 
| 35 | 
            -
             | 
| 36 | 
            -
             | 
| 37 | 
            -
             | 
| 38 | 
            -
             | 
| 39 | 
            -
             | 
| 40 | 
            -
             | 
| 41 | 
            -
             | 
| 42 | 
            -
             | 
| 43 | 
            -
             | 
| 44 | 
            -
             | 
| 45 | 
            -
             | 
| 46 | 
            -
             | 
| 47 | 
            -
             | 
| 48 | 
            -
             | 
| 49 | 
            -
             | 
| 50 | 
            -
             | 
| 51 | 
            -
             | 
| 52 | 
            -
             | 
| 53 | 
            -
             | 
| 54 | 
            -
             | 
| 55 | 
            -
             | 
| 56 | 
            -
             | 
| 57 | 
            -
             | 
| 58 | 
            -
             | 
| 59 | 
            -
             | 
| 60 | 
            -
                        end
         | 
| 35 | 
            +
                  dirs[category] = {}
         | 
| 36 | 
            +
                  Dir.foreach("#{dirname}/#{category}") do |filename|
         | 
| 37 | 
            +
                    match = MATCH_FILENAME.match(filename)
         | 
| 38 | 
            +
                    if not match.nil? then
         | 
| 39 | 
            +
                      size = match[1].to_i
         | 
| 40 | 
            +
                      group = match[2]
         | 
| 41 | 
            +
                      filepath = category + "/" + filename
         | 
| 42 | 
            +
                      thumbnail = "thumbnails/#{category}/#{filename}"
         | 
| 43 | 
            +
             | 
| 44 | 
            +
                      if dirs[category][size].nil? then
         | 
| 45 | 
            +
                        dirs[category][size] = {:variants => []}
         | 
| 46 | 
            +
                      end
         | 
| 47 | 
            +
                      size_dict = dirs[category][size]
         | 
| 48 | 
            +
             | 
| 49 | 
            +
                      case group
         | 
| 50 | 
            +
                        when 'diff'
         | 
| 51 | 
            +
                          size_dict[:diff] = {
         | 
| 52 | 
            +
                              :filename => filepath, :thumb => thumbnail
         | 
| 53 | 
            +
                          }
         | 
| 54 | 
            +
                        when 'data'
         | 
| 55 | 
            +
                          size_dict[:data] = File.read("#{dirname}/#{filepath}")
         | 
| 56 | 
            +
                        else
         | 
| 57 | 
            +
                          size_dict[:variants] << {
         | 
| 58 | 
            +
                              :name => group,
         | 
| 59 | 
            +
                              :filename => filepath,
         | 
| 60 | 
            +
                              :thumb => thumbnail
         | 
| 61 | 
            +
                          }
         | 
| 62 | 
            +
             | 
| 63 | 
            +
                      end
         | 
| 64 | 
            +
                      size_dict[:variants].sort! { |a, b| a[:name] <=> b[:name] }
         | 
| 61 65 | 
             
                    end
         | 
| 66 | 
            +
                  end
         | 
| 62 67 | 
             
                end
         | 
| 63 68 |  | 
| 64 69 | 
             
                return dirs
         | 
| 65 | 
            -
            end
         | 
| 70 | 
            +
              end
         | 
| 66 71 |  | 
| 67 | 
            -
            def generate_html( | 
| 72 | 
            +
              def generate_html(location, directories, template, destination, path)
         | 
| 68 73 | 
             
                template = File.read(template)
         | 
| 69 | 
            -
                 | 
| 74 | 
            +
                locals = {
         | 
| 75 | 
            +
                    :location => location,
         | 
| 76 | 
            +
                    :directories => directories,
         | 
| 77 | 
            +
                    :path => path
         | 
| 78 | 
            +
                }
         | 
| 79 | 
            +
                html = ERB.new(template).result(ErbBinding.new(locals).get_binding)
         | 
| 70 80 | 
             
                File.open(destination, 'w') do |outf|
         | 
| 71 | 
            -
             | 
| 81 | 
            +
                  outf.write(html)
         | 
| 72 82 | 
             
                end
         | 
| 73 | 
            -
            end
         | 
| 83 | 
            +
              end
         | 
| 74 84 |  | 
| 75 | 
            -
            if ARGV.length < 1 then
         | 
| 76 | 
            -
                puts "USAGE: create_gallery.rb <directory>"
         | 
| 77 | 
            -
                exit 1
         | 
| 78 | 
            -
            end
         | 
| 79 85 |  | 
| 80 | 
            -
             | 
| 81 | 
            -
             | 
| 82 | 
            -
            directories = parse_directories(location)
         | 
| 83 | 
            -
            dest  | 
| 86 | 
            +
              def generate_gallery(withPath="")
         | 
| 87 | 
            +
                dest = "#{@location}/gallery.html"
         | 
| 88 | 
            +
                directories = parse_directories(@location);
         | 
| 89 | 
            +
                generate_html(@location, directories, TEMPLATE_BY_DOMAIN_LOCATION, dest, withPath)
         | 
| 90 | 
            +
                FileUtils.cp(BOOTSTRAP_LOCATION, "#{@location}/bootstrap.min.css")
         | 
| 91 | 
            +
             | 
| 92 | 
            +
              end
         | 
| 93 | 
            +
             | 
| 94 | 
            +
              class ErbBinding < OpenStruct
         | 
| 95 | 
            +
                def get_binding
         | 
| 96 | 
            +
                  return binding()
         | 
| 97 | 
            +
                end
         | 
| 98 | 
            +
              end
         | 
| 84 99 |  | 
| 85 | 
            -
             | 
| 86 | 
            -
            FileUtils.cp(BOOTSTRAP_LOCATION, "#{location}/bootstrap.min.css")
         | 
| 100 | 
            +
            end
         | 
| @@ -12,7 +12,7 @@ | |
| 12 12 | 
             
                <body>
         | 
| 13 13 | 
             
                    <div class="container">
         | 
| 14 14 | 
             
                        <div class="row page-header">
         | 
| 15 | 
            -
                            <h1>List of screenshots for <%=  | 
| 15 | 
            +
                            <h1>List of screenshots for <%= location %> </h1>
         | 
| 16 16 | 
             
                        </div>
         | 
| 17 17 | 
             
                        <div class="row">
         | 
| 18 18 | 
             
                            <!-- <%= directories.length %> -->
         | 
| @@ -21,7 +21,7 @@ | |
| 21 21 | 
             
                                    <div class="panel-heading">Screenshots:</div>
         | 
| 22 22 | 
             
                                    <ul class="list-group list-group-flush">
         | 
| 23 23 | 
             
                                        <% directories.keys.sort.each do |dir| %>
         | 
| 24 | 
            -
                                            <li class="list-group-item"><a href="#<%=dir%>"><%=dir%></a></li>
         | 
| 24 | 
            +
                                            <li class="list-group-item"><a href="#<%=path%><%=dir%>"><%=dir%></a></li>
         | 
| 25 25 | 
             
                                        <% end %>
         | 
| 26 26 | 
             
                                    </ul>
         | 
| 27 27 | 
             
                                </div>
         | 
| @@ -37,16 +37,16 @@ | |
| 37 37 | 
             
                                            <h3 class="col-lg-1 text-muted"><%=size%>px</h3>
         | 
| 38 38 | 
             
                                            <% files[:variants].each do |file| %>
         | 
| 39 39 | 
             
                                                <div class="col-lg-3">
         | 
| 40 | 
            -
                                                    <a href="<%=file[:filename]%>">
         | 
| 41 | 
            -
                                                        <img class="short-screenshot img-thumbnail" src="<%=file[:thumb]%>">
         | 
| 40 | 
            +
                                                    <a href="<%=path%>/<%=file[:filename]%>">
         | 
| 41 | 
            +
                                                        <img class="short-screenshot img-thumbnail" src="<%=path%><%=file[:thumb]%>">
         | 
| 42 42 | 
             
                                                    </a>
         | 
| 43 43 | 
             
                                                    <p class="text-center"><%=file[:name]%></p>
         | 
| 44 44 | 
             
                                                </div>
         | 
| 45 45 | 
             
                                            <% end %>
         | 
| 46 46 | 
             
                                            <div class="col-lg-3">
         | 
| 47 47 | 
             
                                                <% if files[:diff] %>
         | 
| 48 | 
            -
                                                    <a href="<%=files[:diff][:filename]%>">
         | 
| 49 | 
            -
                                                        <img class="short-screenshot img-thumbnail" src="<%=files[:diff][:thumb]%>">
         | 
| 48 | 
            +
                                                    <a href="<%=path%>/<%=files[:diff][:filename]%>">
         | 
| 49 | 
            +
                                                        <img class="short-screenshot img-thumbnail" src="<%=path%><%=files[:diff][:thumb]%>">
         | 
| 50 50 | 
             
                                                    </a>
         | 
| 51 51 | 
             
                                                <% end %>
         | 
| 52 52 | 
             
                                                <p class="text-center">diff</p>
         | 
    
        data/lib/wraith/images.rb
    CHANGED
    
    | @@ -11,7 +11,7 @@ class Wraith::Images | |
| 11 11 | 
             
                files = Dir.glob("#{wraith.directory}/*/*.png").sort
         | 
| 12 12 | 
             
                files.each do |filename|
         | 
| 13 13 | 
             
                  if File.stat("#{filename}").size == 0
         | 
| 14 | 
            -
                    FileUtils.cp ' | 
| 14 | 
            +
                    FileUtils.cp 'assets/invalid.jpg', "#{filename}"
         | 
| 15 15 | 
             
                    puts "#{filename} is invalid"
         | 
| 16 16 | 
             
                  end
         | 
| 17 17 | 
             
                end
         | 
    
        data/lib/wraith/version.rb
    CHANGED
    
    
| Binary file | 
| @@ -0,0 +1,43 @@ | |
| 1 | 
            +
            #Headless browser option
         | 
| 2 | 
            +
            browser:
         | 
| 3 | 
            +
              webkit: "phantomjs"
         | 
| 4 | 
            +
              # gecko: "slimerjs"
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            #If you want to have multiple snapping files, set the file name here
         | 
| 7 | 
            +
            snap_file: "javascript/snap.js"
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            # Type the name of the directory that shots will be stored in
         | 
| 10 | 
            +
            directory:
         | 
| 11 | 
            +
              - 'shots'
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            # Add only 2 domains, key will act as a label
         | 
| 14 | 
            +
            domains:
         | 
| 15 | 
            +
              english: "http://www.live.bbc.co.uk/news"
         | 
| 16 | 
            +
              russian: "http://www.live.bbc.co.uk/russian"
         | 
| 17 | 
            +
             | 
| 18 | 
            +
            #Type screen widths below, here are a couple of examples
         | 
| 19 | 
            +
            screen_widths:
         | 
| 20 | 
            +
              - 320
         | 
| 21 | 
            +
              - 600
         | 
| 22 | 
            +
              - 768
         | 
| 23 | 
            +
              - 1024
         | 
| 24 | 
            +
              - 1280
         | 
| 25 | 
            +
             | 
| 26 | 
            +
            #Type page URL paths below, here are a couple of examples
         | 
| 27 | 
            +
            paths:
         | 
| 28 | 
            +
              home: /
         | 
| 29 | 
            +
              uk_index: /uk
         | 
| 30 | 
            +
             | 
| 31 | 
            +
            # If you don't want to name the paths explicitly you can use a yaml
         | 
| 32 | 
            +
            # collection as follows, and names will be derived by replacing / with _
         | 
| 33 | 
            +
            #
         | 
| 34 | 
            +
            # paths:
         | 
| 35 | 
            +
            #  - /imghp
         | 
| 36 | 
            +
            #  - /maps
         | 
| 37 | 
            +
             | 
| 38 | 
            +
            #Amount of fuzz ImageMagick will use
         | 
| 39 | 
            +
            fuzz: '20%'
         | 
| 40 | 
            +
             | 
| 41 | 
            +
            #Set the number of days to keep the site spider file
         | 
| 42 | 
            +
            spider_days:
         | 
| 43 | 
            +
              - 10
         | 
| @@ -0,0 +1,85 @@ | |
| 1 | 
            +
            var system = require('system');
         | 
| 2 | 
            +
            var page = require('webpage').create();
         | 
| 3 | 
            +
            var fs = require('fs');
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            if (system.args.length === 3) {
         | 
| 6 | 
            +
                console.log('Usage: snap.js <some URL> <view port width> <target image name>');
         | 
| 7 | 
            +
                phantom.exit();
         | 
| 8 | 
            +
            }
         | 
| 9 | 
            +
             | 
| 10 | 
            +
            var url = system.args[1];
         | 
| 11 | 
            +
            var image_name = system.args[3];
         | 
| 12 | 
            +
            var view_port_width = system.args[2];
         | 
| 13 | 
            +
            var current_requests = 0;
         | 
| 14 | 
            +
            var last_request_timeout;
         | 
| 15 | 
            +
            var final_timeout;
         | 
| 16 | 
            +
             | 
| 17 | 
            +
             | 
| 18 | 
            +
            page.viewportSize = { width: view_port_width, height: 1500};
         | 
| 19 | 
            +
            page.settings = { loadImages: true, javascriptEnabled: true };
         | 
| 20 | 
            +
             | 
| 21 | 
            +
            // If you want to use additional phantomjs commands, place them here
         | 
| 22 | 
            +
            page.settings.userAgent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.17';
         | 
| 23 | 
            +
             | 
| 24 | 
            +
            // You can place custom headers here, example below.
         | 
| 25 | 
            +
            // page.customHeaders = {
         | 
| 26 | 
            +
             | 
| 27 | 
            +
            //      'X-Candy-OVERRIDE': 'https://api.live.bbc.co.uk/'
         | 
| 28 | 
            +
             
         | 
| 29 | 
            +
            //  };
         | 
| 30 | 
            +
             | 
| 31 | 
            +
            // If you want to set a cookie, just add your details below in the following way.
         | 
| 32 | 
            +
             | 
| 33 | 
            +
            // phantom.addCookie({
         | 
| 34 | 
            +
            //     'name': 'ckns_policy',
         | 
| 35 | 
            +
            //     'value': '111',
         | 
| 36 | 
            +
            //     'domain': '.bbc.co.uk'
         | 
| 37 | 
            +
            // });
         | 
| 38 | 
            +
            // phantom.addCookie({
         | 
| 39 | 
            +
            //     'name': 'locserv',
         | 
| 40 | 
            +
            //     'value': '1#l1#i=6691484:n=Oxford+Circus:h=e@w1#i=8:p=London@d1#1=l:2=e:3=e:4=2@n1#r=40',
         | 
| 41 | 
            +
            //     'domain': '.bbc.co.uk'
         | 
| 42 | 
            +
            // });
         | 
| 43 | 
            +
             | 
| 44 | 
            +
            page.onResourceRequested = function(req) {
         | 
| 45 | 
            +
              current_requests += 1;
         | 
| 46 | 
            +
            };
         | 
| 47 | 
            +
             | 
| 48 | 
            +
            page.onResourceReceived = function(res) {
         | 
| 49 | 
            +
              if (res.stage === 'end') {
         | 
| 50 | 
            +
                current_requests -= 1;
         | 
| 51 | 
            +
                debounced_render();
         | 
| 52 | 
            +
              }
         | 
| 53 | 
            +
            };
         | 
| 54 | 
            +
             | 
| 55 | 
            +
            page.open(url, function(status) {
         | 
| 56 | 
            +
              if (status !== 'success') {
         | 
| 57 | 
            +
                console.log('Error with page ' + url);
         | 
| 58 | 
            +
                phantom.exit();
         | 
| 59 | 
            +
              }
         | 
| 60 | 
            +
            });
         | 
| 61 | 
            +
             | 
| 62 | 
            +
             | 
| 63 | 
            +
            function debounced_render() {
         | 
| 64 | 
            +
              clearTimeout(last_request_timeout);
         | 
| 65 | 
            +
              clearTimeout(final_timeout);
         | 
| 66 | 
            +
             | 
| 67 | 
            +
              // If there's no more ongoing resource requests, wait for 1 second before
         | 
| 68 | 
            +
              // rendering, just in case the page kicks off another request
         | 
| 69 | 
            +
              if (current_requests < 1) {
         | 
| 70 | 
            +
                  clearTimeout(final_timeout);
         | 
| 71 | 
            +
                  last_request_timeout = setTimeout(function() {
         | 
| 72 | 
            +
                      console.log('Snapping ' + url + ' at width ' + view_port_width);
         | 
| 73 | 
            +
                      page.render(image_name);
         | 
| 74 | 
            +
                      phantom.exit();
         | 
| 75 | 
            +
                  }, 1000);
         | 
| 76 | 
            +
              }
         | 
| 77 | 
            +
             | 
| 78 | 
            +
              // Sometimes, straggling requests never make it back, in which
         | 
| 79 | 
            +
              // case, timeout after 5 seconds and render the page anyway
         | 
| 80 | 
            +
              final_timeout = setTimeout(function() {
         | 
| 81 | 
            +
                console.log('Snapping ' + url + ' at width ' + view_port_width);
         | 
| 82 | 
            +
                page.render(image_name);
         | 
| 83 | 
            +
                phantom.exit();
         | 
| 84 | 
            +
              }, 5000);
         | 
| 85 | 
            +
            }
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: wraith
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1.1. | 
| 4 | 
            +
              version: 1.1.2
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Dave Blooman
         | 
| @@ -9,7 +9,7 @@ authors: | |
| 9 9 | 
             
            autorequire: 
         | 
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date: 2014-02- | 
| 12 | 
            +
            date: 2014-02-08 00:00:00.000000000 Z
         | 
| 13 13 | 
             
            dependencies:
         | 
| 14 14 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 15 | 
             
              name: rake
         | 
| @@ -169,12 +169,12 @@ files: | |
| 169 169 | 
             
            - LICENSE
         | 
| 170 170 | 
             
            - README.md
         | 
| 171 171 | 
             
            - Rakefile
         | 
| 172 | 
            +
            - assets/invalid.jpg
         | 
| 172 173 | 
             
            - bin/wraith
         | 
| 173 174 | 
             
            - configs/config.yaml
         | 
| 174 175 | 
             
            - configs/config_nojs.yaml
         | 
| 175 176 | 
             
            - configs/test_config.yaml
         | 
| 176 177 | 
             
            - lib/wraith.rb
         | 
| 177 | 
            -
            - lib/wraith/assets/invalid.jpg
         | 
| 178 178 | 
             
            - lib/wraith/cli.rb
         | 
| 179 179 | 
             
            - lib/wraith/compare_images.rb
         | 
| 180 180 | 
             
            - lib/wraith/crop.rb
         | 
| @@ -192,6 +192,9 @@ files: | |
| 192 192 | 
             
            - lib/wraith/version.rb
         | 
| 193 193 | 
             
            - lib/wraith/wraith.rb
         | 
| 194 194 | 
             
            - spec/wraith_spec.rb
         | 
| 195 | 
            +
            - templates/assets/invalid.jpg
         | 
| 196 | 
            +
            - templates/configs/config.yaml
         | 
| 197 | 
            +
            - templates/javascript/snap.js
         | 
| 195 198 | 
             
            - wraith.gemspec
         | 
| 196 199 | 
             
            homepage: http://responsivenews.co.uk
         | 
| 197 200 | 
             
            licenses:
         |