rails-pretty-logger 0.2.9 → 0.3.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.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +215 -35
  3. data/app/assets/javascripts/rails/pretty/logger/application.js +16 -23
  4. data/app/assets/stylesheets/rails/pretty/logger/application.css +1 -15
  5. data/app/assets/stylesheets/rails/pretty/logger/dashboards.css +463 -141
  6. data/app/assets/stylesheets/rails/pretty/logger/list.css +1 -94
  7. data/app/controllers/rails/pretty/logger/application_controller.rb +31 -0
  8. data/app/controllers/rails/pretty/logger/dashboards_controller.rb +9 -4
  9. data/app/controllers/rails/pretty/logger/hourly_logs_controller.rb +36 -4
  10. data/app/helpers/rails/pretty/logger/application_helper.rb +32 -0
  11. data/app/helpers/rails/pretty/logger/dashboards_helper.rb +114 -14
  12. data/app/views/layouts/rails/pretty/logger/application.html.erb +9 -8
  13. data/app/views/partials/_error_pagination.html.erb +12 -10
  14. data/app/views/partials/_log_entries.html.erb +5 -0
  15. data/app/views/partials/_log_filters.html.erb +14 -0
  16. data/app/views/partials/_pretyyloggernavbar.html.erb +14 -9
  17. data/app/views/rails/pretty/logger/dashboards/index.html.erb +37 -20
  18. data/app/views/rails/pretty/logger/dashboards/logs.html.erb +33 -14
  19. data/app/views/rails/pretty/logger/hourly_logs/index.html.erb +49 -25
  20. data/app/views/rails/pretty/logger/hourly_logs/logs.html.erb +35 -14
  21. data/config/locales/rails_pretty_logger.en.yml +35 -0
  22. data/config/locales/rails_pretty_logger.tr.yml +35 -0
  23. data/lib/generators/rails_pretty_logger/install/install_generator.rb +29 -0
  24. data/lib/generators/rails_pretty_logger/install/templates/rails_pretty_logger.rb +20 -0
  25. data/lib/rails/pretty/logger/active_support_logger.rb +3 -7
  26. data/lib/rails/pretty/logger/config/logger_config.rb +0 -16
  27. data/lib/rails/pretty/logger/configuration.rb +18 -0
  28. data/lib/rails/pretty/logger/console_logger.rb +2 -2
  29. data/lib/rails/pretty/logger/engine.rb +22 -4
  30. data/lib/rails/pretty/logger/rails_logger.rb +62 -41
  31. data/lib/rails/pretty/logger/version.rb +1 -1
  32. data/lib/rails/pretty/logger.rb +547 -31
  33. data/lib/tasks/rails/pretty/logger_tasks.rake +36 -23
  34. metadata +79 -38
  35. data/Rakefile +0 -22
  36. data/app/assets/javascripts/rails/pretty/logger/dashboards.js +0 -2
  37. data/app/assets/javascripts/rails/pretty/logger/list.min.js +0 -2
  38. data/app/models/rails/pretty/logger/application_record.rb +0 -9
  39. data/app/assets/config/{rails_pretty_logger_manifest.js → manifest.js} +1 -1
@@ -1,33 +1,46 @@
1
+ require "fileutils"
2
+
1
3
  desc "Split log with hourly"
2
- task :split_log, [:log_name, :log_path] do |t, arg|
4
+ task :split_log, [:log_name, :log_path] => :environment do |_task, arg|
5
+ log_name = File.basename(arg[:log_name].to_s)
6
+ log_path = arg[:log_path].to_s
3
7
 
4
- start = false
5
- new_path = nil
6
- file_path = nil
8
+ abort "Usage: bin/rails 'split_log[new_log_file_name,/path/to/log.file]'" if log_name.blank? || log_path.blank?
9
+ abort "Log file does not exist: #{log_path}" unless File.file?(log_path)
7
10
 
8
- def get_date(line)
9
- if line.include?("Started")
10
- date_index = line.index("at ")
11
- date = line[date_index .. date_index + 18]
12
- date.to_datetime
13
- end
11
+ parse_date = lambda do |line|
12
+ next unless line.include?("Started")
13
+
14
+ date_index = line.index("at ")
15
+ next unless date_index
16
+
17
+ line[date_index..date_index + 18].to_datetime
18
+ rescue ArgumentError
19
+ nil
14
20
  end
15
21
 
