jquery-truncate-rails 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ YzE2ZTU3OGMzOGQ4ZmM2ZWNiMWM3Y2QwNzhjNDRlMzk2NTA5NWQ1Mg==
5
+ data.tar.gz: !binary |-
6
+ YmY2ODM5Zjc4NWE3ZjlkYjQxOTQyMWNkOTNkZGI5NWUzY2NkNDk5YQ==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ MDY5MjAxYzU0ZTM2OWMzMmQ3ZGMyNjRjMjVlY2NjYTgyZGM4Y2QyYTc5YmYw
10
+ ZDE3NWU1N2RiMTE4Yjk2MzdiOTE2Y2NjNmJkMDI0ZTNhM2RlNDY0OTJhNDBi
11
+ NTJmODdkZjA0NWU3N2FlOGJlNDJlNWE1NWY5YWNlOTg4NGRhMWY=
12
+ data.tar.gz: !binary |-
13
+ YzA4NDhhMTAyNjU2ZmNmZDgyNDg2ZjIwMTkzYjYyMjA2YjAwM2U3MzE3MWNl
14
+ N2RjMDlhOWJhYjg2YTkzNDA2YmU5YmY5NjFhYjA0ZTNmMGM3NDVkMzlhYWU4
15
+ OGM4Mjg3MDVlZTFhZTA0NDMzNTJiNjI5Y2M1N2FkODBlYzI3NzM=
@@ -0,0 +1,19 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
18
+ .DS_Store
19
+ .idea/
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in jquery-truncate-rails.gemspec
4
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2013 Tyler Scott
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
6
+ this software and associated documentation files (the "Software"), to deal in
7
+ the Software without restriction, including without limitation the rights to
8
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9
+ the Software, and to permit persons to whom the Software is furnished to do so,
10
+ subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
17
+ FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
18
+ COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
19
+ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,6 @@
1
+ jquery-truncate-rails
2
+ =====================
3
+
4
+ jQuery Truncate Text Plugin Gem
5
+
6
+ This is the gemified version of the [jQuery Truncate plugin](https://github.com/tbasse/jquery-truncate).
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env rake
2
+ require "bundler/gem_tasks"
@@ -0,0 +1,23 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require File.expand_path('../lib/jquery-truncate-rails/version', __FILE__)
3
+
4
+ Gem::Specification.new do |gem|
5
+ gem.authors = ["Tyler Scott"]
6
+ gem.email = ["scottt2@uw.edu"]
7
+ gem.description = %q{jQuery Truncate plugin}
8
+ gem.summary = %q{jQuery Truncate packaged all up in a gem just for you.}
9
+ gem.homepage = "https://github.com/scottt2/jquery-truncate-rails"
10
+
11
+ gem.files = `git ls-files`.split($\)
12
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
13
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
14
+ gem.name = "jquery-truncate-rails"
15
+ gem.require_paths = ["lib"]
16
+ gem.version = Jquery::Truncate::Rails::VERSION
17
+
18
+ gem.add_dependency 'railties', '>= 3.1.0'
19
+
20
+ gem.add_development_dependency 'rails'
21
+ gem.add_development_dependency 'jquery-rails'
22
+ gem.add_development_dependency 'uglifier'
23
+ end
@@ -0,0 +1,10 @@
1
+ require "jquery-truncate-rails/version"
2
+
3
+ module Jquery
4
+ module Truncate
5
+ module Rails
6
+ class Engine < ::Rails::Engine
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,7 @@
1
+ module Jquery
2
+ module Truncate
3
+ module Rails
4
+ VERSION = "0.0.1"
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,154 @@
1
+ (function ($) {
2
+ 'use strict';
3
+ function findTruncPoint(dim, max, txt, start, end, $worker, token, reverse) {
4
+ var makeContent = function (content) {
5
+ $worker.text(content);
6
+ $worker[reverse ? 'prepend' : 'append'](token);
7
+ };
8
+
9
+ var opt1, opt2, mid, opt1dim, opt2dim;
10
+
11
+ if (reverse) {
12
+ opt1 = start === 0 ? '' : txt.slice(-start);
13
+ opt2 = txt.slice(-end);
14
+ } else {
15
+ opt1 = txt.slice(0, start);
16
+ opt2 = txt.slice(0, end);
17
+ }
18
+
19
+ if (max < $worker.html(token)[dim]()) {
20
+ return 0;
21
+ }
22
+
23
+ makeContent(opt2);
24
+ opt1dim = $worker[dim]();
25
+ makeContent(opt1);
26
+ opt2dim = $worker[dim]();
27
+ if (opt1dim < opt2dim) {
28
+ return end;
29
+ }
30
+
31
+ mid = parseInt((start + end) / 2, 10);
32
+ opt1 = reverse ? txt.slice(-mid) : txt.slice(0, mid);
33
+
34
+ makeContent(opt1);
35
+ if ($worker[dim]() === max) {
36
+ return mid;
37
+ }
38
+
39
+ if ($worker[dim]() > max) {
40
+ end = mid - 1;
41
+ } else {
42
+ start = mid + 1;
43
+ }
44
+
45
+ return findTruncPoint(dim, max, txt, start, end, $worker, token, reverse);
46
+ }
47
+
48
+ $.fn.truncate = function (options) {
49
+ // backward compatibility
50
+ if (options && !!options.center && !options.side) {
51
+ options.side = 'center';
52
+ delete options.center;
53
+ }
54
+
55
+ if (options && !(/^(left|right|center)$/).test(options.side)) {
56
+ delete options.side;
57
+ }
58
+
59
+ var defaults = {
60
+ width: 'auto',
61
+ token: '&hellip;',
62
+ side: 'right',
63
+ addclass: false,
64
+ addtitle: false,
65
+ multiline: false
66
+ };
67
+ options = $.extend(defaults, options);
68
+
69
+ return this.each(function () {
70
+ var $element = $(this);
71
+ var fontCSS = {
72
+ 'fontFamily': $element.css('fontFamily'),
73
+ 'fontSize': $element.css('fontSize'),
74
+ 'fontStyle': $element.css('fontStyle'),
75
+ 'fontWeight': $element.css('fontWeight'),
76
+ 'font-variant': $element.css('font-variant'),
77
+ 'text-indent': $element.css('text-indent'),
78
+ 'text-transform': $element.css('text-transform'),
79
+ 'letter-spacing': $element.css('letter-spacing'),
80
+ 'word-spacing': $element.css('word-spacing'),
81
+ 'display': 'none'
82
+ };
83
+ var elementText = $element.text();
84
+ var $truncateWorker = $('<span/>')
85
+ .css(fontCSS)
86
+ .text(elementText)
87
+ .appendTo('body');
88
+ var originalWidth = $truncateWorker.width();
89
+ var truncateWidth = parseInt(options.width, 10) || $element.width();
90
+ var dimension = 'width';
91
+ var truncatedText, originalDim, truncateDim;
92
+
93
+ if (options.multiline) {
94
+ $truncateWorker.width($element.width());
95
+ dimension = 'height';
96
+ originalDim = $truncateWorker.height();
97
+ truncateDim = $element.height() + 1;
98
+ }
99
+ else {
100
+ originalDim = originalWidth;
101
+ truncateDim = truncateWidth;
102
+ }
103
+
104
+ truncatedText = {before: "", after: ""};
105
+ if (originalDim > truncateDim) {
106
+ var truncPoint, truncPoint2;
107
+ $truncateWorker.text('');
108
+
109
+ if (options.side === 'left') {
110
+ truncPoint = findTruncPoint(
111
+ dimension, truncateDim, elementText, 0, elementText.length,
112
+ $truncateWorker, options.token, true
113
+ );
114
+ truncatedText.after = elementText.slice(-1 * truncPoint);
115
+
116
+ } else if (options.side === 'center') {
117
+ truncateDim = parseInt(truncateDim / 2, 10) - 1;
118
+ truncPoint = findTruncPoint(
119
+ dimension, truncateDim, elementText, 0, elementText.length,
120
+ $truncateWorker, options.token, false
121
+ );
122
+ truncPoint2 = findTruncPoint(
123
+ dimension, truncateDim, elementText, 0, elementText.length,
124
+ $truncateWorker, '', true
125
+ );
126
+ truncatedText.before = elementText.slice(0, truncPoint);
127
+ truncatedText.after = elementText.slice(-1 * truncPoint2);
128
+
129
+ } else if (options.side === 'right') {
130
+ truncPoint = findTruncPoint(
131
+ dimension, truncateDim, elementText, 0, elementText.length,
132
+ $truncateWorker, options.token, false
133
+ );
134
+ truncatedText.before = elementText.slice(0, truncPoint);
135
+ }
136
+
137
+ if (options.addclass) {
138
+ $element.addClass(options.addclass);
139
+ }
140
+
141
+ if (options.addtitle) {
142
+ $element.attr('title', elementText);
143
+ }
144
+
145
+ truncatedText.before = $truncateWorker.text(truncatedText.before).html();
146
+ truncatedText.after = $truncateWorker.text(truncatedText.after).html();
147
+ $element.empty().html(truncatedText.before + options.token + truncatedText.after);
148
+
149
+ }
150
+
151
+ $truncateWorker.remove();
152
+ });
153
+ };
154
+ })(jQuery);
metadata ADDED
@@ -0,0 +1,109 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: jquery-truncate-rails
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Tyler Scott
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-09-30 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: railties
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ! '>='
18
+ - !ruby/object:Gem::Version
19
+ version: 3.1.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ! '>='
25
+ - !ruby/object:Gem::Version
26
+ version: 3.1.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: rails
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ! '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: jquery-rails
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ! '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: uglifier
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ! '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ description: jQuery Truncate plugin
70
+ email:
71
+ - scottt2@uw.edu
72
+ executables: []
73
+ extensions: []
74
+ extra_rdoc_files: []
75
+ files:
76
+ - .gitignore
77
+ - Gemfile
78
+ - LICENSE
79
+ - README.md
80
+ - Rakefile
81
+ - jquery-truncate-rails.gemspec
82
+ - lib/jquery-truncate-rails.rb
83
+ - lib/jquery-truncate-rails/version.rb
84
+ - vendor/assets/jquery-truncate/jquery.truncate.js
85
+ homepage: https://github.com/scottt2/jquery-truncate-rails
86
+ licenses: []
87
+ metadata: {}
88
+ post_install_message:
89
+ rdoc_options: []
90
+ require_paths:
91
+ - lib
92
+ required_ruby_version: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ! '>='
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ required_rubygems_version: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ requirements: []
103
+ rubyforge_project:
104
+ rubygems_version: 2.1.5
105
+ signing_key:
106
+ specification_version: 4
107
+ summary: jQuery Truncate packaged all up in a gem just for you.
108
+ test_files: []
109
+ has_rdoc: