live_ast_ripper 0.6.1 → 0.6.2

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/CHANGES.rdoc CHANGED
@@ -1,6 +1,10 @@
1
1
 
2
2
  = live_ast_ripper Changes
3
3
 
4
+ == Version 0.6.2
5
+
6
+ * add required_ruby_version to gemspec
7
+
4
8
  == Version 0.6.1
5
9
 
6
10
  * fix class/module in version.rb
data/Rakefile CHANGED
@@ -2,7 +2,8 @@ require_relative 'devel/levitate'
2
2
 
3
3
  Levitate.new "live_ast_ripper" do |s|
4
4
  s.developers << ["James M. Lawrence", "quixoticsycophant@gmail.com"]
5
- s.github_user = "quix"
5
+ s.username = "quix"
6
+ s.required_ruby_version = ">= 1.9.2"
6
7
  s.camel_name = "LiveASTRipper"
7
8
  s.description = s.summary
8
9
  end
data/devel/levitate.rb CHANGED
@@ -5,79 +5,47 @@ class Levitate
5
5
  require 'fileutils'
6
6
  require 'rbconfig'
7
7
  require 'find'
8
- dest_root = RbConfig::CONFIG["sitelibdir"]
9
- sources = []
10
- Find.find("./lib") { |source|
11
- if install_file?(source)
12
- sources << source
13
- end
14
- }
15
- @spec = sources.inject(Array.new) { |acc, source|
16
- if source == "./lib"
17
- acc
18
- else
19
- dest = File.join(dest_root, source.sub(%r!\A\./lib!, ""))
20
-
21
- install = lambda {
22
- if File.directory?(source)
23
- unless File.directory?(dest)
24
- puts "mkdir #{dest}"
25
- FileUtils.mkdir(dest)
26
- end
27
- else
28
- puts "install #{source} --> #{dest}"
29
- FileUtils.install(source, dest)
30
- end
31
- }
32
-
33
- uninstall = lambda {
34
- if File.directory?(source)
35
- if File.directory?(dest)
36
- puts "rmdir #{dest}"
37
- FileUtils.rmdir(dest)
38
- end
39
- else
40
- if File.file?(dest)
41
- puts "rm #{dest}"
42
- FileUtils.rm(dest)
43
- end
44
- end
45
- }
46
-
47
- acc << {
48
- :source => source,
49
- :dest => dest,
50
- :install => install,
51
- :uninstall => uninstall,
52
- }
53
- end
54
- }
8
+
9
+ rb_root = RbConfig::CONFIG["sitelibdir"]
10
+ @spec = []
11
+
12
+ Find.find "lib" do |source|
13
+ next if source == "lib"
14
+ next unless File.directory?(source) || File.extname(source) == ".rb"
15
+ dest = File.join(rb_root, source.sub(%r!\Alib/!, ""))
16
+ @spec << { :source => source, :dest => dest }
17
+ end
55
18
  end
56
19
 
57
- def install_file?(source)
58
- File.directory?(source) or
59
- (File.file?(source) and File.extname(source) == ".rb")
60
- end
61
-
62
20
  def install
63
- @spec.each { |entry|
64
- entry[:install].call
65
- }
21
+ @spec.each do |entry|
22
+ source, dest = entry.values_at(:source, :dest)
23
+ if File.directory?(source)
24
+ unless File.directory?(dest)
25
+ puts "mkdir #{dest}"
26
+ FileUtils.mkdir(dest)
27
+ end
28
+ else
29
+ puts "install #{source} --> #{dest}"
30
+ FileUtils.install(source, dest)
31
+ end
32
+ end
66
33
  end
67
34
 
68
35
  def uninstall
69
- @spec.reverse.each { |entry|
70
- entry[:uninstall].call
71
- }
72
- end
73
-
74
- def run(args = ARGV)
75
- if args.empty?
76
- install
77
- elsif args.size == 1 and args.first == "--uninstall"
78
- uninstall
79
- else
80
- raise "unrecognized arguments: #{args.inspect}"
36
+ @spec.reverse.each do |entry|
37
+ source, dest = entry.values_at(:source, :dest)
38
+ if File.directory?(source)
39
+ if File.directory?(dest)
40
+ puts "rmdir #{dest}"
41
+ FileUtils.rmdir(dest)
42
+ end
43
+ else
44
+ if File.file?(dest)
45
+ puts "rm #{dest}"
46
+ FileUtils.rm(dest)
47
+ end
48
+ end
81
49
  end
82
50
  end
83
51
  end
@@ -219,38 +187,25 @@ class Levitate
219
187
  }
220
188
  contents
221
189
  end
222
- end
223
-
224
- module InstanceEvalWithArgs
225
- module_function
226
190
 
227
- def with_temp_method(instance, method_name, method_block)
228
- (class << instance ; self ; end).class_eval do
229
- define_method(method_name, &method_block)
191
+ def instance_exec2(obj, *args, &block)
192
+ method_name = ["_", obj.object_id, "_", Thread.current.object_id].join
193
+ (class << obj ; self ; end).class_eval do
194
+ define_method method_name, &block
230
195
  begin