16
- IO.foreach(arg[:log_path]) do |line|
17
- date = get_date(line) rescue nil
18
- if date
19
- start = true
20
- new_path = File.join(Rails.root, 'log', 'hourly', date.strftime('%Y'), date.strftime('%m'), date.strftime('%d'))
21
- FileUtils.mkdir_p new_path unless File.directory?(new_path)
22
- file_path = "#{new_path}/#{arg[:log_name]}.log.#{date.strftime('%Y%m%d_%H00')}"
23
- File.open(file_path, 'a') do |file|
24
- file << line
25
- end
26
- elsif start
27
- File.open(file_path, 'a') do |file|
28
- file << line
22
+ current_file_path = nil
23
+ output = nil
24
+
25
+ begin
26
+ IO.foreach(log_path) do |line|
27
+ if (date = parse_date.call(line))
28
+ new_path = File.join(Rails.root, 'log', 'hourly', date.strftime('%Y'), date.strftime('%m'), date.strftime('%d'))
29
+ file_path = File.join(new_path, "#{log_name}.log.#{date.strftime('%Y%m%d_%H00')}")
30
+
31
+ if file_path != current_file_path
32
+ output&.close
33
+ FileUtils.mkdir_p new_path
34
+ output = File.open(file_path, "a")
35
+ current_file_path = file_path
36
+ end
29
37
  end
38
+
39
+ output << line if output
30
40
  end
41
+ ensure
42
+ output&.close
31
43
  end
44
+
32
45
  puts "It's done"
33
46
  end
metadata CHANGED
@@ -1,72 +1,111 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails-pretty-logger
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.9
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
- - Cem
8
- - Mehmet
9
- autorequire:
7
+ - Cem Baykam
8
+ - Mehmet Celik
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2021-10-04 00:00:00.000000000 Z
11
+ date: 1980-01-01 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
- name: rails
14
+ name: actionpack
16
15
  requirement: !ruby/object:Gem::Requirement
17
16
  requirements:
18
17
  - - ">="
19
18
  - !ruby/object:Gem::Version
20
- version: '5.0'
21
- - - "<="
19
+ version: '7.1'
20
+ - - "<"
22
21
  - !ruby/object:Gem::Version
23
- version: 6.1.4.1
22
+ version: '9.0'
24
23
  type: :runtime
25
24
  prerelease: false
26
25
  version_requirements: !ruby/object:Gem::Requirement
27
26
  requirements:
28
27
  - - ">="
29
28
  - !ruby/object:Gem::Version
30
- version: '5.0'
31
- - - "<="
29
+ version: '7.1'
30
+ - - "<"
32
31
  - !ruby/object:Gem::Version
33
- version: 6.1.4.1
32
+ version: '9.0'
34
33
  - !ruby/object:Gem::Dependency
35
- name: sqlite3
34
+ name: actionview
36
35
  requirement: !ruby/object:Gem::Requirement
37
36
  requirements:
38
- - - "~>"
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '7.1'
40
+ - - "<"
39
41
  - !ruby/object:Gem::Version
40
- version: '1.3'
42
+ version: '9.0'
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
41
47
  - - ">="
42
48
  - !ruby/object:Gem::Version
43
- version: 1.3.6
44
- type: :development
49
+ version: '7.1'
50
+ - - "<"
51
+ - !ruby/object:Gem::Version
52
+ version: '9.0'
53
+ - !ruby/object:Gem::Dependency
54
+ name: activesupport
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ version: '7.1'
60
+ - - "<"
61
+ - !ruby/object:Gem::Version
62
+ version: '9.0'
63
+ type: :runtime
45
64
  prerelease: false
46
65
  version_requirements: !ruby/object:Gem::Requirement
47
66
  requirements:
48
- - - "~>"
67
+ - - ">="
49
68
  - !ruby/object:Gem::Version
50
- version: '1.3'
69
+ version: '7.1'
70
+ - - "<"
71
+ - !ruby/object:Gem::Version
72
+ version: '9.0'
73
+ - !ruby/object:Gem::Dependency
74
+ name: railties
75
+ requirement: !ruby/object:Gem::Requirement
76
+ requirements:
51
77
  - - ">="
52
78
  - !ruby/object:Gem::Version
53
- version: 1.3.6
79
+ version: '7.1'
80
+ - - "<"
81
+ - !ruby/object:Gem::Version
82
+ version: '9.0'
83
+ type: :runtime
84
+ prerelease: false
85
+ version_requirements: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '7.1'
90
+ - - "<"
91
+ - !ruby/object:Gem::Version
92
+ version: '9.0'
54
93
  - !ruby/object:Gem::Dependency
55
- name: rspec-rails
94
+ name: minitest
56
95
  requirement: !ruby/object:Gem::Requirement
57
96
  requirements:
58
97
  - - "~>"
59
98
  - !ruby/object:Gem::Version
60
- version: '3.6'
99
+ version: '5.0'
61
100
  type: :development
62
101
  prerelease: false
63
102
  version_requirements: !ruby/object:Gem::Requirement
64
103
  requirements:
65
104
  - - "~>"
66
105
  - !ruby/object:Gem::Version
67
- version: '3.6'
68
- description: Check and search logs from dashboard, use hightlight to spot easily,
69
- add hourly rotation if needed.
106
+ version: '5.0'
107
+ description: Rails Pretty Logger provides a mounted dashboard for browsing log files,
108
+ highlighting entries, clearing logs, and reading hourly rotated log files.
70
109
  email:
71
110
  - cbaykam@gmail.com
72
111
  - mehmetcelik4@gmail.com
@@ -76,11 +115,8 @@ extra_rdoc_files: []
76
115
  files:
