listy 0.0.3 → 0.0.4

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/.rvmrc ADDED
@@ -0,0 +1,2 @@
1
+ rvm use ruby-1.9.3-p125
2
+ rvm gemset use listy
data/README.md CHANGED
@@ -29,28 +29,75 @@ Listy also includes some Javascript assets, so be sure to add the following line
29
29
 
30
30
  There are a couple of helper methods including:
31
31
 
32
- listy_links(collection, display_method_name, css_class, show_more_index=5, empty_message="")
32
+ ### listy_links
33
33
 
34
- This method creates a simple unordered list of the elements in the collection.
34
+ listy_links(collection, display_method_name, options={})
35
35
 
36
- multi_column_listy_links(collection, display_method_name, css_class, number_of_columns)
36
+ This method creates a simple unordered list of the elements in the collection. This is suitable for Ruby on Rails models.
37
+
38
+ Options you can pass in include
39
+
40
+ * :css_class - The class that is applied to the resulting ul list element
41
+ * :empty_message - The message that is displayed if the collection is empty
42
+ * :show_more - If set to true, the list will display only the first 10 elements, and hide the rest and create a "Show More" link. Be sure to have `//= require listy` in your application.js for the "Show More" link to work.
43
+ * :show_more_limit - If you want more that the first 10 elements to show when show_more is set to true, then specify that limit here.
44
+
45
+ Examples
46
+
47
+ ```ruby
48
+ <%= listy_links BlogPost.all, :title %>
49
+
50
+ <%= listy_links User.all, :email, :show_more => true %>
51
+
52
+ <%= listy_links Product.all, :part_number, :show_more => true, :show_more_limit => 100, :css_class => "products-list" %>
53
+ ```
54
+ ### multi_column_listy_links
55
+
56
+ multi_column_listy_links(collection, display_method_name, number_of_columns, options={})
37
57
 
38
58
  This does the same thing as listy_links but presents it in the number of columns you specify.
39
59
 
40
- listy_tree(collection, spec, empty_message)
60
+ Options you can pass in include:
61
+
62
+ * :css_class - The class that is applied to the resulting ul list elements in each column
63
+ * :empty_message - The message that is displayed if the collection is empty
64
+
65
+ Examples
66
+
67
+ ```ruby
68
+ <%= listy_links BlogPost.all, :title %>
69
+
70
+ <%= listy_links User.all, :email, :show_more => true %>
71
+
72
+ <%= listy_links Product.all, :part_number, :show_more => true, :show_more_limit => 100, :css_class => "products-list" %>
73
+ ```
74
+
75
+ ### listy_tree
76
+
77
+ listy_tree(collection, spec, options={})
41
78
 
42
79
  This method is for creating a nested tree of unordered lists for a collection with nested collections. This is suitable for Rails models that have has_many relationships.
80
+ The spec is basically instructions on how to create the nested tree. It is a nested hash where each child specifies how to create the nested list
43
81
 
44
82
  Example let's say we have the following
45
83
 
46
84
  * Country which has_many States
47
85
  * State which has_many Cities
48
86
 
49
- Typical usage would be:
87
+ Examples:
50
88
 
51
- listy_tree(Country.all, {:display_method_name => :name, :children => :states, :child => { :display_method_name => :name, :children => :cities, :child => {:display_method_name => :name, :children => nil, :child => nil}}}, "")
89
+ ```ruby
90
+ listy_tree(Country.all,
91
+ { :display_method_name => :name,
92
+ :children => :states,
93
+ :child => { :display_method_name => :name,
94
+ :children => :cities,
95
+ :child => { :display_method_name => :name }
96
+ }
97
+ })
98
+ ```
52
99
 
53
- Be sure that the inner most child of the spec has :children => nil. This will stop the nesting.
100
+ Be sure that the inner most child of the spec has :children => nil (or just leave it undefined). This will stop the nesting.
54
101
 
55
102
 
56
103
  ## Contributing
data/lib/listy/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Listy
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -1,54 +1,49 @@
1
1
  module Listy
2
2
  module ViewHelpers
3
3
 
4
- def listy_tree(collection, spec, empty_message)
4
+ def listy_tree(collection, spec, options={})
5
5
  if collection.present?
6
6
  html = "<div class='listy-tree'>" + create_listy_tree(collection, spec, "", 0) + "</div>"
7
7
  else
8
8
  html = "There are no entries in this tree."
9
- html = empty_message if !empty_message.nil?
9
+ html = options[:empty_message] if !options[:empty_message].nil?
10
10
  end
11
11
  raw html
12
12
  end
13
13
 
14
- def create_listy_tree(collection, spec, html, level)
15
- html += "<ul class='listy-tree-level-#{level}'>"
16
-
17
- collection.each do |element|
18
- html += "<li>"
19
- html += "<div class='listy-tree-list-header'>#{element.try(spec[:display_method_name])}</div>"
20
- html = create_listy_tree(element.try(spec[:children]), spec[:child], html, level+1) if !spec[:children].nil?
21
- html += "</li>"
22
- end
23
-
24
- html += "</ul>"
25
- end
14
+
26
15
 
27
- def listy_links(collection, display_method_name, css_class, show_more_index=5, empty_message="")
16
+ def listy_links(collection, display_method_name, options={})
28
17
  if collection.present?
29
- html = "<ul class='" + css_class + "'>"
30
- show_more = false
18
+ html = "<ul class='" + options[:css_class] + "'>"
19
+ show_more_limit_reached = false
20
+
21
+ show_more_limit = options[:show_more_limit] || 10 if options[:show_more]
22
+
31
23
  collection.each_with_index do |element, index|
32
- if index > show_more_index && !show_more
24
+
25
+ if options[:show_more] && (index+1) > show_more_limit && !show_more_limit_reached
33
26
  html += "<div class='listy-show-more-list' style='display:none'>"
34
- show_more = true
27
+ show_more_limit_reached = true
35
28
  end
36
29
  html += "<li>" + link_to(element.try(display_method_name), element) + "</li>"
37
30
  end
38
- if show_more
31
+
32
+ if options[:show_more] && show_more_limit_reached
39
33
  html += "</div>"
40
34
  html += link_to("Show More", "#", :class => "listy-show-more-link button orange-button")
41
35
  end
36
+
42
37
  html += "</ul>"
43
38
  else
44
39
  html = "There are no entries in this list."
45
- html = empty_message if !empty_message.nil?
40
+ html = options[:empty_message] if !options[:empty_message].nil?
46
41
  end
47
42
 
48
43
  raw html
49
44
  end
50
45
 
51
- def multi_column_listy_links(collection, display_method_name, css_class, number_of_columns)
46
+ def multi_column_listy_links(collection, display_method_name, number_of_columns, options={})
52
47
  html = ""
53
48
  if collection.present?
54
49
  number_of_entries_per_column = collection.size/number_of_columns
@@ -61,7 +56,7 @@ module Listy
61
56
  end_index = (i+1) * number_of_entries_per_column
62
57
  end_index = collection.size if end_index > collection.size
63
58
 
64
- html += list_of_links(collection[start_index..end_index], display_method_name, css_class, show_more_index=1000, "")
59
+ html += listy_links(collection[start_index..end_index], display_method_name, options)
65
60
 
66
61
  html += "</div>"
67
62
  end
@@ -70,10 +65,25 @@ module Listy
70
65
 
71
66
  else
72
67
  html = "There are no entries in this list."
68
+ html = options[:empty_message] if !options[:empty_message].nil?
73
69
  end
74
70
 
75
71
  raw html
76
72
  end
73
+
74
+ private
75
+ def create_listy_tree(collection, spec, html, level)
76
+ html += "<ul class='listy-tree-level-#{level}'>"
77
+
78
+ collection.each do |element|
79
+ html += "<li>"
80
+ html += "<div class='listy-tree-list-header'>#{element.try(spec[:display_method_name])}</div>"
81
+ html = create_listy_tree(element.try(spec[:children]), spec[:child], html, level+1) if !spec[:children].nil?
82
+ html += "</li>"
83
+ end
84
+
85
+ html += "</ul>"
86
+ end
77
87
 
78
88
  end
79
89
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: listy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -19,6 +19,7 @@ extensions: []
19
19
  extra_rdoc_files: []
20
20
  files:
21
21
  - .gitignore
22
+ - .rvmrc
22
23
  - Gemfile
23
24
  - LICENSE
24
25
  - README.md