emonti-ffi_dry 0.1.1 → 0.1.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.
Files changed (5) hide show
  1. data/Rakefile +15 -0
  2. data/VERSION +1 -1
  3. data/ffi_dry.gemspec +63 -0
  4. data/lib/ffi/dry.rb +15 -7
  5. metadata +4 -4
data/Rakefile CHANGED
@@ -43,3 +43,18 @@ rescue LoadError
43
43
  abort "YARD is not available. In order to run yardoc, you must: sudo gem install yard"
44
44
  end
45
45
  end
46
+
47
+ require 'rake/rdoctask'
48
+ Rake::RDocTask.new do |rdoc|
49
+ if File.exist?('VERSION')
50
+ version = File.read('VERSION')
51
+ else
52
+ version = ""
53
+ end
54
+
55
+ rdoc.rdoc_dir = 'rdoc'
56
+ rdoc.title = "ffi_dry #{version}"
57
+ rdoc.rdoc_files.include('README*')
58
+ rdoc.rdoc_files.include('lib/**/*.rb')
59
+ end
60
+
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.1
1
+ 0.1.2
@@ -0,0 +1,63 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run `rake gemspec`
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{ffi_dry}
8
+ s.version = "0.1.2"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Eric Monti"]
12
+ s.date = %q{2009-09-13}
13
+ s.description = %q{Provides a some useful modules, classes, and methods as well as a DSL-like syntax for FFI::Struct layouts}
14
+ s.email = %q{emonti@matasano.com}
15
+ s.extra_rdoc_files = [
16
+ "LICENSE",
17
+ "README.rdoc"
18
+ ]
19
+ s.files = [
20
+ ".document",
21
+ ".gitignore",
22
+ "LICENSE",
23
+ "README.rdoc",
24
+ "Rakefile",
25
+ "VERSION",
26
+ "ffi_dry.gemspec",
27
+ "lib/ffi/dry.rb",
28
+ "lib/ffi_dry.rb",
29
+ "samples/afmap.rb",
30
+ "samples/basic.rb",
31
+ "samples/describer.rb",
32
+ "spec/ffi_dry_spec.rb",
33
+ "spec/spec_helper.rb"
34
+ ]
35
+ s.homepage = %q{http://github.com/emonti/ffi_dry}
36
+ s.rdoc_options = ["--charset=UTF-8"]
37
+ s.require_paths = ["lib"]
38
+ s.rubygems_version = %q{1.3.4}
39
+ s.summary = %q{Syntactic sugar and helper utilities for FFI}
40
+ s.test_files = [
41
+ "spec/ffi_dry_spec.rb",
42
+ "spec/spec_helper.rb"
43
+ ]
44
+
45
+ if s.respond_to? :specification_version then
46
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
47
+ s.specification_version = 3
48
+
49
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
50
+ s.add_runtime_dependency(%q<ffi-ffi>, [">= 0.5.0"])
51
+ s.add_development_dependency(%q<rspec>, [">= 0"])
52
+ s.add_development_dependency(%q<yard>, [">= 0"])
53
+ else
54
+ s.add_dependency(%q<ffi-ffi>, [">= 0.5.0"])
55
+ s.add_dependency(%q<rspec>, [">= 0"])
56
+ s.add_dependency(%q<yard>, [">= 0"])
57
+ end
58
+ else
59
+ s.add_dependency(%q<ffi-ffi>, [">= 0.5.0"])
60
+ s.add_dependency(%q<rspec>, [">= 0"])
61
+ s.add_dependency(%q<yard>, [">= 0"])
62
+ end
63
+ end
@@ -76,6 +76,9 @@ module FFI::DRY
76
76
  # the :raw tag.
77
77
  #
78
78
  def initialize(*args)
79
+ @dsl_metadata = self.class.dsl_metadata
80
+ params=nil
81
+
79
82
  if args.size == 1 and (oparams=args[0]).is_a? Hash
80
83
  params = oparams.dup
81
84
  if raw=params.delete(:raw)
@@ -83,11 +86,11 @@ module FFI::DRY
83
86
  else
84
87
  super()
85
88
  end
86
- set_fields(params)
87
89
  else
88
90
  super(*args)
89
91
  end
90
- @dsl_metadata = self.class.dsl_metadata
92
+
93
+ set_fields(params)
91
94
  yield self if block_given?
92
95
  end
93
96
 
@@ -103,8 +106,8 @@ module FFI::DRY
103
106
  # This method is called automatically if you are using the initialize()
104
107
  # method provided in the DryStruct class and passing it a Hash as its only
105
108
  # argument.
106
- def set_fields(params)
107
- params.keys.each do |p|
109
+ def set_fields(params=nil)
110
+ (params || {}).keys.each do |p|
108
111
  if members().include?(p)
109
112
  self.__send__(:"#{p}=", params[p])
110
113
  else
@@ -157,11 +160,11 @@ module FFI::DRY
157
160
  builder.instance_eval(&block)
158
161
  @layout = builder.build
159
162
  @size = @layout.size
160
- _class_do_dsl_metadata( builder.metadata )
163
+ _class_meths_from_dsl_metadata( builder.metadata )
161
164
  return @layout
162
165
  end
163
166
 
164
- def _class_do_dsl_metadata(meta)
167
+ def _class_meths_from_dsl_metadata(meta)
165
168
  (@dsl_metadata = meta).each do |spec|
166
169
  name = spec[:name]
167
170
  type = spec[:type]
@@ -340,7 +343,12 @@ module FFI::DRY
340
343
  def [](arg)
341
344
  if arg.is_a? Integer
342
345
  ret = []
343
- list.invert.sort.each {|v,n| ret << n if (v & arg) == v }
346
+ if arg == 0
347
+ n = list.invert[0]
348
+ ret << n if n
349
+ else
350
+ list.invert.sort.each {|v,n| ret << n if v !=0 and (v & arg) == v }
351
+ end
344
352
  return ret
345
353
  elsif arg.is_a? String or arg.is_a? Symbol
346
354
  list[arg.to_s.upcase]
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: emonti-ffi_dry
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eric Monti
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-09-12 00:00:00 -07:00
12
+ date: 2009-09-13 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -58,6 +58,7 @@ files:
58
58
  - README.rdoc
59
59
  - Rakefile
60
60
  - VERSION
61
+ - ffi_dry.gemspec
61
62
  - lib/ffi/dry.rb
62
63
  - lib/ffi_dry.rb
63
64
  - samples/afmap.rb
@@ -67,7 +68,6 @@ files:
67
68
  - spec/spec_helper.rb
68
69
  has_rdoc: false
69
70
  homepage: http://github.com/emonti/ffi_dry
70
- licenses:
71
71
  post_install_message:
72
72
  rdoc_options:
73
73
  - --charset=UTF-8
@@ -88,7 +88,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
88
88
  requirements: []
89
89
 
90
90
  rubyforge_project:
91
- rubygems_version: 1.3.5
91
+ rubygems_version: 1.2.0
92
92
  signing_key:
93
93
  specification_version: 3
94
94
  summary: Syntactic sugar and helper utilities for FFI