77
116
  - MIT-LICENSE
78
117
  - README.md
79
- - Rakefile
80
- - app/assets/config/rails_pretty_logger_manifest.js
118
+ - app/assets/config/manifest.js
81
119
  - app/assets/javascripts/rails/pretty/logger/application.js
82
- - app/assets/javascripts/rails/pretty/logger/dashboards.js
83
- - app/assets/javascripts/rails/pretty/logger/list.min.js
84
120
  - app/assets/stylesheets/rails/pretty/logger/application.css
85
121
  - app/assets/stylesheets/rails/pretty/logger/dashboards.css
86
122
  - app/assets/stylesheets/rails/pretty/logger/list.css
@@ -89,29 +125,36 @@ files:
89
125
  - app/controllers/rails/pretty/logger/hourly_logs_controller.rb
90
126
  - app/helpers/rails/pretty/logger/application_helper.rb
91
127
  - app/helpers/rails/pretty/logger/dashboards_helper.rb
92
- - app/models/rails/pretty/logger/application_record.rb
93
128
  - app/views/layouts/rails/pretty/logger/application.html.erb
94
129
  - app/views/partials/_error_pagination.html.erb
130
+ - app/views/partials/_log_entries.html.erb
131
+ - app/views/partials/_log_filters.html.erb
95
132
  - app/views/partials/_pretyyloggernavbar.html.erb
96
133
  - app/views/rails/pretty/logger/dashboards/index.html.erb
97
134
  - app/views/rails/pretty/logger/dashboards/logs.html.erb
98
135
  - app/views/rails/pretty/logger/hourly_logs/index.html.erb
99
136
  - app/views/rails/pretty/logger/hourly_logs/logs.html.erb
137
+ - config/locales/rails_pretty_logger.en.yml
138
+ - config/locales/rails_pretty_logger.tr.yml
100
139
  - config/routes.rb
140
+ - lib/generators/rails_pretty_logger/install/install_generator.rb
141
+ - lib/generators/rails_pretty_logger/install/templates/rails_pretty_logger.rb
101
142
  - lib/rails/pretty/logger.rb
102
143
  - lib/rails/pretty/logger/active_support_logger.rb
103
144
  - lib/rails/pretty/logger/config/logger_config.rb
145
+ - lib/rails/pretty/logger/configuration.rb
104
146
  - lib/rails/pretty/logger/console_formatter.rb
105
147
  - lib/rails/pretty/logger/console_logger.rb
106
148
  - lib/rails/pretty/logger/engine.rb
107
149
  - lib/rails/pretty/logger/rails_logger.rb
108
150
  - lib/rails/pretty/logger/version.rb
109
151
  - lib/tasks/rails/pretty/logger_tasks.rake
110
- homepage: https://github.com/kekik/rails-pretty-logger
152
+ homepage: https://github.com/MehmetCelik4/rails-pretty-logger
111
153
  licenses:
112
154
  - MIT
113
- metadata: {}
114
- post_install_message:
155
+ metadata:
156
+ source_code_uri: https://github.com/MehmetCelik4/rails-pretty-logger
157
+ changelog_uri: https://github.com/MehmetCelik4/rails-pretty-logger/releases
115
158
  rdoc_options: []
116
159
  require_paths:
117
160
  - lib
@@ -119,16 +162,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
119
162
  requirements:
120
163
  - - ">="
121
164
  - !ruby/object:Gem::Version
122
- version: 2.2.2
165
+ version: '3.3'
123
166
  required_rubygems_version: !ruby/object:Gem::Requirement
124
167
  requirements:
125
168
  - - ">="
126
169
  - !ruby/object:Gem::Version
127
170
  version: '0'
128
171
  requirements: []
129
- rubygems_version: 3.1.2
130
- signing_key:
172
+ rubygems_version: 3.7.2
131
173
  specification_version: 4
132
- summary: Pretty Logger is a logging framework which can be checked from '/your-web-page/rails-pretty-logger/dashboards',
133
- can also debug easily with highlight method. And can add Hourly log rotation.
174
+ summary: Rails engine for browsing and highlighting application logs.
134
175
  test_files: []
data/Rakefile DELETED
@@ -1,22 +0,0 @@
1
- begin
2
- require 'bundler/setup'
3
- rescue LoadError
4
- puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
5
- end
6
-
7
- require 'rdoc/task'
8
-
9
- RDoc::Task.new(:rdoc) do |rdoc|
10
- rdoc.rdoc_dir = 'rdoc'
11
- rdoc.title = 'Rails::Pretty::Logger'
12
- rdoc.options << '--line-numbers'
13
- rdoc.rdoc_files.include('README.md')
14
- rdoc.rdoc_files.include('lib/**/*.rb')
15
- end
16
-
17
- APP_RAKEFILE = File.expand_path("spec/dummy/Rakefile", __dir__)
18
- load 'rails/tasks/engine.rake'
19
-
20
- load 'rails/tasks/statistics.rake'
21
-
22
- require 'bundler/gem_tasks'
@@ -1,2 +0,0 @@
1
- // Place all the behaviors and hooks related to the matching controller here.
2
- // All this logic will automatically be available in application.js.
@@ -1,2 +0,0 @@
1
- /*! List.js v1.5.0 (http://listjs.com) by Jonny Strömberg (http://javve.com) */
2
- var List=function(t){function e(n){if(r[n])return r[n].exports;var i=r[n]={i:n,l:!1,exports:{}};return t[n].call(i.exports,i,i.exports,e),i.l=!0,i.exports}var r={};return e.m=t,e.c=r,e.i=function(t){return t},e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{configurable:!1,enumerable:!0,get:n})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=11)}([function(t,e,r){function n(t){if(!t||!t.nodeType)throw new Error("A DOM element reference is required");this.el=t,this.list=t.classList}var i=r(4),s=/\s+/;Object.prototype.toString;t.exports=function(t){return new n(t)},n.prototype.add=function(t){if(this.list)return this.list.add(t),this;var e=this.array(),r=i(e,t);return~r||e.push(t),this.el.className=e.join(" "),this},n.prototype.remove=function(t){if(this.list)return this.list.remove(t),this;var e=this.array(),r=i(e,t);return~r&&e.splice(r,1),this.el.className=e.join(" "),this},n.prototype.toggle=function(t,e){return this.list?("undefined"!=typeof e?e!==this.list.toggle(t,e)&&this.list.toggle(t):this.list.toggle(t),this):("undefined"!=typeof e?e?this.add(t):this.remove(t):this.has(t)?this.remove(t):this.add(t),this)},n.prototype.array=function(){var t=this.el.getAttribute("class")||"",e=t.replace(/^\s+|\s+$/g,""),r=e.split(s);return""===r[0]&&r.shift(),r},n.prototype.has=n.prototype.contains=function(t){return this.list?this.list.contains(t):!!~i(this.array(),t)}},function(t,e,r){var n=window.addEventListener?"addEventListener":"attachEvent",i=window.removeEventListener?"removeEventListener":"detachEvent",s="addEventListener"!==n?"on":"",a=r(5);e.bind=function(t,e,r,i){t=a(t);for(var o=0;o<t.length;o++)t[o][n](s+e,r,i||!1)},e.unbind=function(t,e,r,n){t=a(t);for(var o=0;o<t.length;o++)t[o][i](s+e,r,n||!1)}},function(t,e){t.exports=function(t){return function(e,r,n){var i=this;this._values={},this.found=!1,this.filtered=!1;var s=function(e,r,n){if(void 0===r)n?i.values(e,n):i.values(e);else{i.elm=r;var s=t.templater.get(i,e);i.values(s)}};this.values=function(e,r){if(void 0===e)return i._values;for(var n in e)i._values[n]=e[n];r!==!0&&t.templater.set(i,i.values())},this.show=function(){t.templater.show(i)},this.hide=function(){t.templater.hide(i)},this.matching=function(){return t.filtered&&t.searched&&i.found&&i.filtered||t.filtered&&!t.searched&&i.filtered||!t.filtered&&t.searched&&i.found||!t.filtered&&!t.searched},this.visible=function(){return!(!i.elm||i.elm.parentNode!=t.list)},s(e,r,n)}}},function(t,e){var r=function(t,e,r){return r?t.getElementsByClassName(e)[0]:t.getElementsByClassName(e)},n=function(t,e,r){return e="."+e,r?t.querySelector(e):t.querySelectorAll(e)},i=function(t,e,r){for(var n=[],i="*",s=t.getElementsByTagName(i),a=s.length,o=new RegExp("(^|\\s)"+e+"(\\s|$)"),l=0,u=0;l<a;l++)if(o.test(s[l].className)){if(r)return s[l];n[u]=s[l],u++}return n};t.exports=function(){return function(t,e,s,a){return a=a||{},a.test&&a.getElementsByClassName||!a.test&&document.getElementsByClassName?r(t,e,s):a.test&&a.querySelector||!a.test&&document.querySelector?n(t,e,s):i(t,e,s)}}()},function(t,e){var r=[].indexOf;t.exports=function(t,e){if(r)return t.indexOf(e);for(var n=0;n<t.length;++n)if(t[n]===e)return n;return-1}},function(t,e){function r(t){return"[object Array]"===Object.prototype.toString.call(t)}t.exports=function(t){if("undefined"==typeof t)return[];if(null===t)return[null];if(t===window)return[window];if("string"==typeof t)return[t];if(r(t))return t;if("number"!=typeof t.length)return[t];if("function"==typeof t&&t instanceof Function)return[t];for(var e=[],n=0;n<t.length;n++)(Object.prototype.hasOwnProperty.call(t,n)||n in t)&&e.push(t[n]);return e.length?e:[]}},function(t,e){t.exports=function(t){return t=void 0===t?"":t,t=null===t?"":t,t=t.toString()}},function(t,e){t.exports=function(t){for(var e,r=Array.prototype.slice.call(arguments,1),n=0;e=r[n];n++)if(e)for(var i in e)t[i]=e[i];return t}},function(t,e){t.exports=function(t){var e=function(r,n,i){var s=r.splice(0,50);i=i||[],i=i.concat(t.add(s)),r.length>0?setTimeout(function(){e(r,n,i)},1):(t.update(),n(i))};return e}},function(t,e){t.exports=function(t){return t.handlers.filterStart=t.handlers.filterStart||[],t.handlers.filterComplete=t.handlers.filterComplete||[],function(e){if(t.trigger("filterStart"),t.i=1,t.reset.filter(),void 0===e)t.filtered=!1;else{t.filtered=!0;for(var r=t.items,n=0,i=r.length;n<i;n++){var s=r[n];e(s)?s.filtered=!0:s.filtered=!1}}return t.update(),t.trigger("filterComplete"),t.visibleItems}}},function(t,e,r){var n=(r(0),r(1)),i=r(7),s=r(6),a=r(3),o=r(19);t.exports=function(t,e){e=e||{},e=i({location:0,distance:100,threshold:.4,multiSearch:!0,searchClass:"fuzzy-search"},e);var r={search:function(n,i){for(var s=e.multiSearch?n.replace(/ +$/,"").split(/ +/):[n],a=0,o=t.items.length;a<o;a++)r.item(t.items[a],i,s)},item:function(t,e,n){for(var i=!0,s=0;s<n.length;s++){for(var a=!1,o=0,l=e.length;o<l;o++)r.values(t.values(),e[o],n[s])&&(a=!0);a||(i=!1)}t.found=i},values:function(t,r,n){if(t.hasOwnProperty(r)){var i=s(t[r]).toLowerCase();if(o(i,n,e))return!0}return!1}};return n.bind(a(t.listContainer,e.searchClass),"keyup",function(e){var n=e.target||e.srcElement;t.search(n.value,r.search)}),function(e,n){t.search(e,n,r.search)}}},function(t,e,r){var n=r(18),i=r(3),s=r(7),a=r(4),o=r(1),l=r(6),u=r(0),c=r(17),f=r(5);t.exports=function(t,e,h){var d,v=this,m=r(2)(v),g=r(8)(v),p=r(12)(v);d={start:function(){v.listClass="list",v.searchClass="search",v.sortClass="sort",v.page=1e4,v.i=1,v.items=[],v.visibleItems=[],v.matchingItems=[],v.searched=!1,v.filtered=!1,v.searchColumns=void 0,v.handlers={updated:[]},v.valueNames=[],v.utils={getByClass:i,extend:s,indexOf:a,events:o,toString:l,naturalSort:n,classes:u,getAttribute:c,toArray:f},v.utils.extend(v,e),v.listContainer="string"==typeof t?document.getElementById(t):t,v.listContainer&&(v.list=i(v.listContainer,v.listClass,!0),v.parse=r(13)(v),v.templater=r(16)(v),v.search=r(14)(v),v.filter=r(9)(v),v.sort=r(15)(v),v.fuzzySearch=r(10)(v,e.fuzzySearch),this.handlers(),this.items(),this.pagination(),v.update())},handlers:function(){for(var t in v.handlers)v[t]&&v.on(t,v[t])},items:function(){v.parse(v.list),void 0!==h&&v.add(h)},pagination:function(){if(void 0!==e.pagination){e.pagination===!0&&(e.pagination=[{}]),void 0===e.pagination[0]&&(e.pagination=[e.pagination]);for(var t=0,r=e.pagination.length;t<r;t++)p(e.pagination[t])}}},this.reIndex=function(){v.items=[],v.visibleItems=[],v.matchingItems=[],v.searched=!1,v.filtered=!1,v.parse(v.list)},this.toJSON=function(){for(var t=[],e=0,r=v.items.length;e<r;e++)t.push(v.items[e].values());return t},this.add=function(t,e){if(0!==t.length){if(e)return void g(t,e);var r=[],n=!1;void 0===t[0]&&(t=[t]);for(var i=0,s=t.length;i<s;i++){var a=null;n=v.items.length>v.page,a=new m(t[i],void 0,n),v.items.push(a),r.push(a)}return v.update(),r}},this.show=function(t,e){return this.i=t,this.page=e,v.update(),v},this.remove=function(t,e,r){for(var n=0,i=0,s=v.items.length;i<s;i++)v.items[i].values()[t]==e&&(v.templater.remove(v.items[i],r),v.items.splice(i,1),s--,i--,n++);return v.update(),n},this.get=function(t,e){for(var r=[],n=0,i=v.items.length;n<i;n++){var s=v.items[n];s.values()[t]==e&&r.push(s)}return r},this.size=function(){return v.items.length},this.clear=function(){return v.templater.clear(),v.items=[],v},this.on=function(t,e){return v.handlers[t].push(e),v},this.off=function(t,e){var r=v.handlers[t],n=a(r,e);return n>-1&&r.splice(n,1),v},this.trigger=function(t){for(var e=v.handlers[t].length;e--;)v.handlers[t][e](v);return v},this.reset={filter:function(){for(var t=v.items,e=t.length;e--;)t[e].filtered=!1;return v},search:function(){for(var t=v.items,e=t.length;e--;)t[e].found=!1;return v}},this.update=function(){var t=v.items,e=t.length;v.visibleItems=[],v.matchingItems=[],v.templater.clear();for(var r=0;r<e;r++)t[r].matching()&&v.matchingItems.length+1>=v.i&&v.visibleItems.length<v.page?(t[r].show(),v.visibleItems.push(t[r]),v.matchingItems.push(t[r])):t[r].matching()?(v.matchingItems.push(t[r]),t[r].hide()):t[r].hide();return v.trigger("updated"),v},d.start()}},function(t,e,r){var n=r(0),i=r(1),s=r(11);t.exports=function(t){var e=function(e,i){var s,o=t.matchingItems.length,l=t.i,u=t.page,c=Math.ceil(o/u),f=Math.ceil(l/u),h=i.innerWindow||2,d=i.left||i.outerWindow||0,v=i.right||i.outerWindow||0;v=c-v,e.clear();for(var m=1;m<=c;m++){var g=f===m?"active":"";r.number(m,d,v,f,h)?(s=e.add({page:m,dotted:!1})[0],g&&n(s.elm).add(g),a(s.elm,m,u)):r.dotted(e,m,d,v,f,h,e.size())&&(s=e.add({page:"...",dotted:!0})[0],n(s.elm).add("disabled"))}},r={number:function(t,e,r,n,i){return this.left(t,e)||this.right(t,r)||this.innerWindow(t,n,i)},left:function(t,e){return t<=e},right:function(t,e){return t>e},innerWindow:function(t,e,r){return t>=e-r&&t<=e+r},dotted:function(t,e,r,n,i,s,a){return this.dottedLeft(t,e,r,n,i,s)||this.dottedRight(t,e,r,n,i,s,a)},dottedLeft:function(t,e,r,n,i,s){return e==r+1&&!this.innerWindow(e,i,s)&&!this.right(e,n)},dottedRight:function(t,e,r,n,i,s,a){return!t.items[a-1].values().dotted&&(e==n&&!this.innerWindow(e,i,s)&&!this.right(e,n))}},a=function(e,r,n){i.bind(e,"click",function(){t.show((r-1)*n+1,n)})};return function(r){var n=new s(t.listContainer.id,{listClass:r.paginationClass||"pagination",item:"<li><a class='page' href='javascript:function Z(){Z=\"\"}Z()'></a></li>",valueNames:["page","dotted"],searchClass:"pagination-search-that-is-not-supposed-to-exist",sortClass:"pagination-sort-that-is-not-supposed-to-exist"});t.on("updated",function(){e(n,r)}),e(n,r)}}},function(t,e,r){t.exports=function(t){var e=r(2)(t),n=function(t){for(var e=t.childNodes,r=[],n=0,i=e.length;n<i;n++)void 0===e[n].data&&r.push(e[n]);return r},i=function(r,n){for(var i=0,s=r.length;i<s;i++)t.items.push(new e(n,r[i]))},s=function(e,r){var n=e.splice(0,50);i(n,r),e.length>0?setTimeout(function(){s(e,r)},1):(t.update(),t.trigger("parseComplete"))};return t.handlers.parseComplete=t.handlers.parseComplete||[],function(){var e=n(t.list),r=t.valueNames;t.indexAsync?s(e,r):i(e,r)}}},function(t,e){t.exports=function(t){var e,r,n,i,s={resetList:function(){t.i=1,t.templater.clear(),i=void 0},setOptions:function(t){2==t.length&&t[1]instanceof Array?r=t[1]:2==t.length&&"function"==typeof t[1]?(r=void 0,i=t[1]):3==t.length?(r=t[1],i=t[2]):r=void 0},setColumns:function(){0!==t.items.length&&void 0===r&&(r=void 0===t.searchColumns?s.toArray(t.items[0].values()):t.searchColumns)},setSearchString:function(e){e=t.utils.toString(e).toLowerCase(),e=e.replace(/[-[\]{}()*+?.,\\^$|#]/g,"\\$&"),n=e},toArray:function(t){var e=[];for(var r in t)e.push(r);return e}},a={list:function(){for(var e=0,r=t.items.length;e<r;e++)a.item(t.items[e])},item:function(t){t.found=!1;for(var e=0,n=r.length;e<n;e++)if(a.values(t.values(),r[e]))return void(t.found=!0)},values:function(r,i){return!!(r.hasOwnProperty(i)&&(e=t.utils.toString(r[i]).toLowerCase(),""!==n&&e.search(n)>-1))},reset:function(){t.reset.search(),t.searched=!1}},o=function(e){return t.trigger("searchStart"),s.resetList(),s.setSearchString(e),s.setOptions(arguments),s.setColumns(),""===n?a.reset():(t.searched=!0,i?i(n,r):a.list()),t.update(),t.trigger("searchComplete"),t.visibleItems};return t.handlers.searchStart=t.handlers.searchStart||[],t.handlers.searchComplete=t.handlers.searchComplete||[],t.utils.events.bind(t.utils.getByClass(t.listContainer,t.searchClass),"keyup",function(e){var r=e.target||e.srcElement,n=""===r.value&&!t.searched;n||o(r.value)}),t.utils.events.bind(t.utils.getByClass(t.listContainer,t.searchClass),"input",function(t){var e=t.target||t.srcElement;""===e.value&&o("")}),o}},function(t,e){t.exports=function(t){var e={els:void 0,clear:function(){for(var r=0,n=e.els.length;r<n;r++)t.utils.classes(e.els[r]).remove("asc"),t.utils.classes(e.els[r]).remove("desc")},getOrder:function(e){var r=t.utils.getAttribute(e,"data-order");return"asc"==r||"desc"==r?r:t.utils.classes(e).has("desc")?"asc":t.utils.classes(e).has("asc")?"desc":"asc"},getInSensitive:function(e,r){var n=t.utils.getAttribute(e,"data-insensitive");"false"===n?r.insensitive=!1:r.insensitive=!0},setOrder:function(r){for(var n=0,i=e.els.length;n<i;n++){var s=e.els[n];if(t.utils.getAttribute(s,"data-sort")===r.valueName){var a=t.utils.getAttribute(s,"data-order");"asc"==a||"desc"==a?a==r.order&&t.utils.classes(s).add(r.order):t.utils.classes(s).add(r.order)}}}},r=function(){t.trigger("sortStart");var r={},n=arguments[0].currentTarget||arguments[0].srcElement||void 0;n?(r.valueName=t.utils.getAttribute(n,"data-sort"),e.getInSensitive(n,r),r.order=e.getOrder(n)):(r=arguments[1]||r,r.valueName=arguments[0],r.order=r.order||"asc",r.insensitive="undefined"==typeof r.insensitive||r.insensitive),e.clear(),e.setOrder(r);var i,s=r.sortFunction||t.sortFunction||null,a="desc"===r.order?-1:1;i=s?function(t,e){return s(t,e,r)*a}:function(e,n){var i=t.utils.naturalSort;return i.alphabet=t.alphabet||r.alphabet||void 0,!i.alphabet&&r.insensitive&&(i=t.utils.naturalSort.caseInsensitive),i(e.values()[r.valueName],n.values()[r.valueName])*a},t.items.sort(i),t.update(),t.trigger("sortComplete")};return t.handlers.sortStart=t.handlers.sortStart||[],t.handlers.sortComplete=t.handlers.sortComplete||[],e.els=t.utils.getByClass(t.listContainer,t.sortClass),t.utils.events.bind(e.els,"click",r),t.on("searchStart",e.clear),t.on("filterStart",e.clear),r}},function(t,e){var r=function(t){var e,r=this,n=function(){e=r.getItemSource(t.item),e&&(e=r.clearSourceItem(e,t.valueNames))};this.clearSourceItem=function(e,r){for(var n=0,i=r.length;n<i;n++){var s;if(r[n].data)for(var a=0,o=r[n].data.length;a<o;a++)e.setAttribute("data-"+r[n].data[a],"");else r[n].attr&&r[n].name?(s=t.utils.getByClass(e,r[n].name,!0),s&&s.setAttribute(r[n].attr,"")):(s=t.utils.getByClass(e,r[n],!0),s&&(s.innerHTML=""));s=void 0}return e},this.getItemSource=function(e){if(void 0===e){for(var r=t.list.childNodes,n=0,i=r.length;n<i;n++)if(void 0===r[n].data)return r[n].cloneNode(!0)}else{if(/<tr[\s>]/g.exec(e)){var s=document.createElement("tbody");return s.innerHTML=e,s.firstChild}if(e.indexOf("<")!==-1){var a=document.createElement("div");return a.innerHTML=e,a.firstChild}var o=document.getElementById(t.item);if(o)return o}},this.get=function(e,n){r.create(e);for(var i={},s=0,a=n.length;s<a;s++){var o;if(n[s].data)for(var l=0,u=n[s].data.length;l<u;l++)i[n[s].data[l]]=t.utils.getAttribute(e.elm,"data-"+n[s].data[l]);else n[s].attr&&n[s].name?(o=t.utils.getByClass(e.elm,n[s].name,!0),i[n[s].name]=o?t.utils.getAttribute(o,n[s].attr):""):(o=t.utils.getByClass(e.elm,n[s],!0),i[n[s]]=o?o.innerHTML:"");o=void 0}return i},this.set=function(e,n){var i=function(e){for(var r=0,n=t.valueNames.length;r<n;r++)if(t.valueNames[r].data){for(var i=t.valueNames[r].data,s=0,a=i.length;s<a;s++)if(i[s]===e)return{data:e}}else{if(t.valueNames[r].attr&&t.valueNames[r].name&&t.valueNames[r].name==e)return t.valueNames[r];if(t.valueNames[r]===e)return e}},s=function(r,n){var s,a=i(r);a&&(a.data?e.elm.setAttribute("data-"+a.data,n):a.attr&&a.name?(s=t.utils.getByClass(e.elm,a.name,!0),s&&s.setAttribute(a.attr,n)):(s=t.utils.getByClass(e.elm,a,!0),s&&(s.innerHTML=n)),s=void 0)};if(!r.create(e))for(var a in n)n.hasOwnProperty(a)&&s(a,n[a])},this.create=function(t){if(void 0!==t.elm)return!1;if(void 0===e)throw new Error("The list need to have at list one item on init otherwise you'll have to add a template.");var n=e.cloneNode(!0);return n.removeAttribute("id"),t.elm=n,r.set(t,t.values()),!0},this.remove=function(e){e.elm.parentNode===t.list&&t.list.removeChild(e.elm)},this.show=function(e){r.create(e),t.list.appendChild(e.elm)},this.hide=function(e){void 0!==e.elm&&e.elm.parentNode===t.list&&t.list.removeChild(e.elm)},this.clear=function(){if(t.list.hasChildNodes())for(;t.list.childNodes.length>=1;)t.list.removeChild(t.list.firstChild)},n()};t.exports=function(t){return new r(t)}},function(t,e){t.exports=function(t,e){var r=t.getAttribute&&t.getAttribute(e)||null;if(!r)for(var n=t.attributes,i=n.length,s=0;s<i;s++)void 0!==e[s]&&e[s].nodeName===e&&(r=e[s].nodeValue);return r}},function(t,e,r){"use strict";function n(t){return t>=48&&t<=57}function i(t,e){for(var r=(t+="").length,i=(e+="").length,s=0,l=0;s<r&&l<i;){var u=t.charCodeAt(s),c=e.charCodeAt(l);if(n(u)){if(!n(c))return u-c;for(var f=s,h=l;48===u&&++f<r;)u=t.charCodeAt(f);for(;48===c&&++h<i;)c=e.charCodeAt(h);for(var d=f,v=h;d<r&&n(t.charCodeAt(d));)++d;for(;v<i&&n(e.charCodeAt(v));)++v;var m=d-f-v+h;if(m)return m;for(;f<d;)if(m=t.charCodeAt(f++)-e.charCodeAt(h++))return m;s=d,l=v}else{if(u!==c)return u<o&&c<o&&a[u]!==-1&&a[c]!==-1?a[u]-a[c]:u-c;++s,++l}}return r-i}var s,a,o=0;i.caseInsensitive=i.i=function(t,e){return i((""+t).toLowerCase(),(""+e).toLowerCase())},Object.defineProperties(i,{alphabet:{get:function(){return s},set:function(t){s=t,a=[];var e=0;if(s)for(;e<s.length;e++)a[s.charCodeAt(e)]=e;for(o=a.length,e=0;e<o;e++)void 0===a[e]&&(a[e]=-1)}}}),t.exports=i},function(t,e){t.exports=function(t,e,r){function n(t,r){var n=t/e.length,i=Math.abs(o-r);return s?n+i/s:i?1:n}var i=r.location||0,s=r.distance||100,a=r.threshold||.4;if(e===t)return!0;if(e.length>32)return!1;var o=i,l=function(){var t,r={};for(t=0;t<e.length;t++)r[e.charAt(t)]=0;for(t=0;t<e.length;t++)r[e.charAt(t)]|=1<<e.length-t-1;return r}(),u=a,c=t.indexOf(e,o);c!=-1&&(u=Math.min(n(0,c),u),c=t.lastIndexOf(e,o+e.length),c!=-1&&(u=Math.min(n(0,c),u)));var f=1<<e.length-1;c=-1;for(var h,d,v,m=e.length+t.length,g=0;g<e.length;g++){for(h=0,d=m;h<d;)n(g,o+d)<=u?h=d:m=d,d=Math.floor((m-h)/2+h);m=d;var p=Math.max(1,o-d+1),C=Math.min(o+d,t.length)+e.length,y=Array(C+2);y[C+1]=(1<<g)-1;for(var b=C;b>=p;b--){var w=l[t.charAt(b-1)];if(0===g?y[b]=(y[b+1]<<1|1)&w:y[b]=(y[b+1]<<1|1)&w|((v[b+1]|v[b])<<1|1)|v[b+1],y[b]&f){var x=n(g,b-1);if(x<=u){if(u=x,c=b-1,!(c>o))break;p=Math.max(1,2*o-c)}}}if(n(g+1,o)>u)break;v=y}return!(c<0)}}]);
@@ -1,9 +0,0 @@
1
- module Rails
2
- module Pretty
3
- module Logger
4
- class ApplicationRecord < ActiveRecord::Base
5
- self.abstract_class = true
6
- end
7
- end
8
- end
9
- end
@@ -1,2 +1,2 @@
1
- //= link_directory ../javascripts/rails/pretty/logger .js
2
1
  //= link_directory ../stylesheets/rails/pretty/logger .css
2
+ //= link_directory ../javascripts/rails/pretty/logger .js