malachite 0.0.7 → 0.0.8

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ef240489074c7fdcd020f416eb0a7973d63c6a50
4
- data.tar.gz: ea7c9c846639711c6164f7655efbe757a72cc3bc
3
+ metadata.gz: 07a0d476e0764cb08d2117b7d538dd8e5a64ed11
4
+ data.tar.gz: 2ccccc678e2395196cbff0c83a7b47f017196f3b
5
5
  SHA512:
6
- metadata.gz: 744f9b74c0da215592e4a2226edb7be2ae3ac203e1e4907b20a4bfcd572780904fd4c0024a369e612646da9bcc8b27b64507e2e2fd49099f443b912915e586e7
7
- data.tar.gz: c2624b1d6da74dba2178ecd7c64ab952e665276beda62900bca8d1c70e3c5ee6aa00514407f88c45f4c92b7fd685e283274d08251ca683cd3feead0728e289f4
6
+ metadata.gz: f0a826099b4868083018805211858d24d463c5632fda704220bdc9b4c8f860e41cae6e94b6a8d669c6318d08f306b90fd5f50e3ce6a8a144ba222bc8a8422548
7
+ data.tar.gz: df07b50d3d0654e87a88db32635e3c43dfd2dceff93e2056e050bd9ebac8d8b68c92fe16885c8f1cce94aef2230850d6810a1ff95f1bd5403b886461add6b76e
data/README.md CHANGED
@@ -124,5 +124,6 @@ It's strongly recommended to use the [newest release of Ruby](https://www.ruby-l
124
124
 
125
125
  ### TODO
126
126
 
127
+ * Confirm Go's existence, raise exception on build
127
128
  * Error handling
128
129
  * Benchmark performance...roughly
@@ -1,33 +1,30 @@
1
- require 'fiddle'
2
- require 'tempfile'
3
-
4
1
  module Malachite
5
2
  class Client
6
- def initialize
7
- @dylib = open_dlib
3
+ def initialize(name, args)
4
+ @name = name
5
+ @args = args
8
6
  end
9
7
 
10
- def call_method(name, args)
11
- method_name = "call#{name.to_s.camelize}"
12
- @func = Fiddle::Function.new(@dylib[method_name], [Fiddle::TYPE_VOIDP], Fiddle::TYPE_VOIDP)
13
- ptr = @func.call(Malachite.dump_json(args))
14
- Malachite.load_json(ptr.to_s)
8
+ def call
9
+ response_from_json(json_function_result)
15
10
  end
16
11
 
17
12
  def self.method_missing(name, args)
18
- new.call_method(name, args)
13
+ new(name, args).call
19
14
  end
20
15
 
21
16
  private
22
17
 
23
- def open_dlib
24
- Fiddle.dlopen(shared_object_path)
25
- rescue Fiddle::DLError
26
- raise Malachite::DLError
18
+ def json_function_result
19
+ Malachite::Function.new(@name, args_to_json).call
20
+ end
21
+
22
+ def args_to_json
23
+ Malachite.dump_json(@args)
27
24
  end
28
25
 
29
- def shared_object_path
30
- Malachite::Compiler.new.compile
26
+ def response_from_json(response)
27
+ Malachite.load_json(response)
31
28
  end
32
29
  end
33
30
  end
@@ -0,0 +1,34 @@
1
+ require 'fiddle'
2
+
3
+ module Malachite
4
+ class Function
5
+ def initialize(name, args)
6
+ @name = name
7
+ @args = args
8
+ end
9
+
10
+ def call
11
+ fiddle_function.call(@args).to_s
12
+ end
13
+
14
+ private
15
+
16
+ def fiddle_function
17
+ Fiddle::Function.new(open_dylib[called_method], [Fiddle::TYPE_VOIDP], Fiddle::TYPE_VOIDP)
18
+ end
19
+
20
+ def called_method
21
+ "call#{@name.to_s.camelize}"
22
+ end
23
+
24
+ def open_dylib
25
+ Fiddle.dlopen(shared_object_path)
26
+ rescue Fiddle::DLError
27
+ raise Malachite::DLError
28
+ end
29
+
30
+ def shared_object_path
31
+ Malachite::Compiler.new.compile
32
+ end
33
+ end
34
+ end
@@ -1,3 +1,3 @@
1
1
  module Malachite
2
- VERSION = '0.0.7'
2
+ VERSION = '0.0.8'
3
3
  end
data/lib/malachite.rb CHANGED
@@ -5,6 +5,7 @@ require 'json'
5
5
  require 'fiddle'
6
6
 
7
7
  require 'malachite/errors'
8
+ require 'malachite/function'
8
9
  require 'malachite/client'
9
10
  require 'malachite/file_compiler'
10
11
  require 'malachite/compiler'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: malachite
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Zack Hubert
@@ -69,6 +69,7 @@ files:
69
69
  - lib/malachite/errors.rb
70
70
  - lib/malachite/exporter.go.tmpl
71
71
  - lib/malachite/file_compiler.rb
72
+ - lib/malachite/function.rb
72
73
  - lib/malachite/main.go.tmpl
73
74
  - lib/malachite/railtie.rb
74
75
  - lib/malachite/tasks.rb