malachite 0.2.0 → 0.2.1
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 +4 -4
- data/.gitignore +3 -3
- data/Rakefile +7 -0
- data/lib/malachite/exporter.go.tmpl +1 -0
- data/lib/malachite/file_compiler.rb +2 -3
- data/lib/malachite/function_cache.rb +1 -1
- data/lib/malachite/version.rb +1 -1
- data/lib/malachite.rb +1 -0
- data/malachite.gemspec +2 -0
- data/test/client_test.rb +11 -0
- data/test/dummy/app/go/upcase.go +12 -0
- data/test/file_compiler_test.rb +13 -0
- data/test/fixtures/valid_upcase.go +34 -0
- data/test/rails_stub.rb +12 -0
- data/test/test_helper.rb +4 -0
- metadata +36 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5052dfabfaf3ab568017e5dca181503e42aa32ef
|
4
|
+
data.tar.gz: 3e54fe1a9525ff6568127cfe0d94ee86daf31851
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a43b53c157f009ef74ae837dd005be597c8c292eaa1c4d7fbb95d1748fb157f4a259fd01b93be2e27806ad81d07939dab3e6fc73401aee403248339840d3c72e
|
7
|
+
data.tar.gz: 5034fd9f28ad91b68d74fe1e9438644c111d03bcf14591814b4ab7859874f6a7f8978491210b04290249cd763ff4c2789e83bbf68356755646684db8742e3734
|
data/.gitignore
CHANGED
data/Rakefile
CHANGED
@@ -25,8 +25,7 @@ module Malachite
|
|
25
25
|
end
|
26
26
|
|
27
27
|
def source_file(f)
|
28
|
-
|
29
|
-
source.gsub(/package main/, '')
|
28
|
+
File.readlines(f).drop(1)
|
30
29
|
end
|
31
30
|
|
32
31
|
def exporter_boilerplate(file)
|
@@ -38,7 +37,7 @@ module Malachite
|
|
38
37
|
def file_has_handle_function?(f)
|
39
38
|
source = File.read(f)
|
40
39
|
match = /^func Handle(.*?)\(\w+ (.*?)\)/.match(source)
|
41
|
-
match
|
40
|
+
match != nil
|
42
41
|
end
|
43
42
|
|
44
43
|
def extract_method_and_type(source_file_path)
|
@@ -9,7 +9,7 @@ module Malachite
|
|
9
9
|
|
10
10
|
def self.from_function_cache(method_name)
|
11
11
|
existing_function = Malachite.function_cache[method_name]
|
12
|
-
return existing_function if existing_function
|
12
|
+
return existing_function if existing_function != nil
|
13
13
|
Malachite.add_to_function_cache(method_name)
|
14
14
|
end
|
15
15
|
|
data/lib/malachite/version.rb
CHANGED
data/lib/malachite.rb
CHANGED
data/malachite.gemspec
CHANGED
@@ -18,4 +18,6 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.add_dependency 'json', '~> 1.0'
|
19
19
|
spec.add_development_dependency 'bundler', '~> 1.9'
|
20
20
|
spec.add_development_dependency 'rake', '~> 10.0'
|
21
|
+
spec.add_development_dependency 'minitest', '~> 5'
|
22
|
+
spec.add_development_dependency 'activesupport', '~> 4'
|
21
23
|
end
|
data/test/client_test.rb
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class FileCompilerTest < MiniTest::Unit::TestCase
|
4
|
+
def setup
|
5
|
+
@source = Malachite::FileCompiler.new(Rails.root.join('app', 'go', 'upcase.go')).compile
|
6
|
+
end
|
7
|
+
|
8
|
+
def test_confirm_compilation_matches_fixture
|
9
|
+
compiled = File.read(Rails.root.join('tmp', 'upcase.go')).to_s
|
10
|
+
valid = File.read(File.expand_path('../fixtures/valid_upcase.go', __FILE__)).gsub(/HEADER/, RbConfig::CONFIG['rubyhdrdir']).gsub(/ARCH/, RbConfig::CONFIG['rubyarchhdrdir'])
|
11
|
+
assert_equal compiled, valid
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
package main
|
2
|
+
|
3
|
+
// #cgo darwin LDFLAGS: -Wl,-undefined -Wl,dynamic_lookup
|
4
|
+
// #cgo !darwin LDFLAGS: -Wl,-unresolved-symbols=ignore-all
|
5
|
+
// #cgo CFLAGS: -IHEADER/ -IARCH/
|
6
|
+
// #include <stdlib.h>
|
7
|
+
// #include "ruby/ruby.h"
|
8
|
+
import "C"
|
9
|
+
|
10
|
+
import (
|
11
|
+
"strings"
|
12
|
+
)
|
13
|
+
|
14
|
+
func HandleUpcase(things []string) (upperCased []string) {
|
15
|
+
for _, thing := range things {
|
16
|
+
upperCased = append(upperCased, strings.ToUpper(thing))
|
17
|
+
}
|
18
|
+
return
|
19
|
+
}
|
20
|
+
|
21
|
+
//export callUpcase
|
22
|
+
func callUpcase(data *C.char) C.VALUE {
|
23
|
+
things := []string{}
|
24
|
+
err := Unmarshal(C.GoString(data), &things)
|
25
|
+
if err != nil {
|
26
|
+
str := err.Error()
|
27
|
+
cstr := GOSTRING_PTR(str)
|
28
|
+
return C.rb_utf8_str_new(cstr, C.long(len(str)))
|
29
|
+
} else {
|
30
|
+
str := Marshal(HandleUpcase(things))
|
31
|
+
cstr := GOSTRING_PTR(str)
|
32
|
+
return C.rb_utf8_str_new(cstr, C.long(len(str)))
|
33
|
+
}
|
34
|
+
}
|
data/test/rails_stub.rb
ADDED
data/test/test_helper.rb
ADDED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: malachite
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Zack Hubert
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-01-
|
11
|
+
date: 2016-01-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json
|
@@ -52,6 +52,34 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '10.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: minitest
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '5'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '5'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: activesupport
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '4'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '4'
|
55
83
|
description: A RubyGem which enables calling Go code from Rails.
|
56
84
|
email:
|
57
85
|
- zhubert@gmail.com
|
@@ -78,6 +106,12 @@ files:
|
|
78
106
|
- lib/malachite/tasks/malachite.rake
|
79
107
|
- lib/malachite/version.rb
|
80
108
|
- malachite.gemspec
|
109
|
+
- test/client_test.rb
|
110
|
+
- test/dummy/app/go/upcase.go
|
111
|
+
- test/file_compiler_test.rb
|
112
|
+
- test/fixtures/valid_upcase.go
|
113
|
+
- test/rails_stub.rb
|
114
|
+
- test/test_helper.rb
|
81
115
|
homepage: http://www.zhubert.com
|
82
116
|
licenses:
|
83
117
|
- MIT
|