Skip to content
This repository has been archived by the owner on Aug 15, 2018. It is now read-only.

fix(script-spm): support single quote and double quote, and some refact #1358

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 13 additions & 15 deletions lib/utils/deps.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,26 +7,27 @@ var ReactTools = require('react-tools');
var normalizeDep = require('./normalizeDep');
var log = require('spm-log');

// <script type="text/spm"> .... </script>
var re_spm_script = /(<script type=(["'])text\/spm\2>)([\s\S]*?)(<\/script>)/gmi;
var re_md_script = /````(?:javascript|js)([\s\S]+?)````/gm;

exports.getDeps = function(file) {
var content = readFile(file, 'utf-8');
var extname = path.extname(file);

var ret = [];
var re, m;
var m;

// <script type="text/spm"> .... </script>
re = /(<script type=\"text\/spm\">)([\s\S]*?)(<\/script>)/gmi;
while((m = re.exec(content)) !== null) {
crequire(m[2]).forEach(function(item) {
while((m = re_spm_script.exec(content)) !== null) {
crequire(m[3]).forEach(function(item) {
ret.push(normalizeDep(item.path, file));
});
}

// ````javascript .... ````
if (extname.toLowerCase() === '.md') {
re = /````(javascript|js)([\s\S]+?)````/gm;
while ((m = re.exec(content)) !== null) {
crequire(m[2]).forEach(function (item) {
while ((m = re_md_script.exec(content)) !== null) {
crequire(m[1]).forEach(function (item) {
ret.push(normalizeDep(item.path, file));
});
}
Expand All @@ -51,17 +52,14 @@ exports.replaceDeps = function(content, file) {

// for iframe syntax and html files
// <script type="text/spm"> .... </script>
re = /(<script type=\"text\/spm\">)([\s\S]*?)(<\/script>)/gi;
re_match = /(<script type=\"text\/spm\">)([\s\S]*?)(<\/script>)/i;

content = content.replace(re, function(replacement) {
var match = re_match.exec(replacement);
content = content.replace(re_spm_script, function(replacement) {
var match = re_spm_script.exec(replacement);
if (!match) {
return replacement;
}
var code = match[2];
var code = match[3];
code = transform(code, file);
return match[1].replace('type="text/spm"', '') + code + match[3];
return match[1].replace(/\s+type=(["'])text\/spm\1/i, '') + code + match[4];
});

if (extname.toLowerCase() === '.md') {
Expand Down