diff options
| author | elijah <elijah@riseup.net> | 2013-02-12 21:33:39 -0800 | 
|---|---|---|
| committer | elijah <elijah@riseup.net> | 2013-02-12 21:33:39 -0800 | 
| commit | 71ec0edea3f87fb69222dbb6fe025c2211402ca2 (patch) | |
| tree | 5490323e8686df14165ccf5f37fa2d691fc99b88 /lib/static_page_array.rb | |
| parent | 00c785b728c5d97335b87e3eb7d10b9ad0c46d35 (diff) | |
added capacity for pulling static pages from multiple directory source trees.
Diffstat (limited to 'lib/static_page_array.rb')
| -rw-r--r-- | lib/static_page_array.rb | 32 | 
1 files changed, 32 insertions, 0 deletions
| diff --git a/lib/static_page_array.rb b/lib/static_page_array.rb new file mode 100644 index 0000000..33b11e0 --- /dev/null +++ b/lib/static_page_array.rb @@ -0,0 +1,32 @@ +# +# Array of StaticPages +# +class StaticPageArray < Array +  def limit(num) +    StaticPageArray.new(self[0..(num-1)]) +  end +  def order_by(attr, options={}) +    locale = options[:locale] || I18n.locale +    direction = options[:direction] || :asc +    array = sort do |a,b| +      if direction == :desc +        a, b = b, a +      end +      a_prop = a.props.locale(locale).send(attr) +      b_prop = b.props.locale(locale).send(attr) +      if a_prop.nil? && b_prop.nil? +        0 +      elsif a_prop.nil? +        1 +      elsif b_prop.nil? +        -1 +      else +        a_prop <=> b_prop +      end +    end +    array.delete_if do |page| +      page.props.locale(locale).send(attr).nil? +    end +    return StaticPageArray.new.replace array +  end +end
\ No newline at end of file | 
