PDA

View Full Version : سوال: اضافه کردن var یا متغیر رشته ای جدید به فایل js



ayrese
سه شنبه 15 مهر 1393, 13:16 عصر
این کد در نظرتون باشه که مربوط به اسکریپت Syntax Highlighter هست که توی همین سایت هم استفاده میشه:
SyntaxHighlighter.brushes.mylang = function(){
var keywords = 'break do end else elseif function if local nil not or repeat return and then until while this';
var funcs = 'math\\.\\w+ string\\.\\w+ os\\.\\w+ debug\\.\\w+ io\\.\\w+ error fopen dofile coroutine\\.\\w+ arg getmetatable ipairs loadfile loadlib loadstring longjmp print rawget rawset seek setmetatable assert tonumber tostring';


this.regexList = [
{ regex: new RegExp('--\\[\\[[\\s\\S]*\\]\\]--', 'gm'), css: 'comments' },
{ regex: new RegExp('--[^\\[]{2}.*$', 'gm'), css: 'comments' }, // one line comments
{ regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, // strings
{ regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // strings
{ regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' }, // keyword
{ regex: new RegExp(this.getKeywords(funcs), 'gm'), css: 'func' }, // functions
];
}


SyntaxHighlighter.brushes.mylang.prototype = new SyntaxHighlighter.Highlighter();
SyntaxHighlighter.brushes.mylang.aliases = ['mylang'];

که برای زبان سفارشی mylang استفاده میشه (mylang مثال بود)

خب حالا من می خوام عملگرد ها و یه سری علامت دیگه رو با عنوان operators به این کد اضافه کنم تا اونارم تجزیه کنه.

پس این کد رو به لاین 4 اضافه میکنم:
var operators = '~ ! @ # $ % ^ & * ( ) - + = . / ; ؟ , : | ?';

و همینطور برای سی اس اس این کدو هم به لاین 13 کد بالا اضافه میکنم:
{ regex: new RegExp(this.getKeywords(operators), 'gm'), css: 'operators' },

تا اینجا فکر نمیکنم مشکلی باشه.

مشکل اساسی اینجاست که کدی که به لاین پنجم اضافه کردم اصولی نیست و کار نمیکنه.

یعنی توش از کاراکتر هایی استفاده شده که باعث تداخل تو کار بقیه کد ها میشه پس باید با کاراکتر هایی مثل / یا \ از هم جدا بشن. برای مثل اینجوری (فقط چند تا از علامت های بالا رو شامل میشه):
operators = '[\\[\\]?*+|{}\\\\()@./^\+=/]';

حالا درخواستم از اساتید اینه که متغیر operators رو برای من اصلاح و در اختیارم قرار بدن تا مشکلم حل بشه. یعنی این کد رو:
var operators = '~ ! @ # $ % ^ & * ( ) - + = . / ; ؟ , : | ?';

ممنون از همگی.