Sha256: de5afb0c3aaec506d3d1260573a4bdf7cb98fa91dc0c22ade1a374212f2efd81

Contents?: true

Size: 1.66 KB

Versions: 13

Compression:

Stored size: 1.66 KB

Contents

module Juli::Command
  # generate sitemap.html and sitemap_order_by_mtime_DESC.html
  # under $JULI_REPO
  class Sitemap
    include Juli::Util
    include Juli::Visitor::Html::TagHelper

    # cache File info
    def initialize
      @file = []
      Dir.chdir(juli_repo){
        Dir.glob('**/*.txt'){|f|
          @file << FileEntry.new(f, File.stat(f).mtime)
        }
      }
    end

    def run(opts)
      sitemap_sub('sitemap.html'){|files| files.sort}
      sitemap_sub('sitemap_order_by_mtime_DESC.html'){|files|
        files.sort{|a,b| File.stat(a).mtime <=> File.stat(b).mtime}.reverse
      }
    end

  private
    # === INPUTS
    # name::  basename without extention for sitemap
    # block:: sort condition
    def sitemap_sub(name, &block)
      Dir.chdir(juli_repo) {
        outdir = File.join(conf['output_top'])
        FileUtils.mkdir(outdir) if !File.directory?(outdir)
        body  = ''
        count = 0
        for textfile in yield(Dir.glob('**/*.txt')) do
          count += 1
          body += sprintf("<tr><td class='num'>%d</td><td><a href='%s'>%s</a></td><td>%s</td></tr>\n",
                      count,
                      textfile.gsub(/.txt$/, conf['ext']),  # url
                      textfile.gsub(/.txt$/, ''),           # label
                      File.stat(textfile).mtime.strftime("%Y/%m/%d %H:%M:%S"))
        end

        title       = I18n.t('sitemap')
        prototype   = 'prototype.js'
        javascript  = 'juli.js'
        stylesheet  = 'juli.css'
        erb         = ERB.new(File.read(find_template(name)))
        File.open(out_filename(name), 'w') do |f|
          f.write(erb.result(binding))
        end
      }
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
juli-2.3.2 lib/juli/command/sitemap.rb
juli-2.3.1 lib/juli/command/sitemap.rb
juli-2.3.0 lib/juli/command/sitemap.rb
juli-2.2.4 lib/juli/command/sitemap.rb
juli-2.2.3 lib/juli/command/sitemap.rb
juli-2.2.1 lib/juli/command/sitemap.rb
juli-2.2.0 lib/juli/command/sitemap.rb
juli-2.1.0 lib/juli/command/sitemap.rb
juli-2.0.4 lib/juli/command/sitemap.rb
juli-2.0.3 lib/juli/command/sitemap.rb
juli-2.0.2 lib/juli/command/sitemap.rb
juli-2.0.1 lib/juli/command/sitemap.rb
juli-2.0.0 lib/juli/command/sitemap.rb