<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; JScript: хранение ресурсов в файле JScript]]></title>
		<link>http://forum.script-coding.com/viewtopic.php?id=4328</link>
		<atom:link href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=4328&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «JScript: хранение ресурсов в файле JScript».]]></description>
		<lastBuildDate>Thu, 01 Apr 2010 13:28:34 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: JScript: хранение ресурсов в файле JScript]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=34311#p34311</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p>Ресурс — это часть кода, находящегося внутри функции, начало которого маркеровано «/*[[» или «/*[имя ресурса[», а окончание — «]]*/».<br />Ресурсы бывают именованные и без имени. Ресурс без имени идентифицируется своим порядковым номером среди неименованных ресурсов. Индекс неименованных начинается с нуля.</p><p>Примеры ресурсов (2 ресурса без имени, а 1 с названием «код HTML»):<br /></p><div class="quotebox"><blockquote><p>/*[[ресурс 0]]*/</p><p>/*[[ресурс 1]]*/</p><p>/*[код HTML[<br />&lt;html&gt;<br />&lt;head&gt;<br />&lt;title&gt;Sample №0&lt;/title&gt;<br />&lt;/head&gt;<br />&lt;body&gt;</p><p>&lt;/body&gt;<br />&lt;/html&gt;<br />]]*/</p></blockquote></div></blockquote></div><p>Доступ к таким ресурсам осуществляется двумя способами:<br />1. func.GetResource(ResourceName) в любом месте кода.<br />2. Или GetResource(ResourceName) для доступа к ресурсам текущей функции.</p><div class="codebox"><pre><code>Function.prototype.GetResource = function (ResourceName)
{
    if (!this.Resources) 
    {
        var UnNamedResourceIndex = 0, _this = this;
        this.Resources = {};
        
        function f(match, resType, Content)
        {
            _this.Resources[(resType==&quot;[[&quot;)?UnNamedResourceIndex++:resType.slice(1,-1)] = Content; 
        }
        this.toString().replace(/\/\*(\[(?:[^\[]+)?\[)((?:[\r\n]|.)*?)\]\]\*\//gi, f);
    }
    
    return this.Resources[ResourceName];
}

function GetResource(ResourceName)
{
    return arguments.callee.caller.GetResource(ResourceName);
}</code></pre></div><p>Пример использования:<br /></p><div class="codebox"><pre><code>(function() {

    WSH.Echo( GetResource(&quot;код HTML&quot;));
/*[[ресурс 0]]*/

/*[[ресурс 1]]*/

/*[код HTML[
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;Sample №0&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;/body&gt;
&lt;/html&gt;
]]*/

/*
Просто комментарий
*/
})();</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (JSmаn)]]></author>
			<pubDate>Thu, 01 Apr 2010 13:28:34 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=34311#p34311</guid>
		</item>
		<item>
			<title><![CDATA[JScript: хранение ресурсов в файле JScript]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=34310#p34310</link>
			<description><![CDATA[<p>Довольно часто сталкиваемся с тем, что приходится в переменных хранить большие многострочные данные, которые в последующем будут использоваться в текущем js-файле без использования внешнего источника. </p><p>Рассмотрим фрагмент HTML-кода:<br /></p><div class="quotebox"><blockquote><p>&lt;html&gt;<br />&lt;head&gt;<br />&lt;title&gt;Sample №0&lt;/title&gt;<br />&lt;/head&gt;</p></blockquote></div><p><strong>Стандартные способы его записи в коде:</strong></p><p>Вариант 1:<br /></p><div class="quotebox"><blockquote><p>var HTML = &quot;&lt;html&gt;\<br />&lt;head&gt;\<br />&lt;title&gt;Sample №0&lt;/title&gt;\<br />&lt;/head&gt;\<br />&quot;;</p></blockquote></div><p>Вариант 2:<br /></p><div class="quotebox"><blockquote><p>var HTML = &quot;&lt;head&gt;&quot;+<br />&quot;&lt;title&gt;Sample №0&lt;/title&gt;&quot;+<br />&quot;&lt;/head&gt;&quot;</p></blockquote></div><p>Вариант 3:<br /></p><div class="quotebox"><blockquote><p>var HTML = [&quot;&lt;html&gt;&quot;,<br />&quot;&lt;head&gt;&quot;,<br />&quot;&lt;title&gt;Sample №0&lt;/title&gt;&quot;,<br />&quot;&lt;/head&gt;&quot;].join(&quot;\n&quot;);</p></blockquote></div><p>Я предлагаю <strong>хранить ресурсы в комментариях внутри функции</strong>:<br /></p><div class="quotebox"><blockquote><p>function Resources() {<br />/*<br />&lt;html&gt;<br />&lt;head&gt;<br />&lt;title&gt;Sample №0&lt;/title&gt;<br />&lt;/head&gt;<br />&lt;body&gt;</p><p>&lt;/body&gt;<br />&lt;/html&gt;<br />*/</p><p>/*<br />Пример <br />многострочного<br />текста<br />*/<br />}</p></blockquote></div><p>Эта функция содержит в себе два ресурса. </p><p>Для их извлечения воспользуемся функцией <strong>GetResource</strong>:<br /></p><div class="codebox"><pre><code>function GetResource(f, index)
{
    var e; 
    try {return f.toString().replace(&quot;*//*&quot;,&quot;*/ /*&quot;).split(/\/\*|\*\//)[index*2+1]} catch (e) {}
}</code></pre></div><p>Параметр f — ссылка на функцию.<br />Параметр index — порядковый номер ресурса.</p><p>Пример использования:<br /></p><div class="codebox"><pre><code>function Resources() {
/*
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;Sample №0&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;/body&gt;
&lt;/html&gt;
*/

/*
Пример 
многострочного
текста
*/
}

function GetResource(o, index)
{
    var e; 
    try {return o.toString().split(/\/\*|\*\//)[index*2+1]} catch (e) {}
}

WSH.Echo(GetResource(Resources, 1));</code></pre></div><p>Это был пример функции по работе с ресурсами в образовательных целях. Далее доведем эту возможность до ума.</p>]]></description>
			<author><![CDATA[null@example.com (JSmаn)]]></author>
			<pubDate>Thu, 01 Apr 2010 13:10:36 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=34310#p34310</guid>
		</item>
	</channel>
</rss>
