wiselinks 0.5.6 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,51 @@
1
+ # rcov generated
2
+ coverage
3
+ coverage.data
4
+
5
+ # rdoc generated
6
+ rdoc
7
+
8
+ # yard generated
9
+ doc
10
+ .yardoc
11
+
12
+ # bundler
13
+ .bundle
14
+
15
+ # jeweler generated
16
+ pkg
17
+
18
+ spec/dummy/log/test.log
19
+
20
+ # Have editor/IDE/OS specific files you need to ignore? Consider using a global gitignore:
21
+ #
22
+ # * Create a file at ~/.gitignore
23
+ # * Include files you want ignored
24
+ # * Run: git config --global core.excludesfile ~/.gitignore
25
+ #
26
+ # After doing this, these files will be ignored in all your git projects,
27
+ # saving you from having to 'pollute' every project you touch with them
28
+ #
29
+ # Not sure what to needs to be ignored for particular editors/OSes? Here's some ideas to get you started. (Remember, remove the leading # of the line)
30
+ #
31
+ # For MacOS:
32
+ #
33
+ #.DS_Store
34
+
35
+ # For TextMate
36
+ #*.tmproj
37
+ #tmtags
38
+
39
+ # For emacs:
40
+ #*~
41
+ #\#*
42
+ #.\#*
43
+
44
+ # For vim:
45
+ #*.swp
46
+
47
+ # For redcar:
48
+ #.redcar
49
+
50
+ # For rubinius:
51
+ #*.rbc
data/Gemfile CHANGED
@@ -1,20 +1,3 @@
1
- source "http://rubygems.org"
1
+ source 'https://rubygems.org'
2
2
 
3
- group :development do
4
- gem "shoulda"
5
- gem "rdoc"
6
- gem "bundler"
7
- gem "jeweler"
8
- end
9
-
10
- group :test do
11
- gem 'sqlite3'
12
- gem 'rspec'
13
- gem 'rspec-rails'
14
- gem 'factory_girl'
15
- gem 'faker'
16
- gem 'capybara'
17
- gem 'coffee-rails'
18
-
19
- gem 'rails', '>= 3.2.0'
20
- end
3
+ gemspec
data/Gemfile.lock CHANGED
@@ -1,5 +1,10 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ wiselinks (0.6.0)
5
+
1
6
  GEM
2
- remote: http://rubygems.org/
7
+ remote: https://rubygems.org/
3
8
  specs:
4
9
  actionmailer (3.2.12)
5
10
  actionpack (= 3.2.12)
@@ -28,6 +33,7 @@ GEM
28
33
  activesupport (3.2.12)
29
34
  i18n (~> 0.6)
30
35
  multi_json (~> 1.0)
36
+ addressable (2.3.4)
31
37
  arel (3.0.2)
32
38
  bourne (1.1.2)
33
39
  mocha (= 0.10.5)
@@ -48,6 +54,14 @@ GEM
48
54
  coffee-script-source
49
55
  execjs
50
56
  coffee-script-source (1.5.0)
57
+ colorize (0.5.8)
58
+ coveralls (0.6.7)
59
+ colorize
60
+ multi_json (~> 1.3)
61
+ rest-client
62
+ simplecov (>= 0.7)
63
+ thor
64
+ crack (0.3.2)
51
65
  diff-lcs (1.2.1)
52
66
  erubis (2.7.0)
53
67
  execjs (1.4.0)
@@ -57,14 +71,8 @@ GEM
57
71
  faker (1.1.2)
58
72
  i18n (~> 0.5)
59
73
  ffi (1.4.0)
60
- git (1.2.5)
61
74
  hike (1.2.1)
62
75
  i18n (0.6.4)
63
- jeweler (1.8.4)
64
- bundler (~> 1.0)
65
- git (>= 1.2.5)
66
- rake
67
- rdoc
68
76
  journey (1.0.4)
69
77
  json (1.7.7)
70
78
  mail (2.4.4)
@@ -103,6 +111,8 @@ GEM
103
111
  rake (10.0.3)
104
112
  rdoc (3.12.2)
105
113
  json (~> 1.4)
114
+ rest-client (1.6.7)
115
+ mime-types (>= 1.16)
106
116
  rspec (2.13.0)
107
117
  rspec-core (~> 2.13.0)
108
118
  rspec-expectations (~> 2.13.0)
@@ -131,6 +141,10 @@ GEM
131
141
  shoulda-matchers (1.4.2)
132
142
  activesupport (>= 3.0.0)
133
143
  bourne (~> 1.1.2)
144
+ simplecov (0.7.1)
145
+ multi_json (~> 1.0)
146
+ simplecov-html (~> 0.7.1)
147
+ simplecov-html (0.7.1)
134
148
  sprockets (2.2.2)
135
149
  hike (~> 1.2)
136
150
  multi_json (~> 1.0)
@@ -142,7 +156,10 @@ GEM
142
156
  treetop (1.4.12)
143
157
  polyglot
144
158
  polyglot (>= 0.3.1)
145
- tzinfo (0.3.36)
159
+ tzinfo (0.3.37)
160
+ webmock (1.9.3)
161
+ addressable (>= 2.2.7)
162
+ crack (>= 0.3.2)
146
163
  websocket (1.0.7)
147
164
  xpath (1.0.0)
148
165
  nokogiri (~> 1.3)
@@ -154,12 +171,15 @@ DEPENDENCIES
154
171
  bundler
155
172
  capybara
156
173
  coffee-rails
174
+ coveralls
157
175
  factory_girl
158
176
  faker
159
- jeweler
160
177
  rails (>= 3.2.0)
161
- rdoc
178
+ rake
162
179
  rspec
163
180
  rspec-rails
164
181
  shoulda
182
+ simplecov
165
183
  sqlite3
