bluecloth 2.0.5 → 2.0.6.pre120
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/ChangeLog +242 -678
- data/LICENSE +1 -1
- data/README +2 -2
- data/Rakefile +99 -68
- data/Rakefile.local +21 -41
- data/ext/VERSION +1 -1
- data/ext/bluecloth.c +18 -4
- data/ext/bluecloth.h +19 -0
- data/ext/config.h +8 -0
- data/ext/cstring.h +3 -2
- data/ext/extconf.rb +8 -1
- data/ext/generate.c +148 -27
- data/ext/markdown.c +135 -27
- data/ext/markdown.h +3 -2
- data/ext/mkdio.h +1 -0
- data/lib/bluecloth.rb +12 -9
- data/rake/dependencies.rb +1 -1
- data/rake/helpers.rb +24 -2
- data/rake/hg.rb +273 -0
- data/rake/manual.rb +3 -3
- data/rake/packaging.rb +33 -35
- data/rake/publishing.rb +16 -68
- data/rake/rdoc.rb +1 -1
- data/rake/style.rb +1 -1
- data/rake/svn.rb +577 -549
- data/rake/testing.rb +4 -20
- data/rake/win32.rb +13 -9
- data/spec/bluecloth/blockquotes_spec.rb +24 -22
- data/spec/bluecloth_spec.rb +31 -0
- data/spec/bugfix_spec.rb +37 -1
- data/spec/discount_spec.rb +117 -0
- data/spec/markdowntest_spec.rb +8 -8
- metadata +19 -138
data/ext/markdown.h
CHANGED
@@ -37,7 +37,7 @@ typedef struct paragraph {
|
|
37
37
|
char *ident; /* %id% tag for QUOTE */
|
38
38
|
enum { WHITESPACE=0, CODE, QUOTE, MARKUP,
|
39
39
|
HTML, STYLE, DL, UL, OL, AL, LISTITEM,
|
40
|
-
HDR, HR } typ;
|
40
|
+
HDR, HR, TABLE, SOURCE } typ;
|
41
41
|
enum { IMPLICIT=0, PARA, CENTER} align;
|
42
42
|
int hnumber; /* <Hn> for typ == HDR */
|
43
43
|
} Paragraph;
|
@@ -74,11 +74,12 @@ typedef struct mmiot {
|
|
74
74
|
#define INSIDE_TAG 0x0020
|
75
75
|
#define NO_PSEUDO_PROTO 0x0040
|
76
76
|
#define CDATA_OUTPUT 0x0080
|
77
|
+
#define NOTABLES 0x0400
|
77
78
|
#define TOC 0x1000
|
78
79
|
#define MKD_1_COMPAT 0x2000
|
79
80
|
#define AUTOLINK 0x4000
|
80
81
|
#define SAFELINK 0x8000
|
81
|
-
#define USER_FLAGS
|
82
|
+
#define USER_FLAGS 0xFCFF
|
82
83
|
#define EMBEDDED DENY_A|DENY_IMG|NO_PSEUDO_PROTO|CDATA_OUTPUT
|
83
84
|
char *base;
|
84
85
|
} MMIOT;
|
data/ext/mkdio.h
CHANGED
@@ -63,6 +63,7 @@ extern char markdown_version[];
|
|
63
63
|
* <em>, no <bold>, no html or [] expansion */
|
64
64
|
#define MKD_NO_EXT 0x0040 /* don't allow pseudo-protocols */
|
65
65
|
#define MKD_CDATA 0x0080 /* generate code for xml ![CDATA[...]] */
|
66
|
+
#define MKD_NOTABLES 0x0400 /* disallow tables */
|
66
67
|
#define MKD_TOC 0x1000 /* do table-of-contents processing */
|
67
68
|
#define MKD_1_COMPAT 0x2000 /* compatability with MarkdownTest_1.0 */
|
68
69
|
#define MKD_AUTOLINK 0x4000 /* make http://foo.com link even without <>s */
|
data/lib/bluecloth.rb
CHANGED
@@ -18,7 +18,7 @@
|
|
18
18
|
#
|
19
19
|
# == Version
|
20
20
|
#
|
21
|
-
# $Id
|
21
|
+
# $Id$
|
22
22
|
#
|
23
23
|
# == License
|
24
24
|
#
|
@@ -29,13 +29,7 @@
|
|
29
29
|
class BlueCloth
|
30
30
|
|
31
31
|
# Release Version
|
32
|
-
VERSION = '2.0.
|
33
|
-
|
34
|
-
# SVN Revision
|
35
|
-
SVNREV = %q$Rev: 132 $
|
36
|
-
|
37
|
-
# SVN Id tag
|
38
|
-
SVNID = %q$Id: bluecloth.rb 132 2009-07-16 00:18:30Z deveiant $
|
32
|
+
VERSION = '2.0.6'
|
39
33
|
|
40
34
|
# The defaults for all supported options.
|
41
35
|
DEFAULT_OPTIONS = {
|
@@ -153,7 +147,16 @@ class BlueCloth
|
|
153
147
|
|
154
148
|
end # class BlueCloth
|
155
149
|
|
156
|
-
|
150
|
+
# Load the correct version if it's a Windows binary gem
|
151
|
+
if RUBY_PLATFORM =~/(mswin|mingw)/i
|
152
|
+
major_minor = RUBY_VERSION[ /^(\d+\.\d+)/ ] or
|
153
|
+
raise "Oops, can't extract the major/minor version from #{RUBY_VERSION.dump}"
|
154
|
+
require "#{major_minor}/nokogiri"
|
155
|
+
else
|
156
|
+
require 'bluecloth_ext'
|
157
|
+
end
|
158
|
+
|
159
|
+
|
157
160
|
|
158
161
|
# Set the top-level 'Markdown' constant if it isn't already set
|
159
162
|
::Markdown = ::BlueCloth unless defined?( ::Markdown )
|
data/rake/dependencies.rb
CHANGED
data/rake/helpers.rb
CHANGED
@@ -68,13 +68,19 @@ def trace( *msg )
|
|
68
68
|
end
|
69
69
|
|
70
70
|
|
71
|
+
### Return the specified args as a string, quoting any that have a space.
|
72
|
+
def quotelist( *args )
|
73
|
+
return args.flatten.collect {|part| part =~ /\s/ ? part.inspect : part}
|
74
|
+
end
|
75
|
+
|
76
|
+
|
71
77
|
### Run the specified command +cmd+ with system(), failing if the execution
|
72
78
|
### fails.
|
73
79
|
def run( *cmd )
|
74
80
|
cmd.flatten!
|
75
81
|
|
76
82
|
if cmd.length > 1
|
77
|
-
trace( cmd
|
83
|
+
trace( quotelist(*cmd) )
|
78
84
|
else
|
79
85
|
trace( cmd )
|
80
86
|
end
|
@@ -90,6 +96,15 @@ def run( *cmd )
|
|
90
96
|
end
|
91
97
|
|
92
98
|
|
99
|
+
### Run the given +cmd+ with the specified +args+ without interpolation by the shell and
|
100
|
+
### return anything written to its STDOUT.
|
101
|
+
def read_command_output( cmd, *args )
|
102
|
+
trace "Reading output from: %s" % [ cmd, quotelist(cmd, *args) ]
|
103
|
+
output = IO.read( '|-' ) or exec cmd, *args
|
104
|
+
return output
|
105
|
+
end
|
106
|
+
|
107
|
+
|
93
108
|
### Run a subordinate Rake process with the same options and the specified +targets+.
|
94
109
|
def rake( *targets )
|
95
110
|
opts = ARGV.select {|arg| arg[0,1] == '-' }
|
@@ -387,7 +402,7 @@ end
|
|
387
402
|
def edit( filename )
|
388
403
|
editor = ENV['EDITOR'] || ENV['VISUAL'] || DEFAULT_EDITOR
|
389
404
|
system editor, filename
|
390
|
-
unless $?.success?
|
405
|
+
unless $?.success? || editor =~ /vim/i
|
391
406
|
fail "Editor exited uncleanly."
|
392
407
|
end
|
393
408
|
end
|
@@ -410,3 +425,10 @@ def in_subdirectory( subdir )
|
|
410
425
|
end
|
411
426
|
|
412
427
|
|
428
|
+
### Make an easily-comparable version vector out of +ver+ and return it.
|
429
|
+
def vvec( ver )
|
430
|
+
return ver.split('.').collect {|char| char.to_i }.pack('N*')
|
431
|
+
end
|
432
|
+
|
433
|
+
|
434
|
+
|
data/rake/hg.rb
ADDED
@@ -0,0 +1,273 @@
|
|
1
|
+
#
|
2
|
+
# Mercurial Rake Tasks
|
3
|
+
|
4
|
+
require 'enumerator'
|
5
|
+
|
6
|
+
#
|
7
|
+
# Authors:
|
8
|
+
# * Michael Granger <ged@FaerieMUD.org>
|
9
|
+
#
|
10
|
+
|
11
|
+
unless defined?( HG_DOTDIR )
|
12
|
+
|
13
|
+
# Mercurial constants
|
14
|
+
HG_DOTDIR = BASEDIR + '.hg'
|
15
|
+
HG_STORE = HG_DOTDIR + 'store'
|
16
|
+
|
17
|
+
IGNORE_FILE = BASEDIR + '.hgignore'
|
18
|
+
|
19
|
+
|
20
|
+
###
|
21
|
+
### Helpers
|
22
|
+
###
|
23
|
+
|
24
|
+
module MercurialHelpers
|
25
|
+
|
26
|
+
###############
|
27
|
+
module_function
|
28
|
+
###############
|
29
|
+
|
30
|
+
### Generate a commit log from a diff and return it as a String.
|
31
|
+
def make_commit_log
|
32
|
+
diff = read_command_output( 'hg', 'diff' )
|
33
|
+
fail "No differences." if diff.empty?
|
34
|
+
|
35
|
+
return diff
|
36
|
+
end
|
37
|
+
|
38
|
+
### Generate a commit log and invoke the user's editor on it.
|
39
|
+
def edit_commit_log
|
40
|
+
diff = make_commit_log()
|
41
|
+
|
42
|
+
File.open( COMMIT_MSG_FILE, File::WRONLY|File::TRUNC|File::CREAT ) do |fh|
|
43
|
+
fh.print( diff )
|
44
|
+
end
|
45
|
+
|
46
|
+
edit( COMMIT_MSG_FILE )
|
47
|
+
end
|
48
|
+
|
49
|
+
### Generate a changelog.
|
50
|
+
def make_changelog
|
51
|
+
log = read_command_output( 'hg', 'log', '--style', 'compact' )
|
52
|
+
return log
|
53
|
+
end
|
54
|
+
|
55
|
+
### Get the 'tip' info and return it as a Hash
|
56
|
+
def get_tip_info
|
57
|
+
data = read_command_output( 'hg', 'tip' )
|
58
|
+
return YAML.load( data )
|
59
|
+
end
|
60
|
+
|
61
|
+
### Return the ID for the current rev
|
62
|
+
def get_current_rev
|
63
|
+
id = read_command_output( 'hg', '-q', 'identify' )
|
64
|
+
return id.chomp
|
65
|
+
end
|
66
|
+
|
67
|
+
### Read the list of existing tags and return them as an Array
|
68
|
+
def get_tags
|
69
|
+
taglist = read_command_output( 'hg', 'tags' )
|
70
|
+
return taglist.split( /\n/ )
|
71
|
+
end
|
72
|
+
|
73
|
+
|
74
|
+
### Read any remote repo paths known by the current repo and return them as a hash.
|
75
|
+
def get_repo_paths
|
76
|
+
paths = {}
|
77
|
+
pathspec = read_command_output( 'hg', 'paths' )
|
78
|
+
pathspec.split.each_slice( 3 ) do |name, _, url|
|
79
|
+
paths[ name ] = url
|
80
|
+
end
|
81
|
+
return paths
|
82
|
+
end
|
83
|
+
|
84
|
+
### Return the list of files which are of status 'unknown'
|
85
|
+
def get_unknown_files
|
86
|
+
list = read_command_output( 'hg', 'status', '-un', '--no-color' )
|
87
|
+
list = list.split( /\n/ )
|
88
|
+
|
89
|
+
trace "New files: %p" % [ list ]
|
90
|
+
return list
|
91
|
+
end
|
92
|
+
|
93
|
+
### Returns a human-scannable file list by joining and truncating the list if it's too long.
|
94
|
+
def humanize_file_list( list, indent=FILE_INDENT )
|
95
|
+
listtext = list[0..5].join( "\n#{indent}" )
|
96
|
+
if list.length > 5
|
97
|
+
listtext << " (and %d other/s)" % [ list.length - 5 ]
|
98
|
+
end
|
99
|
+
|
100
|
+
return listtext
|
101
|
+
end
|
102
|
+
|
103
|
+
|
104
|
+
### Add the list of +pathnames+ to the .hgignore list.
|
105
|
+
def hg_ignore_files( *pathnames )
|
106
|
+
patterns = pathnames.flatten.collect do |path|
|
107
|
+
'^' + Regexp.escape(path) + '$'
|
108
|
+
end
|
109
|
+
trace "Ignoring %d files." % [ pathnames.length ]
|
110
|
+
|
111
|
+
IGNORE_FILE.open( File::CREAT|File::WRONLY|File::APPEND, 0644 ) do |fh|
|
112
|
+
fh.puts( patterns )
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
|
117
|
+
### Delete the files in the given +filelist+ after confirming with the user.
|
118
|
+
def delete_extra_files( filelist )
|
119
|
+
description = humanize_file_list( filelist, ' ' )
|
120
|
+
log "Files to delete:\n ", description
|
121
|
+
ask_for_confirmation( "Really delete them?", false ) do
|
122
|
+
filelist.each do |f|
|
123
|
+
rm_rf( f, :verbose => true )
|
124
|
+
end
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
end # module MercurialHelpers
|
129
|
+
|
130
|
+
|
131
|
+
### Rakefile support
|
132
|
+
def get_vcs_rev( dir='.' )
|
133
|
+
return MercurialHelpers.get_current_rev
|
134
|
+
end
|
135
|
+
def make_changelog
|
136
|
+
return MercurialHelpers.make_changelog
|
137
|
+
end
|
138
|
+
|
139
|
+
|
140
|
+
###
|
141
|
+
### Tasks
|
142
|
+
###
|
143
|
+
|
144
|
+
desc "Mercurial tasks"
|
145
|
+
namespace :hg do
|
146
|
+
include MercurialHelpers
|
147
|
+
|
148
|
+
desc "Prepare for a new release"
|
149
|
+
task :prep_release do
|
150
|
+
tags = get_tags()
|
151
|
+
rev = get_current_rev()
|
152
|
+
|
153
|
+
# Look for a tag for the current release version, and if it exists abort
|
154
|
+
if tags.include?( PKG_VERSION )
|
155
|
+
error "Version #{PKG_VERSION} already has a tag. Did you mean " +
|
156
|
+
"to increment the version in #{VERSION_FILE}?"
|
157
|
+
fail
|
158
|
+
end
|
159
|
+
|
160
|
+
# Sign the current rev
|
161
|
+
log "Signing rev #{rev}"
|
162
|
+
run 'hg', 'sign'
|
163
|
+
|
164
|
+
# Tag the current rev
|
165
|
+
log "Tagging rev #{rev} as #{PKG_VERSION}"
|
166
|
+
run 'hg', 'tag', PKG_VERSION
|
167
|
+
|
168
|
+
# Offer to push
|
169
|
+
Rake::Task['hg:push'].invoke
|
170
|
+
end
|
171
|
+
|
172
|
+
desc "Check for new files and offer to add/ignore/delete them."
|
173
|
+
task :newfiles do
|
174
|
+
log "Checking for new files..."
|
175
|
+
|
176
|
+
entries = get_unknown_files()
|
177
|
+
|
178
|
+
unless entries.empty?
|
179
|
+
files_to_add = []
|
180
|
+
files_to_ignore = []
|
181
|
+
files_to_delete = []
|
182
|
+
|
183
|
+
entries.each do |entry|
|
184
|
+
action = prompt_with_default( " #{entry}: (a)dd, (i)gnore, (s)kip (d)elete", 's' )
|
185
|
+
case action
|
186
|
+
when 'a'
|
187
|
+
files_to_add << entry
|
188
|
+
when 'i'
|
189
|
+
files_to_ignore << entry
|
190
|
+
when 'd'
|
191
|
+
files_to_delete << entry
|
192
|
+
end
|
193
|
+
end
|
194
|
+
|
195
|
+
unless files_to_add.empty?
|
196
|
+
run 'hg', 'add', *files_to_add
|
197
|
+
end
|
198
|
+
|
199
|
+
unless files_to_ignore.empty?
|
200
|
+
hg_ignore_files( *files_to_ignore )
|
201
|
+
end
|
202
|
+
|
203
|
+
unless files_to_delete.empty?
|
204
|
+
delete_extra_files( files_to_delete )
|
205
|
+
end
|
206
|
+
end
|
207
|
+
end
|
208
|
+
task :add => :newfiles
|
209
|
+
|
210
|
+
|
211
|
+
desc "Pull and update from the default repo"
|
212
|
+
task :pull do
|
213
|
+
paths = get_repo_paths()
|
214
|
+
if origin_url = paths['default']
|
215
|
+
ask_for_confirmation( "Pull and update from '#{origin_url}'?", false ) do
|
216
|
+
run 'hg', 'pull', '-u'
|
217
|
+
end
|
218
|
+
else
|
219
|
+
trace "Skipping pull: No 'default' path."
|
220
|
+
end
|
221
|
+
end
|
222
|
+
|
223
|
+
desc "Check the current code in if tests pass"
|
224
|
+
task :checkin => ['hg:pull', 'hg:newfiles', 'test', COMMIT_MSG_FILE] do
|
225
|
+
targets = get_target_args()
|
226
|
+
$stderr.puts '---', File.read( COMMIT_MSG_FILE ), '---'
|
227
|
+
ask_for_confirmation( "Continue with checkin?" ) do
|
228
|
+
run 'hg', 'ci', '-l', COMMIT_MSG_FILE, targets
|
229
|
+
rm_f COMMIT_MSG_FILE
|
230
|
+
end
|
231
|
+
Rake::Task['hg:push'].invoke
|
232
|
+
end
|
233
|
+
task :commit => :checkin
|
234
|
+
task :ci => :checkin
|
235
|
+
|
236
|
+
CLEAN.include( COMMIT_MSG_FILE )
|
237
|
+
|
238
|
+
desc "Push to the default origin repo (if there is one)"
|
239
|
+
task :push do
|
240
|
+
paths = get_repo_paths()
|
241
|
+
if origin_url = paths['default']
|
242
|
+
ask_for_confirmation( "Push to '#{origin_url}'?", false ) do
|
243
|
+
run 'hg', 'push'
|
244
|
+
end
|
245
|
+
else
|
246
|
+
trace "Skipping push: No 'default' path."
|
247
|
+
end
|
248
|
+
end
|
249
|
+
|
250
|
+
end
|
251
|
+
|
252
|
+
if HG_DOTDIR.exist?
|
253
|
+
trace "Defining mercurial VCS tasks"
|
254
|
+
|
255
|
+
desc "Check in all the changes in your current working copy"
|
256
|
+
task :ci => 'hg:ci'
|
257
|
+
desc "Check in all the changes in your current working copy"
|
258
|
+
task :checkin => 'hg:ci'
|
259
|
+
|
260
|
+
desc "Tag and sign revision before a release"
|
261
|
+
task :prep_release => 'hg:prep_release'
|
262
|
+
|
263
|
+
file COMMIT_MSG_FILE do
|
264
|
+
edit_commit_log()
|
265
|
+
end
|
266
|
+
|
267
|
+
else
|
268
|
+
trace "Not defining mercurial tasks: no #{HG_DOTDIR}"
|
269
|
+
end
|
270
|
+
|
271
|
+
end
|
272
|
+
|
273
|
+
|
data/rake/manual.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
#
|
2
2
|
# Manual-generation Rake tasks and classes
|
3
|
-
|
3
|
+
|
4
4
|
#
|
5
5
|
# Authors:
|
6
6
|
# * Michael Granger <ged@FaerieMUD.org>
|
@@ -69,7 +69,7 @@ module Manual
|
|
69
69
|
DEFAULT_CONFIG = {
|
70
70
|
'filters' => [ 'erb', 'links', 'textile' ],
|
71
71
|
'layout' => 'default.page',
|
72
|
-
'cleanup' =>
|
72
|
+
'cleanup' => false,
|
73
73
|
}.freeze
|
74
74
|
|
75
75
|
# Pattern to match a source page with a YAML header
|
@@ -674,7 +674,7 @@ module Manual
|
|
674
674
|
|
675
675
|
### Set up a rule for copying files from the resources directory to the output dir.
|
676
676
|
def setup_resource_copy_tasks( resourcedir, outputdir )
|
677
|
-
resources = FileList[ resourcedir + '**/*.{js,css,png,gif,jpg,html}' ]
|
677
|
+
resources = FileList[ resourcedir + '**/*.{js,css,png,gif,jpg,html,svg,svgz,swf}' ]
|
678
678
|
resources.exclude( /\.svn/ )
|
679
679
|
target_pathmap = "%%{%s,%s}p" % [ resourcedir, outputdir ]
|
680
680
|
targets = resources.pathmap( target_pathmap )
|
data/rake/packaging.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
#
|
1
|
+
#####################################################################
|
2
|
+
### P A C K A G I N G T A S K S
|
3
|
+
#####################################################################
|
5
4
|
|
6
5
|
require 'rbconfig'
|
7
|
-
require '
|
8
|
-
require '
|
6
|
+
require 'pathname'
|
7
|
+
require 'rubygems/package_task'
|
8
|
+
|
9
9
|
|
10
10
|
include Config
|
11
11
|
|
@@ -22,34 +22,23 @@ task :package => [:gem]
|
|
22
22
|
|
23
23
|
|
24
24
|
### Task: gem
|
25
|
-
gempath = PKGDIR + GEM_FILE_NAME
|
26
|
-
|
27
|
-
desc "Build a RubyGem package (#{GEM_FILE_NAME})"
|
28
|
-
task :gem => gempath.to_s
|
29
|
-
file gempath.to_s => [PKGDIR.to_s] + GEMSPEC.files do
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
end
|
25
|
+
# gempath = PKGDIR + GEM_FILE_NAME
|
26
|
+
#
|
27
|
+
# desc "Build a RubyGem package (#{GEM_FILE_NAME})"
|
28
|
+
# task :gem => gempath.to_s
|
29
|
+
# file gempath.to_s => [PKGDIR.to_s] + GEMSPEC.files do
|
30
|
+
# when_writing( "Creating GEM" ) do
|
31
|
+
# Gem::Builder.new( GEMSPEC ).build
|
32
|
+
# verbose( true ) do
|
33
|
+
# mv GEM_FILE_NAME, gempath
|
34
|
+
# end
|
35
|
+
# end
|
36
|
+
# end
|
37
|
+
#
|
37
38
|
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
desc "Build a pre-release RubyGem package"
|
43
|
-
task :prerelease_gem => prerelease_gempath.to_s
|
44
|
-
file prerelease_gempath.to_s => [PKGDIR.to_s] + GEMSPEC.files do
|
45
|
-
when_writing( "Creating prerelease GEM" ) do
|
46
|
-
gemspec = GEMSPEC.clone
|
47
|
-
gemspec.version = Gem::Version.create( "%s.%d" % [GEMSPEC.version, svnrev] )
|
48
|
-
Gem::Builder.new( gemspec ).build
|
49
|
-
verbose( true ) do
|
50
|
-
mv prerelease_gem_file_name, prerelease_gempath
|
51
|
-
end
|
52
|
-
end
|
39
|
+
Gem::PackageTask.new( GEMSPEC ) do |pkg|
|
40
|
+
pkg.need_zip = true
|
41
|
+
pkg.need_tar = true
|
53
42
|
end
|
54
43
|
|
55
44
|
|
@@ -60,7 +49,7 @@ task :install => "spec:quiet" do
|
|
60
49
|
sitelib = Pathname.new( CONFIG['sitelibdir'] )
|
61
50
|
sitearch = Pathname.new( CONFIG['sitearchdir'] )
|
62
51
|
Dir.chdir( LIBDIR ) do
|
63
|
-
LIB_FILES.each do |libfile|
|
52
|
+
LIB_FILES.collect {|path| Pathname(path) }.each do |libfile|
|
64
53
|
relpath = libfile.relative_path_from( LIBDIR )
|
65
54
|
target = sitelib + relpath
|
66
55
|
FileUtils.mkpath target.dirname,
|
@@ -101,7 +90,7 @@ task :uninstall do
|
|
101
90
|
sitearch = Pathname.new( CONFIG['sitearchdir'] )
|
102
91
|
|
103
92
|
Dir.chdir( LIBDIR ) do
|
104
|
-
LIB_FILES.each do |libfile|
|
93
|
+
LIB_FILES.collect {|path| Pathname(path) }.each do |libfile|
|
105
94
|
relpath = libfile.relative_path_from( LIBDIR )
|
106
95
|
target = sitelib + relpath
|
107
96
|
FileUtils.rm_f target, :verbose => true, :noop => $dryrun
|
@@ -131,3 +120,12 @@ end
|
|
131
120
|
|
132
121
|
|
133
122
|
|
123
|
+
desc "Add development depdendencies to the gemspec -- this is meant to be chained " +
|
124
|
+
"together with :gem"
|
125
|
+
task :include_dev_dependencies do
|
126
|
+
DEVELOPMENT_DEPENDENCIES.each do |name, version|
|
127
|
+
version = '>= 0' if version.length.zero?
|
128
|
+
GEMSPEC.add_development_dependency( name, version )
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|