231
- yield method_name
196
+ obj.send(method_name, *args)
232
197
  ensure
233
- remove_method(method_name)
198
+ remove_method method_name
234
199
  end
235
200
  end
236
201
  end
237
-
238
- def call_temp_method(instance, method_name, *args, &method_block)
239
- with_temp_method(instance, method_name, method_block) {
240
- instance.send(method_name, *args)
241
- }
242
- end
243
-
244
- def instance_eval_with_args(instance, *args, &block)
245
- call_temp_method(instance, :__temp_method, *args, &block)
246
- end
247
202
  end
248
203
 
249
204
  include AttrLazy
250
205
  include Util
251
206
 
252
207
  def initialize(gem_name)
253
- $LOAD_PATH.unshift File.dirname(__FILE__) + '/../lib'
208
+ $LOAD_PATH.unshift File.expand_path(File.dirname(__FILE__) + '/../lib')
254
209
 
255
210
  require 'rubygems/package_task'
256
211
 
@@ -296,6 +251,10 @@ class Levitate
296
251
  mod.const_get(version_constant_name)
297
252
  end or "0.0.0"
298
253
  end
254
+
255
+ attribute :required_ruby_version do
256
+ ">= 0"
257
+ end
299
258
 
300
259
  attribute :readme_file do
301
260
  "README.rdoc"
@@ -362,6 +321,10 @@ class Levitate
362
321
  []
363
322
  end
364
323
 
324
+ attribute :extra_gemspec do
325
+ lambda { |spec| }
326
+ end
327
+
365
328
  attribute :files do
366
329
  if File.file? manifest_file
367
330
  File.read(manifest_file).split("\n")
@@ -381,7 +344,7 @@ class Levitate
381
344
  end
382
345
 
383
346
  attribute :rdoc_title do
384
- "#{gem_name}: #{summary}"
347
+ "#{gem_name}: #{summary}".sub(/\.\Z/, "")
385
348
  end
386
349
 
387
350
  attribute :require_paths do
@@ -402,7 +365,7 @@ class Levitate
402
365
  end
403
366
 
404
367
  attribute :extra_rdoc_files do
405
- File.file?(readme_file) ? [readme_file] : []
368
+ [readme_file, history_file].select { |file| File.file?(file) }
406
369
  end
407
370
 
408
371
  attribute :browser do
@@ -426,6 +389,8 @@ class Levitate
426
389
  rdoc_options
427
390
  extra_rdoc_files
428
391
  require_paths
392
+ required_ruby_version
393
+ extensions
429
394
  ].each do |param|
430
395
  t = send(param) and g.send("#{param}=", t)
431
396
  end
@@ -438,6 +403,7 @@ class Levitate
438
403
  development_dependencies.each { |dep|
439
404
  g.add_development_dependency(*dep)
440
405
  }
406
+ extra_gemspec.call(g)
441
407
  end
442
408
  end
443
409
 
@@ -478,9 +444,11 @@ class Levitate
478
444
  begin
479
445
  sections[send("#{section}_section")].
480
446
  gsub("\n", " ").
481
- split(%r!\.\s*!m).
447
+ split(%r!\.\s+!m).
482
448
  first(send("#{section}_sentences")).
483
- join(". ") << "."
449
+ join(". ").
450
+ concat(".").
451
+ sub(%r!\.+\Z!, ".")
484
452
  rescue
485
453
  "FIXME: #{section}"
486
454
  end
@@ -488,22 +456,22 @@ class Levitate
488
456
  }
489
457
 
490
458
  attribute :url do
491
- "http://#{github_user}.github.com/#{gem_name}"
459
+ "http://#{username}.github.com/#{gem_name}"
492
460
  end
493
461
 
494
- attribute :github_user do
495
- raise "github_user not set"
462
+ attribute :username do
463
+ raise "username not set"
496
464
  end
497
465
 
498
466
  attribute :rubyforge_info do
499
467
  nil
500
468
  end
501
469
 
502
- attribute :authors do
470
+ def authors
503
471
  developers.map { |d| d[0] }
504
472
  end
505
473
 
506
- attribute :email do
474
+ def email
507
475
  developers.map { |d| d[1] }
508
476
  end
509
477
 
@@ -519,6 +487,17 @@ class Levitate
519
487
  []
520
488
  end
521
489
 
490
+ attribute :extensions do
491
+ ["ext/#{gem_name}/extconf.rb"].select { |f| File.file? f }
492
+ end
493
+
494
+ attribute :so_file do
495
+ unless extensions.empty?
496
+ require 'rbconfig'
497
+ "lib/" + gem_name + "." + RbConfig::CONFIG["DLEXT"]
498
+ end
499
+ end
500
+
522
501
  def define_clean
523
502
  require 'rake/clean'
524
503
  task :clean do
@@ -695,12 +674,28 @@ class Levitate
695
674
  def define_install
696
675
  desc "direct install (no gem)"
697
676
  task :install do
698
- Installer.new.run([])
677
+ Installer.new.install
699
678
  end
700
679
 
701
680
  desc "direct uninstall (no gem)"
702
681
  task :uninstall do
