Пример #1
0
 public ScriptInfo(string filepath, string code, ScriptHeaderFields metadata)
 {
     string fileName = Path.GetFileName(filepath) ?? "";
       string baseName = StripAllExtenstions(fileName);
       Id = metadata.Get("id") ?? baseName;
       Name = CleanupName(metadata.Get("name") ?? baseName);
       Filepath = filepath;
       Timestamp = new FileInfo(filepath).LastWriteTimeUtc.Ticks;
       Metadata = metadata;
       Code = code;
       IsUserscript = filepath.EndsWith(".usr.js");
 }
Пример #2
0
 public ScriptInfo(string filepath, string code, ScriptHeaderFields metadata)
 {
     string fileName = Path.GetFileName(filepath) ?? "";
       string baseName = StripAllExtenstions(fileName);
       Id = metadata.Get("id") ?? baseName;
       Name = CleanupName(metadata.Get("name") ?? baseName);
       Filepath = filepath;
       Timestamp = new FileInfo(filepath).LastWriteTimeUtc.Ticks;
       Metadata = metadata;
       Code = code;
       DownloadUrl = metadata.Get("downloadURL") ?? string.Format(ScriptRepository.DEFAULT_DOWNLOADSOURCE_URL, fileName);
       IsUserscript = filepath.EndsWith(".usr.js");
 }
Пример #3
0
        private ScriptHeaderFields ParseHeaderFields(string script)
        {
            var metadata = new ScriptHeaderFields();
              int start = script.IndexOf("// ==UserScript==");
              int end = script.IndexOf("// ==/UserScript==");
              if (start < 0 || end < 0)
              {
            start = script.IndexOf("/*");
            end = script.IndexOf("*/", start + 1);
              }
              if (start >= 0 && end >= 0)
              {
            var regex = new Regex("^\\s*//\\s*@(\\w+)\\s+(.*?)\\s*$");
            string[] lines = script.Substring(start, end - start + 1).Split('\n');
            foreach (string line in lines)
            {
              Match match = regex.Match(line);
              if (!match.Success)
            continue;
              string key = match.Groups[1].Value;
              string value = match.Groups[2].Value;

              metadata.Add(key, value);
            }
              }
              return metadata;
        }