select2-rails 3.1.1 → 3.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,5 @@
1
1
  module Select2
2
2
  module Rails
3
- VERSION = "3.1.1"
3
+ VERSION = "3.2.0"
4
4
  end
5
5
  end
File without changes
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  Copyright 2012 Igor Vaynberg
3
3
 
4
- Version: 3.1 Timestamp: Tue Aug 14 09:05:17 PDT 2012
4
+ Version: 3.2 Timestamp: Mon Sep 10 10:38:04 PDT 2012
5
5
 
6
6
  Licensed under the Apache License, Version 2.0 (the "License"); you may not use this work except in
7
7
  compliance with the License. You may obtain a copy of the License in the LICENSE file, or at:
@@ -92,14 +92,6 @@
92
92
 
93
93
  nextUid=(function() { var counter=1; return function() { return counter++; }; }());
94
94
 
95
- function escapeMarkup(markup) {
96
- if (markup && typeof(markup) === "string") {
97
- return markup.replace(/&/g, "&");
98
- } else {
99
- return markup;
100
- }
101
- }
102
-
103
95
  function indexOf(value, array) {
104
96
  var i = 0, l = array.length, v;
105
97
 
@@ -170,7 +162,7 @@
170
162
  });
171
163
  }
172
164
 
173
- $(document).delegate("*", "mousemove", function (e) {
165
+ $(document).delegate("body", "mousemove", function (e) {
174
166
  $.data(document, "select2-lastpos", {x: e.pageX, y: e.pageY});
175
167
  });
176
168
 
@@ -195,13 +187,18 @@
195
187
  *
196
188
  * @param quietMillis number of milliseconds to wait before invoking fn
197
189
  * @param fn function to be debounced
190
+ * @param ctx object to be used as this reference within fn
198
191
  * @return debounced version of fn
199
192
  */
200
- function debounce(quietMillis, fn) {
193
+ function debounce(quietMillis, fn, ctx) {
194
+ ctx = ctx || undefined;
201
195
  var timeout;
202
196
  return function () {
197
+ var args = arguments;
203
198
  window.clearTimeout(timeout);
204
- timeout = window.setTimeout(fn, quietMillis);
199
+ timeout = window.setTimeout(function() {
200
+ fn.apply(ctx, args);
201
+ }, quietMillis);
205
202
  };
206
203
  }
207
204
 
@@ -354,14 +351,33 @@
354
351
  }
355
352
 
356
353
  return function (query) {
357
- var t = query.term, filtered = {};
354
+ var t = query.term, filtered = { results: [] }, process;
358
355
  if (t === "") {
359
356
  query.callback({results: data});
360
357
  return;
361
358
  }
362
- filtered.results = $(data)
363
- .filter(function () {return query.matcher(t, text(this));})
364
- .get();
359
+
360
+ process = function(datum, collection) {
361
+ var group, attr;
362
+ datum = datum[0];
363
+ if (datum.children) {
364
+ group = {};
365
+ for (attr in datum) {
366
+ if (datum.hasOwnProperty(attr)) group[attr]=datum[attr];
367
+ }
368
+ group.children=[];
369
+ $(datum.children).each2(function(i, childDatum) { process(childDatum, group.children); });
370
+ if (group.children.length) {
371
+ collection.push(group);
372
+ }
373
+ } else {
374
+ if (query.matcher(t, text(datum))) {
375
+ collection.push(datum);
376
+ }
377
+ }
378
+ };
379
+
380
+ $(data).each2(function(i, datum) { process(datum, filtered.results); });
365
381
  query.callback(filtered);
366
382
  };
367
383
  }
@@ -478,7 +494,7 @@
478
494
  * also takes care of clicks on label tags that point to the source element
479
495
  */
480
496
  $(document).ready(function () {
481
- $(document).delegate("*", "mousedown touchend", function (e) {
497
+ $(document).delegate("body", "mousedown touchend", function (e) {
482
498
  var target = $(e.target).closest("div.select2-container").get(0), attr;
483
499
  if (target) {
484
500
  $(document).find("div.select2-container-active").each(function () {
@@ -544,14 +560,15 @@
544
560
  this.enabled=true;
545
561
  this.container = this.createContainer();
546
562
 
547
- this.containerId="s2id"+nextUid();
563
+ this.containerId="s2id_"+(opts.element.attr("id") || "autogen"+nextUid());
564
+ this.containerSelector="#"+this.containerId.replace(/([;&,\.\+\*\~':"\!\^#$%@\[\]\(\)=>\|])/g, '\\$1');
548
565
  this.container.attr("id", this.containerId);
549
566
 
550
567
  // cache the body so future lookups are cheap
551
568
  this.body = thunk(function() { return opts.element.closest("body"); });
552
569
 
553
570
  if (opts.element.attr("class") !== undefined) {
554
- this.container.addClass(opts.element.attr("class"));
571
+ this.container.addClass(opts.element.attr("class").replace(/validate\[[\S ]+] ?/, ''));
555
572
  }
556
573
 
557
574
  this.container.css(evaluate(opts.containerCss));
@@ -675,7 +692,7 @@
675
692
 
676
693
  result=results[i];
677
694
  selectable=id(result) !== undefined;
678
- compound=("children" in result) && result.children.length > 0;
695
+ compound=result.children && result.children.length > 0;
679
696
 
680
697
  node=$("<li></li>");
681
698
  node.addClass("select2-results-dept-"+depth);
@@ -689,7 +706,7 @@
689
706
 
690
707
  formatted=opts.formatResult(result, label, query);
691
708
  if (formatted!==undefined) {
692
- label.html(escapeMarkup(formatted));
709
+ label.html(self.opts.escapeMarkup(formatted));
693
710
  }
694
711
 
695
712
  node.append(label);
@@ -816,6 +833,11 @@
816
833
  // some validation frameworks ignore the change event and listen instead to keyup, click for selects
817
834
  // so here we trigger the click event manually
818
835
  this.opts.element.click();
836
+
837
+ // ValidationEngine ignorea the change event and listens instead to blur
838
+ // so here we trigger the blur event manually if so desired
839
+ if (this.opts.blurOnChange)
840
+ this.opts.element.blur();
819
841
  },
820
842
 
821
843
 
@@ -850,15 +872,25 @@
850
872
  dropHeight = this.dropdown.outerHeight(),
851
873
  viewportBottom = $(window).scrollTop() + document.documentElement.clientHeight,
852
874
  dropTop = offset.top + height,
875
+ dropLeft = offset.left,
853
876
  enoughRoomBelow = dropTop + dropHeight <= viewportBottom,
854
877
  enoughRoomAbove = (offset.top - dropHeight) >= this.body().scrollTop(),
855
878
  aboveNow = this.dropdown.hasClass("select2-drop-above"),
879
+ bodyOffset,
856
880
  above,
857
881
  css;
858
882
 
859
883
  // console.log("below/ droptop:", dropTop, "dropHeight", dropHeight, "sum", (dropTop+dropHeight)+" viewport bottom", viewportBottom, "enough?", enoughRoomBelow);
860
884
  // console.log("above/ offset.top", offset.top, "dropHeight", dropHeight, "top", (offset.top-dropHeight), "scrollTop", this.body().scrollTop(), "enough?", enoughRoomAbove);
861
885
 
886
+ // fix positioning when body has an offset and is not position: static
887
+
888
+ if (this.body().css('position') !== 'static') {
889
+ bodyOffset = this.body().offset();
890
+ dropTop -= bodyOffset.top;
891
+ dropLeft -= bodyOffset.left;
892
+ }
893
+
862
894
  // always prefer the current above/below alignment, unless there is not enough room
863
895
 
864
896
  if (aboveNow) {
@@ -879,11 +911,11 @@
879
911
  this.dropdown.removeClass("select2-drop-above");
880
912
  }
881
913
 
882
- css = {
883
- top:dropTop,
884
- left:offset.left,
885
- width:width
886
- };
914
+ css = $.extend({
915
+ top: dropTop,
916
+ left: dropLeft,
917
+ width: width
918
+ }, evaluate(this.opts.dropdownCss));
887
919
 
888
920
  this.dropdown.css(css);
889
921
  },
@@ -894,7 +926,7 @@
894
926
 
895
927
  if (this.opened()) return false;
896
928
 
897
- event = jQuery.Event("open");
929
+ event = $.Event("open");
898
930
  this.opts.element.trigger(event);
899
931
  return !event.isDefaultPrevented();
900
932
  },
@@ -927,7 +959,7 @@
927
959
  */
928
960
  // abstract
929
961
  opening: function() {
930
- var cid = this.containerId, selector = "#"+ cid,
962
+ var cid = this.containerId, selector = this.containerSelector,
931
963
  scroll = "scroll." + cid, resize = "resize." + cid;
932
964
 
933
965
  this.container.parents().each(function() {
@@ -952,8 +984,6 @@
952
984
 
953
985
  if (this.search.val() === " ") { this.search.val(""); }
954
986
 
955
- this.dropdown.css(evaluate(this.opts.dropdownCss));
956
- this.dropdown.addClass("select2-drop-active");
957
987
  this.container.addClass("select2-dropdown-open").addClass("select2-container-active");
958
988
 
959
989
  this.updateResults(true);
@@ -963,9 +993,11 @@
963
993
  }
964
994
 
965
995
  this.dropdown.show();
966
- this.ensureHighlightVisible();
967
996
 
968
997
  this.positionDropdown();
998
+ this.dropdown.addClass("select2-drop-active");
999
+
1000
+ this.ensureHighlightVisible();
969
1001
 
970
1002
  this.focusSearch();
971
1003
  },
@@ -988,7 +1020,7 @@
988
1020
  this.results.empty();
989
1021
  this.clearSearch();
990
1022
 
991
- this.opts.element.trigger(jQuery.Event("close"));
1023
+ this.opts.element.trigger($.Event("close"));
992
1024
  },
993
1025
 
994
1026
  // abstract
@@ -1113,6 +1145,10 @@
1113
1145
  matcher: this.opts.matcher,
1114
1146
  callback: this.bind(function (data) {
1115
1147
 
1148
+ // ignore a response if the select2 has been closed before it was received
1149
+ if (!self.opened()) return;
1150
+
1151
+
1116
1152
  self.opts.populateResults.call(this, results, data.results, {term: term, page: page, context:context});
1117
1153
 
1118
1154
  if (data.more===true) {
@@ -1155,7 +1191,7 @@
1155
1191
  }
1156
1192
 
1157
1193
  function render(html) {
1158
- results.html(escapeMarkup(html));
1194
+ results.html(self.opts.escapeMarkup(html));
1159
1195
  postRender();
1160
1196
  }
1161
1197
 
@@ -1190,6 +1226,9 @@
1190
1226
  callback: this.bind(function (data) {
1191
1227
  var def; // default choice
1192
1228
 
1229
+ // ignore a response if the select2 has been closed before it was received
1230
+ if (!this.opened()) return;
1231
+
1193
1232
  // save context, if any
1194
1233
  this.context = (data.context===undefined) ? null : data.context;
1195
1234
 
@@ -1215,7 +1254,7 @@
1215
1254
  self.opts.populateResults.call(this, results, data.results, {term: search.val(), page: this.resultsPage, context:null});
1216
1255
 
1217
1256
  if (data.more === true && checkFormatter(opts.formatLoadMore, "formatLoadMore")) {
1218
- results.append("<li class='select2-more-results'>" + escapeMarkup(opts.formatLoadMore(this.resultsPage)) + "</li>");
1257
+ results.append("<li class='select2-more-results'>" + self.opts.escapeMarkup(opts.formatLoadMore(this.resultsPage)) + "</li>");
1219
1258
  window.setTimeout(function() { self.loadMoreIfNeeded(); }, 10);
1220
1259
  }
1221
1260
 
@@ -1243,11 +1282,16 @@
1243
1282
 
1244
1283
  // abstract
1245
1284
  focusSearch: function () {
1285
+ // need to do it here as well as in timeout so it works in IE
1286
+ this.search.show();
1287
+ this.search.focus();
1288
+
1246
1289
  /* we do this in a timeout so that current event processing can complete before this code is executed.
1247
1290
  this makes sure the search field is focussed even if the current event would blur it */
1248
1291
  window.setTimeout(this.bind(function () {
1249
- this.search.focus();
1250
1292
  // reset the value so IE places the cursor at the end of the input box
1293
+ this.search.show();
1294
+ this.search.focus();
1251
1295
  this.search.val(this.search.val());
1252
1296
  }), 10);
1253
1297
  },
@@ -1333,7 +1377,7 @@
1333
1377
  var container = $("<div></div>", {
1334
1378
  "class": "select2-container"
1335
1379
  }).html([
1336
- " <a href='javascript:void(0)' class='select2-choice'>",
1380
+ " <a href='#' onclick='return false;' class='select2-choice'>",
1337
1381
  " <span></span><abbr class='select2-search-choice-close' style='display:none;'></abbr>",
1338
1382
  " <div><b></b></div>" ,
1339
1383
  "</a>",
@@ -1594,7 +1638,7 @@
1594
1638
  // check for a first blank option if attached to a select
1595
1639
  if (this.select && this.select.find("option:first").text() !== "") return;
1596
1640
 
1597
- this.selection.find("span").html(escapeMarkup(placeholder));
1641
+ this.selection.find("span").html(this.opts.escapeMarkup(placeholder));
1598
1642
 
1599
1643
  this.selection.addClass("select2-default");
1600
1644
 
@@ -1653,7 +1697,7 @@
1653
1697
  container.empty();
1654
1698
  formatted=this.opts.formatSelection(data, container);
1655
1699
  if (formatted !== undefined) {
1656
- container.append(escapeMarkup(formatted));
1700
+ container.append(this.opts.escapeMarkup(formatted));
1657
1701
  }
1658
1702
 
1659
1703
  this.selection.removeClass("select2-default");
@@ -1691,6 +1735,7 @@
1691
1735
  this.clear();
1692
1736
  return;
1693
1737
  }
1738
+ this.opts.element.val(val);
1694
1739
  this.opts.initSelection(this.opts.element, function(data){
1695
1740
  self.opts.element.val(!data ? "" : self.id(data));
1696
1741
  self.updateSelection(data);
@@ -1835,12 +1880,19 @@
1835
1880
 
1836
1881
  this.search.bind("keyup", this.bind(this.resizeSearch));
1837
1882
 
1838
- this.search.bind("blur", this.bind(function() {
1883
+ this.search.bind("blur", this.bind(function(e) {
1839
1884
  this.container.removeClass("select2-container-active");
1885
+ this.search.removeClass("select2-focused");
1886
+ this.clearSearch();
1887
+ e.stopImmediatePropagation();
1840
1888
  }));
1841
1889
 
1842
1890
  this.container.delegate(selector, "mousedown", this.bind(function (e) {
1843
1891
  if (!this.enabled) return;
1892
+ if ($(e.target).closest(".select2-search-choice").length > 0) {
1893
+ // clicked inside a select2 search choice, do not open
1894
+ return;
1895
+ }
1844
1896
  this.clearPlaceholder();
1845
1897
  this.open();
1846
1898
  this.focusSearch();
@@ -2018,20 +2070,20 @@
2018
2070
  var choice=$(
2019
2071
  "<li class='select2-search-choice'>" +
2020
2072
  " <div></div>" +
2021
- " <a href='javascript:void(0)' class='select2-search-choice-close' tabindex='-1'></a>" +
2073
+ " <a href='#' onclick='return false;' class='select2-search-choice-close' tabindex='-1'></a>" +
2022
2074
  "</li>"),
2023
2075
  id = this.id(data),
2024
2076
  val = this.getVal(),
2025
2077
  formatted;
2026
2078
 
2027
2079
  formatted=this.opts.formatSelection(data, choice);
2028
- choice.find("div").replaceWith("<div>"+escapeMarkup(formatted)+"</div>");
2080
+ choice.find("div").replaceWith("<div>"+this.opts.escapeMarkup(formatted)+"</div>");
2029
2081
  choice.find(".select2-search-choice-close")
2030
2082
  .bind("mousedown", killEvent)
2031
2083
  .bind("click dblclick", this.bind(function (e) {
2032
2084
  if (!this.enabled) return;
2033
2085
 
2034
- $(e.target).closest(".select2-search-choice").fadeOut('fast').animate({width: "hide"}, 50, this.bind(function(){
2086
+ $(e.target).closest(".select2-search-choice").fadeOut('fast', this.bind(function(){
2035
2087
  this.unselect($(e.target));
2036
2088
  this.selection.find(".select2-search-choice-focus").removeClass("select2-search-choice-focus");
2037
2089
  this.close();
@@ -2309,14 +2361,14 @@
2309
2361
  return markup.join("");
2310
2362
  },
2311
2363
  formatSelection: function (data, container) {
2312
- return data.text;
2364
+ return data ? data.text : undefined;
2313
2365
  },
2314
2366
  formatResultCssClass: function(data) {return undefined;},
2315
2367
  formatNoMatches: function () { return "No matches found"; },
2316
2368
  formatInputTooShort: function (input, min) { return "Please enter " + (min - input.length) + " more characters"; },
2317
- formatSelectionTooBig: function (limit) { return "You can only select " + limit + " items"; },
2369
+ formatSelectionTooBig: function (limit) { return "You can only select " + limit + " item" + (limit == 1 ? "" : "s"); },
2318
2370
  formatLoadMore: function (pageNumber) { return "Loading more results..."; },
2319
- formatSearching: function () { return "Searching..."; },
2371
+ formatSearching: function () { return "Searching..."; },
2320
2372
  minimumResultsForSearch: 0,
2321
2373
  minimumInputLength: 0,
2322
2374
  maximumSelectionSize: 0,
@@ -2326,7 +2378,14 @@
2326
2378
  },
2327
2379
  separator: ",",
2328
2380
  tokenSeparators: [],
2329
- tokenizer: defaultTokenizer
2381
+ tokenizer: defaultTokenizer,
2382
+ escapeMarkup: function (markup) {
2383
+ if (markup && typeof(markup) === "string") {
2384
+ return markup.replace(/&/g, "&amp;");
2385
+ }
2386
+ return markup;
2387
+ },
2388
+ blurOnChange: false
2330
2389
  };
2331
2390
 
2332
2391
  // exports
@@ -1,5 +1,5 @@
1
1
  /*
2
- Version: 3.1 Timestamp: Tue Aug 14 09:05:17 PDT 2012
2
+ Version: 3.2 Timestamp: Mon Sep 10 10:38:04 PDT 2012
3
3
  */
4
4
  .select2-container {
5
5
  position: relative;
@@ -509,3 +509,16 @@ disabled look for already selected choices in the results dropdown
509
509
  .select2-result-unselectable .select2-match { text-decoration: none; }
510
510
 
511
511
  .select2-offscreen { position: absolute; left: -10000px; }
512
+
513
+ /* Retina-ize icons */
514
+
515
+ @media only screen and (-webkit-min-device-pixel-ratio: 1.5) {
516
+ .select2-search input, .select2-search-choice-close, .select2-container .select2-choice abbr, .select2-container .select2-choice div b {
517
+ background-image: image-url(select2x2.png) !important;
518
+ background-repeat: no-repeat !important;
519
+ background-size: 60px 40px !important;
520
+ }
521
+ .select2-search input {
522
+ background-position: 100% -21px !important;
523
+ }
524
+ }
metadata CHANGED
@@ -1,91 +1,86 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: select2-rails
3
- version: !ruby/object:Gem::Version
4
- version: 3.1.1
5
- prerelease:
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 3
7
+ - 2
8
+ - 0
9
+ version: 3.2.0
6
10
  platform: ruby
7
- authors:
11
+ authors:
8
12
  - Rogerio Medeiros
9
13
  - Pedro Nascimento
10
14
  autorequire:
11
15
  bindir: bin
12
16
  cert_chain: []
13
- date: 2012-08-20 00:00:00.000000000 Z
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
16
- name: thor
17
- requirement: !ruby/object:Gem::Requirement
18
- none: false
19
- requirements:
20
- - - ~>
21
- - !ruby/object:Gem::Version
22
- version: '0.14'
17
+
18
+ date: 2012-09-24 00:00:00 -03:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
23
22
  type: :runtime
23
+ version_requirements: &id001 !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ~>
26
+ - !ruby/object:Gem::Version
27
+ segments:
28
+ - 0
29
+ - 14
30
+ version: "0.14"
31
+ name: thor
32
+ requirement: *id001
24
33
  prerelease: false
25
- version_requirements: !ruby/object:Gem::Requirement
26
- none: false
27
- requirements:
34
+ - !ruby/object:Gem::Dependency
35
+ type: :development
36
+ version_requirements: &id002 !ruby/object:Gem::Requirement
37
+ requirements:
28
38
  - - ~>
29
- - !ruby/object:Gem::Version
30
- version: '0.14'
31
- - !ruby/object:Gem::Dependency
39
+ - !ruby/object:Gem::Version
40
+ segments:
41
+ - 1
42
+ - 0
43
+ version: "1.0"
32
44
  name: bundler
33
- requirement: !ruby/object:Gem::Requirement
34
- none: false
35
- requirements:
36
- - - ~>
37
- - !ruby/object:Gem::Version
38
- version: '1.0'
39
- type: :development
45
+ requirement: *id002
40
46
  prerelease: false
41
- version_requirements: !ruby/object:Gem::Requirement
42
- none: false
43
- requirements:
47
+ - !ruby/object:Gem::Dependency
48
+ type: :development
49
+ version_requirements: &id003 !ruby/object:Gem::Requirement
50
+ requirements:
44
51
  - - ~>
45
- - !ruby/object:Gem::Version
46
- version: '1.0'
47
- - !ruby/object:Gem::Dependency
52
+ - !ruby/object:Gem::Version
53
+ segments:
54
+ - 3
55
+ - 0
56
+ version: "3.0"
48
57
  name: rails
49
- requirement: !ruby/object:Gem::Requirement
50
- none: false
51
- requirements:
52
- - - ~>
53
- - !ruby/object:Gem::Version
54
- version: '3.0'
55
- type: :development
58
+ requirement: *id003
56
59
  prerelease: false
57
- version_requirements: !ruby/object:Gem::Requirement
58
- none: false
59
- requirements:
60
+ - !ruby/object:Gem::Dependency
61
+ type: :development
62
+ version_requirements: &id004 !ruby/object:Gem::Requirement
63
+ requirements:
60
64
  - - ~>
61
- - !ruby/object:Gem::Version
62
- version: '3.0'
63
- - !ruby/object:Gem::Dependency
65
+ - !ruby/object:Gem::Version
66
+ segments:
67
+ - 2
68
+ - 2
69
+ version: "2.2"
64
70
  name: httpclient
65
- requirement: !ruby/object:Gem::Requirement
66
- none: false
67
- requirements:
68
- - - ~>
69
- - !ruby/object:Gem::Version
70
- version: '2.2'
71
- type: :development
71
+ requirement: *id004
72
72
  prerelease: false
73
- version_requirements: !ruby/object:Gem::Requirement
74
- none: false
75
- requirements:
76
- - - ~>
77
- - !ruby/object:Gem::Version
78
- version: '2.2'
79
- description: Select2 is a jQuery based replacement for select boxes. It supports searching,
80
- remote data sets, and infinite scrolling of results. This gem integrates Select2
81
- with Rails asset pipeline for easy of use.
82
- email:
73
+ description: Select2 is a jQuery based replacement for select boxes. It supports searching, remote data sets, and infinite scrolling of results. This gem integrates Select2 with Rails asset pipeline for easy of use.
74
+ email:
83
75
  - argerim@gmail.com
84
76
  - pnascimento@gmail.com
85
77
  executables: []
78
+
86
79
  extensions: []
80
+
87
81
  extra_rdoc_files: []
88
- files:
82
+
83
+ files:
89
84
  - .gitignore
90
85
  - Gemfile
91
86
  - LICENSE
@@ -97,37 +92,39 @@ files:
97
92
  - lib/select2-rails/version.rb
98
93
  - select2-rails.gemspec
99
94
  - vendor/assets/images/select2.png
95
+ - vendor/assets/images/select2x2.png
100
96
  - vendor/assets/images/spinner.gif
101
97
  - vendor/assets/javascripts/select2.js
102
98
  - vendor/assets/stylesheets/select2.css.scss
99
+ has_rdoc: true
103
100
  homepage: https://github.com/argerim/select2-rails
104
101
  licenses: []
102
+
105
103
  post_install_message:
106
104
  rdoc_options: []
107
- require_paths:
105
+
106
+ require_paths:
108
107
  - lib
109
- required_ruby_version: !ruby/object:Gem::Requirement
110
- none: false
111
- requirements:
112
- - - ! '>='
113
- - !ruby/object:Gem::Version
114
- version: '0'
115
- segments:
108
+ required_ruby_version: !ruby/object:Gem::Requirement
109
+ requirements:
110
+ - - ">="
111
+ - !ruby/object:Gem::Version
112
+ segments:
116
113
  - 0
117
- hash: -1950273225062917402
118
- required_rubygems_version: !ruby/object:Gem::Requirement
119
- none: false
120
- requirements:
121
- - - ! '>='
122
- - !ruby/object:Gem::Version
123
- version: '0'
124
- segments:
114
+ version: "0"
115
+ required_rubygems_version: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - ">="
118
+ - !ruby/object:Gem::Version
119
+ segments:
125
120
  - 0
126
- hash: -1950273225062917402
121
+ version: "0"
127
122
  requirements: []
123
+
128
124
  rubyforge_project:
129
- rubygems_version: 1.8.24
125
+ rubygems_version: 1.3.6
130
126
  signing_key:
131
127
  specification_version: 3
132
128
  summary: Integrate Select2 javascript library with Rails asset pipeline
133
129
  test_files: []
130
+