絶対パス/相対パス置換方法について

このページは、ソース公開以前に、DonutRAPT用に、σ(^^)RAPTが作成した有用っぽい(謎、ソースコードを公開します。 もし、独自にソースを弄りたい方は、このページで公開するコードを参考にしても良いでしょう。 また、ここで公開するコードにバグ等ありましたら、BBSにてご指摘いただけると大変ありがたく思います。

…と思いましたが、HTMLに転載するのめんどいので、下記のリンクからどうぞ。
RtlMatch.h
このソースのうち、


▼[Ctrl+G]のfix
inline bool _MtlIsRelativePath2(const CString& str)
{
	if (RtlIsMatchStrings(str, _T("http://"))  ||
		RtlIsMatchStrings(str, _T("https://")) ||
		RtlIsMatchStrings(str, _T("mailto:"))  ||
		RtlIsMatchStrings(str, _T("ftp://"))   ||
		RtlIsMatchStrings(str, _T("file://"))  ||
		str.Find(_T(":\\")) >= 0) {
		// absolute path
		return false;
	}

	// maybe relative path
	return true;
}



inline void MtlCreateHrefUrlArray(CSimpleArray<CString>& arrUrl,
				const CString& strHtmlText, const CString& strLocationUrl)
{
	CSimpleArray<CString> _arrUrl;
	_MtlCreateHrefUrlArray(_arrUrl, strHtmlText);

	for (int i = 0; i < _arrUrl.GetSize(); i++) {
		CString strUrl = _arrUrl[i];

		if (_MtlIsMailTo(strUrl))
			continue; // ignore mailto:

		if (_MtlIsRelativePath2(strUrl)) {
			// maybe relative path
			bool bSepIsNet = (strUrl.Find(_T('\\')) < 0) ? true : false;
			strUrl = RtlMakeAbsolutePath(strLocationUrl, strUrl, bSepIsNet);
		}
		strUrl.Replace(_T("&amp;") , _T("&"));
		strUrl.Replace(_T('\\'), _T('/'));
		arrUrl.Add(strUrl);
	}
}

[HOME]-[RTL]
Copyright© 2002 RAPT.