lib/template.rb in narou-1.7.0 vs lib/template.rb in narou-1.7.1

- old
+ new

@@ -1,74 +1,74 @@ -# -*- coding: utf-8 -*- -# -# Copyright 2013 whiteleaf. All rights reserved. -# - -require "erb" -require_relative "narou" - -class Template - TEMPLATE_DIR = "template/" - - class LoadError < StandardError; end - - # - # テンプレートを元にファイルを作成 - # - # src_filename 読み込みたいテンプレートファイル名(.erb は省略する) - # dest_filepath 保存先ファイルパス。ディレクトリならファイル名はsrcと同じ名前で保存する - # _binding 変数とか設定したいスコープの binding 変数を渡す - # overwrite 上書きするか - # - def self.write(src_filename, dest_filepath, _binding, overwrite = false) - if File.directory?(dest_filepath) - dest_filepath = File.join(dest_filepath, src_filename) - end - unless overwrite - return if File.exist?(dest_filepath) - end - result = get(src_filename, _binding) or return nil - if Helper.os_windows? - File.write(dest_filepath, result) - else - File.binwrite(dest_filepath, result.lstrip) - end - end - - # - # テンプレートを元にデータを作成 - # - # テンプレートファイルの検索順位 - # 1. root_dir/template - # 2. script_dir/template - # - def self.get(src_filename, _binding, binary_version = 1.0) - @@binary_version = binary_version - @@src_filename = src_filename - [Narou.get_root_dir, Narou.get_script_dir].each do |dir| - path = File.join(dir, TEMPLATE_DIR, src_filename + ".erb") - next unless File.exist?(path) - src = open(path, "r:BOM|UTF-8") { |fp| fp.read } - result = ERB.new(src, nil, "-").result(_binding) - return result - end - raise LoadError, "テンプレートファイルが見つかりません。(#{src_filename}.erb)" - end - - def self.invalid_templace_version? - @@src_version < @@binary_version - end - - # - # 書かれているテンプレートがどのバージョンのテンプレートかを設定 - # - # テンプレート内部で使われる変数の変更があった場合に binary_version が上がる - # (変数の追加ではバージョンは上がらない。現在使われている変数の中身が変わった場合は上る) - # - def self.target_binary_version(version) - @@src_version = version - if invalid_templace_version? - error "テンプレートのバージョンが古いので意図しない動作をする可能性があります\n" + - "(#{@@src_filename}.erb ver #{version.to_f} < #{@@binary_version.to_f})" - end - end -end +# -*- coding: utf-8 -*- +# +# Copyright 2013 whiteleaf. All rights reserved. +# + +require "erb" +require_relative "narou" + +class Template + TEMPLATE_DIR = "template/" + + class LoadError < StandardError; end + + # + # テンプレートを元にファイルを作成 + # + # src_filename 読み込みたいテンプレートファイル名(.erb は省略する) + # dest_filepath 保存先ファイルパス。ディレクトリならファイル名はsrcと同じ名前で保存する + # _binding 変数とか設定したいスコープの binding 変数を渡す + # overwrite 上書きするか + # + def self.write(src_filename, dest_filepath, _binding, overwrite = false) + if File.directory?(dest_filepath) + dest_filepath = File.join(dest_filepath, src_filename) + end + unless overwrite + return if File.exist?(dest_filepath) + end + result = get(src_filename, _binding) or return nil + if Helper.os_windows? + File.write(dest_filepath, result) + else + File.binwrite(dest_filepath, result.lstrip) + end + end + + # + # テンプレートを元にデータを作成 + # + # テンプレートファイルの検索順位 + # 1. root_dir/template + # 2. script_dir/template + # + def self.get(src_filename, _binding, binary_version = 1.0) + @@binary_version = binary_version + @@src_filename = src_filename + [Narou.get_root_dir, Narou.get_script_dir].each do |dir| + path = File.join(dir, TEMPLATE_DIR, src_filename + ".erb") + next unless File.exist?(path) + src = open(path, "r:BOM|UTF-8") { |fp| fp.read } + result = ERB.new(src, nil, "-").result(_binding) + return result + end + raise LoadError, "テンプレートファイルが見つかりません。(#{src_filename}.erb)" + end + + def self.invalid_templace_version? + @@src_version < @@binary_version + end + + # + # 書かれているテンプレートがどのバージョンのテンプレートかを設定 + # + # テンプレート内部で使われる変数の変更があった場合に binary_version が上がる + # (変数の追加ではバージョンは上がらない。現在使われている変数の中身が変わった場合は上る) + # + def self.target_binary_version(version) + @@src_version = version + if invalid_templace_version? + error "テンプレートのバージョンが古いので意図しない動作をする可能性があります\n" + + "(#{@@src_filename}.erb ver #{version.to_f} < #{@@binary_version.to_f})" + end + end +end