703
- Installer.new.run(["--uninstall"])
682
+ Installer.new.uninstall
683
+ end
684
+
685
+ if so_file
686
+ dest = File.join(RbConfig::CONFIG["sitearchdir"], File.basename(so_file))
687
+
688
+ task :install => so_file do
689
+ puts "install #{so_file} --> #{dest}"
690
+ FileUtils.install(so_file, dest)
691
+ end
692
+
693
+ task :uninstall do
694
+ if File.file?(dest)
695
+ puts "rm #{dest}"
696
+ FileUtils.rm(dest)
697
+ end
698
+ end
704
699
  end
705
700
  end
706
701
 
@@ -749,7 +744,11 @@ class Levitate
749
744
 
750
745
  def define_changes
751
746
  task :changes do
752
- header = "\n\n== Version ____\n\n"
747
+ if File.read(history_file).index version
748
+ raise "version not updated"
749
+ end
750
+
751
+ header = "\n\n== Version #{version}\n\n"
753
752
 
754
753
  bullets = `git log --format=%s #{last_release}..HEAD`.lines.map { |line|
755
754
  "* #{line}"
@@ -794,6 +793,34 @@ class Levitate
794
793
  puts gemspec.to_ruby
795
794
  end
796
795
  end
796
+
797
+ def define_extension
798
+ if so_file and (source_control? or !File.file?(so_file))
799
+ require 'rbconfig'
800
+ require 'rake/extensiontask'
801
+
802
+ Rake::ExtensionTask.new gem_name, gemspec do |ext|
803
+ ext.cross_compile = true
804
+ ext.cross_platform = 'i386-mswin32'
805
+ ext.cross_compiling do |gemspec|
806
+ gemspec.post_install_message =
807
+ "U got dat binary versionation of this gemination!"
808
+ end
809
+ end
810
+
811
+ if Rake::Task[so_file].needed?
812
+ task :test => so_file
813
+ end
814
+
815
+ task :cross_native_gem do
816
+ Rake::Task[:gem].reenable
817
+ Rake.application.top_level_tasks.replace %w[cross native gem]
818
+ Rake.application.top_level
819
+ end
820
+
821
+ task :gem => :cross_native_gem
822
+ end
823
+ end
797
824
 
798
825
  def open_browser(*files)
799
826
  sh(*([browser].flatten + files))
@@ -821,7 +848,6 @@ class Levitate
821
848
 
822
849
  class << self
823
850
  include Util
824
- include InstanceEvalWithArgs
825
851
 
826
852
  # From minitest, part of the Ruby source; by Ryan Davis.
827
853
  def capture_io
@@ -861,7 +887,7 @@ class Levitate
861
887
  actual = Ruby.run_file_and_capture(temp_file.path).chomp
862
888
  }
863
889
 
864
- instance_eval_with_args(instance, expected, actual, index, &block)
890
+ instance_exec2(instance, expected, actual, index, &block)
865
891
  end
866
892
 
867
893
  def run_doc_section(file, section, instance, &block)
@@ -881,6 +907,7 @@ class Levitate
881
907
  raise "parse error"
882
908
  end
883
909
  )
910
+ code.gsub!(/^\s*%.*$/, "") # ignore shell command examples
884
911
  run_doc_code(code, expected, index, instance, &block)
885
912
  index += 1
886
913
  }
@@ -1,3 +1,3 @@
1
1
  class LiveASTRipper
2
- VERSION = "0.6.1"
2
+ VERSION = "0.6.2"
3
3
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: live_ast_ripper
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.6.1
5
+ version: 0.6.2
6
6
  platform: ruby
7
7
  authors:
8
8
  - James M. Lawrence
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-02-27 00:00:00 -05:00
13
+ date: 2011-03-15 00:00:00 -04:00
14
14
  default_executable:
15
15
  dependencies: []
16
16
 
@@ -23,6 +23,7 @@ extensions: []
23
23
 
24
24
  extra_rdoc_files:
25
25
  - README.rdoc
26
+ - CHANGES.rdoc
26
27
  files:
27
28
  - CHANGES.rdoc
28
29
  - README.rdoc
@@ -41,7 +42,7 @@ rdoc_options:
41
42
  - --main
42
43
  - README.rdoc
43
44
  - --title
44
- - "live_ast_ripper: A Ripper-based parser plugin for LiveAST."
45
+ - "live_ast_ripper: A Ripper-based parser plugin for LiveAST"
45
46
  require_paths:
46
47
  - lib
47
48
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -49,7 +50,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
49
50
  requirements:
50
51
  - - ">="
51
52
  - !ruby/object:Gem::Version
52
- version: "0"
53
+ version: 1.9.2
53
54
  required_rubygems_version: !ruby/object:Gem::Requirement
54
55
  none: false
55
56
  requirements:
@@ -59,7 +60,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
59
60
  requirements: []
60
61
 
61
62
  rubyforge_project:
62
- rubygems_version: 1.5.3
63
+ rubygems_version: 1.6.2
63
64
  signing_key:
64
65
  specification_version: 3
65
66
  summary: A Ripper-based parser plugin for LiveAST.