app/models/page_set.rb in instiki-0.10.0 vs app/models/page_set.rb in instiki-0.10.1
- old
+ new
@@ -1,89 +1,89 @@
-# Container for a set of pages with methods for manipulation.
-
-class PageSet < Array
- attr_reader :web
-
- def initialize(web, pages = nil, condition = nil)
- @web = web
- # if pages is not specified, make a list of all pages in the web
- if pages.nil?
- super(web.pages.values)
- # otherwise use specified pages and condition to produce a set of pages
- elsif condition.nil?
- super(pages)
- else
- super(pages.select { |page| condition[page] })
- end
- end
-
- def most_recent_revision
- self.map { |page| page.created_at }.max || Time.at(0)
- end
-
-
- def by_name
- PageSet.new(@web, sort_by { |page| page.name })
- end
-
- alias :sort :by_name
-
- def by_revision
- PageSet.new(@web, sort_by { |page| page.created_at }).reverse
- end
-
- def pages_that_reference(page_name)
- self.select { |page| page.wiki_references.include?(page_name) }
- end
-
- def pages_that_link_to(page_name)
- self.select { |page| page.wiki_words.include?(page_name) }
- end
-
- def pages_that_include(page_name)
- self.select { |page| page.wiki_includes.include?(page_name) }
- end
-
- def pages_authored_by(author)
- self.select { |page| page.authors.include?(author) }
- end
-
- def characters
- self.inject(0) { |chars,page| chars += page.content.size }
- end
-
- # Returns all the orphaned pages in this page set. That is,
- # pages in this set for which there is no reference in the web.
- # The HomePage and author pages are always assumed to have
- # references and so cannot be orphans
- # Pages that refer to themselves and have no links from outside are oprphans.
- def orphaned_pages
- never_orphans = web.select.authors + ['HomePage']
- self.select { |page|
- if never_orphans.include? page.name
- false
- else
- references = pages_that_reference(page.name)
- references.empty? or references == [page]
- end
- }
- end
-
- # Returns all the wiki words in this page set for which
- # there are no pages in this page set's web
- def wanted_pages
- wiki_words - web.select.names
- end
-
- def names
- self.map { |page| page.name }
- end
-
- def wiki_words
- self.inject([]) { |wiki_words, page| wiki_words << page.wiki_words }.flatten.uniq
- end
-
- def authors
- self.inject([]) { |authors, page| authors << page.authors }.flatten.uniq.sort
- end
-
-end
+# Container for a set of pages with methods for manipulation.
+
+class PageSet < Array
+ attr_reader :web
+
+ def initialize(web, pages = nil, condition = nil)
+ @web = web
+ # if pages is not specified, make a list of all pages in the web
+ if pages.nil?
+ super(web.pages.values)
+ # otherwise use specified pages and condition to produce a set of pages
+ elsif condition.nil?
+ super(pages)
+ else
+ super(pages.select { |page| condition[page] })
+ end
+ end
+
+ def most_recent_revision
+ self.map { |page| page.created_at }.max || Time.at(0)
+ end
+
+
+ def by_name
+ PageSet.new(@web, sort_by { |page| page.name })
+ end
+
+ alias :sort :by_name
+
+ def by_revision
+ PageSet.new(@web, sort_by { |page| page.created_at }).reverse
+ end
+
+ def pages_that_reference(page_name)
+ self.select { |page| page.wiki_references.include?(page_name) }
+ end
+
+ def pages_that_link_to(page_name)
+ self.select { |page| page.wiki_words.include?(page_name) }
+ end
+
+ def pages_that_include(page_name)
+ self.select { |page| page.wiki_includes.include?(page_name) }
+ end
+
+ def pages_authored_by(author)
+ self.select { |page| page.authors.include?(author) }
+ end
+
+ def characters
+ self.inject(0) { |chars,page| chars += page.content.size }
+ end
+
+ # Returns all the orphaned pages in this page set. That is,
+ # pages in this set for which there is no reference in the web.
+ # The HomePage and author pages are always assumed to have
+ # references and so cannot be orphans
+ # Pages that refer to themselves and have no links from outside are oprphans.
+ def orphaned_pages
+ never_orphans = web.select.authors + ['HomePage']
+ self.select { |page|
+ if never_orphans.include? page.name
+ false
+ else
+ references = pages_that_reference(page.name)
+ references.empty? or references == [page]
+ end
+ }
+ end
+
+ # Returns all the wiki words in this page set for which
+ # there are no pages in this page set's web
+ def wanted_pages
+ wiki_words - web.select.names
+ end
+
+ def names
+ self.map { |page| page.name }
+ end
+
+ def wiki_words
+ self.inject([]) { |wiki_words, page| wiki_words << page.wiki_words }.flatten.uniq
+ end
+
+ def authors
+ self.inject([]) { |authors, page| authors << page.authors }.flatten.uniq.sort
+ end
+
+end