mirror of
https://github.com/jquery/jquery-ui.git
synced 2024-11-21 11:04:24 +00:00
Build: Removed ant build.
(cherry picked from commit 84ac716fbf
)
Conflicts:
.gitignore
build/build.xml
version.txt
This commit is contained in:
parent
2f4c74c4ce
commit
e9471d03c1
7
.gitignore
vendored
7
.gitignore
vendored
@ -1,11 +1,8 @@
|
||||
build/dist
|
||||
build/size
|
||||
build/build/.sizecache.json
|
||||
dist
|
||||
node_modules
|
||||
docs
|
||||
.project
|
||||
*~
|
||||
*.diff
|
||||
*.patch
|
||||
.DS_Store
|
||||
node_modules
|
||||
dist
|
366
build/build.xml
366
build/build.xml
@ -1,366 +0,0 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
|
||||
<!--
|
||||
jQuery UI Release!
|
||||
|
||||
Call task called 'deploy-release' to build a full release.
|
||||
The release built will be stored on 'dist' dir.
|
||||
|
||||
-->
|
||||
|
||||
<project name="jquery-ui" default="deploy-release" basedir=".">
|
||||
|
||||
<taskdef resource="net/sf/antcontrib/antcontrib.properties">
|
||||
<classpath>
|
||||
<pathelement location="build/ant-contrib-0.6.jar"/>
|
||||
</classpath>
|
||||
</taskdef>
|
||||
|
||||
<property file="ant.properties" />
|
||||
|
||||
<loadfile failonerror="no" srcFile="../version.txt" property="release.version">
|
||||
<filterchain><striplinebreaks/></filterchain>
|
||||
</loadfile>
|
||||
<property name="release.filename" value="jquery-ui-${release.version}" />
|
||||
|
||||
<property name="dist.dir" value="dist/${release.filename}/" />
|
||||
<property name="cdndist.dir" value="dist/${release.filename}-cdn" />
|
||||
<property name="build.dir" value="build" />
|
||||
<property name="ui.dir" value="../" />
|
||||
<property name="src.dir" value="${ui.dir}/ui/" />
|
||||
<property name="theme.dir" value="${ui.dir}/themes/base/" />
|
||||
<property name="docs.dir" value="${dist.dir}/docs/" />
|
||||
<property name="min.dir" value="${dist.dir}/ui/minified" />
|
||||
<property name="size.dir" value="size" />
|
||||
|
||||
<property name="concatenated" value="jquery-ui" />
|
||||
<property name="concatenated.i18n" value="jquery-ui-i18n" />
|
||||
|
||||
<property name="core.files" value="jquery.ui.core.js, jquery.ui.widget.js, jquery.ui.mouse.js, jquery.ui.draggable.js, jquery.ui.droppable.js, jquery.ui.resizable.js, jquery.ui.selectable.js, jquery.ui.sortable.js, jquery.effects.core.js" />
|
||||
<property name="core.files.min" value="jquery.ui.core.min.js, jquery.ui.widget.min.js, jquery.ui.mouse.min.js, jquery.ui.draggable.min.js, jquery.ui.droppable.min.js, jquery.ui.resizable.min.js, jquery.ui.selectable.min.js, jquery.ui.sortable.min.js, jquery.effects.core.min.js" />
|
||||
|
||||
<property description="YUI Compressor" name="yuicompressor-jar" value="${build.dir}/yuicompressor-2.4.2.jar" />
|
||||
|
||||
<target name="deploy-release" depends="clean, docs-download, copy, minify, replace-version, prepend-header, zip" description="Release builder">
|
||||
</target>
|
||||
|
||||
<target name="replace-version">
|
||||
<replaceregexp match="@VERSION" replace="${release.version}" flags="g" byline="true">
|
||||
<fileset dir="${dist.dir}/ui/" includes="*.js"/>
|
||||
<fileset dir="${dist.dir}/ui/minified/" includes="*.js"/>
|
||||
<fileset dir="${dist.dir}/themes/" includes="**/*.css"/>
|
||||
</replaceregexp>
|
||||
<echo message="Replaced all @VERSION to ${release.version}." />
|
||||
</target>
|
||||
|
||||
<target name="prepend-header">
|
||||
<copy todir="${dist.dir}/headers/">
|
||||
<fileset dir="${dist.dir}/themes/base" includes="*.css" />
|
||||
</copy>
|
||||
<replaceregexp match="^(\/\*.*?\*\/\s).+" replace="\1" flags="s">
|
||||
<fileset dir="${dist.dir}/headers/" includes="*.css"/>
|
||||
</replaceregexp>
|
||||
<for param="file">
|
||||
<path><fileset dir="${dist.dir}/themes/base/minified" includes="*.css" /></path>
|
||||
<sequential>
|
||||
<propertyregex override="yes" property="target" input="@{file}" regexp=".*[\\/](.+)\.min\.css$" replace="\1"/>
|
||||
<concat destfile="${dist.dir}/ui-headered/${target}.min.css">
|
||||
<header file="${dist.dir}/headers/${target}.css" />
|
||||
<fileset file="@{file}" />
|
||||
</concat>
|
||||
</sequential>
|
||||
</for>
|
||||
<copy todir="${dist.dir}/themes/base/minified" overwrite="true">
|
||||
<fileset dir="${dist.dir}/ui-headered/" includes="*.css" />
|
||||
</copy>
|
||||
|
||||
<delete dir="${dist.dir}/headers/" />
|
||||
<delete dir="${dist.dir}/ui-headered/" />
|
||||
</target>
|
||||
|
||||
<target description="Zip the package" name="zip">
|
||||
<zip destfile="${dist.dir}/../${release.filename}.zip">
|
||||
<zipfileset dir="dist/" />
|
||||
</zip>
|
||||
</target>
|
||||
|
||||
<target name="concatenate">
|
||||
<echo message="Building concatenated" />
|
||||
<mkdir dir="${dist.dir}/ui/" />
|
||||
<delete file="${dist.dir}/ui/${concatenated}.js" />
|
||||
|
||||
<concat destfile="${dist.dir}/ui/${concatenated}.js">
|
||||
<filelist dir="${src.dir}/" files="${core.files}" />
|
||||
<fileset dir="${src.dir}/" includes="jquery.ui.*.js, jquery.effects.*.js" excludes="${core.files}" />
|
||||
</concat>
|
||||
<echo message="Concatenated built." />
|
||||
|
||||
<concat destfile="${dist.dir}/themes/base/${concatenated}.css">
|
||||
<fileset dir="${theme.dir}/" includes="jquery.ui.core.css" />
|
||||
<fileset dir="${theme.dir}/" includes="jquery.ui.*.css" excludes="jquery.ui.all.css, jquery.ui.core.css, jquery.ui.base.css, jquery.ui.theme.css" />
|
||||
<fileset dir="${theme.dir}/" includes="jquery.ui.theme.css" />
|
||||
</concat>
|
||||
<echo message="Concatenated theme." />
|
||||
|
||||
<mkdir dir="${dist.dir}/ui/i18n/" />
|
||||
<delete file="${dist.dir}/ui/i18n/${concatenated.i18n}.js" />
|
||||
|
||||
<concat destfile="${dist.dir}/ui/i18n/${concatenated.i18n}.js" encoding="utf-8">
|
||||
<fileset dir="${src.dir}/i18n/" includes="jquery.ui.*.js" />
|
||||
</concat>
|
||||
<echo message="Concatenated i18n built." />
|
||||
</target>
|
||||
|
||||
<target name="minify" depends="concatenate" description="Remove all comments and whitespace, no compression, great in combination with GZip">
|
||||
<echo message="Building minified" />
|
||||
<mkdir dir="${min.dir}" />
|
||||
<mkdir dir="${min.dir}/i18n/" />
|
||||
<mkdir dir="${dist.dir}/themes/base/minified" />
|
||||
<parallel threadsperprocessor="1">
|
||||
<apply executable="build/minify-js.sh">
|
||||
<fileset dir="${dist.dir}/ui" includes="**.js" />
|
||||
<srcfile />
|
||||
<mapper type="glob" from="*.js" to="${min.dir}/*.min.js" />
|
||||
<targetfile/>
|
||||
</apply>
|
||||
<apply executable="build/minify-js.sh">
|
||||
<fileset dir="${dist.dir}/ui/i18n" includes="**.js" />
|
||||
<srcfile />
|
||||
<mapper type="glob" from="*.js" to="${min.dir}/i18n/*.min.js" />
|
||||
<targetfile/>
|
||||
</apply>
|
||||
<apply executable="java" parallel="false">
|
||||
<fileset dir="${dist.dir}/themes/base" includes="*.css" />
|
||||
<arg line="-jar" />
|
||||
<arg path="${yuicompressor-jar}" />
|
||||
<arg line="--charset utf-8" />
|
||||
<arg line="-v" />
|
||||
<srcfile />
|
||||
<arg line="-o" />
|
||||
<mapper type="glob" from="*.css" to="${dist.dir}/themes/base/minified/*.min.css" />
|
||||
<targetfile/>
|
||||
</apply>
|
||||
</parallel>
|
||||
|
||||
<replaceregexp match=".css" replace=".min.css" flags="g">
|
||||
<fileset dir="${dist.dir}/themes/base/minified/">
|
||||
<include name="*.base.min.css"/>
|
||||
<include name="*.all.min.css"/>
|
||||
</fileset>
|
||||
</replaceregexp>
|
||||
|
||||
<!-- make a copy of all theme images to ensure that relative paths in minified css files work -->
|
||||
<copy todir="${dist.dir}/themes/base/minified/images" >
|
||||
<fileset dir="${ui.dir}/themes/base/images" />
|
||||
</copy>
|
||||
|
||||
<echo message="Minified ui/ built." />
|
||||
</target>
|
||||
|
||||
<target description="Copy needed folders" name="copy">
|
||||
<echo message="Copying files" />
|
||||
<mkdir dir="${dist.dir}" />
|
||||
|
||||
<copy overwrite="true" todir="${dist.dir}/">
|
||||
<fileset dir="${ui.dir}/" includes="jquery-*.js" />
|
||||
</copy>
|
||||
|
||||
<copy overwrite="true" todir="${dist.dir}/ui/">
|
||||
<fileset dir="${src.dir}/" includes="jquery.ui.*.js, jquery.effects.*.js" />
|
||||
</copy>
|
||||
|
||||
<copy overwrite="true" todir="${dist.dir}/ui/i18n/" >
|
||||
<fileset dir="${src.dir}/i18n/" />
|
||||
</copy>
|
||||
|
||||
<copy overwrite="true" todir="${dist.dir}/">
|
||||
<fileset dir="${ui.dir}/" includes="*.txt" />
|
||||
</copy>
|
||||
|
||||
<copy overwrite="true" todir="${dist.dir}/demos/" >
|
||||
<fileset dir="${ui.dir}/demos/" />
|
||||
</copy>
|
||||
|
||||
<copy overwrite="true" todir="${dist.dir}/external/" >
|
||||
<fileset dir="${ui.dir}/external/" />
|
||||
</copy>
|
||||
|
||||
<copy overwrite="true" todir="${dist.dir}/tests/" >
|
||||
<fileset dir="${ui.dir}/tests/" />
|
||||
</copy>
|
||||
|
||||
<copy overwrite="true" todir="${dist.dir}/themes/" >
|
||||
<fileset dir="${ui.dir}/themes/" />
|
||||
</copy>
|
||||
<echo message="Files copied." />
|
||||
</target>
|
||||
|
||||
<target name="clean">
|
||||
<delete dir="dist" />
|
||||
</target>
|
||||
|
||||
<target name="docs-download">
|
||||
<mkdir dir="${docs.dir}" />
|
||||
<property name="url" value="http://docs.jquery.com/action/render/UI/API/${release.version}/" />
|
||||
<parallel threadcount="8">
|
||||
<get src="${url}Draggable" dest="${docs.dir}draggable.html" />
|
||||
<get src="${url}Droppable" dest="${docs.dir}droppable.html" />
|
||||
<get src="${url}Resizable" dest="${docs.dir}resizable.html" />
|
||||
<get src="${url}Selectable" dest="${docs.dir}selectable.html" />
|
||||
<get src="${url}Sortable" dest="${docs.dir}sortable.html" />
|
||||
|
||||
<get src="${url}Accordion" dest="${docs.dir}accordion.html" />
|
||||
<get src="${url}Autocomplete" dest="${docs.dir}autocomplete.html" />
|
||||
<get src="${url}Button" dest="${docs.dir}button.html" />
|
||||
<get src="${url}Datepicker" dest="${docs.dir}datepicker.html" />
|
||||
<get src="${url}Dialog" dest="${docs.dir}dialog.html" />
|
||||
<get src="${url}Menu" dest="${docs.dir}menu.html" />
|
||||
<get src="${url}Progressbar" dest="${docs.dir}progressbar.html" />
|
||||
<get src="${url}Slider" dest="${docs.dir}slider.html" />
|
||||
<get src="${url}Spinner" dest="${docs.dir}spinner.html" />
|
||||
<get src="${url}Tooltip" dest="${docs.dir}tooltip.html" />
|
||||
<get src="${url}Tabs" dest="${docs.dir}tabs.html" />
|
||||
|
||||
<get src="${url}Position" dest="${docs.dir}position.html" />
|
||||
|
||||
<get src="http://docs.jquery.com/action/render/UI/Effects/animate" dest="${docs.dir}animate.html" />
|
||||
<get src="http://docs.jquery.com/action/render/UI/Effects/addClass" dest="${docs.dir}addClass.html" />
|
||||
<get src="http://docs.jquery.com/action/render/UI/Effects/effect" dest="${docs.dir}effect.html" />
|
||||
<get src="http://docs.jquery.com/action/render/UI/Effects/hide" dest="${docs.dir}hide.html" />
|
||||
<get src="http://docs.jquery.com/action/render/UI/Effects/removeClass" dest="${docs.dir}removeClass.html" />
|
||||
<get src="http://docs.jquery.com/action/render/UI/Effects/show" dest="${docs.dir}show.html" />
|
||||
<get src="http://docs.jquery.com/action/render/UI/Effects/switchClass" dest="${docs.dir}switchClass.html" />
|
||||
<get src="http://docs.jquery.com/action/render/UI/Effects/toggle" dest="${docs.dir}toggle.html" />
|
||||
<get src="http://docs.jquery.com/action/render/UI/Effects/toggleClass" dest="${docs.dir}toggleClass.html" />
|
||||
|
||||
|
||||
<get src="http://docs.jquery.com/action/render/UI/Effects/Blind" dest="${docs.dir}effect-blind.html" />
|
||||
<get src="http://docs.jquery.com/action/render/UI/Effects/Clip" dest="${docs.dir}effect-clip.html" />
|
||||
<get src="http://docs.jquery.com/action/render/UI/Effects/Drop" dest="${docs.dir}effect-drop.html" />
|
||||
<get src="http://docs.jquery.com/action/render/UI/Effects/Explode" dest="${docs.dir}effect-explode.html" />
|
||||
<get src="http://docs.jquery.com/action/render/UI/Effects/Fade" dest="${docs.dir}effect-fade.html" />
|
||||
<get src="http://docs.jquery.com/action/render/UI/Effects/Fold" dest="${docs.dir}effect-fold.html" />
|
||||
<get src="http://docs.jquery.com/action/render/UI/Effects/Puff" dest="${docs.dir}effect-puff.html" />
|
||||
<get src="http://docs.jquery.com/action/render/UI/Effects/Slide" dest="${docs.dir}effect-slide.html" />
|
||||
<get src="http://docs.jquery.com/action/render/UI/Effects/Scale" dest="${docs.dir}effect-scale.html" />
|
||||
|
||||
<get src="http://docs.jquery.com/action/render/UI/Effects/Bounce" dest="${docs.dir}effect-bounce.html" />
|
||||
<get src="http://docs.jquery.com/action/render/UI/Effects/Highlight" dest="${docs.dir}effect-highlight.html" />
|
||||
<get src="http://docs.jquery.com/action/render/UI/Effects/Pulsate" dest="${docs.dir}effect-pulsate.html" />
|
||||
<get src="http://docs.jquery.com/action/render/UI/Effects/Shake" dest="${docs.dir}effect-shake.html" />
|
||||
<get src="http://docs.jquery.com/action/render/UI/Effects/Size" dest="${docs.dir}effect-size.html" />
|
||||
<get src="http://docs.jquery.com/action/render/UI/Effects/Transfer" dest="${docs.dir}effect-transfer.html" />
|
||||
</parallel>
|
||||
</target>
|
||||
|
||||
<target name="themes-download">
|
||||
<!-- to create/update query strings for the theme-file, execute this in Firebug on /download page:
|
||||
$("select option[value!=none]").map(function() { $(this).parent().val(this.value).change(); return $(this).parents("form").serialize(); }).get().join(",");
|
||||
-->
|
||||
<loadfile srcFile="themes" property="urls" />
|
||||
<property name="zip" value="${dist.dir}themes/tmp.zip" />
|
||||
<mkdir dir="${dist.dir}themes" />
|
||||
<for list="${urls}" param="url">
|
||||
<sequential>
|
||||
<get src="http://ui-dev.jquery.com/download/?@{url}" dest="${zip}" />
|
||||
<unzip src="${zip}" dest="${dist.dir}themes/">
|
||||
<patternset>
|
||||
<include name="development-bundle/themes/**"/>
|
||||
<exclude name="development-bundle/themes/base/**"/>
|
||||
</patternset>
|
||||
<mapper type="glob" from="development-bundle/themes/*" to="*" />
|
||||
</unzip>
|
||||
<delete file="${zip}" />
|
||||
</sequential>
|
||||
</for>
|
||||
<move todir="${dist.dir}themes/">
|
||||
<fileset dir="${dist.dir}themes/" />
|
||||
<mapper>
|
||||
<mapper type="regexp" from="(.*)jquery-ui-.*custom.css" to="\1jquery-ui.css" />
|
||||
</mapper>
|
||||
</move>
|
||||
<copy todir="dist/jquery-ui-themes-${release.version}">
|
||||
<fileset dir="${dist.dir}/" includes="AUTHORS.txt,GPL-LICENSE.txt,MIT-LICENSE.txt,version.txt,themes/**" />
|
||||
</copy>
|
||||
<zip destfile="${dist.dir}/../jquery-ui-themes-${release.version}.zip">
|
||||
<zipfileset dir="dist/" includes="jquery-ui-themes-${release.version}/" />
|
||||
</zip>
|
||||
</target>
|
||||
|
||||
<target name="whitespace">
|
||||
<replaceregexp match="[\t ]+$" replace="" flags="g" byline="true">
|
||||
<fileset dir="${src.dir}" includes="*.js"/>
|
||||
<fileset dir="${src.dir}/i18n/" includes="*.js"/>
|
||||
</replaceregexp>
|
||||
<echo message="All trailing spaces removed." />
|
||||
</target>
|
||||
|
||||
<target name="size" depends="copy, minify, replace-version, prepend-header" description="Report sizes of files">
|
||||
<echo message="Collecting files to size" />
|
||||
<mkdir dir="${size.dir}" />
|
||||
<copy todir="${size.dir}">
|
||||
<fileset dir="${dist.dir}/ui" includes="*.js" />
|
||||
<fileset dir="${dist.dir}/ui/i18n" includes="*.js" />
|
||||
<fileset dir="${dist.dir}/ui/minified" includes="*.js" />
|
||||
<fileset dir="${dist.dir}/ui/minified/i18n" includes="*.js" />
|
||||
<fileset dir="${dist.dir}/themes/base" includes="*.css" />
|
||||
<fileset dir="${dist.dir}/themes/base/minified" includes="*.css" />
|
||||
</copy>
|
||||
<echo message="GZipping Minified" />
|
||||
<apply executable="gzip">
|
||||
<fileset dir="${size.dir}" includes="*.min.js" />
|
||||
<fileset dir="${size.dir}" includes="*.min.css" />
|
||||
<arg value="-c" />
|
||||
<srcfile />
|
||||
<redirector>
|
||||
<outputmapper id="out" type="glob" from="*" to="${size.dir}/*.gz"/>
|
||||
</redirector>
|
||||
</apply>
|
||||
<echo message="Comparing file size with previous build" />
|
||||
<exec executable="bash">
|
||||
<arg value="-c" />
|
||||
<arg value="wc -c ${size.dir}/* | `which node nodejs 2>/dev/null` build/sizer.js" />
|
||||
</exec>
|
||||
<delete dir="${size.dir}" />
|
||||
</target>
|
||||
|
||||
<target name="cdn">
|
||||
<delete dir="${cdndist.dir}" />
|
||||
<mkdir dir="${cdndist.dir}" />
|
||||
<copy todir="${cdndist.dir}">
|
||||
<fileset dir=".." includes="AUTHORS.txt, GPL-LICENSE.txt, MIT-LICENSE.txt, version.txt" />
|
||||
</copy>
|
||||
<copy todir="${cdndist.dir}">
|
||||
<fileset dir="${dist.dir}ui" includes="jquery-ui.js" />
|
||||
<fileset dir="${dist.dir}ui/minified" includes="jquery-ui.min.js" />
|
||||
</copy>
|
||||
<copy todir="${cdndist.dir}/i18n">
|
||||
<fileset dir="${dist.dir}ui/i18n" />
|
||||
<fileset dir="${dist.dir}ui/minified/i18n" />
|
||||
</copy>
|
||||
<copy todir="${cdndist.dir}/themes">
|
||||
<fileset dir="${dist.dir}themes" />
|
||||
</copy>
|
||||
<checksum>
|
||||
<fileset dir="${cdndist.dir}" />
|
||||
</checksum>
|
||||
<for param="file">
|
||||
<path><fileset dir="${cdndist.dir}" includes="**/" excludes="**/*.MD5" /></path>
|
||||
<sequential>
|
||||
<!-- @{file} is an absolute path, use that ugly regexes to make it relative -->
|
||||
<propertyregex override="yes" property="relativepath" input="@{file}" regexp=".+?cdn[\\/](.+)$" replace="\1"/>
|
||||
<propertyregex override="yes" property="relativepath" input="${relativepath}" regexp="\\" replace="/" global="true" />
|
||||
<concat destfile="${cdndist.dir}/MANIFEST" append="yes">${relativepath} </concat>
|
||||
<concat destfile="${cdndist.dir}/MANIFEST" append="yes"><file file="@{file}.MD5" /></concat>
|
||||
</sequential>
|
||||
</for>
|
||||
<delete dir="${cdndist.dir}" includes="**/*.MD5" />
|
||||
<zip destfile="${dist.dir}/../${release.filename}-googlecdn.zip">
|
||||
<zipfileset dir="dist/" includes="${release.filename}-cdn/" />
|
||||
</zip>
|
||||
<zip destfile="${dist.dir}/../${release.filename}-mscdn.zip">
|
||||
<zipfileset dir="dist/${release.filename}-cdn/" />
|
||||
</zip>
|
||||
</target>
|
||||
|
||||
</project>
|
Binary file not shown.
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,22 +0,0 @@
|
||||
var jsp = require("./parse-js"),
|
||||
pro = require("./process"),
|
||||
slice = jsp.slice,
|
||||
member = jsp.member,
|
||||
PRECEDENCE = jsp.PRECEDENCE,
|
||||
OPERATORS = jsp.OPERATORS;
|
||||
|
||||
function ast_squeeze_more(ast) {
|
||||
var w = pro.ast_walker(), walk = w.walk;
|
||||
return w.with_walkers({
|
||||
"call": function(expr, args) {
|
||||
if (expr[0] == "dot" && expr[2] == "toString" && args.length == 0) {
|
||||
// foo.toString() ==> foo+""
|
||||
return [ "binary", "+", expr[1], [ "string", "" ]];
|
||||
}
|
||||
}
|
||||
}, function() {
|
||||
return walk(ast);
|
||||
});
|
||||
};
|
||||
|
||||
exports.ast_squeeze_more = ast_squeeze_more;
|
@ -1,3 +0,0 @@
|
||||
#!/bin/bash
|
||||
dir=$(dirname $0)
|
||||
`which node nodejs 2> /dev/null` $dir/uglify.js $1 > $2
|
@ -1,41 +0,0 @@
|
||||
var fs = require( "fs" ),
|
||||
stdin = process.openStdin(),
|
||||
rsize = /(\d+).*?(jquery\S+)/g,
|
||||
oldsizes = {},
|
||||
sizes = {},
|
||||
input = "";
|
||||
|
||||
stdin.setEncoding( "utf8" );
|
||||
|
||||
try {
|
||||
oldsizes = JSON.parse( fs.readFileSync( __dirname + "/.sizecache.json", "utf8" ) );
|
||||
} catch(e) {
|
||||
oldsizes = {};
|
||||
};
|
||||
|
||||
function lpad( str, len, chr ) {
|
||||
return ( Array(len+1).join( chr || " ") + str ).substr( -len );
|
||||
}
|
||||
|
||||
stdin.on( "data" , function( chunk ) {
|
||||
input += chunk;
|
||||
});
|
||||
stdin.on( "end", function() {
|
||||
var match;
|
||||
|
||||
while ( match = rsize.exec( input ) ) {
|
||||
sizes[ match[2] ] = parseInt( match[1], 10 );
|
||||
}
|
||||
|
||||
fs.writeFileSync( __dirname + "/.sizecache.json", JSON.stringify( sizes, true ), "utf8" );
|
||||
for ( var key in sizes ) {
|
||||
var diff = oldsizes[ key ] && ( sizes[ key ] - oldsizes[ key ] );
|
||||
if ( diff > 0 ) {
|
||||
diff = "+" + diff;
|
||||
}
|
||||
console.log( "%s %s %s", lpad( sizes[ key ], 8 ), lpad( oldsizes[key] ? "(" + diff + ")" : "(-)", 8 ), key );
|
||||
}
|
||||
process.nextTick(function() {
|
||||
process.exit();
|
||||
});
|
||||
});
|
@ -1,211 +0,0 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
|
||||
<xsl:output method="html" />
|
||||
|
||||
<xsl:template name="ref">
|
||||
<xsl:text>link-</xsl:text>
|
||||
<xsl:value-of select="translate(@name, '$.|', '')"/>
|
||||
<xsl:text>-</xsl:text>
|
||||
<xsl:for-each select="params">
|
||||
<xsl:value-of select="translate(@name, '<>|$.', '')" />
|
||||
</xsl:for-each>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="href">
|
||||
<xsl:attribute name="href">
|
||||
<xsl:text>#</xsl:text>
|
||||
<xsl:call-template name="ref" />
|
||||
</xsl:attribute>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="id">
|
||||
<xsl:attribute name="id">
|
||||
<xsl:call-template name="ref" />
|
||||
</xsl:attribute>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="return">
|
||||
<xsl:attribute name="title">
|
||||
<xsl:choose>
|
||||
<xsl:when test="@return='jQuery'">A jQuery object.</xsl:when>
|
||||
<xsl:when test="@return='Boolean'">true or false.</xsl:when>
|
||||
<xsl:when test="@return='Object'">A simple Javascript object..</xsl:when>
|
||||
<xsl:when test="@return='String'">A string of characters.</xsl:when>
|
||||
<xsl:when test="@return='Number'">A valid numeric.</xsl:when>
|
||||
<xsl:when test="@return='String|Number'">A string of characters or a number.</xsl:when>
|
||||
<xsl:when test="@return='Element'">The Javascript object representation of a DOM Element.</xsl:when>
|
||||
<xsl:when test="@return='Element|Array<Element>'">One or more DOM Elements (a single one or an array).</xsl:when>
|
||||
<xsl:when test="@return='Map'">A Javascript object that contains key/value pairs in the form of properties and values.</xsl:when>
|
||||
<xsl:when test="@return='Array<Element>'">An Array of DOM Elements.</xsl:when>
|
||||
<xsl:when test="@return='Array<String>'">An Array of strings.</xsl:when>
|
||||
<xsl:when test="@return='Function'">A reference to a Javascript function.</xsl:when>
|
||||
<xsl:when test="@return='XMLHttpRequest'">An XMLHttpRequest object (referencing a HTTP request).</xsl:when>
|
||||
</xsl:choose>
|
||||
</xsl:attribute>
|
||||
<xsl:value-of select="@return"/>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="type">
|
||||
<xsl:attribute name="title">
|
||||
<xsl:choose>
|
||||
<xsl:when test="@type='jQuery'">A jQuery object.</xsl:when>
|
||||
<xsl:when test="@type='Boolean'">true or false.</xsl:when>
|
||||
<xsl:when test="@type='Object'">A simple Javascript object..</xsl:when>
|
||||
<xsl:when test="@type='String'">A string of characters.</xsl:when>
|
||||
<xsl:when test="@type='Number'">A valid numeric.</xsl:when>
|
||||
<xsl:when test="@type='String|Number'">A string of characters or a number.</xsl:when>
|
||||
<xsl:when test="@type='Element'">The Javascript object representation of a DOM Element.</xsl:when>
|
||||
<xsl:when test="@type='Element|Array<Element>'">One or more DOM Elements (a single one or an array).</xsl:when>
|
||||
<xsl:when test="@type='Map'">A Javascript object that contains key/value pairs in the form of properties and values.</xsl:when>
|
||||
<xsl:when test="@type='Array<Element>'">An Array of DOM Elements.</xsl:when>
|
||||
<xsl:when test="@type='Array<String>'">An Array of strings.</xsl:when>
|
||||
<xsl:when test="@type='Function'">A reference to a Javascript function.</xsl:when>
|
||||
<xsl:when test="@type='XMLHttpRequest'">An XMLHttpRequest object (referencing a HTTP request).</xsl:when>
|
||||
</xsl:choose>
|
||||
</xsl:attribute>
|
||||
<xsl:value-of select="@type"/>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="break">
|
||||
<xsl:value-of select="." disable-output-escaping="yes" />
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="option">
|
||||
<div class="param">
|
||||
<div class="param-header">
|
||||
<h3><span><xsl:value-of select="@name"/></span></h3>
|
||||
<p class="param-type"><span><xsl:call-template name="type" /></span></p>
|
||||
<p class="param-default">Default: <xsl:value-of select="@default"/></p>
|
||||
</div>
|
||||
<div class="param-details">
|
||||
<p><xsl:value-of select="desc"/></p>
|
||||
<!-- TODO select all examples -->
|
||||
<xsl:for-each select="following-sibling::example[1]">
|
||||
<h4>Code sample:</h4>
|
||||
<p><xsl:value-of select="desc" disable-output-escaping="yes"/></p>
|
||||
<code>
|
||||
<xsl:value-of select="code"/>
|
||||
</code>
|
||||
</xsl:for-each>
|
||||
</div>
|
||||
</div>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="/*">
|
||||
<div id="widget-docs">
|
||||
<ul>
|
||||
<li><a href="#docs-overview"><span>Overview</span></a></li>
|
||||
<li><a href="#docs-options"><span>Options</span></a></li>
|
||||
<li><a href="#docs-methods"><span>Methods</span></a></li>
|
||||
<li><a href="#docs-theming"><span>Theming</span></a></li>
|
||||
</ul>
|
||||
|
||||
<!-- TAB 1 -->
|
||||
<div id="docs-overview">
|
||||
<div id="docs-overview-sidebar">
|
||||
<h4>Dependencies:</h4>
|
||||
<ul>
|
||||
<li><a href="#">jquery.ui.core.js</a></li>
|
||||
<li><a href="#">jquery.ui.draggable.js <span>(Optional)</span></a></li>
|
||||
<li><a href="#">jquery.ui.resizable.js <span>(Optional)</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="docs-overview-main">
|
||||
<p>
|
||||
<xsl:for-each select="//function[1]/desc">
|
||||
<xsl:call-template name="break" />
|
||||
</xsl:for-each>
|
||||
</p>
|
||||
<p>
|
||||
<xsl:for-each select="//function[1]/longdesc">
|
||||
<xsl:call-template name="break" />
|
||||
</xsl:for-each>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- TAB 2 -->
|
||||
<div id="docs-options">
|
||||
<p class="intro"><xsl:value-of select="//function[1]/params/desc"/></p>
|
||||
|
||||
<div class="docs-list-header clearfix">
|
||||
<h2>Property options</h2>
|
||||
<p><a href="#">Show details</a> | <a href="#">Hide details</a></p>
|
||||
</div>
|
||||
|
||||
<div class="docs-list clearfix">
|
||||
<xsl:for-each select="//function[1]/option[not(starts-with(@type, 'function'))]">
|
||||
<xsl:call-template name="option"/>
|
||||
</xsl:for-each>
|
||||
</div><!-- /property options -->
|
||||
|
||||
<div class="docs-list-header clearfix">
|
||||
<h2>Event options</h2>
|
||||
<p><a href="#">Show details</a> | <a href="#">Hide details</a></p>
|
||||
</div>
|
||||
|
||||
<div class="docs-list clearfix">
|
||||
<xsl:for-each select="//function[1]/option[starts-with(@type, 'function')]">
|
||||
<xsl:call-template name="option"/>
|
||||
</xsl:for-each>
|
||||
</div><!-- /event options -->
|
||||
</div>
|
||||
|
||||
<!-- TAB 3 -->
|
||||
<div id="docs-methods">
|
||||
<p class="intro">A brief description of methods and their uses goes here so their use is clearly explained and any caveats can be mentioned up front.</p>
|
||||
|
||||
<div class="docs-list-header clearfix">
|
||||
<h2>Methods</h2>
|
||||
<p><a href="#">Show details</a> | <a href="#">Hide details</a></p>
|
||||
</div>
|
||||
|
||||
<div class="docs-list clearfix">
|
||||
<xsl:for-each select="//function[position() != 1]">
|
||||
<div class="param">
|
||||
<div class="param-header">
|
||||
<h3><span><xsl:value-of select="//function[1]/@name"/>( <xsl:value-of select="params[1]/@name"/>
|
||||
<xsl:for-each select="params[position() != 1]">
|
||||
<xsl:text>, </xsl:text><xsl:value-of select="@name"/>
|
||||
</xsl:for-each>
|
||||
)</span></h3>
|
||||
<p class="param-type">Returns: <span><xsl:call-template name="return" /></span></p>
|
||||
</div>
|
||||
<div class="param-details">
|
||||
<p><xsl:value-of select="desc"/></p>
|
||||
<p><xsl:value-of select="longdesc"/></p>
|
||||
<h4>Arguments:</h4>
|
||||
<table class="param-args" summary="Arguments for this method" cellspacing="0">
|
||||
<tbody>
|
||||
<xsl:for-each select="params[position() != 1]">
|
||||
<tr>
|
||||
<td><xsl:value-of select="@name"/></td>
|
||||
<td><xsl:value-of select="@type"/></td>
|
||||
<td><xsl:value-of select="."/></td>
|
||||
</tr>
|
||||
</xsl:for-each>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h4>Code sample:</h4>
|
||||
<xsl:for-each select="example">
|
||||
<h5><xsl:value-of select="desc"/></h5>
|
||||
<code>
|
||||
<xsl:value-of select="code"/>
|
||||
</code>
|
||||
</xsl:for-each>
|
||||
</div>
|
||||
</div>
|
||||
</xsl:for-each>
|
||||
|
||||
</div><!-- /methods -->
|
||||
</div>
|
||||
|
||||
<!-- TAB 4 -->
|
||||
<div id="docs-theming">
|
||||
%%THEMING%%
|
||||
</div>
|
||||
</div>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
@ -1,285 +0,0 @@
|
||||
#! /usr/bin/env node
|
||||
// -*- js -*-
|
||||
|
||||
global.sys = require(/^v0\.[012]/.test(process.version) ? "sys" : "util");
|
||||
var fs = require("fs");
|
||||
var jsp = require("./lib/parse-js"),
|
||||
pro = require("./lib/process");
|
||||
|
||||
var options = {
|
||||
ast: false,
|
||||
mangle: true,
|
||||
mangle_toplevel: false,
|
||||
squeeze: true,
|
||||
make_seqs: true,
|
||||
dead_code: true,
|
||||
verbose: false,
|
||||
show_copyright: true,
|
||||
out_same_file: false,
|
||||
max_line_length: 32 * 1024,
|
||||
unsafe: false,
|
||||
reserved_names: null,
|
||||
defines: { },
|
||||
codegen_options: {
|
||||
ascii_only: false,
|
||||
beautify: false,
|
||||
indent_level: 4,
|
||||
indent_start: 0,
|
||||
quote_keys: false,
|
||||
space_colon: false
|
||||
},
|
||||
output: true // stdout
|
||||
};
|
||||
|
||||
var args = jsp.slice(process.argv, 2);
|
||||
var filename;
|
||||
|
||||
out: while (args.length > 0) {
|
||||
var v = args.shift();
|
||||
switch (v) {
|
||||
case "-b":
|
||||
case "--beautify":
|
||||
options.codegen_options.beautify = true;
|
||||
break;
|
||||
case "-i":
|
||||
case "--indent":
|
||||
options.codegen_options.indent_level = args.shift();
|
||||
break;
|
||||
case "-q":
|
||||
case "--quote-keys":
|
||||
options.codegen_options.quote_keys = true;
|
||||
break;
|
||||
case "-mt":
|
||||
case "--mangle-toplevel":
|
||||
options.mangle_toplevel = true;
|
||||
break;
|
||||
case "--no-mangle":
|
||||
case "-nm":
|
||||
options.mangle = false;
|
||||
break;
|
||||
case "--no-squeeze":
|
||||
case "-ns":
|
||||
options.squeeze = false;
|
||||
break;
|
||||
case "--no-seqs":
|
||||
options.make_seqs = false;
|
||||
break;
|
||||
case "--no-dead-code":
|
||||
options.dead_code = false;
|
||||
break;
|
||||
case "--no-copyright":
|
||||
case "-nc":
|
||||
options.show_copyright = false;
|
||||
break;
|
||||
case "-o":
|
||||
case "--output":
|
||||
options.output = args.shift();
|
||||
break;
|
||||
case "--overwrite":
|
||||
options.out_same_file = true;
|
||||
break;
|
||||
case "-v":
|
||||
case "--verbose":
|
||||
options.verbose = true;
|
||||
break;
|
||||
case "--ast":
|
||||
options.ast = true;
|
||||
break;
|
||||
case "--unsafe":
|
||||
options.unsafe = true;
|
||||
break;
|
||||
case "--max-line-len":
|
||||
options.max_line_length = parseInt(args.shift(), 10);
|
||||
break;
|
||||
case "--reserved-names":
|
||||
options.reserved_names = args.shift().split(",");
|
||||
break;
|
||||
case "-d":
|
||||
case "--define":
|
||||
var defarg = args.shift();
|
||||
try {
|
||||
var defsym = function(sym) {
|
||||
// KEYWORDS_ATOM doesn't include NaN or Infinity - should we check
|
||||
// for them too ?? We don't check reserved words and the like as the
|
||||
// define values are only substituted AFTER parsing
|
||||
if (jsp.KEYWORDS_ATOM.hasOwnProperty(sym)) {
|
||||
throw "Don't define values for inbuilt constant '"+sym+"'";
|
||||
}
|
||||
return sym;
|
||||
},
|
||||
defval = function(v) {
|
||||
if (v.match(/^"(.*)"$/) || v.match(/^'(.*)'$/)) {
|
||||
return [ "string", RegExp.$1 ];
|
||||
}
|
||||
else if (!isNaN(parseFloat(v))) {
|
||||
return [ "num", parseFloat(v) ];
|
||||
}
|
||||
else if (v.match(/^[a-z\$_][a-z\$_0-9]*$/i)) {
|
||||
return [ "name", v ];
|
||||
}
|
||||
else if (!v.match(/"/)) {
|
||||
return [ "string", v ];
|
||||
}
|
||||
else if (!v.match(/'/)) {
|
||||
return [ "string", v ];
|
||||
}
|
||||
throw "Can't understand the specified value: "+v;
|
||||
};
|
||||
if (defarg.match(/^([a-z_\$][a-z_\$0-9]*)(=(.*))?$/i)) {
|
||||
var sym = defsym(RegExp.$1),
|
||||
val = RegExp.$2 ? defval(RegExp.$2.substr(1)) : [ 'name', 'true' ];
|
||||
options.defines[sym] = val;
|
||||
}
|
||||
else {
|
||||
throw "The --define option expects SYMBOL[=value]";
|
||||
}
|
||||
} catch(ex) {
|
||||
sys.print("ERROR: In option --define "+defarg+"\n"+ex+"\n");
|
||||
process.exit(1);
|
||||
}
|
||||
break;
|
||||
case "--define-from-module":
|
||||
var defmodarg = args.shift(),
|
||||
defmodule = require(defmodarg),
|
||||
sym,
|
||||
val;
|
||||
for (sym in defmodule) {
|
||||
if (defmodule.hasOwnProperty(sym)) {
|
||||
options.defines[sym] = function(val) {
|
||||
if (typeof val == "string")
|
||||
return [ "string", val ];
|
||||
if (typeof val == "number")
|
||||
return [ "num", val ];
|
||||
if (val === true)
|
||||
return [ 'name', 'true' ];
|
||||
if (val === false)
|
||||
return [ 'name', 'false' ];
|
||||
if (val === null)
|
||||
return [ 'name', 'null' ];
|
||||
if (val === undefined)
|
||||
return [ 'name', 'undefined' ];
|
||||
sys.print("ERROR: In option --define-from-module "+defmodarg+"\n");
|
||||
sys.print("ERROR: Unknown object type for: "+sym+"="+val+"\n");
|
||||
process.exit(1);
|
||||
return null;
|
||||
}(defmodule[sym]);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case "--ascii":
|
||||
options.codegen_options.ascii_only = true;
|
||||
break;
|
||||
default:
|
||||
filename = v;
|
||||
break out;
|
||||
}
|
||||
}
|
||||
|
||||
if (options.verbose) {
|
||||
pro.set_logger(function(msg){
|
||||
sys.debug(msg);
|
||||
});
|
||||
}
|
||||
|
||||
jsp.set_logger(function(msg){
|
||||
sys.debug(msg);
|
||||
});
|
||||
|
||||
if (filename) {
|
||||
fs.readFile(filename, "utf8", function(err, text){
|
||||
if (err) throw err;
|
||||
output(squeeze_it(text));
|
||||
});
|
||||
} else {
|
||||
var stdin = process.openStdin();
|
||||
stdin.setEncoding("utf8");
|
||||
var text = "";
|
||||
stdin.on("data", function(chunk){
|
||||
text += chunk;
|
||||
});
|
||||
stdin.on("end", function() {
|
||||
output(squeeze_it(text));
|
||||
});
|
||||
}
|
||||
|
||||
function output(text) {
|
||||
var out;
|
||||
if (options.out_same_file && filename)
|
||||
options.output = filename;
|
||||
if (options.output === true) {
|
||||
out = process.stdout;
|
||||
} else {
|
||||
out = fs.createWriteStream(options.output, {
|
||||
flags: "w",
|
||||
encoding: "utf8",
|
||||
mode: 0644
|
||||
});
|
||||
}
|
||||
out.write(text);
|
||||
if (options.output !== true) {
|
||||
out.end();
|
||||
}
|
||||
};
|
||||
|
||||
// --------- main ends here.
|
||||
|
||||
function show_copyright(comments) {
|
||||
var ret = "";
|
||||
for (var i = 0; i < comments.length; ++i) {
|
||||
var c = comments[i];
|
||||
if (c.type == "comment1") {
|
||||
ret += "//" + c.value + "\n";
|
||||
} else {
|
||||
ret += "/*" + c.value + "*/\n";
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
};
|
||||
|
||||
function squeeze_it(code) {
|
||||
var result = "";
|
||||
if (options.show_copyright) {
|
||||
var tok = jsp.tokenizer(code), c;
|
||||
c = tok();
|
||||
result += show_copyright(c.comments_before);
|
||||
}
|
||||
try {
|
||||
var ast = time_it("parse", function(){ return jsp.parse(code); });
|
||||
if (options.mangle) ast = time_it("mangle", function(){
|
||||
return pro.ast_mangle(ast, {
|
||||
toplevel: options.mangle_toplevel,
|
||||
defines: options.defines,
|
||||
except: options.reserved_names
|
||||
});
|
||||
});
|
||||
if (options.squeeze) ast = time_it("squeeze", function(){
|
||||
ast = pro.ast_squeeze(ast, {
|
||||
make_seqs : options.make_seqs,
|
||||
dead_code : options.dead_code,
|
||||
keep_comps : !options.unsafe
|
||||
});
|
||||
if (options.unsafe)
|
||||
ast = pro.ast_squeeze_more(ast);
|
||||
return ast;
|
||||
});
|
||||
if (options.ast)
|
||||
return sys.inspect(ast, null, null);
|
||||
result += time_it("generate", function(){ return pro.gen_code(ast, options.codegen_options) });
|
||||
if (!options.codegen_options.beautify && options.max_line_length) {
|
||||
result = time_it("split", function(){ return pro.split_lines(result, options.max_line_length) });
|
||||
}
|
||||
return result;
|
||||
} catch(ex) {
|
||||
sys.debug(ex.stack);
|
||||
sys.debug(sys.inspect(ex));
|
||||
sys.debug(JSON.stringify(ex));
|
||||
}
|
||||
};
|
||||
|
||||
function time_it(name, cont) {
|
||||
if (!options.verbose)
|
||||
return cont();
|
||||
var t1 = new Date().getTime();
|
||||
try { return cont(); }
|
||||
finally { sys.debug("// " + name + ": " + ((new Date().getTime() - t1) / 1000).toFixed(3) + " sec."); }
|
||||
};
|
Binary file not shown.
@ -1 +0,0 @@
|
||||
1.8.19pre
|
Loading…
Reference in New Issue
Block a user