wiselinks 0.5.6 → 0.6.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.
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