module Rabbit::Source::Base
Attributes
base[R]
encoding[RW]
force_modified[RW]
tmp_base[R]
Public Class Methods
append_features(klass)
click to toggle source
Calls superclass method
# File lib/rabbit/source/base.rb, line 11 def self.append_features(klass) super klass.send(:include, GetText) end
new(encoding, logger)
click to toggle source
# File lib/rabbit/source/base.rb, line 19 def initialize(encoding, logger) @encoding = encoding @logger = logger @source = nil @force_modified = false init_base end
Public Instance Methods
base=(new_value)
click to toggle source
# File lib/rabbit/source/base.rb, line 88 def base=(new_value) if new_value.nil? init_base else set_base(new_value) end end
extension()
click to toggle source
# File lib/rabbit/source/base.rb, line 96 def extension nil end
full_path(path)
click to toggle source
# File lib/rabbit/source/base.rb, line 61 def full_path(path) if @base_uri.nil? or @base_uri.relative? ::File.join(@base, path) else uri = @base_uri.dup uri.path = @base_uri.path + "/" unless /\/$/ =~ @base_uri.path (uri + path).to_s end end
modified?()
click to toggle source
# File lib/rabbit/source/base.rb, line 53 def modified? @force_modified or need_read? end
need_read?()
click to toggle source
# File lib/rabbit/source/base.rb, line 57 def need_read? @source.nil? end
old?(current, get_latest_method_name)
click to toggle source
# File lib/rabbit/source/base.rb, line 77 def old?(current, get_latest_method_name) current.nil? or (current and __send__(get_latest_method_name) > current) end
open_full_path(path, mode="rb") { |f| ... }
click to toggle source
# File lib/rabbit/source/base.rb, line 71 def open_full_path(path, mode="rb") open(full_path(path), mode) do |f| yield f end end
read()
click to toggle source
# File lib/rabbit/source/base.rb, line 35 def read if need_read? @source = _read if @encoding.nil? enc = guess_encoding(@source) else enc = @encoding end if /\Autf-?8\z/i =~ enc @source.force_encoding(enc) if @source.respond_to?(:force_encoding) else @source = convert_encoding("UTF-8", enc, @source) end end @source end
reset()
click to toggle source
# File lib/rabbit/source/base.rb, line 32 def reset end
source=(new_source)
click to toggle source
# File lib/rabbit/source/base.rb, line 27 def source=(new_source) source_type = self.class.name.split("::").last.downcase raise ImmutableSourceTypeError.new(source_type) end
tmp_dir_name()
click to toggle source
# File lib/rabbit/source/base.rb, line 82 def tmp_dir_name dir = ::File.join(@tmp_base, TMP_DIR_NAME) FileUtils.mkdir_p(dir) unless ::File.exist?(dir) dir end
Private Instance Methods
convert_encoding(to, from, str)
click to toggle source
# File lib/rabbit/source/base.rb, line 147 def convert_encoding(to, from, str) if str.respond_to?(:encode) str.encode(to, from) else require "iconv" Iconv.conv(to, from, str) end end
extract_extension(path)
click to toggle source
# File lib/rabbit/source/base.rb, line 156 def extract_extension(path) components = ::File.basename(path).split(/\./) return nil if components.size < 2 components.last end
guess_encoding(str)
click to toggle source
# File lib/rabbit/source/base.rb, line 129 def guess_encoding(str) require 'nkf' case NKF.guess(str) when NKF::JIS "ISO-2022-JP" when NKF::EUC "eucJP" when NKF::SJIS "CP932" when NKF::UTF16 "UTF-16" when NKF::UTF32 "UTF-32" else "UTF-8" end end
init_base()
click to toggle source
# File lib/rabbit/source/base.rb, line 101 def init_base set_base(".") end
parse_uri(str)
click to toggle source
# File lib/rabbit/source/base.rb, line 121 def parse_uri(str) begin ::URI.parse(str) rescue ::URI::InvalidURIError nil end end
set_base(new_value)
click to toggle source
# File lib/rabbit/source/base.rb, line 105 def set_base(new_value) if ::File::ALT_SEPARATOR new_value = new_value.gsub(::File::ALT_SEPARATOR, ::File::SEPARATOR) end @base = new_value @base_uri = parse_uri(@base) if @base_uri.nil? or @base_uri.scheme.nil? @tmp_base = @base else @tmp_base = "." end unless ::File.writable?(@tmp_base) @tmp_base = Dir.tmpdir end end