0

1 つのフォルダーに多数の html ファイルがあります。これらをマークダウンに変換する必要があります。これを 1 つずつ行う素晴らしい宝石がいくつか見つかりました。私の質問は...フォルダー内の各ファイルをループし、コマンドを実行してこれらを別のフォルダーのmdに変換するにはどうすればよいですか。

アップデート

#!/usr/bin/ruby

root = 'C:/Doc'
inDir =  File.join(root, '/input')
outDir =  File.join(root, '/output')
extension = nil
fileName = nil

Dir.foreach(inDir) do |file|
 # Dir.foreach will always show current and parent directories
 if file == '.' or item == '..' then
  next
 end

 # makes sure the current iteration is not a sub directory
 if not File.directory?(file) then
  extension = File.extname(file)
  fileName = File.basename(file, extension)
 end

 # strips off the last string if it contains a period
 if fileName[fileName.length - 1] == "." then
  fileName = fileName[0..-1]
 end

 # this is where I got stuck
 reverse_markdown File.join(inDir, fileName, '.html') > File.join(outDir, fileName, '.md')
4

1 に答える 1

2

Dir.glob(directory) {|f| ... }ディレクトリ内のすべてのファイルをループします。たとえば、Redcarpet ライブラリを使用すると、次のようなことができます。

require 'redcarpet'

markdown = Redcarpet::Markdown.new(Redcarpet::Render::HTML, :autolink => true)

Dir.glob('*.md') do |in_filename|
  out_filename = File.join(File.dirname(in_filename), "#{File.basename(in_filename,'.*')}.html")
  File.open(in_filename, 'r') do |in_file|
    File.open(out_filename, 'w') do |out_file|
      out_file.write markdown.render(in_file.read)
    end
  end
end
于 2013-05-21T13:54:37.727 に答える