tzf 0.1.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.
@@ -0,0 +1,15 @@
1
+ [package]
2
+ name = "tzf"
3
+ version = "0.1.0"
4
+ edition = "2021"
5
+ authors = ["Kevin McCormack <kevin@mccormack.tech>"]
6
+ license = "MIT"
7
+ publish = false
8
+
9
+ [lib]
10
+ crate-type = ["cdylib"]
11
+
12
+ [dependencies]
13
+ lazy_static = "1.4.0"
14
+ magnus = { version = "0.4" }
15
+ tzf-rs = "0.3.0"
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "mkmf"
4
+ require "rb_sys/mkmf"
5
+
6
+ create_rust_makefile("tzf/tzf")
@@ -0,0 +1,25 @@
1
+ use lazy_static::lazy_static;
2
+ use magnus::{define_module, function, prelude::*, Error};
3
+ use magnus::{RString};
4
+
5
+ use tzf_rs::DefaultFinder;
6
+
7
+ lazy_static! {
8
+ static ref FINDER: DefaultFinder = DefaultFinder::new();
9
+ }
10
+
11
+ #[no_mangle]
12
+ fn get_tz_name(lat: f64, lng: f64) -> RString {
13
+ let tz_name = RString::new(FINDER.get_tz_name(lng, lat));
14
+
15
+ return tz_name;
16
+ }
17
+
18
+ #[magnus::init]
19
+ fn init() -> Result<(), Error> {
20
+ let module = define_module("TZF")?;
21
+
22
+ module.define_singleton_method("tz_name", function!(get_tz_name, 2))?;
23
+
24
+ Ok(())
25
+ }
data/lib/tzf/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module TZF
4
- VERSION = "0.1.0"
4
+ VERSION = "0.2.1"
5
5
  end
data/lib/tzf.rb CHANGED
@@ -1,15 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative "tzf/version"
4
- require_relative "tzf/ffi_ext"
4
+ require_relative "tzf/tzf"
5
5
 
6
6
  ##
7
- # Top level.
7
+ # Top level module.
8
+ #
9
+ # Methods defined in ext/tzf/src/lib.rs
10
+ #
11
+ # Ex TZF.tz_name(latitude, longitude) => String
8
12
  #
9
13
  module TZF
10
14
  class Error < StandardError; end
11
-
12
- def self.tz_name(lat, lng)
13
- RS.get_tz_name(lat, lng)
14
- end
15
15
  end
@@ -1,4 +1,6 @@
1
- module tzf
1
+ module TZF
2
2
  VERSION: String
3
3
  # See the writing guide of rbs: https://github.com/ruby/rbs#guides
4
+
5
+ def self.tz_name: (Float, Float) -> String
4
6
  end
data/tzf.gemspec CHANGED
@@ -13,6 +13,7 @@ Gem::Specification.new do |spec|
13
13
  spec.homepage = "https://github.com/HarlemSquirrel/tzf-rb"
14
14
  spec.license = "MIT"
15
15
  spec.required_ruby_version = ">= 3.0.0"
16
+ spec.required_rubygems_version = ">= 3.3.11"
16
17
 
17
18
  spec.metadata["homepage_uri"] = spec.homepage
18
19
  spec.metadata["source_code_uri"] = "https://github.com/HarlemSquirrel/tzf-rb"
@@ -28,11 +29,7 @@ Gem::Specification.new do |spec|
28
29
  spec.bindir = "exe"
29
30
  spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
30
31
  spec.require_paths = ["lib"]
32
+ spec.extensions = ["ext/tzf/extconf.rb"]
31
33
 
32
- # Uncomment to register a new dependency of your gem
33
- spec.add_dependency "ffi", "~> 1.0"
34
-
35
- # For more information and examples about making a new gem, check out our
36
- # guide at: https://bundler.io/guides/creating_gem.html
37
34
  spec.metadata["rubygems_mfa_required"] = "true"
38
35
  end
metadata CHANGED
@@ -1,34 +1,21 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tzf
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kevin McCormack
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-02-21 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: ffi
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '1.0'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: '1.0'
11
+ date: 2023-02-22 00:00:00.000000000 Z
12
+ dependencies: []
27
13
  description: Ruby time zone lookup interface using tzf-rs.
28
14
  email:
29
15
  - kevin@mccormack.tech
30
16
  executables: []
31
- extensions: []
17
+ extensions:
18
+ - ext/tzf/extconf.rb
32
19
  extra_rdoc_files: []
33
20
  files:
34
21
  - ".rspec"
@@ -42,11 +29,13 @@ files:
42
29
  - LICENSE.txt
43
30
  - README.md
44
31
  - Rakefile
32
+ - ext/tzf/Cargo.lock
33
+ - ext/tzf/Cargo.toml
34
+ - ext/tzf/extconf.rb
35
+ - ext/tzf/src/lib.rs
45
36
  - lib/tzf.rb
46
- - lib/tzf/ffi_ext.rb
47
- - lib/tzf/libtzf.so
48
37
  - lib/tzf/version.rb
49
- - sig/tzf_rs_rb.rbs
38
+ - sig/tzf.rbs
50
39
  - src/lib.rs
51
40
  - tzf.gemspec
52
41
  homepage: https://github.com/HarlemSquirrel/tzf-rb
@@ -70,7 +59,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
70
59
  requirements:
71
60
  - - ">="
72
61
  - !ruby/object:Gem::Version
73
- version: '0'
62
+ version: 3.3.11
74
63
  requirements: []
75
64
  rubygems_version: 3.3.26
76
65
  signing_key:
data/lib/tzf/ffi_ext.rb DELETED
@@ -1,15 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "ffi"
4
-
5
- module TZF
6
- ##
7
- # Interface to tsf-rs Rust library.
8
- #
9
- module RS
10
- extend FFI::Library
11
-
12
- ffi_lib File.expand_path("libtzf.so", __dir__)
13
- attach_function :get_tz_name, %i[double double], :string
14
- end
15
- end
data/lib/tzf/libtzf.so DELETED
Binary file