Revision: 449
Author: adam
Date: 2005-08-31 15:28:27 -0400 (Wed, 31 Aug 2005)
Log Message:
-----------
Moving my JSAN modules repository into JSAN itself. All the better to keep things centralised
Added Paths:
-----------
users/adamk/Display/
users/adamk/Display/Changes
users/adamk/Display/META.yml
users/adamk/Display/lib/
users/adamk/Display/lib/Display.js
users/adamk/Display/tests/
users/adamk/Display/tests/index.html
users/adamk/Display/tests/main.t.html
users/adamk/Display.Only/
users/adamk/Display.Only/Changes
users/adamk/Display.Only/META.yml
users/adamk/Display.Only/demo/
users/adamk/Display.Only/demo/index.html
users/adamk/Display.Only/lib/
users/adamk/Display.Only/lib/Display/
users/adamk/Display.Only/lib/Display/Only.js
users/adamk/Display.Only/tests/
users/adamk/Display.Only/tests/index.html
users/adamk/Display.Only/tests/main.t.html
users/adamk/Display.Swap/
users/adamk/Display.Swap/Changes
users/adamk/Display.Swap/META.yml
users/adamk/Display.Swap/demo/
users/adamk/Display.Swap/demo/index.html
users/adamk/Display.Swap/lib/
users/adamk/Display.Swap/lib/Display/
users/adamk/Display.Swap/lib/Display/Swap.js
users/adamk/Display.Swap/tests/
users/adamk/Display.Swap/tests/index.html
users/adamk/Display.Swap/tests/main.t.html
users/adamk/README.txt
users/adamk/Upgrade/
users/adamk/Upgrade/Changes
users/adamk/Upgrade/META.yml
users/adamk/Upgrade/lib/
users/adamk/Upgrade/lib/Upgrade/
users/adamk/Upgrade/lib/Upgrade/Array/
users/adamk/Upgrade/lib/Upgrade/Array/push.js
users/adamk/Upgrade/lib/Upgrade/Function/
users/adamk/Upgrade/lib/Upgrade/Function/apply.js
users/adamk/Upgrade/lib/Upgrade.js
users/adamk/Upgrade/tests/
users/adamk/Upgrade/tests/index.html
users/adamk/Upgrade/tests/main.t.html
users/adamk/dist/
users/adamk/dist/Display-0.01.tar.gz
users/adamk/dist/Display-0.02.tar.gz
users/adamk/dist/Display-0.03.tar.gz
users/adamk/dist/Display-0.04.tar.gz
users/adamk/dist/Display-0.05.tar.gz
users/adamk/dist/Display-0.06.tar.gz
users/adamk/dist/Display.Only-0.01.tar.gz
users/adamk/dist/Display.Only-0.02.tar.gz
users/adamk/dist/Display.Only-0.03.tar.gz
users/adamk/dist/Display.Only-0.04.tar.gz
users/adamk/dist/Display.Swap-0.01.tar.gz
users/adamk/dist/Display.Swap-0.02.tar.gz
users/adamk/dist/Display.Swap-0.03.tar.gz
users/adamk/dist/Display.Swap-0.05.tar.gz
users/adamk/dist/Display.Swap-0.06.tar.gz
users/adamk/dist/Display.Swap-0.07.tar.gz
users/adamk/dist/Display.Swap-0.08.tar.gz
users/adamk/dist/Display.Swap-0.09.tar.gz
users/adamk/dist/Upgrade-0.01.tar.gz
users/adamk/dist/Upgrade-0.02.tar.gz
users/adamk/dist/Upgrade-0.03.tar.gz
users/adamk/dist/Upgrade-0.04.tar.gz
users/adamk/tools/
build_cpan.pl
users/adamk/tools/
build_jsan.pl
users/adamk/tools/common/
users/adamk/tools/common/LICENSE.PERL
users/adamk/tools/common/MANIFEST.SKIP
Removed Paths:
-------------
users/adamk/tools/
build_perl_package.pl
Added: users/adamk/Display/Changes
===================================================================
--- users/adamk/Display/Changes 2005-08-30 05:11:59 UTC (rev 448)
+++ users/adamk/Display/Changes 2005-08-31 19:28:27 UTC (rev 449)
@@ -0,0 +1,21 @@
+Revision history for JavaScript module Display
+
+0.06 Thu 25 Aug 2005
+ - Fixed a variety of bugs in the test suite
+ - Updating Test.Simple dependency
+
+0.05 Fri 12 Aug 2005
+ - Testing code clean ups
+ - Removed the var in the namespace creation
+
+0.04 missing
+
+0.03 Tue 26 Jul 2005
+ - As per BrowserIssues on wiki, paranoidly setting everything to double quotes
+
+0.02 Fri 22 Jul 2005
+ - Fixed a sill typo.
+ - Added some basic "do the functions exist" tests
+
+0.01 Thu 14 Jul 2005
+ - Creating the initial version
Property changes on: users/adamk/Display/Changes
___________________________________________________________________
Name: svn:executable
+ *
Added: users/adamk/Display/META.yml
===================================================================
--- users/adamk/Display/META.yml 2005-08-30 05:11:59 UTC (rev 448)
+++ users/adamk/Display/META.yml 2005-08-31 19:28:27 UTC (rev 449)
@@ -0,0 +1,7 @@
+---
+name: Display
+version: 0.06
+abstract: Provides primitives and convenience methods for Display modules
+build_requires:
+ JSAN: 0.10
+ Test.Simple: 0.20
Property changes on: users/adamk/Display/META.yml
___________________________________________________________________
Name: svn:executable
+ *
Added: users/adamk/Display/lib/Display.js
===================================================================
--- users/adamk/Display/lib/Display.js 2005-08-30 05:11:59 UTC (rev 448)
+++ users/adamk/Display/lib/Display.js 2005-08-31 19:28:27 UTC (rev 449)
@@ -0,0 +1,193 @@
+/*
+
+=pod
+
+=head1 NAME
+
+Display - Provides common primitives for Display modules
+
+=head1 SYNOPSIS
+
+ // Showing
+ Display.showElement(element);
+ Display.showElementById(id);
+
+ // Hiding
+ Display.hideElement(element);
+ Display.hideElementById(id);
+
+ // Checking state
+ Display.isElementHidden(element);
+ Display.isIdHidden(id);
+
+=head1 DESCRIPTION
+
+C<Display> provides a collection of utility functions for showing and
+and hiding elements. These are implemented in a simple, correct, and fast
+way, and the intent is that C<Display> will act as a central location for
+handling special and weird cases in the various browsers, and greatly
+simplify the code required for higher level modules such as L<Display.Hide>
+and L<Display.Swap>.
+
+However, the functions listed below do B<no> param checking, and as such
+are not really suitable for casual use in ordinary code. They are intended
+for other module authors who will have already checked that what they are
+passing is ok, and don't need or want the functions to protect them or
+provide DWIM functions.
+
+Ordinary users should consider using a specific C<Display.Something> module,
+or consider the use of L<Element> from the Prototype collection.
+
+=head1 Functions
+
+=cut
+
+*/
+
+// Set up the namespace if needed
+if ( typeof Display == "undefined" ) Display = {};
+
+Display.VERSION = 0.06;
+
+/*
+
+=pod
+
+=head2 void showElement element
+
+The C<showElement> method takes a C<HTMLElement> parameter and displays
+it by setting its C<display> style property to its default.
+
+=cut
+
+*/
+
+Display.showElement = function (el) {
+ el.style.display = "";
+}
+
+
+/*
+
+=pod
+
+=head2 void showElementById id
+
+The C<showElementById> method takes a C<String> parameter containing
+a HTML id value in the current document and shows the element that
+the id represents.
+
+=cut
+
+*/
+
+Display.showElementById = function(id) {
+ var el = document.getElementById(id);
+ if ( el ) Display.showElement(el);
+}
+
+/*
+
+=pod
+
+=head2 void hideElement element
+
+The C<hideElement> method takes a C<HTMLElement> parameter and hides
+it by setting its C<display> style property to "none"
+
+=cut
+
+*/
+
+Display.hideElement = function (el) {
+ el.style.display = "none";
+}
+
+
+/*
+
+=pod
+
+=head2 void hideElementById id
+
+The C<hideElementById> method takes a C<String> parameter containing
+a HTML id value in the current document and shows the element that
+the id represents.
+
+=cut
+
+*/
+
+Display.hideElementById = function(id) {
+ var el = document.getElementById(id);
+ if ( el ) Display.hideElement(el);
+}
+
+/*
+
+=pod
+
+=head2 bool elementIsHidden element
+
+The C<elementIsHidden> method checks to see if a C<HTMLElement> is hidden.
+
+Returns C<true> if the elements C<display> style propery is set to C<"none">,
+or C<false> otherwise.
+
+=cut
+
+*/
+
+Display.isElementHidden = function(el) {
+ return (el.style.display == "none");
+}
+
+/*
+
+=pod
+
+=head2 bool idIsHidden element
+
+The C<idIsHidden> method checks to see if a C<HTMLElement> is hidden.
+
+Returns C<true> if the elements C<display> style propery is set to C<"none">,
+or C<false> if not, or C<null> if the element with that id does not exist.
+
+=cut
+
+*/
+
+Display.idIsHidden = function(id) {
+ var el = document.getElementById(id);
+ if ( el ) return Display.isElementHidden(el);
+ return null;
+}
+
+/*
+
+=pod
+
+=head1 SUPPORT
+
+Bugs should be filed via the the C<jsan-authors> mailing list.
+
+See L<
http://openjsan.org/community/lists.html#jsan-authors> for details.
+
+For B<non-support> issues or questions, contact the author.
+
+=head1 AUTHOR
+
+Adam Kennedy E<lt>js...@ali.asE<gt>, L<
http://ali.as/>
+
+=head1 COPYRIGHT
+
+Copyright (c) 2005 Adam Kennedy. All rights reserved.
+This program is free software; you can redistribute it and/or modify
+it under the the terms of the Perl dual GPL/Artistic license.
+
+The full text of the license can be found in the
+LICENSE file included with this package
+
+=cut
+
+*/
Property changes on: users/adamk/Display/lib/Display.js
___________________________________________________________________
Name: svn:executable
+ *
Added: users/adamk/Display/tests/index.html
===================================================================
--- users/adamk/Display/tests/index.html 2005-08-30 05:11:59 UTC (rev 448)
+++ users/adamk/Display/tests/index.html 2005-08-31 19:28:27 UTC (rev 449)
@@ -0,0 +1,18 @@
+<html>
+<head>
+ <script type="text/javascript" src="lib/JSAN.js"></script>
+</head>
+<body>
+<script type="text/javascript">
+ JSAN.errorLevel = "die";
+ JSAN.use("Test.Harness");
+ JSAN.use("Test.Harness.Browser");
+
+ var t = new Test.Harness.Browser();
+
+ t.runTests(
+ "main.t.html"
+ );
+</script>
+</body>
+</html>
Property changes on: users/adamk/Display/tests/index.html
___________________________________________________________________
Name: svn:executable
+ *
Added: users/adamk/Display/tests/main.t.html
===================================================================
--- users/adamk/Display/tests/main.t.html 2005-08-30 05:11:59 UTC (rev 448)
+++ users/adamk/Display/tests/main.t.html 2005-08-31 19:28:27 UTC (rev 449)
@@ -0,0 +1,29 @@
+<head>
+ <script type="text/javascript" src="lib/JSAN.js"></script>
+</head>
+<body>
+<p id="one"># This is shown by default</p>
+<pre id="test"><script type="text/javascript">
+JSAN.use('Test.More');
+JSAN.use('Display' );
+
+plan({ tests: 8 });
+
+// Did the main functions get created
+is( typeof Display.showElement, "function", "showElement exists" );
+is( typeof Display.showElementById, "function", "showElementById exists" );
+is( typeof Display.hideElement, "function", "hideElement exists" );
+is( typeof Display.hideElementById, "function", "hideElementById exists" );
+
+// This is a browser-specific module.
+// Does the current browser support the .style and .display within it
+var img = new Image();
+is( typeof img, "object", "Created new testing Image" );
+var style = img.style;
+is( typeof style, "object", "Testing Image has a style property" );
+var display = style.display;
+is( typeof display, "string", "Testing Image has a display style property" );
+is( display, "", "Testing Image display style set to '' by default" );
+
+</script></pre>
+</body>
Property changes on: users/adamk/Display/tests/main.t.html
___________________________________________________________________
Name: svn:executable
+ *
Added: users/adamk/Display.Only/Changes
===================================================================
--- users/adamk/Display.Only/Changes 2005-08-30 05:11:59 UTC (rev 448)
+++ users/adamk/Display.Only/Changes 2005-08-31 19:28:27 UTC (rev 449)
@@ -0,0 +1,15 @@
+Revision history for JavaScript module Display.Only
+
+0.04 Tue 30 Aug 2005 (not at altitude) :(
+ - Fixed another small bug... how it snuck in I don't know
+ - Changed the include paths to be sane
+
+0.03 Thu 25 Aug 2005 (not at altitude) :(
+ - Fixed a bug preventing .refresh() being called
+ - Fixed a bunch of tests that were backwards
+
+0.02 Fri 12 Aug 2005 (at an altitude of 27,000 feet)
+ - Cleaning up the tests and some other minor changes
+
+0.01 Wed 27 Jun 2005 (at an altitude of 16,000 feet)
+ - Creating the initial version
Property changes on: users/adamk/Display.Only/Changes
___________________________________________________________________
Name: svn:executable
+ *
Added: users/adamk/Display.Only/META.yml
===================================================================
--- users/adamk/Display.Only/META.yml 2005-08-30 05:11:59 UTC (rev 448)
+++ users/adamk/Display.Only/META.yml 2005-08-31 19:28:27 UTC (rev 449)
@@ -0,0 +1,9 @@
+---
+name: Display.Only
+version: 0.04
+abstract: Display one of several named sets of elements at a time
+requires:
+ JSAN: 0.10
+ Display: 0.06
+build_requires:
+ Test.More: 0.20
Property changes on: users/adamk/Display.Only/META.yml
___________________________________________________________________
Name: svn:executable
+ *
Added: users/adamk/Display.Only/demo/index.html
===================================================================
--- users/adamk/Display.Only/demo/index.html 2005-08-30 05:11:59 UTC (rev 448)
+++ users/adamk/Display.Only/demo/index.html 2005-08-31 19:28:27 UTC (rev 449)
@@ -0,0 +1,25 @@
+<html>
+<head>
+ <script type="text/javascript" src="lib/JSAN.js"></script>
+ <script type="text/javascript">
+ JSAN.errorLevel = "die";
+ JSAN.use("Display" );
+ JSAN.use("Display.Only");
+ </script>
+</head>
+<body>
+ <p id='first'>First section</p>
+ <p id='second'>Second section</p>
+ <p id='foo'>Also in Second section</p>
+ <p id='third'>Third section</p>
+ <script language="JavaScript" type="text/JavaScript">
+ var only = new Display.Only( {
+ one: "first",
+ two: [ "second", "foo" ],
+ three: "third"
+ } );
+ only.show("one");
+ </script>
+ <p><a href='javascript:void only.show("two");'>Show the second item</a></p>
+</body>
+</html>
Property changes on: users/adamk/Display.Only/demo/index.html
___________________________________________________________________
Name: svn:executable
+ *
Added: users/adamk/Display.Only/lib/Display/Only.js
===================================================================
--- users/adamk/Display.Only/lib/Display/Only.js 2005-08-30 05:11:59 UTC (rev 448)
+++ users/adamk/Display.Only/lib/Display/Only.js 2005-08-31 19:28:27 UTC (rev 449)
@@ -0,0 +1,156 @@
+// JSAN::Concat-compatible dependency header
+JSAN.use("Display");
+// __CODE__
+
+/*
+
+=head1 NAME
+
+Display.Only - Display one of several named set of elements at a time
+
+=head1 SYNOPSIS
+
+ // Some things to show
+ <p id='first'>First section</p>
+ <p id='second'>Second section</p>
+ <p id='foo'>Also in Second section</p>
+ <p id='third'>Third section</p>
+
+ // Create the swap control
+ <script language="JavaScript" type="text/JavaScript">
+ var only = new Display.Only( {
+ one: "first",
+ two: [ "second", "foo" ],
+ three: "third"
+ } );
+ only.show("one");
+ </script>
+
+ // Link to show the second set
+ <p><a href='javascript:void only.show("two"));'>Show the second item</a></p>
+
+=head1 DESCRIPTION
+
+C<Display.Only> is used to control groups of elements such as pages within
+a tabbed display, where you will only ever want to see one of them at a
+time.
+
+It takes a named set of items, with will either be a single element
+name or an C<Array> of names, and controls their visibility so that only
+one is shown.
+
+=head1 METHODS
+
+*/
+
+// FIXME - We're actually completely screwed if we don't have the
+// Display primitives, so doing this won't help one bit.
+if ( typeof Display == "undefined" ) Display = {};
+
+/*
+
+=head2 new Display.Only( { one: "foo", two: [ "bar", ... ], ... } );
+
+The C<Display.Only> constructor takes as argument a plain object, where the
+keys should be the names of each set of elements, and the value is either
+of a) A C<String> containing an element id, or b) An C<Array> containing
+a list of C<String> element ids.
+
+When the object is initially created, if has no way of knowing which of
+these named sets of elements should be displayed, and so does not make
+any change to the visibility of the elements.
+
+If you did not generate the HTML elements with the correct visibility
+in the first place, you should immediate call the L<\show> method to
+ensure the correct set of elements is showing.
+
+=cut
+
+*/
+
+Display.Only = function (param) {
+ // Were we passed an object
+ if ( typeof(param) != "object" || param.constructor != Object ) {
+ throw new Error("Display.Only constructor was not passed an Object");
+ }
+
+ // Populate the set hash
+ this.sets = {};
+ for ( var key in param ) {
+ var set = param[key];
+ if ( typeof set == "string" ) set = [ set ];
+ this.sets[key] = set;
+ }
+
+ // Don't select something to show by default
+ this.showing = "";
+}
+
+Display.Only.VERSION = 0.04;
+
+/*
+
+=head2 void refresh
+
+The C<refresh> method does the mechanics of showing and hiding the appropriate
+elements. You can call this yourself if a problem has occured and you need to
+force the visibility of the elements to their appropriate values.
+
+=cut
+
+*/
+
+Display.Only.prototype.refresh = function () {
+ for ( var s in this.sets ) {
+ var set = this.sets[s];
+ var show = s == this.showing;
+ for ( var i = 0; i < set.length; i++ ) {
+ show ? Display.showElementById(set[i])
+ : Display.hideElementById(set[i]);
+ }
+ }
+};
+
+/*
+
+=head2 void show name
+
+The C<show> method will change the set currently showing. The named list
+will be shown, and all others will be hidden.
+
+If the provided name does not match a set, no action will be taken. If the
+set specified if already showing, the method shortcuts and no action is
+taken. To force a refresh, see the L<\refresh> method.
+
+*/
+
+Display.Only.prototype.show = function (set) {
+ if ( set == this.showing ) return;
+ if ( typeof this.sets[set] == "undefined" ) return;
+ this.showing = set;
+ this.refresh();
+};
+
+/*
+
+=head1 SUPPORT
+
+Until the JSAN RT system supports distribution queues, bugs should
+be reported via the jsan-authors mailing list.
+
+For B<non-support> issues or questions, contact the author.
+
+=head1 AUTHOR
+
+Adam Kennedy <
js...@ali.as>, L<
http://ali.as/>
+
+=head1 COPYRIGHT
+
+Copyright (c) 2005 Adam Kennedy. All rights reserved.
+This program is free software; you can redistribute it and/or modify
+it under the the terms of the Perl dual GPL/Artistic license.
+
+The full text of the license can be found in the
+LICENSE file included with this package
+
+*/
Property changes on: users/adamk/Display.Only/lib/Display/Only.js
___________________________________________________________________
Name: svn:executable
+ *
Added: users/adamk/Display.Only/tests/index.html
===================================================================
--- users/adamk/Display.Only/tests/index.html 2005-08-30 05:11:59 UTC (rev 448)
+++ users/adamk/Display.Only/tests/index.html 2005-08-31 19:28:27 UTC (rev 449)
@@ -0,0 +1,19 @@
+<html>
+<head>
+ <script type="text/javascript" src="../lib/JSAN.js"></script>
+</head>
+<body>
+<script type="text/javascript">
+ JSAN.errorLevel = "die";
+ JSAN.includePath = [ '../lib' ];
+ JSAN.use("Test.Harness");
+ JSAN.use("Test.Harness.Browser");
+
+ var t = new Test.Harness.Browser();
+
+ t.runTests(
+ "main.t.html"
+ );
+</script>
+</body>
+</html>
Property changes on: users/adamk/Display.Only/tests/index.html
___________________________________________________________________
Name: svn:executable
+ *
Added: users/adamk/Display.Only/tests/main.t.html
===================================================================
--- users/adamk/Display.Only/tests/main.t.html 2005-08-30 05:11:59 UTC (rev 448)
+++ users/adamk/Display.Only/tests/main.t.html 2005-08-31 19:28:27 UTC (rev 449)
@@ -0,0 +1,74 @@
+<html>
+<head>
+ <script type="text/javascript" src="../lib/JSAN.js"></script>
+ <script type="text/javascript" src="../lib/Display/Only.js"></script>
+ <script type="text/javascript">
+ JSAN.errorLevel = "die";
+ JSAN.includePath = [ '../lib' ];
+ JSAN.use("Test.More");
+ </script>
+</head>
+<body>
+ <p id="one"># This is in set 'a'</p>
+ <p id="two"># This is in set 'b'</p>
+ <p id="three"># This is in set 'b' as well</p>
+ <p id="four"># This is in set 'c'</p>
+ <pre id="test"><script type="text/javascript">
+
+plan( { tests: 27 } );
+
+// Load the library to test
+JSAN.use("Display.Only");
+is( typeof Display.Only, "function", "Constructor namespace exists" );
+ok( Display.Only.VERSION, "Found library VERSION" );
+
+// Find the test paragraphs
+var one = document.getElementById("one");
+var two = document.getElementById("two");
+var three = document.getElementById("three");
+var four = document.getElementById("four");
+ok( one, "Found test element 'one'" );
+ok( two, "Found test element 'two'" );
+ok( three, "Found test element 'three'" );
+ok( four, "Found test element 'four'" );
+
+// Create a default Only object
+var only = new Display.Only( { a: "one", b: [ "two", "three" ], c: "four" } );
+is( typeof only, "object", "Created new Display.Only object" );
+
+// The constructor shouldn't change anything
+ok( ! Display.isElementHidden(one), "When showing is '', show one" );
+ok( ! Display.isElementHidden(two), "When showing is '', show two" );
+ok( ! Display.isElementHidden(three), "When showing is '', show three" );
+ok( ! Display.isElementHidden(four), "When showing is '', show four" );
+
+// Show each thing in turn
+only.show("a");
+ok( ! Display.isElementHidden(one), "When showing is 'a', show one" );
+ok( Display.isElementHidden(two), "When showing is 'a', hide two" );
+ok( Display.isElementHidden(three), "When showing is 'a', hide three" );
+ok( Display.isElementHidden(four), "When showing is 'a', hide four" );
+only.show("b");
+ok( Display.isElementHidden(one), "When showing is 'b', hide one" );
+ok( ! Display.isElementHidden(two), "When showing is 'b', show two" );
+ok( ! Display.isElementHidden(three), "When showing is 'b', show three" );
+ok( Display.isElementHidden(four), "When showing is 'b', hide four" );
+only.show("c");
+ok( Display.isElementHidden(one), "When showing is 'c', hide one" );
+ok( Display.isElementHidden(two), "When showing is 'c', hide two" );
+ok( Display.isElementHidden(three), "When showing is 'c', hide three" );
+ok( ! Display.isElementHidden(four), "When showing is 'c', show four" );
+
+// Stuff them up and refresh
+one.style.display = "block";
+two.style.display = "block";
+three.style.display = "block";
+four.style.display = "block";
+only.refresh();
+ok( Display.isElementHidden(one), "When showing is 'c', hide one" );
+ok( Display.isElementHidden(two), "When showing is 'c', hide two" );
+ok( Display.isElementHidden(three), "When showing is 'c', hide three" );
+ok( ! Display.isElementHidden(four), "When showing is 'c', show four" );
+
+</script></pre>
+</body>
Property changes on: users/adamk/Display.Only/tests/main.t.html
___________________________________________________________________
Name: svn:executable
+ *
Added: users/adamk/Display.Swap/Changes
===================================================================
--- users/adamk/Display.Swap/Changes 2005-08-30 05:11:59 UTC (rev 448)
+++ users/adamk/Display.Swap/Changes 2005-08-31 19:28:27 UTC (rev 449)
@@ -0,0 +1,24 @@
+Revision history for JavaScript module Display.Swap
+
+0.08 Fri 12 Aug 2005
+ - Cleaning up various small things (mostly tests)
+
+0.07 Tue 26 Jul 2005
+ - As per BrowserIssues on wiki, paranoidly setting everything to double quotes
+
+0.06 Tue 26 Jul 2005
+ - Switching to use the __CORE__ marker
+
+0.05 Missing
+
+0.04 Missing
+
+0.03 Fri 8 Jul 2005
+ - Some POD changes to update SUPPORT and AUTHOR
+
+0.02 Sun 3 Jul 2005
+ - Fixing copyright notice
+ - Allowing a single string instead of a set
+
+0.01 Sat 25 Jun 2005
+ - Creating the initial version
Property changes on: users/adamk/Display.Swap/Changes
___________________________________________________________________
Name: svn:executable
+ *
Added: users/adamk/Display.Swap/META.yml
===================================================================
--- users/adamk/Display.Swap/META.yml 2005-08-30 05:11:59 UTC (rev 448)
+++ users/adamk/Display.Swap/META.yml 2005-08-31 19:28:27 UTC (rev 449)
@@ -0,0 +1,9 @@
+---
+name: Display.Swap
+version: 0.09
+abstract: Display only one of two sets of elements, and swap between them
+requires:
+ JSAN: 0.10
+ Display: 0.05
+build_requires:
+ Test.More: 0.11
Property changes on: users/adamk/Display.Swap/META.yml
___________________________________________________________________
Name: svn:executable
+ *
Added: users/adamk/Display.Swap/demo/index.html
===================================================================
--- users/adamk/Display.Swap/demo/index.html 2005-08-30 05:11:59 UTC (rev 448)
+++ users/adamk/Display.Swap/demo/index.html 2005-08-31 19:28:27 UTC (rev 449)
@@ -0,0 +1,60 @@
+<html>
+<head>
+ <title>Display.Swap Demonstration</title>
+ <script type="text/javascript" src="lib/JSAN.js"></script>
+ <script type="text/javascript">
+ JSAN.use("Display.Swap");
+ </script>
+ <style type="text/css">
+<!--
+p#one {
+ font-family: Verdana, Arial, Helvetica, sans-serif;
+ font-size: medium;
+ font-weight: bold;
+ color: #990000;
+ border: 1px solid #000000;
+ background-color: #FFFFCC;
+}
+p#two {
+ font-family: Georgia, "Times New Roman", Times, serif;
+ font-size: medium;
+ font-weight: bold;
+ font-variant: small-caps;
+ color: #0000FF;
+ font-style: italic;
+ background-color: #99FFFF;
+ border: 3px dotted #009900;
+}
+-->
+ </style>
+</head>
+<body>
+<h1>Demonstration of Display.Swap </h1>
+<hr size="1" noshade>
+<p>Using a Display.Swap to show two alternative items in the same location</p>
+<p><a href="javascript:void first.swap();">Trigger first.swap()</a></p>
+<p id="one">This is in the first list</p>
+<p id="two">This is in the second list</p>
+<script type="text/javascript">
+var first = new Display.Swap( [ "one" ], [ "two" ] );
+</script>
+<hr size="1" noshade>
+<p>A really stupid version of whack-a-mole done using Display.Swap</p>
+<table width="300" height="300" border="1" cellpadding="10" cellspacing="0">
+ <tr align="center" height="100">
+ <td width="100"><span id="mole1"><strong>Mole</strong> · <a href="javascript:void second.swap();">Whack</a></span> </td>
+ <td width="100"><span id="mole2"><strong>Mole</strong> · <a href="javascript:void second.swap();">Whack</a></span> </td>
+ </tr>
+ <tr align="center" height="100">
+ <td width="100"><span id="mole3"><strong>Mole</strong> · <a href="javascript:void second.swap();">Whack</a></span> </td>
+ <td width="100"> </td>
+ </tr>
+</table>
+<br>
+<script type="text/javascript">
+var second = new Display.Swap( "mole1", [ "mole2", "mole3" ] );
+</script>
+<hr size="1" noshade>
+<p> </p>
+</body>
+</html>
Property changes on: users/adamk/Display.Swap/demo/index.html
___________________________________________________________________
Name: svn:executable
+ *
Added: users/adamk/Display.Swap/lib/Display/Swap.js
===================================================================
--- users/adamk/Display.Swap/lib/Display/Swap.js 2005-08-30 05:11:59 UTC (rev 448)
+++ users/adamk/Display.Swap/lib/Display/Swap.js 2005-08-31 19:28:27 UTC (rev 449)
@@ -0,0 +1,144 @@
+// JSAN::Concat-compatible dependency header
+JSAN.use("Display");
+// __CODE__
+
+/*
+
+=head1 NAME
+
+Display.Swap - Display only one of two sets of elements, and swap between them
+
+=head1 SYNOPSIS
+
+ // Some things to show
+ <p id='first'>First section</p>
+ <p id='second'>Second section</p>
+ <p id='foo'>Also in Second section</p>
+
+ // Create the swap control
+ <script language="JavaScript" type="text/JavaScript">
+ var stuff = new Display.Swap( [ "first" ], [ "second", "foo" ] );
+
+ // This would be equivalent
+ // var stuff = new Display.Swap( "first", [ "second", "foo" ] );
+ </script>
+
+ // Alternate display whenever this is clicked
+ <p><a href="javascript:stuff.swap();">Swap visibility</a></p>
+
+=head1 DESCRIPTION
+
+C<Display.Swap> is used to control groups of elements, where you only ever want
+one of two sets to be show at once. Most of the time, you probably only want one
+element in each set, but doing it as a set means that we can swap not just one
+big area, but headers and control links and other ancillary items as well.
+
+=head1 METHODS
+
+*/
+
+// FIXME - We're actually completely screwed if we don't have the
+// Display primitives, so doing this won't help one bit.
+if ( typeof Display == "undefined" ) Display = {};
+
+/*
+
+=head2 new Display.Swap( [ "show", ... ], [ "hide", ... ] );
+
+The C<Display.Swap> constructor takes two arguments. Each argument should
+be an C<Array> containing zero or more element ids.
+
+An additional shorthand if provided that allows you to specify a single id
+name as a string instead of an C<Array>, and it will Do What You Mean.
+
+When the object is created it will automatically show all elements in the first list,
+and hide all those in the second list.
+
+=cut
+
+*/
+
+Display.Swap = function (show, hide) {
+ // Allow a single element id
+ if ( typeof show == "string" ) show = [ show ];
+ if ( typeof hide == "string" ) hide = [ hide ];
+
+ // Initialise the lists
+ this.showing = show;
+ this.hiding = hide;
+
+ // Do an initial show/hide
+ this.refresh();
+}
+
+Display.Swap.VERSION = 0.09;
+
+/*
+
+=head2 refresh
+
+The C<refresh> method does the mechanics of showing and hiding the appropriate
+elements. You can call this yourself if a problem has occured and you need to
+force show/hide of the elements that currently should be.
+
+=cut
+
+*/
+
+Display.Swap.prototype.refresh = function () {
+ // Hide everything that needs hiding
+ for ( i in this.hiding ) {
+ Display.hideElementById(this.hiding[i]);
+ }
+
+ // Show everything that needs showing
+ for ( i in this.showing ) {
+ Display.showElementById(this.showing[i]);
+ }
+};
+
+/*
+
+=head2 swap
+
+The C<swap> method will change the set currently showing. The shown list will be
+hidden, and the hidden list will be shown.
+
+Note that the hiding and showing is done based on the objects understanding of what
+should be hidden or show, B<not> based on the actually state of the elements.
+
+*/
+
+Display.Swap.prototype.swap = function () {
+ var tmp = this.hiding;
+ this.hiding = this.showing;
+ this.showing = tmp;
+ this.refresh();
+};
+
+/*
+
+=head1 SUPPORT
+
+
+For B<non-support> issues or questions, contact the author.
+
+=head1 AUTHOR
+
+Adam Kennedy <
js...@ali.as>, L<
http://ali.as/>
+
+=head1 ACKNOWLEDGEMENTS
+
+Thank you to my employer Phase N L<
http://phase-n.com/> for donating the
+time to write and maintain this package.
+
+=head1 COPYRIGHT
+
+Copyright (c) 2005 Adam Kennedy. All rights reserved.
+This program is free software; you can redistribute it and/or modify
+it under the the terms of the Perl dual GPL/Artistic license.
+
+The full text of the license can be found in the
+LICENSE file included with this package
+
+*/
Property changes on: users/adamk/Display.Swap/lib/Display/Swap.js
___________________________________________________________________
Name: svn:executable
+ *
Added: users/adamk/Display.Swap/tests/index.html
===================================================================
--- users/adamk/Display.Swap/tests/index.html 2005-08-30 05:11:59 UTC (rev 448)
+++ users/adamk/Display.Swap/tests/index.html 2005-08-31 19:28:27 UTC (rev 449)
@@ -0,0 +1,18 @@
+<html>
+<head>
+ <script type="text/javascript" src="lib/JSAN.js"></script>
+</head>
+<body>
+<script type="text/javascript">
+ JSAN.errorLevel = "die";
+ JSAN.use("Test.Harness");
+ JSAN.use("Test.Harness.Browser");
+
+ var t = new Test.Harness.Browser();
+
+ t.runTests(
+ "main.t.html"
+ );
+</script>
+</body>
+</html>
Property changes on: users/adamk/Display.Swap/tests/index.html
___________________________________________________________________
Name: svn:executable
+ *
Added: users/adamk/Display.Swap/tests/main.t.html
===================================================================
--- users/adamk/Display.Swap/tests/main.t.html 2005-08-30 05:11:59 UTC (rev 448)
+++ users/adamk/Display.Swap/tests/main.t.html 2005-08-31 19:28:27 UTC (rev 449)
@@ -0,0 +1,64 @@
+<html>
+<head>
+ <script type="text/javascript" src="lib/JSAN.js"></script>
+ <script type="text/javascript">
+ JSAN.errorLevel = "die";
+ JSAN.use("Test.More");
+ </script>
+</head>
+<body>
+ <p id="one"># This is shown by default</p>
+ <p id="two"># This is hidden by default</p>
+ <p id="three"># This is also hidden by default</p>
+ <pre id="test"><script type="text/javascript">
+
+plan({ tests: 18 });
+
+// Load the library to test
+JSAN.use("Display.Swap");
+is( typeof Display.Swap, "function", "Constructor namespace exists" );
+ok( Display.Swap.VERSION, "Found library VERSION" );
+
+// Find the test paragraphs
+var one = document.getElementById("one");
+var two = document.getElementById("two");
+var three = document.getElementById("three");
+ok( one, "Found test element 'one'" );
+ok( two, "Found test element 'two'" );
+ok( three, "Found test element 'three'" );
+
+// Create a default swap object
+var swap = new Display.Swap( "one", [ "two", "three" ] );
+is( typeof swap, "object", "Created new Display.Swap object" );
+
+// Are they displaying as they should
+ok( ! Display.isElementHidden(one), "Showing one" );
+ok( Display.isElementHidden(two), "Hiding two" );
+ok( Display.isElementHidden(three), "Hiding three" );
+
+// Stuff with the display values and refresh
+one.style.display = "block";
+two.style.display = "block";
+three.style.display = "block";
+swap.refresh();
+is( one.style.display, "", "Set display for one back to ''" );
+ok( Display.isElementHidden(two), "Hiding two" );
+ok( Display.isElementHidden(three), "Hiding three" );
+
+// Swap visibility
+swap.swap();
+ok( Display.isElementHidden(one), "Hiding one" );
+ok( ! Display.isElementHidden(two), "Showing two" );
+ok( ! Display.isElementHidden(three), "Showing three" );
+
+// Agin, stuff with the display values and refresh
+one.style.display = "block";
+two.style.display = "block";
+three.style.display = "block";
+swap.refresh();
+ok( Display.isElementHidden(one), "Hiding one" );
+is( two.style.display, "", "Set display for two back to ''" );
+is( three.style.display, "", "Set display for three back to ''" );
+
+</script></pre>
+</body>
Property changes on: users/adamk/Display.Swap/tests/main.t.html
___________________________________________________________________
Name: svn:executable
+ *
Added: users/adamk/README.txt
===================================================================
--- users/adamk/README.txt 2005-08-30 05:11:59 UTC (rev 448)
+++ users/adamk/README.txt 2005-08-31 19:28:27 UTC (rev 449)
@@ -0,0 +1,8 @@
+This is the relatively private location of the JSAN modules for Adam Kennedy.
+
+They are stored relatively normally, but you should always use the package
+builder in the tools directory to do the actual packaging up of dists, as
+it provides automation of various sorts to simplify the build process.
+
+cd tools
+perl ./
build_jsan.pl Dist-Name
Property changes on: users/adamk/README.txt
___________________________________________________________________
Name: svn:executable
+ *
Added: users/adamk/Upgrade/Changes
===================================================================
--- users/adamk/Upgrade/Changes 2005-08-30 05:11:59 UTC (rev 448)
+++ users/adamk/Upgrade/Changes 2005-08-31 19:28:27 UTC (rev 449)
@@ -0,0 +1,13 @@
+Revision history for JavaScript module collection Upgrade
+
+0.04 Fri 12 Aug 2005
+ - Various small testing clean ups
+
+0.03 missing
+
+0.02 missing
+
+0.01 Fri 8 Jul 2005
+ - Creating the initial version
+ - Added Array.prototype.push
+ - Added Function.prototype.apply
Property changes on: users/adamk/Upgrade/Changes
___________________________________________________________________
Name: svn:executable
+ *
Added: users/adamk/Upgrade/META.yml
===================================================================
--- users/adamk/Upgrade/META.yml 2005-08-30 05:11:59 UTC (rev 448)
+++ users/adamk/Upgrade/META.yml 2005-08-31 19:28:27 UTC (rev 449)
@@ -0,0 +1,7 @@
+---
+name: Upgrade
+version: 0.04
+abstract: Upgrade older JavaScript implementations to support newer features
+build_requires:
+ JSAN: 0.10
+ Test.More: 0.11
Property changes on: users/adamk/Upgrade/META.yml
___________________________________________________________________
Name: svn:executable
+ *
Added: users/adamk/Upgrade/lib/Upgrade/Array/push.js
===================================================================
--- users/adamk/Upgrade/lib/Upgrade/Array/push.js 2005-08-30 05:11:59 UTC (rev 448)
+++ users/adamk/Upgrade/lib/Upgrade/Array/push.js 2005-08-31 19:28:27 UTC (rev 449)
@@ -0,0 +1,14 @@
+/*
+Upgrade.Array.push.VERSION = 0.04;
+*/
+
+// Provides Array.push for implementations that don't have it
+if ( ! Array.prototype.push ) {
+ Array.prototype.push = function () {
+ var l = this.length;
+ for ( var i = 0; i < arguments.length; i++ ) {
+ this[l+i] = arguments[i];
+ }
+ return this.length;
+ }
+}
Property changes on: users/adamk/Upgrade/lib/Upgrade/Array/push.js
___________________________________________________________________
Name: svn:executable
+ *
Added: users/adamk/Upgrade/lib/Upgrade/Function/apply.js
===================================================================
--- users/adamk/Upgrade/lib/Upgrade/Function/apply.js 2005-08-30 05:11:59 UTC (rev 448)
+++ users/adamk/Upgrade/lib/Upgrade/Function/apply.js 2005-08-31 19:28:27 UTC (rev 449)
@@ -0,0 +1,19 @@
+/*
+Upgrade.Function.Apply.VERSION = 0.04;
+*/
+// Adapted from a Prototype adaptation of code
+// originally from
http://www.youngpup.net/
+if ( ! Function.prototype.apply ) {
+ Function.prototype.apply = function(o, p) {
+ var pstr = new Array();
+ if ( ! o ) o = window;
+ if ( ! p ) p = new Array();
+ for ( var i = 0; i < p.length; i++ ) {
+ pstr[i] = 'p[' + i + ']';
+ }
+ o.__apply__ = this;
+ var rv = eval('o.__apply__(' + pstr[i].join(', ') + ')' );
+ o.__apply__ = null;
+ return rv;
+ }
+}
Property changes on: users/adamk/Upgrade/lib/Upgrade/Function/apply.js
___________________________________________________________________
Name: svn:executable
+ *
Added: users/adamk/Upgrade/lib/Upgrade.js
===================================================================
--- users/adamk/Upgrade/lib/Upgrade.js 2005-08-30 05:11:59 UTC (rev 448)
+++ users/adamk/Upgrade/lib/Upgrade.js 2005-08-31 19:28:27 UTC (rev 449)
@@ -0,0 +1,121 @@
+/*
+Keep package scanners happy
+Upgrade.VERSION = 0.04;
+*/
+
+/*
+
+=head1 NAME
+
+Upgrade - Upgrade older JavaScript implementations to support newer features
+
+=head1 SYNOPSIS
+
+ // Upgrade Array.push if the client does not have it
+ JSAN.use("Upgrade.Array.push");
+
+=head1 DESCRIPTION
+
+Many many different JavaScript toolkits start with something like the following:
+
+ // Provides Array.push for implementations that don't have it
+ if ( ! Array.prototype.push ) {
+ Array.prototype.push = function () {
+ var l = this.length;
+ for ( var i = 0; i < arguments.length; i++ ) {
+ this[l+i] = arguments[i];
+ }
+ return this.length;
+ }
+ }
+
+These provide implementations of expected or required functions/classes
+for older JavaScript implementations that do not provide them natively,
+in effect "upgrading" the client at run-time.
+
+In fact, due to its flexibility JavaScript is a language ideally suited
+to this sort of behaviour.
+
+C<Upgrade> is a JSAN package that provides standard implementations for
+many of these standard functions. If your code relies on a particular
+function that you later find to be not as common as you might have
+initially thought, you can simply add a dependency on that function within
+the C<Upgrade> namespace, and if an implementation exists the standard code
+to implement it will be added it the current environment (when it doesn't
+already have it).
+
+Rather than one huge file that provides a "compatibility layer" and upgrades
+verything all at once, C<Upgrade> is broken down into a large number of
+maller .js files, each implementing one function or class.
+
+Generally these functions are ones defined in the ECMA standard, and those
+that aren't, such as C<HTMLHttpRequest> are not provided by Upgrade (as much
+as we would like to) :)
+
+=head1 USING UPGRADE
+
+The C<Upgrade> namespace acts as a parallel root to the global namespace.
+For any function you want to upgrade, you can then simply prepend
+C<"Upgrade"> to it.
+
+For example, to do the very common upgrade for the C<Array.push> function,
+you simply add C<JSAN.use("Upgrade.Array.push") to your module (or manually
+load the C<Upgrade/Array/push.js> file).
+
+One advantage of using these standard implementations rather than your own
+is that when a number of modules with C<Upgrade> depedencies are merged
+together by C<JSAN::Concat> or another package merger it results in only
+a single copy of the upgrading code at the appropriate place in the code.
+
+=head1 UPGRADABLE FUNCTIONS
+
+While implementations are provided seperately, rather than document them
+this way we will instead defined all functions available in the C<Upgrade>
+package here.
+
+=head2 Upgrade.Array.push
+
+This provides the same standard implementation of the instance method
+C<Array.push> (located at Array.prototype.push) as used by all of the
+major frameworks.
+
+=head2 Upgrade.Function.apply
+
+This provides a version of the instance method C<Function.apply>
+(located at C<Function.prototype.apply>) adapted from an implementation
+found in the L<Prototype> framework, which was itself adapted from an
+implementation found on L<
http://www.youngpup.net/>.
+
+=head1 METHODS
+
+The C<Upgrade> module itself does not at this time provide any
+functionality, and only acts as a source of documentation.
+
+Likewise, nothing is ever actually created at or beneath the C<Upgrade>
+namespace, but serves as an address mechanism for determining which
+.js files to load. Each of these files only inserts functions into the
+core tree and do not create any additional useless namespace variables.
+
+=head1 SUPPORT
+
+Until the JSAN RT gains package-specific queues, bugs or new functions
+to add to Upgrade should be reported to the jsan-authors mailing list.
+
+For B<non-support> issues or questions, contact the author.
+
+=head1 AUTHOR
+
+Adam Kennedy <
js...@ali.as>, L<
http://ali.as/>
+
+=head1 COPYRIGHT
+
+Copyright (c) 2005 Adam Kennedy. All rights reserved.
+This program is free software; you can redistribute it and/or modify
+it under the the terms of the Perl dual GPL/Artistic license.
+
+The full text of the license can be found in the
+LICENSE file included with this package
+
+=cut
+
+*/
Property changes on: users/adamk/Upgrade/lib/Upgrade.js
___________________________________________________________________
Name: svn:executable
+ *
Added: users/adamk/Upgrade/tests/index.html
===================================================================
--- users/adamk/Upgrade/tests/index.html 2005-08-30 05:11:59 UTC (rev 448)
+++ users/adamk/Upgrade/tests/index.html 2005-08-31 19:28:27 UTC (rev 449)
@@ -0,0 +1,18 @@
+<html>
+<head>
+ <script type="text/javascript" src="lib/JSAN.js"></script>
+</head>
+<body>
+<script type="text/javascript">
+ JSAN.errorLevel = "die";
+ JSAN.use("Test.Harness" );
+ JSAN.use("Test.Harness.Browser");
+
+ var t = new Test.Harness.Browser();
+
+ t.runTests(
+ "main.t.html"
+ );
+</script>
+</body>
+</html>
Property changes on: users/adamk/Upgrade/tests/index.html
___________________________________________________________________
Name: svn:executable
+ *
Added: users/adamk/Upgrade/tests/main.t.html
===================================================================
--- users/adamk/Upgrade/tests/main.t.html 2005-08-30 05:11:59 UTC (rev 448)
+++ users/adamk/Upgrade/tests/main.t.html 2005-08-31 19:28:27 UTC (rev 449)
@@ -0,0 +1,20 @@
+<html>
+<head>
+ <script type="text/javascript" src="lib/JSAN.js"></script>
+ <script type="text/javascript">
+ JSAN.errorLevel = "die";
+ JSAN.use("Test.More" );
+ JSAN.use("Upgrade.Array.push" );
+ JSAN.use("Upgrade.Function.apply");
+ </script>
+</head>
+<body>
+<pre id="test"><script type="text/javascript">
+
+plan({ tests: 1 });
+
+pass( "Placeholder test" );
+
+</script></pre>
+</body>
+</html>
\ No newline at end of file
Property changes on: users/adamk/Upgrade/tests/main.t.html
___________________________________________________________________
Name: svn:executable
+ *
Added: users/adamk/dist/Display-0.01.tar.gz
===================================================================
(Binary files differ)
Property changes on: users/adamk/dist/Display-0.01.tar.gz
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ application/octet-stream
Added: users/adamk/dist/Display-0.02.tar.gz
===================================================================
(Binary files differ)
Property changes on: users/adamk/dist/Display-0.02.tar.gz
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ application/octet-stream
Added: users/adamk/dist/Display-0.03.tar.gz
===================================================================
(Binary files differ)
Property changes on: users/adamk/dist/Display-0.03.tar.gz
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ application/octet-stream
Added: users/adamk/dist/Display-0.04.tar.gz
===================================================================
(Binary files differ)
Property changes on: users/adamk/dist/Display-0.04.tar.gz
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ application/octet-stream
Added: users/adamk/dist/Display-0.05.tar.gz
===================================================================
(Binary files differ)
Property changes on: users/adamk/dist/Display-0.05.tar.gz
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ application/octet-stream
Added: users/adamk/dist/Display-0.06.tar.gz
===================================================================
(Binary files differ)
Property changes on: users/adamk/dist/Display-0.06.tar.gz
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ application/octet-stream
Added: users/adamk/dist/Display.Only-0.01.tar.gz
===================================================================
(Binary files differ)
Property changes on: users/adamk/dist/Display.Only-0.01.tar.gz
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ application/octet-stream
Added: users/adamk/dist/Display.Only-0.02.tar.gz
===================================================================
(Binary files differ)
Property changes on: users/adamk/dist/Display.Only-0.02.tar.gz
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ application/octet-stream
Added: users/adamk/dist/Display.Only-0.03.tar.gz
===================================================================
(Binary files differ)
Property changes on: users/adamk/dist/Display.Only-0.03.tar.gz
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ application/octet-stream
Added: users/adamk/dist/Display.Only-0.04.tar.gz
===================================================================
(Binary files differ)
Property changes on: users/adamk/dist/Display.Only-0.04.tar.gz
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ application/octet-stream
Added: users/adamk/dist/Display.Swap-0.01.tar.gz
===================================================================
(Binary files differ)
Property changes on: users/adamk/dist/Display.Swap-0.01.tar.gz
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ application/octet-stream
Added: users/adamk/dist/Display.Swap-0.02.tar.gz
===================================================================
(Binary files differ)
Property changes on: users/adamk/dist/Display.Swap-0.02.tar.gz
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ application/octet-stream
Added: users/adamk/dist/Display.Swap-0.03.tar.gz
===================================================================
(Binary files differ)
Property changes on: users/adamk/dist/Display.Swap-0.03.tar.gz
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ application/octet-stream
Added: users/adamk/dist/Display.Swap-0.05.tar.gz
===================================================================
(Binary files differ)
Property changes on: users/adamk/dist/Display.Swap-0.05.tar.gz
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ application/octet-stream
Added: users/adamk/dist/Display.Swap-0.06.tar.gz
===================================================================
(Binary files differ)
Property changes on: users/adamk/dist/Display.Swap-0.06.tar.gz
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ application/octet-stream
Added: users/adamk/dist/Display.Swap-0.07.tar.gz
===================================================================
(Binary files differ)
Property changes on: users/adamk/dist/Display.Swap-0.07.tar.gz
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ application/octet-stream
Added: users/adamk/dist/Display.Swap-0.08.tar.gz
===================================================================
(Binary files differ)
Property changes on: users/adamk/dist/Display.Swap-0.08.tar.gz
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ application/octet-stream
Added: users/adamk/dist/Display.Swap-0.09.tar.gz
===================================================================
(Binary files differ)
Property changes on: users/adamk/dist/Display.Swap-0.09.tar.gz
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ application/octet-stream
Added: users/adamk/dist/Upgrade-0.01.tar.gz
===================================================================
(Binary files differ)
Property changes on: users/adamk/dist/Upgrade-0.01.tar.gz
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ application/octet-stream
Added: users/adamk/dist/Upgrade-0.02.tar.gz
===================================================================
(Binary files differ)
Property changes on: users/adamk/dist/Upgrade-0.02.tar.gz
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ application/octet-stream
Added: users/adamk/dist/Upgrade-0.03.tar.gz
===================================================================
(Binary files differ)
Property changes on: users/adamk/dist/Upgrade-0.03.tar.gz
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ application/octet-stream
Added: users/adamk/dist/Upgrade-0.04.tar.gz
===================================================================
(Binary files differ)
Property changes on: users/adamk/dist/Upgrade-0.04.tar.gz
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ application/octet-stream
Copied: users/adamk/tools/
build_cpan.pl (from rev 439, users/adamk/tools/
build_perl_package.pl)
Added: users/adamk/tools/
build_jsan.pl
===================================================================
--- users/adamk/tools/
build_jsan.pl 2005-08-30 05:11:59 UTC (rev 448)
+++ users/adamk/tools/
build_jsan.pl 2005-08-31 19:28:27 UTC (rev 449)
@@ -0,0 +1,398 @@
+#!/usr/bin/perl
+
+# Tool for helping to build JSAN modules
+
+use strict;
+use FindBin ();
+use File::Spec::Functions ':ALL';
+use File::Flat ();
+use File::Find::Rule ();
+use Regexp::Optimizer ();
+use YAML ();
+use constant 'FFR' => 'File::Find::Rule';
+
+# Set verbose mose for the manifest generator
+use ExtUtils::Manifest ();
+BEGIN {
+ $ExtUtils::Manifest::Verbose = 0;
+}
+
+my $svnroot = '
https://svn.openjsan.org:81/users/adamk';
+
+
+
+
+
+#####################################################################
+# Configuration Phase
+
+our $DEBUG = '';
+our $CONFIRM = '';
+our $COMMIT = '';
+
+# Check the arguments and set settings
+use Getopt::Long;
+GetOptions(
+ 'debug' => \$DEBUG,
+ 'confirm' => \$CONFIRM,
+ 'commit' => \$COMMIT,
+ );
+debug( 'Debug mode enabled' );
+debug( 'CVS commit mode enabled' ) if $COMMIT;
+debug( 'Confirmation mode enabled', 1 ) if $CONFIRM;
+
+
+
+
+
+#####################################################################
+# Environment Phase
+
+# Establish the base directories
+chdir $FindBin::Bin;
+my $tools_dir = $FindBin::Bin or die "Error finding tools dir";
+my $root_dir = rel2abd( catdir( $tools_dir, updir() ) ) or die "Error finding base path";
+my $dist_dir = catdir( $root_dir, 'dist' ) or die "Error finding dist dir";
+-d $dist_dir or die "tardist directory does not appear to exist";
+
+# Check the export directory
+my $export_dir = catdir( $tools_dir, 'export' ) or die "Error creating export dir";
+if ( -d $export_dir ) {
+ debug("About to remove old export directory", 1);
+ File::Remove::remove( \1, $export_dir );
+ if ( -d $export_dir ) {
+ die "Failed to remove export directory";
+ }
+ debug("Removed old export directory");
+}
+unless ( -d $export_dir ) {
+ debug("Creating export directory '$export_dir'");
+ mkdir( $export_dir ) or die "Error creating export directory";
+}
+my $export_location = HTML::Location->new( $export_dir, $svnroot )
+ or die "Failed to create svn export location";
+
+# Find various needed programs
+my $svn = which('svn' );
+my $pod2text = which('pod2text');
+my $make = which('make' );
+my $sudo = which('sudo' );
+my $svn = which('svn' );
+my $touch = which('touch' );
+my $tar = which('tar' );
+
+# Get the name of the package to build
+my $dist = shift @ARGV;
+unless ( $dist ) {
+ die "You did not specify a distribution name";
+}
+if ( $dist =~ /^(?:dist|\.)$/ ) {
+ die "$dist... $dist? $dist!!! YOU IDIOT!!!";
+}
+debug( "Using distribution name '$dist'" );
+
+# Does the distribution directory exist
+my $dist_dir = catdir( $root_dir, $dist );
+unless ( -d $dist_dir ) {
+ die "Distribution directory $dist_dir does not exist";
+}
+
+# Export the package
+debug( "About to export JSAN perl distribution '$dist'", 1);
+svn_export( $dist );
+debug( "dist exported" );
+$dist_dir = catdir( $export_dir, $dist );
+unless ( -d $dist_dir ) {
+ die "Dist directory '$dist_dir' missing after export";
+}
+if ( -d catdir( $dist_dir, 'trunk' ) ) {
+ debug("Distribution is a SVN root, using trunk");
+ $dist_dir = catdir( $dist_dir, 'trunk' );
+}
+
+
+
+
+
+#####################################################################
+# Preperation Phase
+
+# Is there a lib subdirectory
+my $lib_dir = catdir( $export_dir, 'lib' );
+-d $lib_dir or die "Package lib directory '$lib_dir' does not seem to exist";
+debug( "Lib directory exists" );
+
+# Does a test directory exist
+my $test_dir = catdir( $export_dir, 'tests' );
+-d $test_dir or die "Package test directory '$test_dir' does not seem to exist";
+debug( "Tests directory exists" );
+
+# Does a samples directory exist?
+my $demo_dir = catdir( $export_dir, 'demo' );
+unless ( -d $demo_dir ) {
+ $demo_dir = '';
+}
+debug( $demo_dir ? "Found a demo directory" : "No demo directory found" );
+
+# Load the META.yml
+my $META_file = catfile( $export_dir, 'META.yml' );
+-f $META_file or die "META.yml file does not exist at '$META_file'";
+my ($META_yml) = YAML::LoadFile($META_file);
+my $META_changed = '';
+
+# Check or auto-complete the name
+if ( $META_yml->{name} ) {
+ unless ( $META_yml->{name} eq $dist ) {
+ die "Name in META.yml '$META_yml->{name}' does not match directory '$dist'";
+ }
+ debug( "Dist name in META.yml matches expected" );
+} else {
+ $META_yml->{name} = $dist;
+ $META_changed = 1;
+ debug( "Auto-completed dist name in META.yml" );
+}
+
+# Auto-complete the author
+if ( $META_yml->{author} ) {
+ debug( "Found author in META.yml" );
+} else {
+ $META_yml->{author} = [ 'Adam Kennedy <
js...@ali.as>' ];
+ $META_changed = 1;
+ debug( "Auto-completed author in META.yml" );
+}
+
+# Auto-complete the generated-by
+if ( $META_yml->{generated_by} ) {
+ debug( "Found generated_by in META.yml" );
+} else {
+ $META_yml->{generated_by} = 'Ali.as JSAN Packager';
+ $META_changed = 1;
+ debug( "Auto-completed generated_by name in META.yml" );
+}
+
+# Auto-complete the license
+if ( $META_yml->{license} ) {
+ debug( "Found license in META.yml" );
+} else {
+ $META_yml->{license} = 'perl';
+ $META_changed = 1;
+ debug( "Auto-completed license name in META.yml" );
+}
+
+# Get the version
+my $version = $META_yml->{version} or die "META.yml does not provide a version";
+debug( "Found version '$version' in META.yml" );
+
+# What will the tar file be called
+my $tar_dir = $dist . '-' . $version;
+my $tar_file = $dist . '-' . $version . '.tar.gz';
+debug( "Tar file will be named '$tar_file'" );
+
+# Get ready
+my $pkg_manifest = catfile( $export_dir, 'MANIFEST' );
+my $pkg_manifest_skip = catfile( $export_dir, 'MANIFEST.SKIP' );
+my $pkg_manifest_add = catfile( $export_dir, 'MANIFEST.SKIP.add' );
+my $pkg_license = catfile( $export_dir, 'LICENSE' );
+my $pkg_readme = catfile( $export_dir, 'README' );
+my $common = catdir ( $tools_dir, 'common' );
+my $common_skip = catfile( $common, 'MANIFEST.SKIP' );
+my $common_license_perl = catfile( $common, 'LICENSE.PERL' );
+my $pkg_tar_dir = catdir ( $export_dir, $tar_dir );
+my $pkg_tar_file = catfile( $export_dir, $tar_file );
+my $dist_tar = catfile( $dist_dir, $tar_file );
+
+# Check certain files exist
+-f $common_skip or die "Common MANIFEST.SKIP file does not exist at '$common_skip'";
+-f $common_license_perl or die "Common LICENSE file for perl does not exist at '$common_license_perl'";
+
+# Copy or merge in the common MANIFEST.SKIP file
+if ( -f $pkg_manifest_add ) {
+ debug( "About to merge MANIFEST.SKIP files", 1 );
+ if ( system( "cat $common_skip $pkg_manifest_add > $pkg_manifest_skip" ) ) {
+ die "Failed to merge common MANIFEST.SKIP with extra one";
+ }
+ debug( "Merged MANIFEST.SKIP files" );
+} else {
+ debug( "About to copy in MANIFEST.SKIP file", 1 );
+ File::Flat->copy(
+ $common_skip => $pkg_manifest_skip,
+ ) or die "Failed to copy MANIFEST.SKIP into build directory";
+ debug( "Copied in MANIFEST.SKIP file" );
+}
+
+# Load the manifest.skip file as a multi-regex object
+my $MANIFEST_SKIP = load_merged_regexp( $pkg_manifest_skip );
+
+# Copy in the default liscence if needed
+if ( $META_yml->{license} eq 'perl' and ! -f $pkg_license ) {
+ debug( "About to copy in 'perl' LICENSE file", 1 );
+ File::Flat->copy(
+ $common_license_perl => $pkg_license,
+ ) or die "Failed to copy LICENSE into build directory";
+ debug( "Copied in LICENSE file" );
+}
+
+debug( "Changing to packaging directory to execute further system calls" );
+chdir $export_dir;
+
+# Save the changed META.yml file if needed
+if ( $META_changed ) {
+ debug( "Saving modified META.yml", 1 );
+ YAML::DumpFile($META_file, $META_yml);
+ print YAML::Dump( $META_yml ) . "\n";
+ debug( "Saved modified META.yml" );
+}
+
+### CREATE THE DIST TARBALL
+
+# Find all the files in the packaging dir that don't match the SKIP criteria
+my @manifest = grep { $_ !~ $MANIFEST_SKIP } FFR->file->relative->in( $export_dir );
+
+# Write the manifest
+unshift @manifest, 'MANIFEST';
+@manifest = sort @manifest;
+debug( "Writing MANIFEST", 1 );
+my $manifest_content = join '', map { "$_\n" } @manifest;
+File::Flat->write( $pkg_manifest, $manifest_content )
+ or die "Failed to write MANIFEST file";
+debug( "Wrote MANIFEST" );
+
+# Move all the files to the package dir
+debug( "Copying MANIFEST files to dist dir", 1 );
+foreach my $file ( @manifest ) {
+ debug( "Copying $file" );
+ my $from = catfile( $export_dir, $file );
+ my $to = catfile( $pkg_tar_dir, $file );
+ File::Flat->copy( $from, $to )
+ or die "Failed to copy '$from' to '$to'";
+}
+debug( "All files copied to dist dir" );
+
+# Create the tarball
+debug( "Creating tarball", 1 );
+system( "tar -zcvf $tar_file $tar_dir" );
+unless ( -f $pkg_tar_file ) {
+ die "Failed to create tarball '$pkg_tar_file'";
+}
+debug( "Tarball '$tar_file' created" );
+
+# Move the tar to the dist directory
+debug( "About to move the built tar file to the dist directory", 1 );
+if ( system( "mv $pkg_tar_file $dist_tar" ) ) {
+ die "Error moving tarball to dist dir";
+}
+debug( "Tarball moved to final location" );
+
+
+
+
+
+#####################################################################
+# Dispatch Phase
+
+if ( $COMMIT ) {
+ # Give another chance to stop if the tarball previously existed
+ # debug( 'Tarball previously existed, are you sure you want to commit?', 1 );
+
+ # Change to the tarball directory
+ debug( 'About to add tarball to SVN', 1 );
+ chdir $dist_dir or die "Failed to chdir to tardist dir";
+ shell( "$svn add $tar_file" )
+ or debug( "Added tarball file '$tar_file' to SVN" );
+ shell( "$svn commit -m '[bot] Adding upload file for $META_yml->{name} $version' $tar_file" )
+ or die "Failed to commit tarball '$tar_file' to SVN";
+ debug( "Committed tarball file '$tar_file' to SVN" );
+}
+
+END { # Cleaning up
+ if ( $tools_dir and $export_dir and -d $export_dir ) {
+ chdir $tools_dir or die "Failed to change to tools dir to remove export dir";
+ debug("About to remove old export directory", 1);
+ File::Remove::remove( \1, $export_dir );
+ if ( -d $export_dir ) {
+ die "Failed to remove export directory";
+ }
+ debug("Removed old export directory");
+ }
+}
+
+print "Done. JSAN upload file '$tar_file' created in dist directory\n";
+
+exit(0);
+
+
+
+
+
+###############################################################################
+# Support Functions
+
+# Debugging version of a system call, which prints out what it does
+sub system {
+ print join ' ', $_[0];
+ CORE::system( @_ );
+}
+
+# Is a particular program installed.
+sub which {
+ my $program = shift;
+ my ($location) = (`which $program`);
+ chomp $location;
+ unless ( $location ) {
+ die "Can't find the required program '$program'. Please install it";
+ }
+ unless ( -r $location and -x $location ) {
+ die "The required program '$program' is installed, but I do not have permission to read or execute it";
+ }
+ debug( "$program is available at $location" );
+
+ $location;
+}
+
+# Print a debug message (if debugging enabled)
+sub debug {
+ return 1 unless $DEBUG;
+
+ my $message = shift;
+ my $need_confirmation = shift;
+
+ print "DEBUG: $message\n";
+ return 1 unless $CONFIRM;
+ return 1 unless $need_confirmation;
+
+ print "Continue? (Y/n)";
+ my $response = <STDIN>;
+ chomp( $response );
+ $response = lc $response;
+ if ( $response eq '' or $response eq 'y' ) {
+ return 1;
+ } else {
+ print "Program execution cancelled\n";
+ exit(1);
+ }
+}
+
+# Export the current head of a dist from SVN
+sub svn_export {
+ my $path = shift or die "No directory specified";
+
+ # Go to the base export directory
+ chdir $export_dir or die "Failed to chdir to '$export_dir': $!";
+
+ my $location = $export_location->catdir( $path );
+ my $uri = $location->uri;
+ shell( "$svn export $uri" );
+
+ 1;
+}
+
+sub load_merged_regexp {
+ my $file = shift;
+ my $lines = File::Flat->read( $file )
+ or die "Failed to read $file\n";
+ @$lines = grep { length $_ } @$lines;
+
+ # Convert to regexps
+ Regexp::Optimizer->new->list2re( @$lines )
+ or die "Failed to create Regexp from MANIFEST.SKIP lines";
+}
Property changes on: users/adamk/tools/
build_jsan.pl
___________________________________________________________________
Name: svn:executable
+ *
Deleted: users/adamk/tools/
build_perl_package.pl
===================================================================
--- users/adamk/tools/
build_perl_package.pl 2005-08-30 05:11:59 UTC (rev 448)
+++ users/adamk/tools/
build_perl_package.pl 2005-08-31 19:28:27 UTC (rev 449)
@@ -1,416 +0,0 @@
-#!/usr/bin/perl
-
-# Package Build Script for the minimalist-config style modules of adamk's in
-# the JSAN subversion repository.
-
-use 5.006;
-use strict;
-use FindBin ();
-use File::Spec ();
-use File::Spec::Functions qw{
- curdir updir
- catdir catfile
- };
-use File::Flat ();
-use File::Remove ();
-use Getopt::Long ();
-use Class::Handle ();
-use ExtUtils::Manifest ();
-use File::Find::Rule ();
-use HTML::Location ();
-use constant FFR => 'File::Find::Rule';
-
-my $svnroot = '
https://svn.openjsan.org:81/perl';
-
-
-
-
-
-#####################################################################
-# Configuration Phase
-
-our $DEBUG = '';
-our $CONFIRM = '';
-our $INSTALL = '';
-our $COMMIT = '';
-
-# Set verbose mode for the manifest generator
-$ExtUtils::Manifest::Verbose = 0;
-
-# Arg the arguments and set the settings
-Getopt::Long::GetOptions(
- 'debug' => \$DEBUG,
- 'confirm' => \$CONFIRM,
- 'install' => \$INSTALL,
- 'commit' => \$COMMIT,
- );
-debug( 'Debug mode enabled' ) if $DEBUG;
-debug( 'Local install mode enabled' ) if $INSTALL;
-debug( 'SVN commit mode enabled' ) if $COMMIT;
-debug( 'Confirmation mode enabled', 1 ) if $CONFIRM;
-
-
-
-
-
-#####################################################################
-# Environment Phase
-
-# Establish the base directories
-chdir $FindBin::Bin;
-my $tools_dir = $FindBin::Bin or die "Error finding tools dir";
-my $root_dir = catdir( $tools_dir, updir(), updir, updir() ) or die "Error finding base path";
-my $tardist_dir = catdir( $root_dir, 'perl', 'dist' ) or die "Error finding dist dir";
--d $tardist_dir or die "tardist directory does not appear to exist";
-
-# Check the export directory
-my $export_dir = catdir( $tools_dir, 'export' ) or die "Error creating export dir";
-if ( -d $export_dir ) {
- debug("About to remove old export directory", 1);
- File::Remove::remove( \1, $export_dir );
- if ( -d $export_dir ) {
- die "Failed to remove export directory";
- }
- debug("Removed old export directory");
-}
-
-unless ( -d $export_dir ) {
- debug("Creating export directory '$export_dir'");
- mkdir( $export_dir ) or die "Error creating export directory";
-}
-my $export_location = HTML::Location->new( $export_dir, $svnroot )
- or die "Failed to create svn export location";
-
-# Find various needed programs
-my $cat = which('cat' );
-my $pod2text = which('pod2text');
-my $make = which('make' );
-my $sudo = which('sudo' );
-my $svn = which('svn' );
-my $touch = which('touch' );
-
-# Get the name of the package to build
-my $dist = shift @ARGV;
-unless ( $dist ) {
- die "You did not specify a distribution name";
-}
-if ( $dist =~ /^(?:dist|\.)$/ ) {
- die "$dist... $dist? $dist!!! YOU IDIOT!!!";
-}
-debug( "Using distribution name '$dist'" );
-
-# Does the distribution directory exist
-my $dist_dir = catdir( $root_dir, 'perl', $dist );
-unless ( -d $dist_dir ) {
- die "Distribution directory $dist_dir does not exist";
-}
-
-# Export the package
-debug( "About to export JSAN perl distribution '$dist'", 1);
-svn_export( $dist );
-debug( "dist exported" );
-$dist_dir = catdir( $export_dir, $dist );
-unless ( -d $dist_dir ) {
- die "Dist directory '$dist_dir' missing after export";
-}
-if ( -d catdir( $dist_dir, 'trunk' ) ) {
- debug("Distribution is a SVN root, using trunk");
- $dist_dir = catdir( $dist_dir, 'trunk' );
-}
-
-
-
-
-
-#####################################################################
-# Preparation Phase
-
-# Get the name of the primary module
-my $module = $dist;
-$module =~ s/-/::/g;
-my $module_subpath = catdir( split /::/, $module );
-
-# Get the main module file name
-my $module_file = catfile( $dist_dir, 'lib', $module_subpath ) . '.pm';
-die "Module file '$module_file' does not to exist" unless -f $module_file;
-debug( "Module file exists" );
-
-# Use make maker to get the version
-use ExtUtils::MakeMaker ();
-my $dist_version = MM->parse_version( $module_file );
-if ( ! defined $dist_version or $dist_version eq 'undef' ) {
- die "Module is missing version number";
-}
-debug( "Got version number '$dist_version'", 1 );
-
-# What will the tar file be called
-my $dist_file = $dist . '-' . $dist_version . '.tar.gz';
-debug( "Tar file will be named '$dist_file'" );
-
-# Create the remaining paths we are going to need
-my $shared_dir = catdir ( $tools_dir, 'shared' );
-my $shared_manifest_skip = catfile( $shared_dir, 'MANIFEST.SKIP' );
-my $shared_license = catfile( $shared_dir, 'LICENSE' );
-my $shared_build_pl = catfile( $shared_dir, 'Build.PL' );
-my $shared_ppport = catfile( $shared_dir, 'ppport.h' );
-my $shared_99pod = catfile( $shared_dir, '99_pod.t' );
-my $dist_manifest_skip = catfile( $dist_dir, 'MANIFEST.SKIP' );
-my $dist_manifest_add = catfile( $dist_dir, 'MANIFEST.SKIP.add' );
-my $dist_license = catfile( $dist_dir, 'LICENSE' );
-my $dist_build_pl = catfile( $dist_dir, 'Build.PL' );
-my $dist_ppport = catfile( $dist_dir, 'ppport.h' );
-my $dist_99pod = catfile( $dist_dir, 't', '99_pod.t' );
-my $dist_makefile_pl = catfile( $dist_dir, 'Makefile.PL' );
-my $dist_changes = catfile( $dist_dir, 'Changes' );
-my $dist_readme = catfile( $dist_dir, 'README' );
-my $dist_t_data = catfile( $dist_dir, 't.data' );
-my $dist_tardist = catfile( $dist_dir, $dist_file );
-my $tardist_file = catfile( $tardist_dir, $dist_file );
-
-# Create the searches we are going to need
-my $find_ppport = FFR->or(
- FFR->directory->name('.svn')->prune->discard,
- FFR->new,
- )->file->name('*.xs')->grep(qr/\bppport\.h\b/);
-
-my $find_files = FFR->or(
- FFR->directory->name('.svn')->prune->discard,
- FFR->new,
- )->file;
-
-
-
-
-
-#####################################################################
-# Assembly Phase
-
-# Copy or merge in the common MANIFEST.SKIP file
-if ( -f $dist_manifest_add ) {
- debug( "About to merge MANIFEST.SKIP with MANIFEST.SKIP.add", 1 );
- shell( "$cat $shared_manifest_skip $dist_manifest_add > $dist_manifest_skip" )
- or die "Failed to merge common MANIFEST.SKIP with extra one";
- debug( "Merged MANIFEST.SKIP files" );
-} else {
- debug( "About to copy in MANIFEST.SKIP file", 1 );
- File::Flat->copy( $shared_manifest_skip, $dist_manifest_skip )
- or die "Failed to copy MANIFEST.SKIP into build directory";
- debug( "Copied in MANIFEST.SKIP file" );
-}
-
-# Copy in the default license if needed
-unless ( -f $dist_license ) {
- debug( "About to copy in LICENSE file", 1 );
- File::Flat->copy( $shared_license, $dist_license )
- or die "Failed to copy in LICENSE file";
- debug( "Copied in LICENSE file" );
-}
-
-# Copy in the Build.PL file if needed
-debug( "About to check Makefile.PL for the use of Module::Install", 1 );
-my $makefile_content = File::Flat->slurp( $dist_makefile_pl )
- or die "Failed to read Makefile.PL";
-if ( $$makefile_content =~ /\buse inc::Module::Install\b/ ) {
- debug( "Makefile.PL uses Module::Install" );
-# debug( "About to copy in standard Build.PL", 1 );
-# File::Flat->copy( $shared_build_pl, $dist_build_pl )
-# or die "Failed to copy Build.PL into build directory";
-# debug( "Copied in Build.PL file" );
-}
-
-# If there are any XS that need ppport.h, provide it for them
-if ( $find_ppport->in( $dist_dir ) ) {
- debug( "Found one or more XS files that need ppport.h" );
- debug( "About to copy in standard ppport.h", 1 );
- File::Flat->copy( $shared_ppport, $dist_ppport )
- or die "Failed to copy ppport.h into build directory";
- debug( "Copied in ppport.h" );
-}
-
-# Copy in the pod test script unless they have one
-unless ( -f $dist_99pod ) {
- debug( "About to copy in 99_pod.t file", 1 );
- File::Flat->copy( $shared_99pod, $dist_99pod )
- or die "Failed to copy 99_pod.t into build directory";
- debug( "Copied in 99_pod.t file" );
-}
-
-# Create the README file
-debug( "About to create the README file", 1 );
-unless ( -e $dist_readme ) {
- shell( "$cat $module_file | pod2text > $dist_readme" )
- or die "Error while generating README file '$dist_readme'";
-}
-debug( "Created README file" );
-
-# Check that any t.data dir is no-included
-if ( -d $dist_t_data ) {
- unless ( File::Slurp::read_file( $dist_makefile_pl ) =~ /no_index/ ) {
- die "Makefile.PL is probably missing a no_index statement for the t.data directory";
- }
-}
-
-# Touch all files to correct any potential time skews
-debug( "About to touch all files to counter potential time skew", 1 );
-foreach my $file ( $find_files->in($dist_dir) ) {
- shell( "$touch $file" ) or die "Error while touching $file to counter potential skew";
-}
-debug( "All files touched" );
-
-
-
-
-
-#####################################################################
-# Build Phase
-
-# Change to the dist directory
-debug( "Changing to packaging directory to execute further system calls" );
-chdir $dist_dir or die "Failed to change to dist dir";
-
-debug( "About to create the make file for test and build", 1 );
-shell( 'perl Makefile.PL' ) or die 'Error while creating Makefile';
-debug( "Created make file" );
-
-# Build the MANIFEST
-debug( "About to create the MANIFEST file", 1 );
-shell( "$make manifest" ) or die 'Error while creating the MANIFEST';
-debug( "Created the MANIFEST file" );
-
-# Test the distribution
-debug( "About to run 'make disttest' ( distribution test )", 1 );
-shell( "$make disttest" ) or die 'disttest failed';
-debug( "disttest completed" );
-
-# Build the tardist
-debug( "About run 'make tardist' ( tarred distribution )", 1 );
-shell( "$make tardist" ) or die 'Error making distribution tarball';
-debug( "'make tardist' completed" );
-if ( -e $dist_tardist ) {
- debug( "Creation of $dist_file confirmed" );
-} else {
- debug( "Creation of $dist_file failed" );
-}
-
-# Move the tar to the dist directory
-debug( "About to move the built tar file to the dist directory", 1 );
-File::Flat->move( $dist_tardist, $tardist_file )
- or die "Error moving tarball to dist dir";
-debug( "Tarball moved to final location" );
-
-
-
-
-
-#####################################################################
-# Dispatch Phase
-
-if ( $INSTALL ) {
- debug( "About to run 'make'", 1 );
- shell( "$make" ) or die "'make' failed";
- debug( "'make' completed" );
-
- local $DEBUG = 1;
- debug( "About to run 'sudo make install'", 1 );
- shell( "$sudo $make install" )
- ? debug("'sudo make install' completed. Module is installed.")
- : debug("'sudo make install' failed. Module not installed. $!");
-}
-
-if ( $COMMIT ) {
- # Give another chance to stop if the tarball previously existed
- debug( 'Tarball previously existed, are you sure you want to commit?', 1 );
-
- # Change to the tarball directory
- debug( 'About to add tarball to SVN', 1 );
- chdir $tardist_dir or die "Failed to chdir to tardist dir";
- shell( "$svn add $dist_file" )
- or debug( "Added tarball file '$dist_file' to SVN" );
- shell( "$svn commit -m '[bot] Adding upload file for $module $dist_version' $dist_file" )
- or die "Failed to commit tarball '$dist_file' to SVN";
- debug( "Committed tarball file '$dist_file' to SVN" );
-}
-
-END { # Cleaning up
- if ( $tools_dir and $export_dir and -d $export_dir ) {
- chdir $tools_dir or die "Failed to change to tools dir to remove export dir";
- debug("About to remove old export directory", 1);
- File::Remove::remove( \1, $export_dir );
- if ( -d $export_dir ) {
- die "Failed to remove export directory";
- }
- debug("Removed old export directory");
- }
-}
-
-print "Done. CPAN upload file '$dist_file' created in dist directory\n";
-
-exit(0);
-
-
-
-
-
-#####################################################################
-# Support Methods
-
-sub debug {
- return 1 unless $DEBUG;
-
- my $message = shift;
- my $needconfirmation = shift;
-
- print "DEBUG: $message\n";
- return 1 unless $CONFIRM;
- return 1 unless $needconfirmation;
-
- print "Continue? (Y/n)";
- my $response = <STDIN>;
- chomp( $response );
- $response = lc $response;
- if ( $response eq '' or $response eq 'y' ) {
- return 1;
- } else {
- print "Program execution cancelled\n";
- exit(1);
- }
-}
-
-# Is a particular program installed.
-sub which {
- my $program = shift;
- my ($location) = (`which $program`);
- chomp $location;
- unless ( $location ) {
- die "Can't find the required program '$program'. Please install it";
- }
- unless ( -r $location and -x $location ) {
- die "The required program '$program' is installed, but I do not have permission to read or execute it";
- }
- debug( "$program is available at $location" );
-
- $location;
-}
-
-# Deletes and re-gets from SVN a directory, effectively "cleaning" it.
-sub svn_export {
- my $path = shift or die "No directory specified";
-
- # Go to the base export directory
- chdir $export_dir or die "Failed to chdir to '$export_dir': $!";
-
- my $location = $export_location->catdir( $path );
- my $uri = $location->uri;
- shell( "$svn export $uri" );
-
- 1;
-}
-
-sub shell {
- my $command = shift;
- print "> $command\n" if $DEBUG;
- my $rv = system( $command );
- ! $rv;
-}
-
-1;
Added: users/adamk/tools/common/LICENSE.PERL
===================================================================
--- users/adamk/tools/common/LICENSE.PERL 2005-08-30 05:11:59 UTC (rev 448)
+++ users/adamk/tools/common/LICENSE.PERL 2005-08-31 19:28:27 UTC (rev 449)
@@ -0,0 +1,377 @@
+Terms of Perl itself
+
+a) the GNU General Public License as published by the Free
+ Software Foundation; either version 1, or (at your option) any
+ later version, or
+b) the "Artistic License"
+
+----------------------------------------------------------------------------
+
+The General Public License (GPL)
+Version 2, June 1991
+
+Copyright (C) 1989, 1991 Free Software Foundation, Inc. 675 Mass Ave,
+Cambridge, MA 02139, USA. Everyone is permitted to copy and distribute
+verbatim copies of this license document, but changing it is not allowed.
+
+Preamble
+
+The licenses for most software are designed to take away your freedom to share
+and change it. By contrast, the GNU General Public License is intended to
+guarantee your freedom to share and change free software--to make sure the
+software is free for all its users. This General Public License applies to most of
+the Free Software Foundation's software and to any other program whose
+authors commit to using it. (Some other Free Software Foundation software is
+covered by the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+When we speak of free software, we are referring to freedom, not price. Our
+General Public Licenses are designed to make sure that you have the freedom
+to distribute copies of free software (and charge for this service if you wish), that
+you receive source code or can get it if you want it, that you can change the
+software or use pieces of it in new free programs; and that you know you can do
+these things.
+
+To protect your rights, we need to make restrictions that forbid anyone to deny
+you these rights or to ask you to surrender the rights. These restrictions
+translate to certain responsibilities for you if you distribute copies of the
+software, or if you modify it.
+
+For example, if you distribute copies of such a program, whether gratis or for a
+fee, you must give the recipients all the rights that you have. You must make
+sure that they, too, receive or can get the source code. And you must show
+them these terms so they know their rights.
+
+We protect your rights with two steps: (1) copyright the software, and (2) offer
+you this license which gives you legal permission to copy, distribute and/or
+modify the software.
+
+Also, for each author's protection and ours, we want to make certain that
+everyone understands that there is no warranty for this free software. If the
+software is modified by someone else and passed on, we want its recipients to
+know that what they have is not the original, so that any problems introduced by
+others will not reflect on the original authors' reputations.
+
+Finally, any free program is threatened constantly by software patents. We wish
+to avoid the danger that redistributors of a free program will individually obtain
+patent licenses, in effect making the program proprietary. To prevent this, we
+have made it clear that any patent must be licensed for everyone's free use or
+not licensed at all.
+
+The precise terms and conditions for copying, distribution and modification
+follow.
+
+GNU GENERAL PUBLIC LICENSE
+TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND
+MODIFICATION
+
+0. This License applies to any program or other work which contains a notice
+placed by the copyright holder saying it may be distributed under the terms of
+this General Public License. The "Program", below, refers to any such program
+or work, and a "work based on the Program" means either the Program or any
+derivative work under copyright law: that is to say, a work containing the
+Program or a portion of it, either verbatim or with modifications and/or translated
+into another language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not covered by
+this License; they are outside its scope. The act of running the Program is not
+restricted, and the output from the Program is covered only if its contents
+constitute a work based on the Program (independent of having been made by
+running the Program). Whether that is true depends on what the Program does.
+
+1. You may copy and distribute verbatim copies of the Program's source code as
+you receive it, in any medium, provided that you conspicuously and appropriately
+publish on each copy an appropriate copyright notice and disclaimer of warranty;
+keep intact all the notices that refer to this License and to the absence of any
+warranty; and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and you may at
+your option offer warranty protection in exchange for a fee.
+
+2. You may modify your copy or copies of the Program or any portion of it, thus
+forming a work based on the Program, and copy and distribute such
+modifications or work under the terms of Section 1 above, provided that you also
+meet all of these conditions:
+
+a) You must cause the modified files to carry prominent notices stating that you
+changed the files and the date of any change.
+
+b) You must cause any work that you distribute or publish, that in whole or in
+part contains or is derived from the Program or any part thereof, to be licensed
+as a whole at no charge to all third parties under the terms of this License.
+
+c) If the modified program normally reads commands interactively when run, you
+must cause it, when started running for such interactive use in the most ordinary
+way, to print or display an announcement including an appropriate copyright
+notice and a notice that there is no warranty (or else, saying that you provide a
+warranty) and that users may redistribute the program under these conditions,
+and telling the user how to view a copy of this License. (Exception: if the
+Program itself is interactive but does not normally print such an announcement,
+your work based on the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If identifiable
+sections of that work are not derived from the Program, and can be reasonably
+considered independent and separate works in themselves, then this License,
+and its terms, do not apply to those sections when you distribute them as
+separate works. But when you distribute the same sections as part of a whole
+which is a work based on the Program, the distribution of the whole must be on
+the terms of this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest your rights to
+work written entirely by you; rather, the intent is to exercise the right to control
+the distribution of derivative or collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program with the
+Program (or with a work based on the Program) on a volume of a storage or
+distribution medium does not bring the other work under the scope of this
+License.
+
+3. You may copy and distribute the Program (or a work based on it, under
+Section 2) in object code or executable form under the terms of Sections 1 and 2
+above provided that you also do one of the following:
+
+a) Accompany it with the complete corresponding machine-readable source
+code, which must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange; or,
+
+b) Accompany it with a written offer, valid for at least three years, to give any
+third party, for a charge no more than your cost of physically performing source
+distribution, a complete machine-readable copy of the corresponding source
+code, to be distributed under the terms of Sections 1 and 2 above on a medium
+customarily used for software interchange; or,
+
+c) Accompany it with the information you received as to the offer to distribute
+corresponding source code. (This alternative is allowed only for noncommercial
+distribution and only if you received the program in object code or executable
+form with such an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for making
+modifications to it. For an executable work, complete source code means all the
+source code for all modules it contains, plus any associated interface definition
+files, plus the scripts used to control compilation and installation of the
+executable. However, as a special exception, the source code distributed need
+not include anything that is normally distributed (in either source or binary form)
+with the major components (compiler, kernel, and so on) of the operating system
+on which the executable runs, unless that component itself accompanies the
+executable.
+
+If distribution of executable or object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the source
+code from the same place counts as distribution of the source code, even though
+third parties are not compelled to copy the source along with the object code.
+
+4. You may not copy, modify, sublicense, or distribute the Program except as
+expressly provided under this License. Any attempt otherwise to copy, modify,
+sublicense or distribute the Program is void, and will automatically terminate
+your rights under this License. However, parties who have received copies, or
+rights, from you under this License will not have their licenses terminated so long
+as such parties remain in full compliance.
+
+5. You are not required to accept this License, since you have not signed it.
+However, nothing else grants you permission to modify or distribute the Program
+or its derivative works. These actions are prohibited by law if you do not accept
+this License. Therefore, by modifying or distributing the Program (or any work
+based on the Program), you indicate your acceptance of this License to do so,
+and all its terms and conditions for copying, distributing or modifying the
+Program or works based on it.
+
+6. Each time you redistribute the Program (or any work based on the Program),
+the recipient automatically receives a license from the original licensor to copy,
+distribute or modify the Program subject to these terms and conditions. You
+may not impose any further restrictions on the recipients' exercise of the rights
+granted herein. You are not responsible for enforcing compliance by third parties
+to this License.
+
+7. If, as a consequence of a court judgment or allegation of patent infringement
+or for any other reason (not limited to patent issues), conditions are imposed on
+you (whether by court order, agreement or otherwise) that contradict the
+conditions of this License, they do not excuse you from the conditions of this
+License. If you cannot distribute so as to satisfy simultaneously your obligations
+under this License and any other pertinent obligations, then as a consequence
+you may not distribute the Program at all. For example, if a patent license would
+not permit royalty-free redistribution of the Program by all those who receive
+copies directly or indirectly through you, then the only way you could satisfy
+both it and this License would be to refrain entirely from distribution of the
+Program.
+
+If any portion of this section is held invalid or unenforceable under any particular
+circumstance, the balance of the section is intended to apply and the section as
+a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any patents or other
+property right claims or to contest validity of any such claims; this section has
+the sole purpose of protecting the integrity of the free software distribution
+system, which is implemented by public license practices. Many people have
+made generous contributions to the wide range of software distributed through
+that system in reliance on consistent application of that system; it is up to the
+author/donor to decide if he or she is willing to distribute software through any
+other system and a licensee cannot impose that choice.
+
+This section is intended to make thoroughly clear what is believed to be a
+consequence of the rest of this License.
+
+8. If the distribution and/or use of the Program is restricted in certain countries
+either by patents or by copyrighted interfaces, the original copyright holder who
+places the Program under this License may add an explicit geographical
+distribution limitation excluding those countries, so that distribution is permitted
+only in or among countries not thus excluded. In such case, this License
+incorporates the limitation as if written in the body of this License.
+
+9. The Free Software Foundation may publish revised and/or new versions of the
+General Public License from time to time. Such new versions will be similar in
+spirit to the present version, but may differ in detail to address new problems or
+concerns.
+
+Each version is given a distinguishing version number. If the Program specifies a
+version number of this License which applies to it and "any later version", you
+have the option of following the terms and conditions either of that version or of
+any later version published by the Free Software Foundation. If the Program does
+not specify a version number of this License, you may choose any version ever
+published by the Free Software Foundation.
+
+10. If you wish to incorporate parts of the Program into other free programs
+whose distribution conditions are different, write to the author to ask for
+permission. For software which is copyrighted by the Free Software Foundation,
+write to the Free Software Foundation; we sometimes make exceptions for this.
+Our decision will be guided by the two goals of preserving the free status of all
+derivatives of our free software and of promoting the sharing and reuse of
+software generally.
+
+NO WARRANTY
+
+11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS
+NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE
+COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM
+"AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR
+IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE
+ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE,
+YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR
+CORRECTION.
+
+12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED
+TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY
+WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS
+PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES
+ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM
+(INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY
+OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS
+BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+END OF TERMS AND CONDITIONS
+
+
+----------------------------------------------------------------------------
+
+The Artistic License
+
+Preamble
+
+The intent of this document is to state the conditions under which a Package
+may be copied, such that the Copyright Holder maintains some semblance of
+artistic control over the development of the package, while giving the users of the
+package the right to use and distribute the Package in a more-or-less customary
+fashion, plus the right to make reasonable modifications.
+
+Definitions:
+
+- "Package" refers to the collection of files distributed by the Copyright
+ Holder, and derivatives of that collection of files created through textual
+ modification.
+- "Standard Version" refers to such a Package if it has not been modified,
+ or has been modified in accordance with the wishes of the Copyright
+ Holder.
+- "Copyright Holder" is whoever is named in the copyright or copyrights for
+ the package.
+- "You" is you, if you're thinking about copying or distributing this Package.
+- "Reasonable copying fee" is whatever you can justify on the basis of
+ media cost, duplication charges, time of people involved, and so on. (You
+ will not be required to justify it to the Copyright Holder, but only to the
+ computing community at large as a market that must bear the fee.)
+- "Freely Available" means that no fee is charged for the item itself, though
+ there may be fees involved in handling the item. It also means that
+ recipients of the item may redistribute it under the same conditions they
+ received it.
+
+1. You may make and give away verbatim copies of the source form of the
+Standard Version of this Package without restriction, provided that you duplicate
+all of the original copyright notices and associated disclaimers.
+
+2. You may apply bug fixes, portability fixes and other modifications derived from
+the Public Domain or from the Copyright Holder. A Package modified in such a
+way shall still be considered the Standard Version.
+
+3. You may otherwise modify your copy of this Package in any way, provided
+that you insert a prominent notice in each changed file stating how and when
+you changed that file, and provided that you do at least ONE of the following:
+
+ a) place your modifications in the Public Domain or otherwise
+ make them Freely Available, such as by posting said modifications
+ to Usenet or an equivalent medium, or placing the modifications on
+ a major archive site such as
ftp.uu.net, or by allowing the
+ Copyright Holder to include your modifications in the Standard
+ Version of the Package.
+
+ b) use the modified Package only within your corporation or
+ organization.
+
+ c) rename any non-standard executables so the names do not
+ conflict with standard executables, which must also be provided,
+ and provide a separate manual page for each non-standard
+ executable that clearly documents how it differs from the Standard
+ Version.
+
+ d) make other distribution arrangements with the Copyright Holder.
+
+4. You may distribute the programs of this Package in object code or executable
+form, provided that you do at least ONE of the following:
+
+ a) distribute a Standard Version of the executables and library
+ files, together with instructions (in the manual page or equivalent)
+ on where to get the Standard Version.
+
+ b) accompany the distribution with the machine-readable source of
+ the Package with your modifications.
+
+ c) accompany any non-standard executables with their
+ corresponding Standard Version executables, giving the
+ non-standard executables non-standard names, and clearly
+ documenting the differences in manual pages (or equivalent),
+ together with instructions on where to get the Standard Version.
+
+ d) make other distribution arrangements with the Copyright Holder.
+
+5. You may charge a reasonable copying fee for any distribution of this Package.
+You may charge any fee you choose for support of this Package. You may not
+charge a fee for this Package itself. However, you may distribute this Package in
+aggregate with other (possibly commercial) programs as part of a larger
+(possibly commercial) software distribution provided that you do not advertise
+this Package as a product of your own.
+
+6. The scripts and library files supplied as input to or produced as output from
+the programs of this Package do not automatically fall under the copyright of this
+Package, but belong to whomever generated them, and may be sold
+commercially, and may be aggregated with this Package.
+
+7. C or perl subroutines supplied by you and linked into this Package shall not
+be considered part of this Package.
+
+8. The name of the Copyright Holder may not be used to endorse or promote
+products derived from this software without specific prior written permission.
+
+9. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
+WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.
+
+The End
+
+
Property changes on: users/adamk/tools/common/LICENSE.PERL
___________________________________________________________________
Name: svn:executable
+ *
Added: users/adamk/tools/common/MANIFEST.SKIP
===================================================================
--- users/adamk/tools/common/MANIFEST.SKIP 2005-08-30 05:11:59 UTC (rev 448)
+++ users/adamk/tools/common/MANIFEST.SKIP 2005-08-31 19:28:27 UTC (rev 449)
@@ -0,0 +1,9 @@
+^MANIFEST.
+\bCVS\b
+^Makefile$
+\bcover_db\b
+\~$
+\.bak$
+\#
+tmon\.out
+\._t$
Property changes on: users/adamk/tools/common/MANIFEST.SKIP
___________________________________________________________________
Name: svn:executable
+ *