From f62e9e79822141ebddf283bc08f72cf5f33cb8b8 Mon Sep 17 00:00:00 2001 From: Yuki Yugui Sonoda Date: Thu, 3 Sep 2015 23:08:53 +0900 Subject: [PATCH] add initial implementation of ext library --- Rakefile | 16 +++++++++++++++- ext/jsonnet/.gitignore | 2 ++ ext/jsonnet/extconf.rb | 6 ++++++ ext/jsonnet/jsonnet.c | 16 ++++++++++++++++ lib/jsonnet.rb | 1 + test/test_jsonnet.rb | 8 ++++++++ 6 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 ext/jsonnet/.gitignore create mode 100644 ext/jsonnet/extconf.rb create mode 100644 ext/jsonnet/jsonnet.c create mode 100644 test/test_jsonnet.rb diff --git a/Rakefile b/Rakefile index 809eb56..4b0b16d 100644 --- a/Rakefile +++ b/Rakefile @@ -1,2 +1,16 @@ -require "bundler/gem_tasks" +require 'bundler/gem_tasks' +require "rake/extensiontask" +require 'rake/testtask' +task :default => :compile + +Rake::ExtensionTask.new do |t| + t.name = 'jsonnet_wrap' + t.ext_dir = 'ext/jsonnet' + t.lib_dir = 'lib/jsonnet' +end + +Rake::TestTask.new('test' => 'compile') do |t| + t.libs << 'test' + t.verbose = true +end diff --git a/ext/jsonnet/.gitignore b/ext/jsonnet/.gitignore new file mode 100644 index 0000000..cc00087 --- /dev/null +++ b/ext/jsonnet/.gitignore @@ -0,0 +1,2 @@ +Makefile +*.o diff --git a/ext/jsonnet/extconf.rb b/ext/jsonnet/extconf.rb new file mode 100644 index 0000000..97df2d0 --- /dev/null +++ b/ext/jsonnet/extconf.rb @@ -0,0 +1,6 @@ +require 'mkmf' + +dir_config('jsonnet') +abort 'libjsonnet.h not found' unless have_header('libjsonnet.h') +abort 'libjsonnet not found' unless have_library('jsonnet') +create_makefile('jsonnet_wrap') diff --git a/ext/jsonnet/jsonnet.c b/ext/jsonnet/jsonnet.c new file mode 100644 index 0000000..db2f77b --- /dev/null +++ b/ext/jsonnet/jsonnet.c @@ -0,0 +1,16 @@ +#include +#include + +static VALUE cVM; + +static VALUE +jsonnet_s_version(VALUE mod) { + return rb_usascii_str_new_cstr(jsonnet_version()); +} + +void +Init_jsonnet_wrap(void) { + VALUE mJsonnet = rb_define_module("Jsonnet"); + rb_define_singleton_method(mJsonnet, "libversion", jsonnet_s_version, 0); + cVM = rb_define_class_under(mJsonnet, "VM", rb_cData); +} diff --git a/lib/jsonnet.rb b/lib/jsonnet.rb index be1321b..98a4d78 100644 --- a/lib/jsonnet.rb +++ b/lib/jsonnet.rb @@ -1,4 +1,5 @@ require "jsonnet/version" +require "jsonnet/jsonnet_wrap" module Jsonnet # Your code goes here... diff --git a/test/test_jsonnet.rb b/test/test_jsonnet.rb new file mode 100644 index 0000000..99810ef --- /dev/null +++ b/test/test_jsonnet.rb @@ -0,0 +1,8 @@ +require 'jsonnet' +require 'test/unit' + +class TestJsonnet < Test::Unit::TestCase + test 'libversion returns a String' do + assert_kind_of String, Jsonnet.libversion + end +end