RubyInline 3.3.2 → 3.4.0
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +10 -0
- data/Makefile +1 -1
- data/example.rb +2 -6
- data/inline.rb +31 -12
- metadata +3 -3
data/History.txt
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
*** 3.4.0 / 2005-07-13
|
2
|
+
|
3
|
+
+ 2 minor enhancement
|
4
|
+
+ Changed inline to take the language and a hash of options.
|
5
|
+
+ Still backwards compatible, for now, and emits a warning.
|
6
|
+
+ Options are available via the builder passed to your block.
|
7
|
+
+ 2 bug fixes
|
8
|
+
+ Modified caller discovery, yet again, due to changes in ruby 1.8.3.
|
9
|
+
+ More compatible and clean with non-gems systems.
|
10
|
+
|
1
11
|
*** 3.3.2 / 2005-05-19
|
2
12
|
|
3
13
|
+ 4 bug fixes
|
data/Makefile
CHANGED
data/example.rb
CHANGED
data/inline.rb
CHANGED
@@ -51,7 +51,7 @@ class CompilationError < RuntimeError; end
|
|
51
51
|
# the current namespace.
|
52
52
|
|
53
53
|
module Inline
|
54
|
-
VERSION = '3.
|
54
|
+
VERSION = '3.4.0'
|
55
55
|
|
56
56
|
$stderr.puts "RubyInline v #{VERSION}" if $DEBUG
|
57
57
|
|
@@ -262,9 +262,12 @@ module Inline
|
|
262
262
|
|
263
263
|
def initialize(mod)
|
264
264
|
raise ArgumentError, "Class/Module arg is required" unless Module === mod
|
265
|
-
|
266
|
-
|
267
|
-
|
265
|
+
# new (but not on some 1.8s) -> inline -> real_caller|eval
|
266
|
+
stack = caller
|
267
|
+
meth = stack.shift until meth =~ /in .(inline|test_)/ or stack.empty?
|
268
|
+
raise "Couldn't discover caller" if stack.empty?
|
269
|
+
real_caller = stack.first
|
270
|
+
real_caller = stack[3] if real_caller =~ /\(eval\)/
|
268
271
|
@real_caller = real_caller.split(/:/).first
|
269
272
|
@rb_file = File.expand_path(@real_caller)
|
270
273
|
|
@@ -549,25 +552,41 @@ end # module Inline
|
|
549
552
|
|
550
553
|
class Module
|
551
554
|
|
555
|
+
##
|
556
|
+
# options is a hash that allows you to pass extra data to your
|
557
|
+
# builder. The only key that is guaranteed to exist is :testing.
|
558
|
+
|
559
|
+
attr_reader :options
|
560
|
+
|
552
561
|
##
|
553
562
|
# Extends the Module class to have an inline method. The default
|
554
563
|
# language/builder used is C, but can be specified with the +lang+
|
555
564
|
# parameter.
|
556
565
|
|
557
|
-
def inline(lang = :C,
|
558
|
-
|
559
|
-
|
560
|
-
|
561
|
-
|
562
|
-
|
563
|
-
|
566
|
+
def inline(lang = :C, options={})
|
567
|
+
case options
|
568
|
+
when TrueClass, FalseClass then
|
569
|
+
warn "WARNING: 2nd argument to inline is now a hash, changing to {:testing=>#{options}}" unless options
|
570
|
+
options = { :testing => options }
|
571
|
+
when Hash
|
572
|
+
options[:testing] ||= false
|
573
|
+
else
|
574
|
+
raise ArgumentError, "BLAH"
|
564
575
|
end
|
565
576
|
|
577
|
+
builder_class = begin
|
578
|
+
Inline.const_get(lang)
|
579
|
+
rescue NameError
|
580
|
+
require "inline/#{lang}"
|
581
|
+
Inline.const_get(lang)
|
582
|
+
end
|
583
|
+
|
584
|
+
@options = options
|
566
585
|
builder = builder_class.new self
|
567
586
|
|
568
587
|
yield builder
|
569
588
|
|
570
|
-
unless testing then
|
589
|
+
unless options[:testing] then
|
571
590
|
unless builder.load_cache then
|
572
591
|
builder.build
|
573
592
|
builder.load
|
metadata
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
|
-
rubygems_version: 0.8.10
|
2
|
+
rubygems_version: 0.8.10.1
|
3
3
|
specification_version: 1
|
4
4
|
name: RubyInline
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 3.
|
7
|
-
date: 2005-
|
6
|
+
version: 3.4.0
|
7
|
+
date: 2005-07-13
|
8
8
|
summary: Multi-language extension coding within ruby.
|
9
9
|
require_paths:
|
10
10
|
- "."
|