rubber-generate 0.0.16 → 0.0.17

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/bin/rubber-generate CHANGED
@@ -8,7 +8,6 @@ end
8
8
 
9
9
  require 'fileutils'
10
10
  require 'rbconfig'
11
- require 'ftools'
12
11
 
13
12
  dir = File.dirname(File.expand_path(file))
14
13
  $:.unshift(dir)
@@ -23,7 +22,11 @@ require 'optparse'
23
22
  require 'ostruct'
24
23
 
25
24
  Args = OpenStruct.new
26
- Args.build_dir = Config::CONFIG['sitearch']
25
+ if Object.const_defined?('RbConfig')
26
+ Args.build_dir = RbConfig::CONFIG['sitearch']
27
+ else
28
+ Args.build_dir = Config::CONFIG['sitearch']
29
+ end
27
30
  Args.configure = false
28
31
  Args.build = false
29
32
  Args.install = false
@@ -24,7 +24,7 @@ class C_GCRefPool
24
24
  }
25
25
  rb_ary_delete(#{cname}, val);
26
26
  // If nothing is referenced, don't keep an empty array in the pool...
27
- if (RARRAY(#{cname})->len == 0)
27
+ if (RARRAY_LEN(#{cname}) == 0)
28
28
  #{cname} = Qnil;
29
29
  }
30
30
  "
@@ -1,12 +1,16 @@
1
1
 
2
2
  module Rubber
3
3
  def generate_extconf(scanner, io)
4
- io << <<-EOMK
4
+ io.write <<-EOMK
5
5
  require 'mkmf'
6
-
6
+ use_gems = false
7
7
  begin
8
8
  require 'mkmf-gnome2'
9
9
  rescue LoadError
10
+ use_gems = true
11
+ end
12
+
13
+ if use_gems or Object.const_defined?('Gem')
10
14
  require 'rubygems'
11
15
  gem 'glib2'
12
16
  require 'mkmf-gnome2'
@@ -16,13 +20,31 @@ rescue LoadError
16
20
  end
17
21
  end
18
22
  end
23
+ EOMK
19
24
 
20
- have_func("rb_errinfo")
25
+ io.write <<-EOMK
26
+ # Look for headers in {gem_root}/ext/{package}
27
+ if use_gems
28
+ %w[
21
29
  EOMK
30
+ io << " glib2" if scanner.options.glib
31
+ io << " gdk_pixbuf2 atk gtk2" if scanner.options.gtk
32
+ io.write <<-EOX
33
+ ].each do |package|
34
+ require package
35
+ $CFLAGS += " -I"+Gem.loaded_specs[package].full_gem_path+"/ext/"+package
36
+ end
37
+ end
38
+ EOX
22
39
 
23
- #io.puts "require 'mkmf'"
24
- #io.puts "require 'mkmf-gnome2'" if scanner.pkgs
25
- #io.puts "$defs ||= []"
40
+ io.write <<-EOY
41
+ if RbConfig::CONFIG.has_key?('rubyhdrdir')
42
+ $CFLAGS += " -I" + RbConfig::CONFIG['rubyhdrdir']+'/ruby'
43
+ end
44
+
45
+ $CFLAGS += " -I."
46
+ have_func("rb_errinfo")
47
+ EOY
26
48
 
27
49
  if scanner.inc_dirs
28
50
  io.puts "$CFLAGS += "+scanner.inc_dirs.collect { |i| " '-I#{i}'"}.join().inspect
@@ -1,9 +1,6 @@
1
1
  require 'rubber/struct'
2
+ require 'rubber/version'
2
3
  module Rubber
3
- VERSION = [0,0,16]
4
- def VERSION.to_s
5
- self.map{|i|i.to_s}.join('.')
6
- end
7
4
  class ScanState
8
5
  define_members(:in_code, :in_class, :in_func, :braces)
9
6
  end
@@ -140,7 +137,7 @@ def _scan(fp)
140
137
  @incs << @str[1].strip
141
138
  elsif @str.skip(/%option +([a-z]+)=(yes|no)\n/) # Option
142
139
  case @str[1]
143
- when 'glib','gtk','gnu'
140
+ when 'glib', 'gtk', 'gnu'
144
141
  @options[@str[1]] = (@str[2] == 'yes')
145
142
  else
146
143
  syntax_error "Unknown option #{@str[1]}"
@@ -411,7 +408,8 @@ EOADD
411
408
  unless name
412
409
  name = @str.scan(/[-\[\]<>~=+|&]{1,3}/)
413
410
  end
414
- name = prename.to_s + (oname=name)
411
+ oname = name
412
+ name = prename.to_s + oname
415
413
  #p [prename, oname, name]
416
414
  @str.skip(/\s*/)
417
415
  args = scan_args().collect { |i| C_Param.new(i) }
data/lib/rubber/struct.rb CHANGED
@@ -8,24 +8,24 @@ def define_member(name, value=nil)
8
8
  end
9
9
  end
10
10
  def define_members(*ids)
11
- members = []
12
- ids.each do |id|
13
- if id.kind_of?(Hash)
11
+ members = []
12
+ ids.each do |id|
13
+ if id.kind_of?(Hash)
14
14
  STDERR.puts("WARNING: Hash passed to define_members has size > 1 in #{caller.join("\n")}\n`#{to_s}.new(...)' will not work as expected (non-predictable member order)") if id.size > 1
15
15
  id.each do |name,value|
16
- define_member(name,value)
17
- raise "Duplicate definition of member `#{name}'" if members.include?(name.to_s)
18
- members.push(name.to_s)
19
- end
20
- elsif id.kind_of?(Symbol)
21
- define_member(id)
22
- raise "Duplicate definition of member `#{id}'" if members.include?(id.to_s)
23
- members.push(id.to_s)
24
- else
25
- raise "Neither a Hash nor a Symbol - `#{id}'"
26
- end
16
+ define_member(name,value)
17
+ raise "Duplicate definition of member `#{name}'" if members.include?(name.to_s)
18
+ members.push(name.to_s)
19
+ end
20
+ elsif id.kind_of?(Symbol)
21
+ define_member(id)
22
+ raise "Duplicate definition of member `#{id}'" if members.include?(id.to_s)
23
+ members.push(id.to_s)
24
+ else
25
+ raise "Neither a Hash nor a Symbol - `#{id}'"
27
26
  end
28
- module_eval <<-EOS
27
+ end
28
+ code = <<-EOS
29
29
  def initialize(*ids);
30
30
  members.each_index { |i| __send__((members[i]+'=').intern, i < ids.size ? ids[i] : __send__(members[i].intern)) };
31
31
  if respond_to?(:init)
@@ -42,11 +42,12 @@ def define_members(*ids)
42
42
  def members(); #{members.inspect}; end
43
43
  def kind_of?(klass); return true if klass == Struct; super(klass); end
44
44
  def to_a(); [#{members.join(', ')}]; end
45
- def [](id); id=id.intern if id.kind_of?(String); case id; #{i=-1;members.collect{|name| "when :#{name},#{i+=1}; @#{name};"}} else raise 'Unknown member - '+id.to_s; end; end
46
- def []=(id,value); id=id.intern if id.kind_of?(String); case id; #{i=-1;members.collect{|name| "when :#{name},#{i+=1}; @#{name}=value;"}} else raise 'Unknown member - '+id.to_s; end; end
45
+ def [](id); id=id.intern if id.kind_of?(String); case id; #{i=-1;members.collect{|name| "when :#{name},#{i+=1}; @#{name};"}.join("\n")} else raise 'Unknown member - '+id.to_s; end; end
46
+ def []=(id,value); id=id.intern if id.kind_of?(String); case id; #{i=-1;members.collect{|name| "when :#{name},#{i+=1}; @#{name}=value;"}.join("\n")} else raise 'Unknown member - '+id.to_s; end; end
47
47
  def length; #{members.size}; end
48
48
  alias_method(:size, :length)
49
49
  alias_method(:values, :to_a)
50
- EOS
51
- end
50
+ EOS
51
+ module_eval code
52
+ end
52
53
  end
@@ -0,0 +1,6 @@
1
+ module Rubber
2
+ VERSION = [0,0,17]
3
+ def VERSION.to_s
4
+ self.map{|i|i.to_s}.join('.')
5
+ end
6
+ end
metadata CHANGED
@@ -1,92 +1,78 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: rubber-generate
3
- version: !ruby/object:Gem::Version
4
- hash: 63
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.17
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 0
9
- - 16
10
- version: 0.0.16
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Geoff Youngs
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2011-10-26 00:00:00 +01:00
19
- default_executable:
12
+ date: 2012-11-16 00:00:00.000000000 Z
20
13
  dependencies: []
21
-
22
- description: " rubber-c-binder allows a rubyish means of generating bindings for C libraries,\n including (but not limited to) GObject based libraries.\n\n It allows C code to be written in the context of a ruby style class/method layout\n and eases type checking and conversion between Ruby & C datatypes.\n"
14
+ description: ! " rubber-c-binder allows a rubyish means of generating bindings
15
+ for C libraries,\n including (but not limited to) GObject based libraries.\n\n
16
+ \ It allows C code to be written in the context of a ruby style class/method layout\n
17
+ \ and eases type checking and conversion between Ruby & C datatypes.\n"
23
18
  email: g@intersect-uk.co.uk
24
- executables:
19
+ executables:
25
20
  - rubber-generate
26
21
  extensions: []
27
-
28
- extra_rdoc_files:
22
+ extra_rdoc_files:
29
23
  - README.textile
30
- files:
24
+ files:
31
25
  - bin/rubber-generate
32
- - lib/rubber/autord.rb
33
- - lib/rubber/codegen.rb
34
- - lib/rubber/scanner.rb
35
- - lib/rubber/struct.rb
36
- - lib/rubber/mkextconf.rb
37
- - lib/rubber/codegen/function.rb
38
- - lib/rubber/codegen/array.rb
26
+ - lib/rubber/codegen/param.rb
39
27
  - lib/rubber/codegen/ginterface.rb
40
- - lib/rubber/codegen/class.rb
41
- - lib/rubber/codegen/gboxed.rb
42
- - lib/rubber/codegen/float.rb
43
- - lib/rubber/codegen/module.rb
44
- - lib/rubber/codegen/enum.rb
45
- - lib/rubber/codegen/integer.rb
46
28
  - lib/rubber/codegen/genum.rb
47
- - lib/rubber/codegen/struct.rb
48
- - lib/rubber/codegen/param.rb
49
- - lib/rubber/codegen/flags.rb
50
29
  - lib/rubber/codegen/gflags.rb
51
- - lib/rubber/codegen/gobject.rb
30
+ - lib/rubber/codegen/flags.rb
52
31
  - lib/rubber/codegen/string.rb
32
+ - lib/rubber/codegen/struct.rb
33
+ - lib/rubber/codegen/module.rb
53
34
  - lib/rubber/codegen/gcrefpool.rb
35
+ - lib/rubber/codegen/function.rb
36
+ - lib/rubber/codegen/gboxed.rb
37
+ - lib/rubber/codegen/integer.rb
38
+ - lib/rubber/codegen/gobject.rb
39
+ - lib/rubber/codegen/class.rb
40
+ - lib/rubber/codegen/enum.rb
41
+ - lib/rubber/codegen/array.rb
42
+ - lib/rubber/codegen/float.rb
43
+ - lib/rubber/autord.rb
44
+ - lib/rubber/struct.rb
45
+ - lib/rubber/version.rb
46
+ - lib/rubber/mkextconf.rb
47
+ - lib/rubber/codegen.rb
54
48
  - lib/rubber/types.rb
49
+ - lib/rubber/scanner.rb
55
50
  - README.textile
56
51
  - example/vte.cr
57
- has_rdoc: true
58
52
  homepage: http://github.com/geoffyoungs/rubber-generate
59
53
  licenses: []
60
-
61
54
  post_install_message:
62
55
  rdoc_options: []
63
-
64
- require_paths:
56
+ require_paths:
65
57
  - lib
66
- required_ruby_version: !ruby/object:Gem::Requirement
58
+ required_ruby_version: !ruby/object:Gem::Requirement
67
59
  none: false
68
- requirements:
69
- - - ">="
70
- - !ruby/object:Gem::Version
71
- hash: 3
72
- segments:
73
- - 0
74
- version: "0"
75
- required_rubygems_version: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ! '>='
62
+ - !ruby/object:Gem::Version
63
+ version: '0'
64
+ required_rubygems_version: !ruby/object:Gem::Requirement
76
65
  none: false
77
- requirements:
78
- - - ">="
79
- - !ruby/object:Gem::Version
80
- hash: 3
81
- segments:
82
- - 0
83
- version: "0"
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
84
70
  requirements: []
85
-
86
71
  rubyforge_project:
87
- rubygems_version: 1.3.9.3
72
+ rubygems_version: 1.8.24
88
73
  signing_key:
89
74
  specification_version: 3
90
75
  summary: Template language for generating Ruby bindings for C libraries
91
- test_files:
76
+ test_files:
92
77
  - example/vte.cr
78
+ has_rdoc: