RubyInline 3.3.2 → 3.4.0
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/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
|
- "."
|