184
+ webmock (~> 1.9.0)
185
+ wiselinks!
data/README.md CHANGED
@@ -1,9 +1,8 @@
1
- [![Gem Version](https://badge.fury.io/rb/wiselinks.png)](http://badge.fury.io/rb/wiselinks)
2
- [![Build Status](https://travis-ci.org/igor-alexandrov/wiselinks.png?branch=master)](https://travis-ci.org/igor-alexandrov/wiselinks)
1
+ [![Build Status](https://travis-ci.org/igor-alexandrov/wiselinks.png)](https://travis-ci.org/igor-alexandrov/wiselinks)
2
+ [![Code Climate](https://codeclimate.com/github/igor-alexandrov/wiselinks.png)](https://codeclimate.com/github/igor-alexandrov/wiselinks)
3
+ [![Coverage Status](https://coveralls.io/repos/igor-alexandrov/wiselinks/badge.png)](https://coveralls.io/r/igor-alexandrov/wiselinks)
3
4
  [![Dependency Status](https://gemnasium.com/igor-alexandrov/wiselinks.png)](https://gemnasium.com/igor-alexandrov/wiselinks)
4
-
5
-
6
- [![Code Climate](https://codeclimate.com/badge.png)](https://codeclimate.com/github/igor-alexandrov/wiselinks)
5
+ [![Gem Version](https://badge.fury.io/rb/wiselinks.png)](http://badge.fury.io/rb/wiselinks)
7
6
 
8
7
 
9
8
  #Wiselinks
@@ -358,6 +357,24 @@ Of course you can use `wiselinks_title` helper in your own helpers too.
358
357
 
359
358
  Wiselinks follows 30x HTTP redirects. Location is updated in browser with `X-Wiselinks-Url` header that is setting up automatically (in Rails) on every wiselinks request.
360
359
 
360
+ ### Target missing handling
361
+
362
+ By default, if Wiselinks cannot find target that you specified during initialization, it will fail silently. But you can override this behaviour:
363
+
364
+ ```coffeescript
365
+ #= require jquery
366
+ #= require wiselinks
367
+
368
+ $(document).ready ->
369
+ window.wiselinks = new Wiselinks(
370
+ $('something that does not exist'),
371
+ target_missing: 'exception'
372
+ )
373
+ ```
374
+
375
+ `[Wiselinks] Target missing` exception will be thrown. This also works for `data-target` attributes.
376
+
377
+
361
378
  ### Google Analytics and Yandex Metrika
362
379
 
363
380
  If you want to handle these analytics tools, then you should add handler to `page:done` event.
data/Rakefile CHANGED
@@ -1,43 +1,8 @@
1
1
  # encoding: utf-8
2
2
 
3
- require 'rubygems'
4
- require 'bundler'
5
- begin
6
- Bundler.setup(:default, :development)
7
- rescue Bundler::BundlerError => e
8
- $stderr.puts e.message
9
- $stderr.puts "Run `bundle install` to install missing gems"
10
- exit e.status_code
11
- end
12
- require 'rake'
3
+ require 'bundler/gem_tasks'
4
+ require 'rspec/core/rake_task'
13
5
 
14
- require 'jeweler'
15
- Jeweler::Tasks.new do |gem|
16
- # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
17
- gem.name = "wiselinks"
18
- gem.homepage = "http://github.com/igor-alexandrov/wiselinks"
19
- gem.license = "MIT"
20
- gem.summary = %Q{Wiselinks makes following links and submitting some forms in your web application smarter and faster}
21
- gem.email = "igor.alexandrov@gmail.com"
22
- gem.authors = ['Igor Alexandrov', 'Alexey Solilin', 'Julia Egorova']
23
- end
24
- Jeweler::RubygemsDotOrgTasks.new
6
+ RSpec::Core::RakeTask.new('spec')
25
7
 
26
- require 'rake/testtask'
27
- Rake::TestTask.new(:test) do |test|
28
- test.libs << 'lib' << 'test'
29
- test.pattern = 'test/**/*_test.rb'
30
- test.verbose = true
31
- end
32
-
33
- task :default => :test
34
-
35
- require 'rdoc/task'
36
- Rake::RDocTask.new do |rdoc|
37
- version = File.exist?('VERSION') ? File.read('VERSION') : ""
38
-
39
- rdoc.rdoc_dir = 'rdoc'
40
- rdoc.title = "wiselinks #{version}"
41
- rdoc.rdoc_files.include('README*')
42
- rdoc.rdoc_files.include('lib/**/*.rb')
43
- end
8
+ task :default => :spec
@@ -0,0 +1,50 @@
1
+ class Form
2
+ constructor: (@page, @$form) ->
3
+
4
+ process: ->
5
+ $disable = @$form.find('select:not(:disabled),input:not(:disabled)').filter(-> !$(this).val())
6
+
7
+ $disable.attr('disabled', true)
8
+ url = this._url()
9
+ $disable.attr('disabled', false)
10
+
11
+ @page.load(url, @$form.attr("data-target"), this._type())
12
+
13
+ _params: ->
14
+ hash = {}
15
+
16
+ for item in @$form.serializeArray()
17
+ if item.name != 'utf8'
18
+ # if name ends with [], then we try to optimize it
19
+ name = if item.name.indexOf('[]', item.name.length - '[]'.length) != -1
20
+ item.name.substr(0, item.name.length - 2)
21
+ else
22
+ item.name
23
+
24
+ if hash[name]?
25
+ hash[name] = hash[name] + ",#{item.value}"
26
+ else
27
+ hash[name] = item.value
28
+
29
+ hash
30
+
31
+ _type: ->
32
+ if (@$form.attr("data-push") == 'partial') then 'partial' else 'template'
33
+
34
+ _url: ->
35
+ serialized = []
36
+
37
+ # To find out why encodeURIComponent should be used, follow the link:
38
+ # http://stackoverflow.com/questions/75980/best-practice-escape-or-encodeuri-encodeuricomponent
39
+ #
40
+ for key, value of this._params()
41
+ serialized.push("#{key}=#{encodeURIComponent(value)}")
42
+
43
+ serialized = serialized.join('&')
44
+
45
+ url = @$form.attr("action")
46
+ url += "?#{serialized}" if serialized.length > 0
47
+ url
48
+
49
+ window._Wiselinks = {} if window._Wiselinks == undefined
50
+ window._Wiselinks.Form = Form
@@ -0,0 +1,20 @@
1
+ class Link
2
+ constructor: (@page, @$link) ->
3
+
4
+ allows_process: (event) ->
5
+ !(this._cross_origin_link(event.currentTarget) || this._non_standard_click(event))
6
+
7
+ process: ->
8
+ type = if (@$link.attr("data-push") == 'partial') then 'partial' else 'template'
9
+ @page.load(@$link.attr("href"), @$link.attr("data-target"), type)
10
+
11
+ # We split host because IE returns host with port and other browsers not
12
+ #
13
+ _cross_origin_link: (link) ->
14
+ (location.protocol != link.protocol) || (location.host.split(':')[0] != link.host.split(':')[0])
15
+
16
+ _non_standard_click: (event) ->
17
+ event.metaKey || event.ctrlKey || event.shiftKey || event.altKey
18
+
19
+ window._Wiselinks = {} if window._Wiselinks == undefined
20
+ window._Wiselinks.Link = Link
@@ -0,0 +1,88 @@
1
+ #= require _request_manager
2
+
3
+ class Page
4
+ constructor: (@$target, @options) ->
5
+ self = this
6
+
7
+ @template_id = new Date().getTime()
8
+ @request_manager = new _Wiselinks.RequestManager(@options)
9
+
10
+ self._try_target(@$target)
11
+
12
+ if History.emulated.pushState && @options.html4 == true
13
+ if window.location.href.indexOf('#!') == -1 && @options.html4_root_path != null && window.location.pathname != @options.html4_root_path
14
+ window.location.href = "#{window.location.protocol}//#{window.location.host}#{@options.html4_root_path}#!#{window.location.pathname}"
15
+
16
+ if window.location.hash.indexOf('#!') != -1
17
+ self._call(self._make_state(window.location.hash.substring(2)))
18
+
19
+ History.Adapter.bind(
20
+ window,
21
+ "statechange"
22
+ (event, data) ->
23
+ state = History.getState()
24
+
25
+ if self._template_id_changed(state)
26
+ self._call(self._reset_state(state))
27
+ else
28
+ self._call(state)
29
+ )
30
+
31
+ $(document).on(
32
+ 'click', 'a[data-push], a[data-replace]'
33
+ (event) ->
34
+ if (link = new _Wiselinks.Link(self, $(this))).allows_process(event)
35
+ event.preventDefault()
36
+ link.process()
37
+
38
+ return false
39
+ )
40
+
41
+ $(document).on(
42
+ 'submit', 'form[data-push], form[data-replace]'
43
+ (event) ->
44
+ if (form = new _Wiselinks.Form(self, $(this)))
45
+ event.preventDefault()
46
+ form.process()
47
+
48
+ return false
49
+ )
50
+
51
+ load: (url, target, render = 'template') ->
52
+ @template_id = new Date().getTime() if render != 'partial'
53
+
54
+ if target?
55
+ this._try_target($(target))
56
+
57
+ History.pushState({ timestamp: (new Date().getTime()), template_id: @template_id, render: render, target: target, referer: window.location.href }, document.title, url )
58
+
59
+ reload: () ->
60
+ History.replaceState({ timestamp: (new Date().getTime()), template_id: @template_id, render: 'template', referer: window.location.href }, document.title, History.getState().url )
61
+
62
+ _call: (state) ->
63
+ $target = if state.data.target? then $(state.data.target) else @$target
64
+ this.request_manager.call($target, state)
65
+
66
+ _template_id_changed: (state) ->
67
+ !state.data.template_id? || state.data.template_id != @template_id
68
+
69
+ _make_state: (url, target, render = 'template', referer) ->
70
+ {
71
+ url: url
72
+ data:
73
+ target: target
74
+ render: render
75
+ referer: referer
76
+ }
77
+
78
+ _reset_state: (state) ->
79
+ state.data = {} unless state.data?
80
+ state.data.target = null
81
+ state.data.render = 'template'
82
+ state
83
+
84
+ _try_target: ($target) ->
85
+ throw "[Wiselinks] Target missing: `#{$target.selector}`" if $target.length == 0 && @options.target_missing == 'exception'
86
+
87
+ window._Wiselinks = {} if window._Wiselinks == undefined
88
+ window._Wiselinks.Page = Page
@@ -0,0 +1,85 @@
1
+ class RequestManager
2
+ constructor: (@options = {}) ->
3
+
4
+ call: ($target, state) ->
5
+ self = this
6
+
7
+ # If been redirected, just trigger event and exit
8
+ #
9
+ if @redirected
10
+ self._handle_redirect($target, state)
11
+ return
12
+
13
+ # Trigger loading event
14
+ #
15
+ self._loading($target, state)
16
+
17
+ # Perform XHtmlHttpRequest
18
+ #
19
+ $.ajax(
20
+ url: state.url
21
+ headers:
22
+ 'X-Wiselinks': state.data.render
23
+ 'X-Wiselinks-Referer': state.data.referer
24
+
25
+ dataType: "html"
26
+ ).done(
27
+ (data, status, xhr) ->
28
+ url = xhr.getResponseHeader('X-Wiselinks-Url')
29
+
30
+ if self._assets_changed(xhr.getResponseHeader('X-Wiselinks-Assets-Digest'))
31
+ window.location.reload(true)
32
+ else
33
+ if url? && url != window.location.href
34
+ self._redirect_to(url, xhr)
35
+
36
+ $target.html(data)
37
+
38
+ self._title(xhr.getResponseHeader('X-Wiselinks-Title'))
39
+ self._done($target, status, state.url, data)
40
+ ).fail(
41
+ (xhr, status, error) ->
42
+ self._fail($target, status, state.url, error)
43
+ ).always(
44
+ (data_or_xhr, status, xhr_or_error)->
45
+ self._always($target, status, state.url)
46
+ )
47
+
48
+ _assets_changed: (digest) ->
49
+ @options.assets_digest? && @options.assets_digest != digest
50
+
51
+ _handle_redirect: ($target, state) ->
52
+ $(document).trigger('page:redirected', [$target, state.data.render, state.url])
53
+ @redirected = null
54
+
55
+ _redirect_to: (url, xhr) ->
56
+ if ( xhr && xhr.readyState < 4)
57
+ xhr.onreadystatechange = $.noop
58
+ xhr.abort()
59
+
60
+ @redirected = true
61
+
62
+ this._title('Redirecting…')
63
+ History.replaceState(History.getState().data, document.title, url )
64
+
65
+
66
+ _loading: ($target, state) ->
67
+ $(document).trigger('page:loading', [$target, state.data.render, state.url])
68
+
69
+ _done: ($target, status, state, data) ->
70
+ $(document).trigger('page:done', [$target, status, state.url, data])
71
+
72
+ _fail: ($target, status, state, error) ->
73
+ $(document).trigger('page:fail', [$target, status, state.url, error])
74
+
75
+ _always: ($target, status, state) ->
76
+ $(document).trigger('page:always', [$target, status, state.url])
77
+
78
+ _title: (value) ->
79
+ if value?
80
+ $(document).trigger('page:title', decodeURI(value))
81
+ document.title = decodeURI(value) if value?
82
+
83
+
84
+ window._Wiselinks = {} if window._Wiselinks == undefined
85
+ window._Wiselinks.RequestManager = RequestManager
File without changes
@@ -1,195 +1,33 @@
1
- #= require _json2
2
- #= require _history
3
- #= require _history.html4
4
- #= require _history.adapter.jquery.js
1
+ #= require_tree ./lib
5
2
 
6
- String.prototype.ends_with = (suffix) ->
7
- this.indexOf(suffix, this.length - suffix.length) != -1
3
+ #= require _page
4
+ #= require _link
5
+ #= require _form
8
6
 
9
7
  class Wiselinks
10
- constructor: (@$target = $('body'), @options = {}) ->
11
- # Check that JQuery is available
12
- throw "Load jQuery to use Wiselinks" unless window.jQuery?
8
+ constructor: ($target = $('body'), options = {}) ->
9
+ this._try_jquery()
13
10
 
14
- self = this
11
+ if this.enabled()
12
+ options = $.extend(this._defaults(), options)
13
+ @page = new _Wiselinks.Page($target, options)
15
14
 
16
- @options = jQuery.extend(self._defaults(), @options);
17
- @template_id = new Date().getTime()
18
-
19
- if self.enabled()
20
- @assets_digest = $("meta[name='assets-digest']").attr("content")
21
-
22
- if History.emulated.pushState && @options.html4 == true
23
- if window.location.href.indexOf('#!') == -1 && @options.html4_root_path != null && window.location.pathname != @options.html4_root_path
24
- window.location.href = "#{window.location.protocol}//#{window.location.host}#{@options.html4_root_path}#!#{window.location.pathname}"
25
-
26
- if window.location.hash.indexOf('#!') != -1
27
- self._call(self._make_state(window.location.hash.substring(2)))
28
-
29
- History.Adapter.bind(
30
- window,
31
- "statechange"
32
- (event, data) ->
33
- state = History.getState()
34
-
35
- if self._template_id_changed(state)
36
- self._call(self._reset_state(state))
37
- else
38
- self._call(state)
39
- )
40
-
41
- $(document).on(
42
- "submit", "form[data-push], form[data-replace]"
43
- (event) ->
44
- self._process_form($(this))
45
-
46
- event.preventDefault()
47
- return false
48
- )
49
-
50
- $(document).on(
51
- "click", "a[data-push], a[data-replace]"
52
- (event) ->
53
- if self._cross_origin_link(event.currentTarget) || self._non_standard_click(event)
54
- return true;
55
- self._process_link($(this))
56
-
57
- event.preventDefault()
58
- return false
59
- )
60
-
61
15
  enabled: ->
62
16
  !History.emulated.pushState || @options.html4 == true
63
17
 
64
- load: (url, target, render = 'template') ->
65
- @template_id = new Date().getTime() if render != 'partial'
66
- History.pushState({ timestamp: (new Date().getTime()), template_id: @template_id, render: render, target: target, referer: window.location.href }, document.title, url )
18
+ load: (url, target, render = 'template') ->
19
+ @page.load(url, target, render)
67
20
 
68
21
  reload: () ->
69
- History.replaceState({ timestamp: (new Date().getTime()), template_id: @template_id, render: 'template', referer: window.location.href }, document.title, History.getState().url )
70
-
22
+ @page.reload()
23
+
71
24
  _defaults: ->
72
25
  html4: true
73
26
  html4_root_path: '/'
27
+ target_missing: null
28
+ assets_digest: $("meta[name='assets-digest']").attr("content")
74
29
 
75
- _call: (state) ->
76
- self = this
77
-
78
- $target = if state.data.target? then $(state.data.target) else self.$target
79
- $document = $(document)
80
-
81
- if @redirected
82
- $document.trigger('page:redirected', [$target, state.data.render, state.url])
83
- @redirected = null
84
- return
85
-
86
- $document.trigger('page:loading', [$target, state.data.render, state.url])
87
-
88
- $.ajax(
89
- url: state.url
90
- headers:
91
- 'X-Wiselinks': state.data.render
92
- 'X-Wiselinks-Referer': state.data.referer
93
-
94
- dataType: "html"
95
- ).done(
96
- (data, status, xhr) ->
97
- url = xhr.getResponseHeader('X-Wiselinks-Url')
98
-
99
- if self._assets_changed(xhr.getResponseHeader('X-Wiselinks-Assets-Digest'))
100
- window.location.reload(true)
101
- else
102
- self._set_title(xhr)
103
-
104
- if url? && url != window.location.href
105
- if ( xhr && xhr.readyState < 4)
106
- xhr.onreadystatechange = $.noop
107
- xhr.abort()
108
- self.redirected = true
109
- History.replaceState(History.getState().data, document.title, url )
110
-
111
- $target.html(data)
112
- $document.trigger('page:done', [$target, status, state.ur, data])
113
- ).fail(
114
- (xhr, status, error) ->
115
- $document.trigger('page:fail', [$target, status, state.ur, error])
116
- ).always(
117
- (data_or_xhr, status, xhr_or_error)->
118
- $document.trigger('page:always', [$target, status, state.ur])
119
- )
120
-
121
- _process_form: ($form) ->
122
- self = this
123
-
124
- $disable = $form.find(':input[value=""]:not(:disabled)')
125
- $disable.attr('disabled', true);
126
-
127
- params = {}
128
-
129
- for item in $form.serializeArray()
130
- if item.name != 'utf8'
131
- name = if item.name.ends_with('[]')
132
- item.name.substr(0, item.name.length - 2)
133
- else
134
- item.name
30
+ _try_jquery: ->
31
+ throw "[Wiselinks] jQuery is not loaded" unless window.jQuery?
135
32
 
136
- if params[name]?
137
- params[name] = params[name] + ",#{item.value}"
138
- else
139
- params[name] = item.value
140
-
141
- serialized = []
142
- for key of params
143
- serialized.push("#{key}=#{params[key]}")
144
-
145
- serialized = serialized.join('&').replace(/%|!/g, '')
146
-
147
- url = $form.attr("action")
148
- url += "?#{serialized}" if serialized.length > 0
149
-
150
- $disable.attr('disabled', false);
151
-
152
- type = if ($form.attr("data-push") == 'partial') then 'partial' else 'template'
153
-
154
- self.load(url, $form.attr("data-target"), type)
155
-
156
- _process_link: ($link) ->
157
- self = this
158
-
159
- type = if ($link.attr("data-push") == 'partial') then 'partial' else 'template'
160
-
161
- self.load($link.attr("href"), $link.attr("data-target"), type)
162
-
163
- _cross_origin_link: (link) ->
164
- # we split host because IE returns host with port and other browsers not
165
- (location.protocol != link.protocol) || (location.host.split(':')[0] != link.host.split(':')[0])
166
-
167
- _non_standard_click: (event) ->
168
- event.metaKey || event.ctrlKey || event.shiftKey || event.altKey
169
-
170
- _assets_changed: (digest) ->
171
- @assets_digest? && @assets_digest != digest
172
-
173
- _template_id_changed: (state) ->
174
- !state.data.template_id? || state.data.template_id != @template_id
175
-
176
- _set_title: (xhr) ->
177
- value = xhr.getResponseHeader('X-Wiselinks-Title')
178
- document.title = decodeURI(value) if value?
179
-
180
- _make_state: (url, target, render = 'template', referer) ->
181
- {
182
- url: url
183
- data:
184
- target: target
185
- render: render
186
- referer: referer
187
- }
188
-
189
- _reset_state: (state) ->
190
- state.data = {} unless state.data?
191
- state.data.target = null
192
- state.data.render = 'template'
193
- state
194
-
195
33
  window.Wiselinks = Wiselinks
@@ -0,0 +1,12 @@
1
+ # encoding: utf-8
2
+
3
+ module Wiselinks
4
+ module Version
5
+ MAJOR = 0
6
+ MINOR = 6
7
+ PATCH = 0
8
+ BUILD = nil
9
+
10
+ STRING = [MAJOR, MINOR, PATCH, BUILD].compact.join('.')
11
+ end
12
+ end
@@ -52399,3 +52399,18 @@ Connecting to database specified by database.yml
52399
52399
  Processing by ApplicationController#index as HTML
52400
52400
  Rendered application/index.html.erb within layouts/application (3.9ms)
52401
52401
  Completed 200 OK in 24ms (Views: 23.1ms | ActiveRecord: 0.0ms)
52402
+ Started GET "/" for 127.0.0.1 at 2013-05-27 13:05:21 +0400
52403
+ Connecting to database specified by database.yml
52404
+ Processing by ApplicationController#index as HTML
52405
+ Rendered application/index.html.erb within layouts/application (5.1ms)
52406
+ Completed 200 OK in 64ms (Views: 28.3ms | ActiveRecord: 0.0ms)
52407
+ Started GET "/" for 127.0.0.1 at 2013-05-27 13:11:42 +0400
52408
+ Connecting to database specified by database.yml
52409
+ Processing by ApplicationController#index as HTML
52410
+ Rendered application/index.html.erb within layouts/application (4.6ms)
52411
+ Completed 200 OK in 25ms (Views: 24.6ms | ActiveRecord: 0.0ms)
52412
+ Started GET "/" for 127.0.0.1 at 2013-06-01 11:22:33 +0400
52413
+ Connecting to database specified by database.yml
52414
+ Processing by ApplicationController#index as HTML
52415
+ Rendered application/index.html.erb within layouts/application (4.4ms)
52416
+ Completed 200 OK in 26ms (Views: 25.7ms | ActiveRecord: 0.0ms)
@@ -4,19 +4,19 @@ FactoryGirl.define do
4
4
  factory :request, :class => ActionDispatch::Request do |r|
5
5
  trait :wiselinks do
6
6
  after(:build) do |obj|
7
- obj.env['X-Render'] = Faker::Lorem.characters(10)
7
+ obj.env['X-Wiselinks'] = Faker::Lorem.characters(10)
8
8
  end
9
9
  end
10
10
 
11
11
  trait :wiselinks_template do
12
12
  after(:build) do |obj|
13
- obj.env['X-Render'] = 'template'
13
+ obj.env['X-Wiselinks'] = 'template'
14
14
  end
15
15
  end
16
16
 
17
17
  trait :wiselinks_partial do
18
18
  after(:build) do |obj|
19
- obj.env['X-Render'] = 'partial'
19
+ obj.env['X-Wiselinks'] = 'partial'
20
20
  end
21
21
  end
22
22
 
data/wiselinks.gemspec CHANGED
@@ -1,134 +1,38 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
- # -*- encoding: utf-8 -*-
1
+ # encoding: utf-8
5
2
 
6
- Gem::Specification.new do |s|
7
- s.name = "wiselinks"
8
- s.version = "0.5.6"
3
+ lib = File.expand_path('../lib', __FILE__)
4
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
+ require 'wiselinks/version'
9
6
 
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Igor Alexandrov", "Alexey Solilin", "Julia Egorova"]
12
- s.date = "2013-03-28"
13
- s.email = "igor.alexandrov@gmail.com"
14
- s.extra_rdoc_files = [
15
- "LICENSE",
16
- "README.md"
17
- ]
18
- s.files = [
19
- ".document",
20
- ".rspec",
21
- "Gemfile",
22
- "Gemfile.lock",
23
- "LICENSE",
24
- "README.md",
25
- "Rakefile",
26
- "VERSION",
27
- "app/views/layouts/wiselinks.html.erb",
28
- "lib/assets/javascripts/_history.adapter.jquery.js",
29
- "lib/assets/javascripts/_history.html4.js",
30
- "lib/assets/javascripts/_history.js",
31
- "lib/assets/javascripts/_json2.js",
32
- "lib/assets/javascripts/wiselinks.js.coffee",
33
- "lib/wiselinks.rb",
34
- "lib/wiselinks/controller_methods.rb",
35
- "lib/wiselinks/helpers.rb",
36
- "lib/wiselinks/logger.rb",
37
- "lib/wiselinks/rails.rb",
38
- "lib/wiselinks/rendering.rb",
39
- "lib/wiselinks/request.rb",
40
- "spec/cases/helpers_spec.rb",
41
- "spec/cases/request_spec.rb",
42
- "spec/dummy/README.rdoc",
43
- "spec/dummy/Rakefile",
44
- "spec/dummy/app/assets/javascripts/application.js.coffee",
45
- "spec/dummy/app/assets/stylesheets/application.css",
46
- "spec/dummy/app/controllers/application_controller.rb",
47
- "spec/dummy/app/helpers/application_helper.rb",
48
- "spec/dummy/app/mailers/.gitkeep",
49
- "spec/dummy/app/models/.gitkeep",
50
- "spec/dummy/app/views/application/index.html.erb",
51
- "spec/dummy/app/views/layouts/application.html.erb",
52
- "spec/dummy/config.ru",
53
- "spec/dummy/config/application.rb",
54
- "spec/dummy/config/boot.rb",
55
- "spec/dummy/config/database.yml",
56
- "spec/dummy/config/environment.rb",
57
- "spec/dummy/config/environments/development.rb",
58
- "spec/dummy/config/environments/production.rb",
59
- "spec/dummy/config/environments/test.rb",
60
- "spec/dummy/config/initializers/backtrace_silencers.rb",
61
- "spec/dummy/config/initializers/inflections.rb",
62
- "spec/dummy/config/initializers/mime_types.rb",
63
- "spec/dummy/config/initializers/secret_token.rb",
64
- "spec/dummy/config/initializers/session_store.rb",
65
- "spec/dummy/config/initializers/wrap_parameters.rb",
66
- "spec/dummy/config/locales/en.yml",
67
- "spec/dummy/config/routes.rb",
68
- "spec/dummy/lib/assets/.gitkeep",
69
- "spec/dummy/log/.gitkeep",
70
- "spec/dummy/log/development.log",
71
- "spec/dummy/log/test.log",
72
- "spec/dummy/public/404.html",
73
- "spec/dummy/public/422.html",
74
- "spec/dummy/public/500.html",
75
- "spec/dummy/public/assets/application-a98e47eb93026a340a766faf55214702.js",
76
- "spec/dummy/public/assets/application-a98e47eb93026a340a766faf55214702.js.gz",
77
- "spec/dummy/public/assets/application-ecf5beebe0b79251c8be40f0443074f2.css",
78
- "spec/dummy/public/assets/application-ecf5beebe0b79251c8be40f0443074f2.css.gz",
79
- "spec/dummy/public/assets/application.css",
80
- "spec/dummy/public/assets/application.css.gz",
81
- "spec/dummy/public/assets/application.js",
82
- "spec/dummy/public/assets/application.js.gz",
83
- "spec/dummy/public/assets/manifest.yml",
84
- "spec/dummy/public/favicon.ico",
85
- "spec/dummy/public/javascripts/wisepdf.js",
86
- "spec/dummy/public/stylesheets/wisepdf.css",
87
- "spec/dummy/script/rails",
88
- "spec/dummy/tmp/cache/assets/C26/0A0/sprockets%2F52456508a38f02f4559064b24980c87a",
89
- "spec/dummy/tmp/cache/assets/C5E/890/sprockets%2Ffb6525457b6873e6905e2d522548091f",
90
- "spec/dummy/tmp/cache/assets/C80/150/sprockets%2F0d3881005b0646df783d5c24683d34f5",
91
- "spec/dummy/tmp/cache/assets/CD8/370/sprockets%2F357970feca3ac29060c1e3861e2c0953",
92
- "spec/dummy/tmp/cache/assets/CF3/250/sprockets%2F7edb1809ce839a3d290508f935c89f42",
93
- "spec/dummy/tmp/cache/assets/D09/C40/sprockets%2Fcf317b95ed0500b7277e950a9c0c82e0",
94
- "spec/dummy/tmp/cache/assets/D32/A10/sprockets%2F13fe41fee1fe35b49d145bcc06610705",
95
- "spec/dummy/tmp/cache/assets/D45/760/sprockets%2Fbc659a6e09b5025e8be539b0b68f71f2",
96
- "spec/dummy/tmp/cache/assets/D4E/D00/sprockets%2F1a6846f0a837ae2524e2f9ec89e6ef43",
97
- "spec/dummy/tmp/cache/assets/D55/090/sprockets%2F4a21bc343a4696b7603ea4cc25c3c3ba",
98
- "spec/dummy/tmp/cache/assets/D5A/EA0/sprockets%2Fd771ace226fc8215a3572e0aa35bb0d6",
99
- "spec/dummy/tmp/cache/assets/DC2/EB0/sprockets%2F75b4716f479a2acfac51b258fba0c2bd",
100
- "spec/dummy/tmp/cache/assets/DF1/B80/sprockets%2Fcd0ee4f742908cb7223a1e7be4a4ccbc",
101
- "spec/dummy/tmp/cache/assets/E11/4E0/sprockets%2F86e145a39f85cceeaffdff91ebb61449",
102
- "spec/factories/requests.rb",
103
- "spec/helper.rb",
104
- "travis.yml",
105
- "wiselinks.gemspec"
106
- ]
107
- s.homepage = "http://github.com/igor-alexandrov/wiselinks"
108
- s.licenses = ["MIT"]
109
- s.require_paths = ["lib"]
110
- s.rubygems_version = "1.8.24"
111
- s.summary = "Wiselinks makes following links and submitting some forms in your web application smarter and faster"
7
+ Gem::Specification.new do |gem|
8
+ gem.name = 'wiselinks'
9
+ gem.version = Wiselinks::Version::STRING
10
+ gem.authors = ['Igor Alexandrov', 'Alexey Solilin', 'Julia Egorova']
11
+ gem.email = 'igor.alexandrov@gmail.com'
12
+ gem.summary = 'Wiselinks makes following links and submitting some forms in your web application smarter and faster'
13
+ gem.homepage = 'http://github.com/igor-alexandrov/wiselinks'
14
+ gem.licenses = ['MIT']
112
15
 
113
- if s.respond_to? :specification_version then
114
- s.specification_version = 3
16
+ gem.files = `git ls-files`.split($/)
17
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
18
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
19
+ gem.require_paths = ["lib"]
115
20
 
116
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
117
- s.add_development_dependency(%q<shoulda>, [">= 0"])
118
- s.add_development_dependency(%q<rdoc>, [">= 0"])
119
- s.add_development_dependency(%q<bundler>, [">= 0"])
120
- s.add_development_dependency(%q<jeweler>, [">= 0"])
121
- else
122
- s.add_dependency(%q<shoulda>, [">= 0"])
123
- s.add_dependency(%q<rdoc>, [">= 0"])
124
- s.add_dependency(%q<bundler>, [">= 0"])
125
- s.add_dependency(%q<jeweler>, [">= 0"])
126
- end
127
- else
128
- s.add_dependency(%q<shoulda>, [">= 0"])
129
- s.add_dependency(%q<rdoc>, [">= 0"])
130
- s.add_dependency(%q<bundler>, [">= 0"])
131
- s.add_dependency(%q<jeweler>, [">= 0"])
132
- end
133
- end
134
21
 
22
+ gem.add_development_dependency 'rspec'
23
+ gem.add_development_dependency 'webmock', '~> 1.9.0'
24
+ gem.add_development_dependency 'shoulda'
25
+ gem.add_development_dependency 'simplecov'
26
+ gem.add_development_dependency 'coveralls'
27
+ gem.add_development_dependency 'rake'
28
+ gem.add_development_dependency 'bundler'
29
+ gem.add_development_dependency 'sqlite3'
30
+ gem.add_development_dependency 'rspec'
31
+ gem.add_development_dependency 'rspec-rails'
32
+ gem.add_development_dependency 'factory_girl'
33
+ gem.add_development_dependency 'faker'
34
+ gem.add_development_dependency 'capybara'
35
+
36
+ gem.add_development_dependency 'rails', '>= 3.2.0'
37
+ gem.add_development_dependency 'coffee-rails'
38
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wiselinks
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.6
4
+ version: 0.6.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -11,8 +11,40 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2013-03-28 00:00:00.000000000 Z
14
+ date: 2013-06-01 00:00:00.000000000 Z
15
15
  dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: rspec
18
+ requirement: !ruby/object:Gem::Requirement
19
+ none: false
20
+ requirements:
21
+ - - ! '>='
22
+ - !ruby/object:Gem::Version
23
+ version: '0'
24
+ type: :development
25
+ prerelease: false
26
+ version_requirements: !ruby/object:Gem::Requirement
27
+ none: false
28
+ requirements:
29
+ - - ! '>='
30
+ - !ruby/object:Gem::Version
31
+ version: '0'
32
+ - !ruby/object:Gem::Dependency
33
+ name: webmock
34
+ requirement: !ruby/object:Gem::Requirement
35
+ none: false
36
+ requirements:
37
+ - - ~>
38
+ - !ruby/object:Gem::Version
39
+ version: 1.9.0
40
+ type: :development
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ none: false
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: 1.9.0
16
48
  - !ruby/object:Gem::Dependency
17
49
  name: shoulda
18
50
  requirement: !ruby/object:Gem::Requirement
@@ -30,7 +62,39 @@ dependencies:
30
62
  - !ruby/object:Gem::Version
31
63
  version: '0'
32
64
  - !ruby/object:Gem::Dependency
33
- name: rdoc
65
+ name: simplecov
66
+ requirement: !ruby/object:Gem::Requirement
67
+ none: false
68
+ requirements:
69
+ - - ! '>='
70
+ - !ruby/object:Gem::Version
71
+ version: '0'
72
+ type: :development
73
+ prerelease: false
74
+ version_requirements: !ruby/object:Gem::Requirement
75
+ none: false
76
+ requirements:
77
+ - - ! '>='
78
+ - !ruby/object:Gem::Version
79
+ version: '0'
80
+ - !ruby/object:Gem::Dependency
81
+ name: coveralls
82
+ requirement: !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ! '>='
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: !ruby/object:Gem::Requirement
91
+ none: false
92
+ requirements:
93
+ - - ! '>='
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
96
+ - !ruby/object:Gem::Dependency
97
+ name: rake
34
98
  requirement: !ruby/object:Gem::Requirement
35
99
  none: false
36
100
  requirements:
@@ -62,7 +126,119 @@ dependencies:
62
126
  - !ruby/object:Gem::Version
63
127
  version: '0'
64
128
  - !ruby/object:Gem::Dependency
65
- name: jeweler
129
+ name: sqlite3
130
+ requirement: !ruby/object:Gem::Requirement
131
+ none: false
132
+ requirements:
133
+ - - ! '>='
134
+ - !ruby/object:Gem::Version
135
+ version: '0'
136
+ type: :development
137
+ prerelease: false
138
+ version_requirements: !ruby/object:Gem::Requirement
139
+ none: false
140
+ requirements:
141
+ - - ! '>='
142
+ - !ruby/object:Gem::Version
143
+ version: '0'
144
+ - !ruby/object:Gem::Dependency
145
+ name: rspec
146
+ requirement: !ruby/object:Gem::Requirement
147
+ none: false
148
+ requirements:
149
+ - - ! '>='
150
+ - !ruby/object:Gem::Version
151
+ version: '0'
152
+ type: :development
153
+ prerelease: false
154
+ version_requirements: !ruby/object:Gem::Requirement
155
+ none: false
156
+ requirements:
157
+ - - ! '>='
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ - !ruby/object:Gem::Dependency
161
+ name: rspec-rails
162
+ requirement: !ruby/object:Gem::Requirement
163
+ none: false
164
+ requirements:
165
+ - - ! '>='
166
+ - !ruby/object:Gem::Version
167
+ version: '0'
168
+ type: :development
169
+ prerelease: false
170
+ version_requirements: !ruby/object:Gem::Requirement
171
+ none: false
172
+ requirements:
173
+ - - ! '>='
174
+ - !ruby/object:Gem::Version
175
+ version: '0'
176
+ - !ruby/object:Gem::Dependency
177
+ name: factory_girl
178
+ requirement: !ruby/object:Gem::Requirement
179
+ none: false
180
+ requirements:
181
+ - - ! '>='
182
+ - !ruby/object:Gem::Version
183
+ version: '0'
184
+ type: :development
185
+ prerelease: false
186
+ version_requirements: !ruby/object:Gem::Requirement
187
+ none: false
188
+ requirements:
189
+ - - ! '>='
190
+ - !ruby/object:Gem::Version
191
+ version: '0'
192
+ - !ruby/object:Gem::Dependency
193
+ name: faker
194
+ requirement: !ruby/object:Gem::Requirement
195
+ none: false
196
+ requirements:
197
+ - - ! '>='
198
+ - !ruby/object:Gem::Version
199
+ version: '0'
200
+ type: :development
201
+ prerelease: false
202
+ version_requirements: !ruby/object:Gem::Requirement
203
+ none: false
204
+ requirements:
205
+ - - ! '>='
206
+ - !ruby/object:Gem::Version
207
+ version: '0'
208
+ - !ruby/object:Gem::Dependency
209
+ name: capybara
210
+ requirement: !ruby/object:Gem::Requirement
211
+ none: false
212
+ requirements:
213
+ - - ! '>='
214
+ - !ruby/object:Gem::Version
215
+ version: '0'
216
+ type: :development
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ none: false
220
+ requirements:
221
+ - - ! '>='
222
+ - !ruby/object:Gem::Version
223
+ version: '0'
224
+ - !ruby/object:Gem::Dependency
225
+ name: rails
226
+ requirement: !ruby/object:Gem::Requirement
227
+ none: false
228
+ requirements:
229
+ - - ! '>='
230
+ - !ruby/object:Gem::Version
231
+ version: 3.2.0
232
+ type: :development
233
+ prerelease: false
234
+ version_requirements: !ruby/object:Gem::Requirement
235
+ none: false
236
+ requirements:
237
+ - - ! '>='
238
+ - !ruby/object:Gem::Version
239
+ version: 3.2.0
240
+ - !ruby/object:Gem::Dependency
241
+ name: coffee-rails
66
242
  requirement: !ruby/object:Gem::Requirement
67
243
  none: false
68
244
  requirements:
@@ -81,11 +257,10 @@ description:
81
257
  email: igor.alexandrov@gmail.com
82
258
  executables: []
83
259
  extensions: []
84
- extra_rdoc_files:
85
- - LICENSE
86
- - README.md
260
+ extra_rdoc_files: []
87
261
  files:
88
262
  - .document
263
+ - .gitignore
89
264
  - .rspec
90
265
  - Gemfile
91
266
  - Gemfile.lock
@@ -94,10 +269,14 @@ files:
94
269
  - Rakefile
95
270
  - VERSION
96
271
  - app/views/layouts/wiselinks.html.erb
97
- - lib/assets/javascripts/_history.adapter.jquery.js
98
- - lib/assets/javascripts/_history.html4.js
99
- - lib/assets/javascripts/_history.js
100
- - lib/assets/javascripts/_json2.js
272
+ - lib/assets/javascripts/_form.js.coffee
273
+ - lib/assets/javascripts/_link.js.coffee
274
+ - lib/assets/javascripts/_page.js.coffee
275
+ - lib/assets/javascripts/_request_manager.js.coffee
276
+ - lib/assets/javascripts/lib/_history.adapter.jquery.js
277
+ - lib/assets/javascripts/lib/_history.html4.js
278
+ - lib/assets/javascripts/lib/_history.js
279
+ - lib/assets/javascripts/lib/_json2.js
101
280
  - lib/assets/javascripts/wiselinks.js.coffee
102
281
  - lib/wiselinks.rb
103
282
  - lib/wiselinks/controller_methods.rb
@@ -106,6 +285,7 @@ files:
106
285
  - lib/wiselinks/rails.rb
107
286
  - lib/wiselinks/rendering.rb
108
287
  - lib/wiselinks/request.rb
288
+ - lib/wiselinks/version.rb
109
289
  - spec/cases/helpers_spec.rb
110
290
  - spec/cases/request_spec.rb
111
291
  - spec/dummy/README.rdoc
@@ -187,13 +367,16 @@ required_ruby_version: !ruby/object:Gem::Requirement
187
367
  version: '0'
188
368
  segments:
189
369
  - 0
190
- hash: -1894018129892561879
370
+ hash: -4102542331087791928
191
371
  required_rubygems_version: !ruby/object:Gem::Requirement
192
372
  none: false
193
373
  requirements:
194
374
  - - ! '>='
195
375
  - !ruby/object:Gem::Version
196
376
  version: '0'
377
+ segments:
378
+ - 0
379
+ hash: -4102542331087791928
197
380
  requirements: []
198
381
  rubyforge_project:
199
382
  rubygems_version: 1.8.24
@@ -201,4 +384,68 @@ signing_key:
201
384
  specification_version: 3
202
385
  summary: Wiselinks makes following links and submitting some forms in your web application
203
386
  smarter and faster
204
- test_files: []
387
+ test_files:
388
+ - spec/cases/helpers_spec.rb
389
+ - spec/cases/request_spec.rb
390
+ - spec/dummy/README.rdoc
391
+ - spec/dummy/Rakefile
392
+ - spec/dummy/app/assets/javascripts/application.js.coffee
393
+ - spec/dummy/app/assets/stylesheets/application.css
394
+ - spec/dummy/app/controllers/application_controller.rb
395
+ - spec/dummy/app/helpers/application_helper.rb
396
+ - spec/dummy/app/mailers/.gitkeep
397
+ - spec/dummy/app/models/.gitkeep
398
+ - spec/dummy/app/views/application/index.html.erb
399
+ - spec/dummy/app/views/layouts/application.html.erb
400
+ - spec/dummy/config.ru
401
+ - spec/dummy/config/application.rb
402
+ - spec/dummy/config/boot.rb
403
+ - spec/dummy/config/database.yml
404
+ - spec/dummy/config/environment.rb
405
+ - spec/dummy/config/environments/development.rb
406
+ - spec/dummy/config/environments/production.rb
407
+ - spec/dummy/config/environments/test.rb
408
+ - spec/dummy/config/initializers/backtrace_silencers.rb
409
+ - spec/dummy/config/initializers/inflections.rb
410
+ - spec/dummy/config/initializers/mime_types.rb
411
+ - spec/dummy/config/initializers/secret_token.rb
412
+ - spec/dummy/config/initializers/session_store.rb
413
+ - spec/dummy/config/initializers/wrap_parameters.rb
414
+ - spec/dummy/config/locales/en.yml
415
+ - spec/dummy/config/routes.rb
416
+ - spec/dummy/lib/assets/.gitkeep
417
+ - spec/dummy/log/.gitkeep
418
+ - spec/dummy/log/development.log
419
+ - spec/dummy/log/test.log
420
+ - spec/dummy/public/404.html
421
+ - spec/dummy/public/422.html
422
+ - spec/dummy/public/500.html
423
+ - spec/dummy/public/assets/application-a98e47eb93026a340a766faf55214702.js
424
+ - spec/dummy/public/assets/application-a98e47eb93026a340a766faf55214702.js.gz
425
+ - spec/dummy/public/assets/application-ecf5beebe0b79251c8be40f0443074f2.css
426
+ - spec/dummy/public/assets/application-ecf5beebe0b79251c8be40f0443074f2.css.gz
427
+ - spec/dummy/public/assets/application.css
428
+ - spec/dummy/public/assets/application.css.gz
429
+ - spec/dummy/public/assets/application.js
430
+ - spec/dummy/public/assets/application.js.gz
431
+ - spec/dummy/public/assets/manifest.yml
432
+ - spec/dummy/public/favicon.ico
433
+ - spec/dummy/public/javascripts/wisepdf.js
434
+ - spec/dummy/public/stylesheets/wisepdf.css
435
+ - spec/dummy/script/rails
436
+ - spec/dummy/tmp/cache/assets/C26/0A0/sprockets%2F52456508a38f02f4559064b24980c87a
437
+ - spec/dummy/tmp/cache/assets/C5E/890/sprockets%2Ffb6525457b6873e6905e2d522548091f
438
+ - spec/dummy/tmp/cache/assets/C80/150/sprockets%2F0d3881005b0646df783d5c24683d34f5
439
+ - spec/dummy/tmp/cache/assets/CD8/370/sprockets%2F357970feca3ac29060c1e3861e2c0953
440
+ - spec/dummy/tmp/cache/assets/CF3/250/sprockets%2F7edb1809ce839a3d290508f935c89f42
441
+ - spec/dummy/tmp/cache/assets/D09/C40/sprockets%2Fcf317b95ed0500b7277e950a9c0c82e0
442
+ - spec/dummy/tmp/cache/assets/D32/A10/sprockets%2F13fe41fee1fe35b49d145bcc06610705
443
+ - spec/dummy/tmp/cache/assets/D45/760/sprockets%2Fbc659a6e09b5025e8be539b0b68f71f2
444
+ - spec/dummy/tmp/cache/assets/D4E/D00/sprockets%2F1a6846f0a837ae2524e2f9ec89e6ef43
445
+ - spec/dummy/tmp/cache/assets/D55/090/sprockets%2F4a21bc343a4696b7603ea4cc25c3c3ba
446
+ - spec/dummy/tmp/cache/assets/D5A/EA0/sprockets%2Fd771ace226fc8215a3572e0aa35bb0d6
447
+ - spec/dummy/tmp/cache/assets/DC2/EB0/sprockets%2F75b4716f479a2acfac51b258fba0c2bd
448
+ - spec/dummy/tmp/cache/assets/DF1/B80/sprockets%2Fcd0ee4f742908cb7223a1e7be4a4ccbc
449
+ - spec/dummy/tmp/cache/assets/E11/4E0/sprockets%2F86e145a39f85cceeaffdff91ebb61449
450
+ - spec/factories/requests.rb
451
+ - spec/helper.rb