GitHub PullRequestReviewCommentEvent at 2014-08-01 10:16:50
Repository: gollum_rails
Actor: houndci
Payload: {"action":"created","comment":{"url":"https://api.github.com/repos/nirnanaaa/gollum_rails/pulls/comments/15689761","id":15689761,"diff_hunk":"@@ -0,0 +1,893 @@\n+# ~*~ encoding: utf-8 ~*~\n+module Gollum\n+  class Wiki\n+    include Pagination\n+\n+    class << self\n+      # Sets the page class used by all instances of this Wiki.\n+      attr_writer :page_class\n+\n+      # Sets the file class used by all instances of this Wiki.\n+      attr_writer :file_class\n+\n+      # Sets the markup class used by all instances of this Wiki.\n+      attr_writer :markup_classes\n+\n+      # Sets the default ref for the wiki.\n+      attr_accessor :default_ref\n+\n+      # Sets the default name for commits.\n+      attr_accessor :default_committer_name\n+\n+      # Sets the default email for commits.\n+      attr_accessor :default_committer_email\n+\n+      # Array of chars to substitute whitespace for when trying to locate file in git repo.\n+      attr_accessor :default_ws_subs\n+\n+      # Sets sanitization options. Set to false to deactivate\n+      # sanitization altogether.\n+      attr_writer :sanitization\n+\n+      # Sets sanitization options. Set to false to deactivate\n+      # sanitization altogether.\n+      attr_writer :history_sanitization\n+\n+      # Hash for setting different default wiki options\n+      # These defaults can be overridden by options passed directly to initialize()\n+      attr_accessor :default_options\n+\n+      # Gets the page class used by all instances of this Wiki.\n+      # Default: Gollum::Page.\n+      def page_class\n+        @page_class ||\n+            if superclass.respond_to?(:page_class)\n+              superclass.page_class\n+            else\n+              ::Gollum::Page\n+            end\n+      end\n+\n+      # Gets the file class used by all instances of this Wiki.\n+      # Default: Gollum::File.\n+      def file_class\n+        @file_class ||\n+            if superclass.respond_to?(:file_class)\n+              superclass.file_class\n+            else\n+              ::Gollum::File\n+            end\n+      end\n+\n+      # Gets the markup class used by all instances of this Wiki.\n+      # Default: Gollum::Markup\n+      def markup_classes\n+        @markup_classes ||=\n+            if superclass.respond_to?(:markup_classes)\n+              superclass.markup_classes\n+            else\n+              Hash.new(::Gollum::Markup)\n+            end\n+      end\n+\n+      # Gets the default markup class used by all instances of this Wiki.\n+      # Kept for backwards compatibility until Gollum v2.x\n+      def markup_class(language=:default)\n+        markup_classes[language]\n+      end\n+\n+      # Sets the default markup class used by all instances of this Wiki.\n+      # Kept for backwards compatibility until Gollum v2.x\n+      def markup_class=(default)\n+        @markup_classes = Hash.new(default).update(markup_classes)\n+        default\n+      end\n+\n+      alias_method :default_markup_class, :markup_class\n+      alias_method :default_markup_class=, :markup_class=\n+\n+      # Gets the default sanitization options for current pages used by\n+      # instances of this Wiki.\n+      def sanitization\n+        if @sanitization.nil?\n+          @sanitization = Sanitization.new\n+        end\n+        @sanitization\n+      end\n+\n+      # Gets the default sanitization options for older page revisions used by\n+      # instances of this Wiki.\n+      def history_sanitization\n+        if @history_sanitization.nil?\n+          @history_sanitization = sanitization ?\n+              sanitization.history_sanitization :\n+              false\n+        end\n+        @history_sanitization\n+      end\n+    end\n+\n+    self.default_ref             = 'master'\n+    self.default_committer_name  = 'Anonymous'\n+    self.default_committer_email = 'anon@anon.com'\n+\n+    self.default_ws_subs = ['_', '-']\n+    self.default_options = {}\n+\n+    # The String base path to prefix to internal links. For example, when set\n+    # to \"/wiki\", the page \"Hobbit\" will be linked as \"/wiki/Hobbit\". Defaults\n+    # to \"/\".\n+    attr_reader :base_path\n+\n+    # Gets the sanitization options for current pages used by this Wiki.\n+    attr_reader :sanitization\n+\n+    # Gets the sanitization options for older page revisions used by this Wiki.\n+    attr_reader :history_sanitization\n+\n+    # Gets the String ref in which all page files reside.\n+    attr_reader :ref\n+\n+    # Gets the String directory in which all page files reside.\n+    attr_reader :page_file_dir\n+\n+    # Gets the Array of chars to sub for ws in filenames.\n+    attr_reader :ws_subs\n+\n+    # Gets the boolean live preview value.\n+    attr_reader :live_preview\n+\n+    # Injects custom css from custom.css in root repo.\n+    # Defaults to false\n+    attr_reader :css\n+\n+    # Sets page title to value of first h1\n+    # Defaults to false\n+    attr_reader :h1_title\n+\n+    # Gets the custom index page for / and subdirs (e.g. foo/)\n+    attr_reader :index_page\n+\n+    # Gets side on which the sidebar should be shown\n+    attr_reader :bar_side\n+\n+\n+    attr_reader :access\n+\n+    # An array of symbols which refer to classes under Gollum::Filter,\n+    # each of which is an element in the \"filtering chain\".  See\n+    # the documentation for Gollum::Filter for more on how this chain\n+    # works, and what filter classes need to implement.\n+    attr_reader :filter_chain\n+\n+    # Public: Initialize a new Gollum Repo.\n+    #\n+    # path    - The String path to the Git repository that holds the Gollum\n+    #           site.\n+    # options - Optional Hash:\n+    #           :universal_toc - Table of contents on all pages.  Default: false\n+    #           :live_preview  - Livepreview editing for markdown files. Default: true\n+    #           :base_path     - String base path for all Wiki links.\n+    #                            Default: \"/\"\n+    #           :page_class    - The page Class. Default: Gollum::Page\n+    #           :file_class    - The file Class. Default: Gollum::File\n+    #           :markup_classes - A hash containing the markup Classes for each\n+    #                             document type. Default: { Gollum::Markup }\n+    #           :sanitization  - An instance of Sanitization.\n+    #           :page_file_dir - String the directory in which all page files reside\n+    #           :ref - String the repository ref to retrieve pages from\n+    #           :ws_subs       - Array of chars to sub for ws in filenames.\n+    #           :mathjax       - Set to false to disable mathjax.\n+    #           :user_icons    - Enable user icons on the history page. [gravatar, identicon, none].\n+    #                            Default: none\n+    #           :show_all      - Show all files in file view, not just valid pages.\n+    #                            Default: false\n+    #           :collapse_tree - Start with collapsed file view. Default: false\n+    #           :css           - Include the custom.css file from the repo.\n+    #           :h1_title      - Concatenate all h1's on a page to form the\n+    #                            page title.\n+    #           :index_page    - The default page to retrieve or create if the\n+    #                            a directory is accessed.\n+    #           :bar_side      - Where the sidebar should be displayed, may be:\n+    #                             - :left\n+    #                             - :right\n+    #           :allow_uploads - Set to true to allow file uploads.\n+    #           :per_page_uploads - Whether uploads should be stored in a central\n+    #                            'uploads' directory, or in a directory named for\n+    #                            the page they were uploaded to.\n+    #           :filter_chain  - Override the default filter chain with your own.\n+    #\n+    # Returns a fresh Gollum::Repo.\n+    def initialize(path, options = {})\n+      options = self.class.default_options.merge(options)\n+      if path.is_a?(GitAccess)\n+        options[:access] = path\n+        path             = path.path\n+      end\n+\n+      # Use .fetch instead of ||\n+      #\n+      # o = { :a => false }\n+      # o[:a] || true # => true\n+      # o.fetch :a, true # => false\n+\n+      @path                 = path\n+      @repo_is_bare         = options.fetch :repo_is_bare, nil\n+      @page_file_dir        = options.fetch :page_file_dir, nil\n+      @access               = options.fetch :access, GitAccess.new(path, @page_file_dir, @repo_is_bare)\n+      @base_path            = options.fetch :base_path, \"/\"\n+      @page_class           = options.fetch :page_class, self.class.page_class\n+      @file_class           = options.fetch :file_class, self.class.file_class\n+      @markup_classes       = options.fetch :markup_classes, self.class.markup_classes\n+      @repo                 = @access.repo\n+      @ref                  = options.fetch :ref, self.class.default_ref\n+      @sanitization         = options.fetch :sanitization, self.class.sanitization\n+      @ws_subs              = options.fetch :ws_subs, self.class.default_ws_subs\n+      @history_sanitization = options.fetch :history_sanitization, self.class.history_sanitization\n+      @live_preview         = options.fetch :live_preview, true\n+      @universal_toc        = options.fetch :universal_toc, false\n+      @mathjax              = options.fetch :mathjax, false\n+      @show_all             = options.fetch :show_all, false\n+      @collapse_tree        = options.fetch :collapse_tree, false\n+      @css                  = options.fetch :css, false\n+      @h1_title             = options.fetch :h1_title, false\n+      @index_page           = options.fetch :index_page, 'Home'\n+      @bar_side             = options.fetch :sidebar, :right\n+      @user_icons           = ['gravatar', 'identicon'].include?(options[:user_icons]) ?\n+          options[:user_icons] : 'none'\n+      @allow_uploads        = options.fetch :allow_uploads, false\n+      @per_page_uploads     = options.fetch :per_page_uploads, false\n+      @filter_chain         = options.fetch :filter_chain,\n+                                            [:Metadata, :PlainText, :TOC, :RemoteCode, :Code, :Sanitize, :WSD, :Tags, :Render]\n+    end\n+\n+    # Public: check whether the wiki's git repo exists on the filesystem.\n+    #\n+    # Returns true if the repo exists, and false if it does not.\n+    def exist?\n+      @access.exist?\n+    end\n+\n+    # Public: Get the formatted page for a given page name, version, and dir.\n+    #\n+    # name    - The human or canonical String page name of the wiki page.\n+    # version - The String version ID to find (default: @ref).\n+    # dir     - The directory String relative to the repo.\n+    #\n+    # Returns a Gollum::Page or nil if no matching page was found.\n+    def page(name, version = @ref, dir = nil, exact = false)\n+      version = @ref if version.nil?\n+      @page_class.new(self).find(name, version, dir, exact)\n+    end\n+\n+\n+    # Public: Convenience method instead of calling page(name, nil, dir).\n+    #\n+    # name    - The human or canonical String page name of the wiki page.\n+    # version - The String version ID to find (default: @ref).\n+    # dir     - The directory String relative to the repo.\n+    #\n+    # Returns a Gollum::Page or nil if no matching page was found.\n+    def paged(name, dir = nil, exact = false, version = @ref)\n+      page(name, version, dir, exact)\n+    end\n+\n+    # Public: Get the static file for a given name.\n+    #\n+    # name    - The full String pathname to the file.\n+    # version - The String version ID to find (default: @ref).\n+    # try_on_disk - If true, try to return just a reference to a file\n+    #               that exists on the disk.\n+    #\n+    # Returns a Gollum::File or nil if no matching file was found. Note\n+    # that if you specify try_on_disk=true, you may or may not get a file\n+    # for which on_disk? is actually true.\n+    def file(name, version = @ref, try_on_disk = false)\n+      @file_class.new(self).find(name, version, try_on_disk)\n+    end\n+\n+    # Public: Create an in-memory Page with the given data and format. This\n+    # is useful for previewing what content will look like before committing\n+    # it to the repository.\n+    #\n+    # name   - The String name of the page.\n+    # format - The Symbol format of the page.\n+    # data   - The new String contents of the page.\n+    #\n+    # Returns the in-memory Gollum::Page.\n+    def preview_page(name, data, format)\n+      page = @page_class.new(self)\n+      ext  = @page_class.format_to_ext(format.to_sym)\n+      name = @page_class.cname(name) + '.' + ext\n+      blob = OpenStruct.new(:name => name, :data => data, :is_symlink => false)\n+      page.populate(blob)\n+      page.version = @access.commit('master')\n+      page\n+    end\n+\n+    # Public: Write a new version of a page to the Gollum repo root.\n+    #\n+    # name   - The String name of the page.\n+    # format - The Symbol format of the page.\n+    # data   - The new String contents of the page.\n+    # commit - The commit Hash details:\n+    #          :message   - The String commit message.\n+    #          :name      - The String author full name.\n+    #          :email     - The String email address.\n+    #          :parent    - Optional Grit::Commit parent to this update.\n+    #          :tree      - Optional String SHA of the tree to create the\n+    #                       index from.\n+    #          :committer - Optional Gollum::Committer instance.  If provided,\n+    #                       assume that this operation is part of batch of\n+    #                       updates and the commit happens later.\n+    # dir    - The String subdirectory of the Gollum::Page without any\n+    #          prefix or suffix slashes (e.g. \"foo/bar\").\n+    # Returns the String SHA1 of the newly written version, or the\n+    # Gollum::Committer instance if this is part of a batch update.\n+    def write_page(name, format, data, commit = {}, dir = '')\n+      # spaces must be dashes\n+      sanitized_name = name.gsub(' ', '-')\n+      sanitized_dir  = dir.gsub(' ', '-')\n+\n+      committer    = Committer.new(self, commit)\n+\n+      filename = Gollum::Page.cname(sanitized_name)\n+\n+\n+\n+      committer.add_to_index(sanitized_dir, filename, format, data)\n+\n+      committer.after_commit do |index, sha|\n+        @access.refresh\n+        index.update_working_dir(sanitized_dir, filename, format)\n+      end\n+\n+      committer.commit\n+    end\n+\n+    # Public: Rename an existing page without altering content.\n+    #\n+    # page   - The Gollum::Page to update.\n+    # rename - The String extension-less full path of the page (leading '/' is ignored).\n+    # commit - The commit Hash details:\n+    #          :message   - The String commit message.\n+    #          :name      - The String author full name.\n+    #          :email     - The String email address.\n+    #          :parent    - Optional Grit::Commit parent to this update.\n+    #          :tree      - Optional String SHA of the tree to create the\n+    #                       index from.\n+    #          :committer - Optional Gollum::Committer instance.  If provided,\n+    #                       assume that this operation is part of batch of\n+    #                       updates and the commit happens later.\n+    #\n+    # Returns the String SHA1 of the newly written version, or the\n+    # Gollum::Committer instance if this is part of a batch update.\n+    # Returns false if the operation is a NOOP.\n+    def rename_page(page, rename, commit = {})\n+      return false if page.nil?\n+      return false if rename.nil? or rename.empty?\n+\n+      (target_dir, target_name) = ::File.split(rename)\n+      (source_dir, source_name) = ::File.split(page.path)\n+      source_name               = page.filename_stripped\n+\n+      # File.split gives us relative paths with \".\", commiter.add_to_index doesn't like that.\n+      target_dir                = '' if target_dir == '.'\n+      source_dir                = '' if source_dir == '.'\n+      target_dir                = target_dir.gsub(/^\\//, '')\n+\n+      # if the rename is a NOOP, abort\n+      if source_dir == target_dir and source_name == target_name\n+        return false\n+      end\n+\n+      multi_commit = !!commit[:committer]\n+      committer    = multi_commit ? commit[:committer] : Committer.new(self, commit)\n+\n+      committer.delete(page.path)\n+      committer.add_to_index(target_dir, target_name, page.format, page.raw_data)\n+\n+      committer.after_commit do |index, sha|\n+        @access.refresh\n+        index.update_working_dir(source_dir, source_name, page.format)\n+        index.update_working_dir(target_dir, target_name, page.format)\n+      end\n+\n+      multi_commit ? committer : committer.commit\n+    end\n+\n+    # Public: Update an existing page with new content. The location of the\n+    # page inside the repository will not change. If the given format is\n+    # different than the current format of the page, the filename will be\n+    # changed to reflect the new format.\n+    #\n+    # page   - The Gollum::Page to update.\n+    # name   - The String extension-less name of the page.\n+    # format - The Symbol format of the page.\n+    # data   - The new String contents of the page.\n+    # commit - The commit Hash details:\n+    #          :message   - The String commit message.\n+    #          :name      - The String author full name.\n+    #          :email     - The String email address.\n+    #          :parent    - Optional Grit::Commit parent to this update.\n+    #          :tree      - Optional String SHA of the tree to create the\n+    #                       index from.\n+    #          :committer - Optional Gollum::Committer instance.  If provided,\n+    #                       assume that this operation is part of batch of\n+    #                       updates and the commit happens later.\n+    #\n+    # Returns the String SHA1 of the newly written version, or the\n+    # Gollum::Committer instance if this is part of a batch update.\n+    def update_page(page, name, format, data, commit = {})\n+      name     ||= page.name\n+      format   ||= page.format\n+      dir      = ::File.dirname(page.path)\n+      dir      = '' if dir == '.'\n+      filename = (rename = page.name != name) ?\n+          Gollum::Page.cname(name) : page.filename_stripped\n+\n+      committer =  Committer.new(self, commit)\n+\n+      if !rename && page.format == format\n+        committer.add_to_index(dir,filename,format, normalize(data))\n+      else\n+        committer.remove_from_index(page.path)\n+        committer.add_to_index(dir, filename, format, data)\n+      end\n+\n+      committer.commit\n+    end\n+\n+    # Public: Delete a page.\n+    #\n+    # page   - The Gollum::Page to delete.\n+    # commit - The commit Hash details:\n+    #          :message   - The String commit message.\n+    #          :name      - The String author full name.\n+    #          :email     - The String email address.\n+    #          :parent    - Optional Grit::Commit parent to this update.\n+    #          :tree      - Optional String SHA of the tree to create the\n+    #                       index from.\n+    #          :committer - Optional Gollum::Committer instance.  If provided,\n+    #                       assume that this operation is part of batch of\n+    #                       updates and the commit happens later.\n+    #\n+    # Returns the String SHA1 of the newly written version, or the\n+    # Gollum::Committer instance if this is part of a batch update.\n+    def delete_page(page, commit)\n+      committer = Committer.new(self,commit)\n+      committer.remove_from_index(page.path)\n+      committer.commit\n+    end\n+\n+    # Public: Applies a reverse diff for a given page.  If only 1 SHA is given,\n+    # the reverse diff will be taken from its parent (^SHA...SHA).  If two SHAs\n+    # are given, the reverse diff is taken from SHA1...SHA2.\n+    #\n+    # page   - The Gollum::Page to delete.\n+    # sha1   - String SHA1 of the earlier parent if two SHAs are given,\n+    #          or the child.\n+    # sha2   - Optional String SHA1 of the child.\n+    # commit - The commit Hash details:\n+    #          :message - The String commit message.\n+    #          :name    - The String author full name.\n+    #          :email   - The String email address.\n+    #          :parent  - Optional Grit::Commit parent to this update.\n+    #\n+    # Returns a String SHA1 of the new commit, or nil if the reverse diff does\n+    # not apply.\n+    def revert_page(page, sha1, sha2 = nil, commit = {})\n+      if sha2.is_a?(Hash)\n+        commit = sha2\n+        sha2   = nil\n+      end\n+\n+      patch                    = full_reverse_diff_for(page, sha1, sha2)\n+      committer                = Committer.new(self, commit)\n+      parent                   = committer.parents[0]\n+      committer.options[:tree] = @repo.git.apply_patch(parent.sha, patch)\n+      return false unless committer.options[:tree]\n+      committer.after_commit do |index, sha|\n+        @access.refresh\n+\n+        files = []\n+        if page\n+          files << [page.path, page.filename_stripped, page.format]\n+        else\n+          # Grit::Diff can't parse reverse diffs.... yet\n+          patch.each_line do |line|\n+            if line =~ %r{^diff --git b/.+? a/(.+)$}\n+              path = $1\n+              ext  = ::File.extname(path)\n+              name = ::File.basename(path, ext)\n+              if format = ::Gollum::Page.format_for(ext)\n+                files << [path, name, format]\n+              end\n+            end\n+          end\n+        end\n+\n+        files.each do |(path, name, format)|\n+          dir = ::File.dirname(path)\n+          dir = '' if dir == '.'\n+          index.update_working_dir(dir, name, format)\n+        end\n+      end\n+\n+      committer.commit\n+    end\n+\n+    # Public: Applies a reverse diff to the repo.  If only 1 SHA is given,\n+    # the reverse diff will be taken from its parent (^SHA...SHA).  If two SHAs\n+    # are given, the reverse diff is taken from SHA1...SHA2.\n+    #\n+    # sha1   - String SHA1 of the earlier parent if two SHAs are given,\n+    #          or the child.\n+    # sha2   - Optional String SHA1 of the child.\n+    # commit - The commit Hash details:\n+    #          :message - The String commit message.\n+    #          :name    - The String author full name.\n+    #          :email   - The String email address.\n+    #\n+    # Returns a String SHA1 of the new commit, or nil if the reverse diff does\n+    # not apply.\n+    def revert_commit(sha1, sha2 = nil, commit = {})\n+      revert_page(nil, sha1, sha2, commit)\n+    end\n+\n+    # Public: Lists all pages for this wiki.\n+    #\n+    # treeish - The String commit ID or ref to find  (default:  @ref)\n+    #\n+    # Returns an Array of Gollum::Page instances.\n+    def pages(treeish = nil)\n+      tree_list(treeish || @ref)\n+    end\n+\n+    # Public: Lists all non-page files for this wiki.\n+    #\n+    # treeish - The String commit ID or ref to find  (default:  @ref)\n+    #\n+    # Returns an Array of Gollum::File instances.\n+    def files(treeish = nil)\n+      file_list(treeish || @ref)\n+    end\n+\n+    # Public: Returns the number of pages accessible from a commit\n+    #\n+    # ref - A String ref that is either a commit SHA or references one.\n+    #\n+    # Returns a Fixnum\n+    def size(ref = nil)\n+      tree_map_for(ref || @ref).inject(0) do |num, entry|\n+        num + (@page_class.valid_page_name?(entry.name) ? 1 : 0)\n+      end\n+    rescue Grit::GitRuby::Repository::NoSuchShaFound\n+      0\n+    end\n+\n+    # Public: Search all pages for this wiki.\n+    #\n+    # query - The string to search for\n+    #\n+    # Returns an Array with Objects of page name and count of matches\n+    def search(query)\n+      results ||= []\n+      @repo.head.target.tree.walk_blobs do |root,entry|","path":"lib/gollum-lib/wiki.rb","position":576,"original_position":576,"commit_id":"eaca53a29e8c1e55e8e082da3bd49b09042e71bc","original_commit_id":"eaca53a29e8c1e55e8e082da3bd49b09042e71bc","user":{"login":"houndci","id":6697940,"avatar_url":"https://avatars.githubusercontent.com/u/6697940?v=1","gravatar_id":"38d9cefd9971a05bf447f07c6cd332cc","url":"https://api.github.com/users/houndci","html_url":"https://github.com/houndci","followers_url":"https://api.github.com/users/houndci/followers","following_url":"https://api.github.com/users/houndci/following{/other_user}","gists_url":"https://api.github.com/users/houndci/gists{/gist_id}","starred_url":"https://api.github.com/users/houndci/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/houndci/subscriptions","organizations_url":"https://api.github.com/users/houndci/orgs","repos_url":"https://api.github.com/users/houndci/repos","events_url":"https://api.github.com/users/houndci/events{/privacy}","received_events_url":"https://api.github.com/users/houndci/received_events","type":"User","site_admin":false},"body":"Unused block argument - `root`. If it's necessary, use `_` or `_root` as an argument name to indicate that it won't be used.<br>Space missing after comma.","created_at":"2014-08-01T10:16:50Z","updated_at":"2014-08-01T10:16:50Z","html_url":"https://github.com/nirnanaaa/gollum_rails/pull/25#discussion_r15689761","pull_request_url":"https://api.github.com/repos/nirnanaaa/gollum_rails/pulls/25","_links":{"self":{"href":"https://api.github.com/repos/nirnanaaa/gollum_rails/pulls/comments/15689761"},"html":{"href":"https://github.com/nirnanaaa/gollum_rails/pull/25#discussion_r15689761"},"pull_request":{"href":"https://api.github.com/repos/nirnanaaa/gollum_rails/pulls/25"}}},"pull_request":{"url":"https://api.github.com/repos/nirnanaaa/gollum_rails/pulls/25","id":19202736,"html_url":"https://github.com/nirnanaaa/gollum_rails/pull/25","diff_url":"https://github.com/nirnanaaa/gollum_rails/pull/25.diff","patch_url":"https://github.com/nirnanaaa/gollum_rails/pull/25.patch","issue_url":"https://api.github.com/repos/nirnanaaa/gollum_rails/issues/25","number":25,"state":"open","title":"Rugged for GollumRails","user":{"login":"nirnanaaa","id":1064750,"avatar_url":"https://avatars.githubusercontent.com/u/1064750?v=1","gravatar_id":"cb4b5b5e6be9ed9efefbbc10d96e862d","url":"https://api.github.com/users/nirnanaaa","html_url":"https://github.com/nirnanaaa","followers_url":"https://api.github.com/users/nirnanaaa/followers","following_url":"https://api.github.com/users/nirnanaaa/following{/other_user}","gists_url":"https://api.github.com/users/nirnanaaa/gists{/gist_id}","starred_url":"https://api.github.com/users/nirnanaaa/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nirnanaaa/subscriptions","organizations_url":"https://api.github.com/users/nirnanaaa/orgs","repos_url":"https://api.github.com/users/nirnanaaa/repos","events_url":"https://api.github.com/users/nirnanaaa/events{/privacy}","received_events_url":"https://api.github.com/users/nirnanaaa/received_events","type":"User","site_admin":false},"body":"Adding my rugged implementation. \r\n\r\nworks:\r\n\r\n- [ ] page\r\n  - [x] page creation\r\n  - [x] page update\r\n  - [x] page delete\r\n  - [x] page links\r\n- [x] file\r\n  - [x] file create\r\n  - [x] file delete\r\n- [x] gollum-lib\r\n  - [ ] all internal methods","created_at":"2014-08-01T10:16:22Z","updated_at":"2014-08-01T10:16:51Z","closed_at":null,"merged_at":null,"merge_commit_sha":"9033cac3cf47bac7bcac8b1f5248334b3c459549","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/nirnanaaa/gollum_rails/pulls/25/commits","review_comments_url":"https://api.github.com/repos/nirnanaaa/gollum_rails/pulls/25/comments","review_comment_url":"https://api.github.com/repos/nirnanaaa/gollum_rails/pulls/comments/{number}","comments_url":"https://api.github.com/repos/nirnanaaa/gollum_rails/issues/25/comments","statuses_url":"https://api.github.com/repos/nirnanaaa/gollum_rails/statuses/eaca53a29e8c1e55e8e082da3bd49b09042e71bc","head":{"label":"Corscience:master","ref":"master","sha":"eaca53a29e8c1e55e8e082da3bd49b09042e71bc","user":{"login":"Corscience","id":3007864,"avatar_url":"https://avatars.githubusercontent.com/u/3007864?v=1","gravatar_id":"7418d2eef67e74215973af4922eb2959","url":"https://api.github.com/users/Corscience","html_url":"https://github.com/Corscience","followers_url":"https://api.github.com/users/Corscience/followers","following_url":"https://api.github.com/users/Corscience/following{/other_user}","gists_url":"https://api.github.com/users/Corscience/gists{/gist_id}","starred_url":"https://api.github.com/users/Corscience/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Corscience/subscriptions","organizations_url":"https://api.github.com/users/Corscience/orgs","repos_url":"https://api.github.com/users/Corscience/repos","events_url":"https://api.github.com/users/Corscience/events{/privacy}","received_events_url":"https://api.github.com/users/Corscience/received_events","type":"Organization","site_admin":false},"repo":{"id":22379511,"name":"gollum_rails","full_name":"Corscience/gollum_rails","owner":{"login":"Corscience","id":3007864,"avatar_url":"https://avatars.githubusercontent.com/u/3007864?v=1","gravatar_id":"7418d2eef67e74215973af4922eb2959","url":"https://api.github.com/users/Corscience","html_url":"https://github.com/Corscience","followers_url":"https://api.github.com/users/Corscience/followers","following_url":"https://api.github.com/users/Corscience/following{/other_user}","gists_url":"https://api.github.com/users/Corscience/gists{/gist_id}","starred_url":"https://api.github.com/users/Corscience/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Corscience/subscriptions","organizations_url":"https://api.github.com/users/Corscience/orgs","repos_url":"https://api.github.com/users/Corscience/repos","events_url":"https://api.github.com/users/Corscience/events{/privacy}","received_events_url":"https://api.github.com/users/Corscience/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Corscience/gollum_rails","description":"Integrate Gollum wiki into your Rails app","fork":true,"url":"https://api.github.com/repos/Corscience/gollum_rails","forks_url":"https://api.github.com/repos/Corscience/gollum_rails/forks","keys_url":"https://api.github.com/repos/Corscience/gollum_rails/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Corscience/gollum_rails/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Corscience/gollum_rails/teams","hooks_url":"https://api.github.com/repos/Corscience/gollum_rails/hooks","issue_events_url":"https://api.github.com/repos/Corscience/gollum_rails/issues/events{/number}","events_url":"https://api.github.com/repos/Corscience/gollum_rails/events","assignees_url":"https://api.github.com/repos/Corscience/gollum_rails/assignees{/user}","branches_url":"https://api.github.com/repos/Corscience/gollum_rails/branches{/branch}","tags_url":"https://api.github.com/repos/Corscience/gollum_rails/tags","blobs_url":"https://api.github.com/repos/Corscience/gollum_rails/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Corscience/gollum_rails/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Corscience/gollum_rails/git/refs{/sha}","trees_url":"https://api.github.com/repos/Corscience/gollum_rails/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Corscience/gollum_rails/statuses/{sha}","languages_url":"https://api.github.com/repos/Corscience/gollum_rails/languages","stargazers_url":"https://api.github.com/repos/Corscience/gollum_rails/stargazers","contributors_url":"https://api.github.com/repos/Corscience/gollum_rails/contributors","subscribers_url":"https://api.github.com/repos/Corscience/gollum_rails/subscribers","subscription_url":"https://api.github.com/repos/Corscience/gollum_rails/subscription","commits_url":"https://api.github.com/repos/Corscience/gollum_rails/commits{/sha}","git_commits_url":"https://api.github.com/repos/Corscience/gollum_rails/git/commits{/sha}","comments_url":"https://api.github.com/repos/Corscience/gollum_rails/comments{/number}","issue_comment_url":"https://api.github.com/repos/Corscience/gollum_rails/issues/comments/{number}","contents_url":"https://api.github.com/repos/Corscience/gollum_rails/contents/{+path}","compare_url":"https://api.github.com/repos/Corscience/gollum_rails/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Corscience/gollum_rails/merges","archive_url":"https://api.github.com/repos/Corscience/gollum_rails/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Corscience/gollum_rails/downloads","issues_url":"https://api.github.com/repos/Corscience/gollum_rails/issues{/number}","pulls_url":"https://api.github.com/repos/Corscience/gollum_rails/pulls{/number}","milestones_url":"https://api.github.com/repos/Corscience/gollum_rails/milestones{/number}","notifications_url":"https://api.github.com/repos/Corscience/gollum_rails/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Corscience/gollum_rails/labels{/name}","releases_url":"https://api.github.com/repos/Corscience/gollum_rails/releases{/id}","created_at":"2014-07-29T12:46:26Z","updated_at":"2014-07-30T09:00:13Z","pushed_at":"2014-07-31T18:16:10Z","git_url":"git://github.com/Corscience/gollum_rails.git","ssh_url":"git@github.com:Corscience/gollum_rails.git","clone_url":"https://github.com/Corscience/gollum_rails.git","svn_url":"https://github.com/Corscience/gollum_rails","homepage":"","size":3673,"stargazers_count":0,"watchers_count":0,"language":"Ruby","has_issues":false,"has_downloads":true,"has_wiki":true,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"nirnanaaa:master","ref":"master","sha":"3abf0a3f97d526dc4abd38ac60f8a4b2764bd614","user":{"login":"nirnanaaa","id":1064750,"avatar_url":"https://avatars.githubusercontent.com/u/1064750?v=1","gravatar_id":"cb4b5b5e6be9ed9efefbbc10d96e862d","url":"https://api.github.com/users/nirnanaaa","html_url":"https://github.com/nirnanaaa","followers_url":"https://api.github.com/users/nirnanaaa/followers","following_url":"https://api.github.com/users/nirnanaaa/following{/other_user}","gists_url":"https://api.github.com/users/nirnanaaa/gists{/gist_id}","starred_url":"https://api.github.com/users/nirnanaaa/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nirnanaaa/subscriptions","organizations_url":"https://api.github.com/users/nirnanaaa/orgs","repos_url":"https://api.github.com/users/nirnanaaa/repos","events_url":"https://api.github.com/users/nirnanaaa/events{/privacy}","received_events_url":"https://api.github.com/users/nirnanaaa/received_events","type":"User","site_admin":false},"repo":{"id":7823144,"name":"gollum_rails","full_name":"nirnanaaa/gollum_rails","owner":{"login":"nirnanaaa","id":1064750,"avatar_url":"https://avatars.githubusercontent.com/u/1064750?v=1","gravatar_id":"cb4b5b5e6be9ed9efefbbc10d96e862d","url":"https://api.github.com/users/nirnanaaa","html_url":"https://github.com/nirnanaaa","followers_url":"https://api.github.com/users/nirnanaaa/followers","following_url":"https://api.github.com/users/nirnanaaa/following{/other_user}","gists_url":"https://api.github.com/users/nirnanaaa/gists{/gist_id}","starred_url":"https://api.github.com/users/nirnanaaa/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nirnanaaa/subscriptions","organizations_url":"https://api.github.com/users/nirnanaaa/orgs","repos_url":"https://api.github.com/users/nirnanaaa/repos","events_url":"https://api.github.com/users/nirnanaaa/events{/privacy}","received_events_url":"https://api.github.com/users/nirnanaaa/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/nirnanaaa/gollum_rails","description":"Integrate Gollum wiki into your Rails app","fork":false,"url":"https://api.github.com/repos/nirnanaaa/gollum_rails","forks_url":"https://api.github.com/repos/nirnanaaa/gollum_rails/forks","keys_url":"https://api.github.com/repos/nirnanaaa/gollum_rails/keys{/key_id}","collaborators_url":"https://api.github.com/repos/nirnanaaa/gollum_rails/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/nirnanaaa/gollum_rails/teams","hooks_url":"https://api.github.com/repos/nirnanaaa/gollum_rails/hooks","issue_events_url":"https://api.github.com/repos/nirnanaaa/gollum_rails/issues/events{/number}","events_url":"https://api.github.com/repos/nirnanaaa/gollum_rails/events","assignees_url":"https://api.github.com/repos/nirnanaaa/gollum_rails/assignees{/user}","branches_url":"https://api.github.com/repos/nirnanaaa/gollum_rails/branches{/branch}","tags_url":"https://api.github.com/repos/nirnanaaa/gollum_rails/tags","blobs_url":"https://api.github.com/repos/nirnanaaa/gollum_rails/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/nirnanaaa/gollum_rails/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/nirnanaaa/gollum_rails/git/refs{/sha}","trees_url":"https://api.github.com/repos/nirnanaaa/gollum_rails/git/trees{/sha}","statuses_url":"https://api.github.com/repos/nirnanaaa/gollum_rails/statuses/{sha}","languages_url":"https://api.github.com/repos/nirnanaaa/gollum_rails/languages","stargazers_url":"https://api.github.com/repos/nirnanaaa/gollum_rails/stargazers","contributors_url":"https://api.github.com/repos/nirnanaaa/gollum_rails/contributors","subscribers_url":"https://api.github.com/repos/nirnanaaa/gollum_rails/subscribers","subscription_url":"https://api.github.com/repos/nirnanaaa/gollum_rails/subscription","commits_url":"https://api.github.com/repos/nirnanaaa/gollum_rails/commits{/sha}","git_commits_url":"https://api.github.com/repos/nirnanaaa/gollum_rails/git/commits{/sha}","comments_url":"https://api.github.com/repos/nirnanaaa/gollum_rails/comments{/number}","issue_comment_url":"https://api.github.com/repos/nirnanaaa/gollum_rails/issues/comments/{number}","contents_url":"https://api.github.com/repos/nirnanaaa/gollum_rails/contents/{+path}","compare_url":"https://api.github.com/repos/nirnanaaa/gollum_rails/compare/{base}...{head}","merges_url":"https://api.github.com/repos/nirnanaaa/gollum_rails/merges","archive_url":"https://api.github.com/repos/nirnanaaa/gollum_rails/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/nirnanaaa/gollum_rails/downloads","issues_url":"https://api.github.com/repos/nirnanaaa/gollum_rails/issues{/number}","pulls_url":"https://api.github.com/repos/nirnanaaa/gollum_rails/pulls{/number}","milestones_url":"https://api.github.com/repos/nirnanaaa/gollum_rails/milestones{/number}","notifications_url":"https://api.github.com/repos/nirnanaaa/gollum_rails/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/nirnanaaa/gollum_rails/labels{/name}","releases_url":"https://api.github.com/repos/nirnanaaa/gollum_rails/releases{/id}","created_at":"2013-01-25T15:52:39Z","updated_at":"2014-08-01T10:07:14Z","pushed_at":"2014-07-19T12:16:06Z","git_url":"git://github.com/nirnanaaa/gollum_rails.git","ssh_url":"git@github.com:nirnanaaa/gollum_rails.git","clone_url":"https://github.com/nirnanaaa/gollum_rails.git","svn_url":"https://github.com/nirnanaaa/gollum_rails","homepage":"","size":3673,"stargazers_count":22,"watchers_count":22,"language":"Ruby","has_issues":true,"has_downloads":true,"has_wiki":true,"forks_count":13,"mirror_url":null,"open_issues_count":1,"forks":13,"open_issues":1,"watchers":22,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/nirnanaaa/gollum_rails/pulls/25"},"html":{"href":"https://github.com/nirnanaaa/gollum_rails/pull/25"},"issue":{"href":"https://api.github.com/repos/nirnanaaa/gollum_rails/issues/25"},"comments":{"href":"https://api.github.com/repos/nirnanaaa/gollum_rails/issues/25/comments"},"review_comments":{"href":"https://api.github.com/repos/nirnanaaa/gollum_rails/pulls/25/comments"},"review_comment":{"href":"https://api.github.com/repos/nirnanaaa/gollum_rails/pulls/comments/{number}"},"commits":{"href":"https://api.github.com/repos/nirnanaaa/gollum_rails/pulls/25/commits"},"statuses":{"href":"https://api.github.com/repos/nirnanaaa/gollum_rails/statuses/eaca53a29e8c1e55e8e082da3bd49b09042e71bc"}}}}