vimamsa 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 97b4b0a7b81410ecd6f7160ba4c8fa9e5d2bb125bccaeb501d3f3bb4d098d0ab
4
+ data.tar.gz: 60ad13b4c18d779fc6ace8748932fa6d385d9f4956d138bc50ab14d3851907a3
5
+ SHA512:
6
+ metadata.gz: c983fab629336a92be306b261835a72b1bccf98214e5be01f28dc4bc25b9c0c2e4a619e0bc256ca439680c1b12e5d510c12e52fe7b7cb9b34bdcc89ad7030670
7
+ data.tar.gz: 97b140540ca2951ffdef4627bcf907dc3408392ca1cdd123868f4d4cc03ead689973527a485240bd0232414ffbb26eadaacf9401c742633b62ddb7f5543898c9
data/.gitignore ADDED
@@ -0,0 +1,8 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /_yardoc/
4
+ /coverage/
5
+ /doc/
6
+ /pkg/
7
+ /spec/reports/
8
+ /tmp/
data/Gemfile ADDED
@@ -0,0 +1,8 @@
1
+ source "https://rubygems.org"
2
+
3
+ # git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
4
+
5
+ # Specify your gem's dependencies in vimamsa.gemspec
6
+ gemspec
7
+
8
+
data/README.md ADDED
@@ -0,0 +1,35 @@
1
+ # Vimamsa
2
+
3
+ Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/vimamsa`. To experiment with that code, run `bin/console` for an interactive prompt.
4
+
5
+ TODO: Delete this and the text above, and describe your gem
6
+
7
+ ## Installation
8
+
9
+ Add this line to your application's Gemfile:
10
+
11
+ ```ruby
12
+ gem 'vimamsa'
13
+ ```
14
+
15
+ And then execute:
16
+
17
+ $ bundle
18
+
19
+ Or install it yourself as:
20
+
21
+ $ gem install vimamsa
22
+
23
+ ## Usage
24
+
25
+ TODO: Write usage instructions here
26
+
27
+ ## Development
28
+
29
+ After checking out the repo, run `bin/setup` to install dependencies. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
30
+
31
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
32
+
33
+ ## Contributing
34
+
35
+ Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/vimamsa.
data/Rakefile ADDED
@@ -0,0 +1,2 @@
1
+ require "bundler/gem_tasks"
2
+ task :default => :spec
data/bin/console ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "vimamsa"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start(__FILE__)
data/bin/setup ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+
4
+ require 'mkmf'
5
+
6
+ module_name = "vimamsa"
7
+ extension_name = 'vimamsa'
8
+
9
+ dir_config(extension_name) # The destination
10
+ create_makefile(extension_name) # Create Makefile
11
+
@@ -0,0 +1,174 @@
1
+ #include <ruby.h>
2
+ // #include <gtk/gtk.h>
3
+ #include "ruby/ruby.h"
4
+
5
+ #include <stdio.h>
6
+ #include <string.h>
7
+ #include <stdlib.h>
8
+
9
+ #warning "C Preprocessor got here!"
10
+
11
+ typedef struct node {
12
+ int i;
13
+ void * next;
14
+ } node;
15
+
16
+
17
+ void add_to_list(unsigned char c, int i, struct node ** t) {
18
+ struct node * n;
19
+ struct node * np;
20
+
21
+ n =(struct node*) calloc(1,sizeof(struct node)); //TODO: free
22
+ n->i = i;
23
+ if(!t[c]) {
24
+ t[c] = n;
25
+ }
26
+ else {
27
+ np = t[c];
28
+ while (np->next) {
29
+ np = np->next;
30
+ }
31
+ np->next = n;
32
+ }
33
+ }
34
+
35
+ void dump_list(struct node**t) {
36
+ for(int i=0;i < 256; i++) {
37
+ if(t[i]) {
38
+ printf ("\n%c: ", (char) i);
39
+ struct node * n = t[i];
40
+ do {
41
+ printf ("%d ", n->i);
42
+ }
43
+ while (n = n->next);
44
+ }
45
+ }
46
+ }
47
+
48
+ float calc_sub_score(unsigned char* s1, unsigned char* s2, int i1, int i2) {
49
+
50
+ int s1_len = strlen(s1);
51
+ int s2_len = strlen(s2);
52
+ float sub_score = 1;
53
+ float score_inc = 1;
54
+ float score_inc_multip = 0.63212;
55
+ //float score_inc_multip = 0.23212;
56
+
57
+
58
+ // From i2 to zero
59
+ int i_s1 = i1-1;
60
+ //printf("{");
61
+ for (int i_s2=i2-1; i_s2 >= 0 && i_s1 >= 0;) {
62
+ if(s1[i_s1] == s2[i_s2]) {
63
+ //printf("%c",s1[i_s1]);
64
+ i_s1--; i_s2--;
65
+ sub_score += score_inc;
66
+ score_inc = 1;
67
+ }
68
+ else {i_s2--; score_inc = score_inc*score_inc_multip;}
69
+ }
70
+
71
+
72
+ // From i2 to end
73
+ score_inc = 1;
74
+ i_s1 = i1+1;
75
+ //printf("%c",s1[i1]);
76
+ for (int i_s2=i2+1; i_s2 < s2_len && i_s1 < s1_len;) {
77
+ if(s1[i_s1] == s2[i_s2]) {
78
+ //printf("%c",s1[i_s1]);
79
+ i_s1++; i_s2++;
80
+ sub_score += score_inc;
81
+ score_inc = 1;
82
+ }
83
+ else {i_s2++;score_inc = score_inc*score_inc_multip;}
84
+ }
85
+
86
+
87
+ //printf("}");
88
+ return sub_score;
89
+
90
+ }
91
+
92
+ float srn_dst(char * s1_sgn, char * s2_sgn) {
93
+ unsigned char* s1;
94
+ unsigned char* s2;
95
+ s1 = (unsigned char *) s1_sgn;
96
+ s2 = (unsigned char *) s2_sgn;
97
+ struct node** t;
98
+ int len_s1 = strlen(s1);
99
+ int len_s2 = strlen(s2);
100
+ t = (struct node**) calloc(256,sizeof(struct node*));
101
+ float score=0;
102
+ node * nA;
103
+ node * nB;
104
+ //printf("l1,2: %d %d\n",len_s1,len_s2);
105
+
106
+ for(int i_s2=0;i_s2 < strlen(s2); i_s2++) {
107
+ add_to_list(s2[i_s2],i_s2,t);
108
+ }
109
+
110
+ for(int i_s1=0;i_s1 < strlen(s1); i_s1++) {
111
+ struct node * n = t[s1[i_s1]];
112
+ if (n) {
113
+ float max_score = 0;
114
+ unsigned char c = s1[i_s1];
115
+ do {
116
+ float sub_score = calc_sub_score(s1,s2,i_s1,n->i);
117
+ if(sub_score > max_score) {max_score = sub_score;}
118
+ //printf(" i=%d %c %d [%f] \n",i_s1,c,n->i,sub_score);
119
+ } while(n = n->next);
120
+ score += max_score;
121
+ }
122
+ }
123
+
124
+ //dump_list(t);
125
+ float p =0.01;
126
+ score = (1-p)*score/(len_s1*len_s1) +p*score/(len_s1*len_s2);
127
+
128
+ // Free memory
129
+ for(int i=0;i<256;i++) {
130
+ if(t[i]) {
131
+ // node * nA = t[i];
132
+ // node * nB;
133
+ nA = t[i];
134
+ do {
135
+ nB = nA->next;
136
+ free(nA);
137
+ nA = nB;
138
+ } while (nA);
139
+ }
140
+ }
141
+ free(t);
142
+
143
+ return score;
144
+ }
145
+
146
+ void srn_dst_wrap(void *y) {
147
+ void **x = (void **)y;
148
+ char *a = (char *)x[0];
149
+ char *b = (char *)x[1];
150
+ float *d = (float *)x[2];
151
+ *d = srn_dst(a, b);
152
+ // printf("00000 A:%s B:%s %f\n",a,b,*d);
153
+ }
154
+
155
+ VALUE _srn_dst(VALUE self, VALUE s1, VALUE s2) {
156
+ VALUE ret;
157
+ float d;
158
+ void **ptr = malloc(sizeof(void *) * 3);
159
+ ptr[0] = (void *)StringValueCStr(s1);
160
+ ptr[1] = (void *)StringValueCStr(s2);
161
+ ptr[2] = (void *)&d;
162
+ rb_thread_call_without_gvl(srn_dst_wrap, ptr, NULL, NULL);
163
+ // d = srn_dst(StringValueCStr(s1), StringValueCStr(s2));
164
+ ret = rb_float_new(d);
165
+ free(ptr);
166
+ return ret;
167
+ }
168
+
169
+ void Init_vimamsa(void) {
170
+ printf("Init_vimamsa\n");
171
+ rb_define_global_function("srn_dst", _srn_dst, 2);
172
+ }
173
+
174
+
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+
4
+ require 'mkmf'
5
+
6
+ module_name = "vimamsa"
7
+ extension_name = 'vmaext'
8
+
9
+ dir_config(extension_name) # The destination
10
+ create_makefile(extension_name) # Create Makefile
11
+
@@ -0,0 +1,174 @@
1
+ #include <ruby.h>
2
+ // #include <gtk/gtk.h>
3
+ #include "ruby/ruby.h"
4
+
5
+ #include <stdio.h>
6
+ #include <string.h>
7
+ #include <stdlib.h>
8
+
9
+ #warning "C Preprocessor got here!"
10
+
11
+ typedef struct node {
12
+ int i;
13
+ void * next;
14
+ } node;
15
+
16
+
17
+ void add_to_list(unsigned char c, int i, struct node ** t) {
18
+ struct node * n;
19
+ struct node * np;
20
+
21
+ n =(struct node*) calloc(1,sizeof(struct node)); //TODO: free
22
+ n->i = i;
23
+ if(!t[c]) {
24
+ t[c] = n;
25
+ }
26
+ else {
27
+ np = t[c];
28
+ while (np->next) {
29
+ np = np->next;
30
+ }
31
+ np->next = n;
32
+ }
33
+ }
34
+
35
+ void dump_list(struct node**t) {
36
+ for(int i=0;i < 256; i++) {
37
+ if(t[i]) {
38
+ printf ("\n%c: ", (char) i);
39
+ struct node * n = t[i];
40
+ do {
41
+ printf ("%d ", n->i);
42
+ }
43
+ while (n = n->next);
44
+ }
45
+ }
46
+ }
47
+
48
+ float calc_sub_score(unsigned char* s1, unsigned char* s2, int i1, int i2) {
49
+
50
+ int s1_len = strlen(s1);
51
+ int s2_len = strlen(s2);
52
+ float sub_score = 1;
53
+ float score_inc = 1;
54
+ float score_inc_multip = 0.63212;
55
+ //float score_inc_multip = 0.23212;
56
+
57
+
58
+ // From i2 to zero
59
+ int i_s1 = i1-1;
60
+ //printf("{");
61
+ for (int i_s2=i2-1; i_s2 >= 0 && i_s1 >= 0;) {
62
+ if(s1[i_s1] == s2[i_s2]) {
63
+ //printf("%c",s1[i_s1]);
64
+ i_s1--; i_s2--;
65
+ sub_score += score_inc;
66
+ score_inc = 1;
67
+ }
68
+ else {i_s2--; score_inc = score_inc*score_inc_multip;}
69
+ }
70
+
71
+
72
+ // From i2 to end
73
+ score_inc = 1;
74
+ i_s1 = i1+1;
75
+ //printf("%c",s1[i1]);
76
+ for (int i_s2=i2+1; i_s2 < s2_len && i_s1 < s1_len;) {
77
+ if(s1[i_s1] == s2[i_s2]) {
78
+ //printf("%c",s1[i_s1]);
79
+ i_s1++; i_s2++;
80
+ sub_score += score_inc;
81
+ score_inc = 1;
82
+ }
83
+ else {i_s2++;score_inc = score_inc*score_inc_multip;}
84
+ }
85
+
86
+
87
+ //printf("}");
88
+ return sub_score;
89
+
90
+ }
91
+
92
+ float srn_dst(char * s1_sgn, char * s2_sgn) {
93
+ unsigned char* s1;
94
+ unsigned char* s2;
95
+ s1 = (unsigned char *) s1_sgn;
96
+ s2 = (unsigned char *) s2_sgn;
97
+ struct node** t;
98
+ int len_s1 = strlen(s1);
99
+ int len_s2 = strlen(s2);
100
+ t = (struct node**) calloc(256,sizeof(struct node*));
101
+ float score=0;
102
+ node * nA;
103
+ node * nB;
104
+ //printf("l1,2: %d %d\n",len_s1,len_s2);
105
+
106
+ for(int i_s2=0;i_s2 < strlen(s2); i_s2++) {
107
+ add_to_list(s2[i_s2],i_s2,t);
108
+ }
109
+
110
+ for(int i_s1=0;i_s1 < strlen(s1); i_s1++) {
111
+ struct node * n = t[s1[i_s1]];
112
+ if (n) {
113
+ float max_score = 0;
114
+ unsigned char c = s1[i_s1];
115
+ do {
116
+ float sub_score = calc_sub_score(s1,s2,i_s1,n->i);
117
+ if(sub_score > max_score) {max_score = sub_score;}
118
+ //printf(" i=%d %c %d [%f] \n",i_s1,c,n->i,sub_score);
119
+ } while(n = n->next);
120
+ score += max_score;
121
+ }
122
+ }
123
+
124
+ //dump_list(t);
125
+ float p =0.01;
126
+ score = (1-p)*score/(len_s1*len_s1) +p*score/(len_s1*len_s2);
127
+
128
+ // Free memory
129
+ for(int i=0;i<256;i++) {
130
+ if(t[i]) {
131
+ // node * nA = t[i];
132
+ // node * nB;
133
+ nA = t[i];
134
+ do {
135
+ nB = nA->next;
136
+ free(nA);
137
+ nA = nB;
138
+ } while (nA);
139
+ }
140
+ }
141
+ free(t);
142
+
143
+ return score;
144
+ }
145
+
146
+ void srn_dst_wrap(void *y) {
147
+ void **x = (void **)y;
148
+ char *a = (char *)x[0];
149
+ char *b = (char *)x[1];
150
+ float *d = (float *)x[2];
151
+ *d = srn_dst(a, b);
152
+ // printf("00000 A:%s B:%s %f\n",a,b,*d);
153
+ }
154
+
155
+ VALUE _srn_dst(VALUE self, VALUE s1, VALUE s2) {
156
+ VALUE ret;
157
+ float d;
158
+ void **ptr = malloc(sizeof(void *) * 3);
159
+ ptr[0] = (void *)StringValueCStr(s1);
160
+ ptr[1] = (void *)StringValueCStr(s2);
161
+ ptr[2] = (void *)&d;
162
+ rb_thread_call_without_gvl(srn_dst_wrap, ptr, NULL, NULL);
163
+ // d = srn_dst(StringValueCStr(s1), StringValueCStr(s2));
164
+ ret = rb_float_new(d);
165
+ free(ptr);
166
+ return ret;
167
+ }
168
+
169
+ void Init_vmaext(void) {
170
+ printf("Init_vmaext\n");
171
+ rb_define_global_function("srn_dst", _srn_dst, 2);
172
+ }
173
+
174
+
data/lib/vimamsa.rb ADDED
@@ -0,0 +1,10 @@
1
+ require "vimamsa/version"
2
+ require "vmaext"
3
+
4
+ module Vimamsa
5
+ # Your code goes here...
6
+ def self.test
7
+ puts "Vimamsa test"
8
+ puts srn_dst("foobar","baz")
9
+ end
10
+ end
@@ -0,0 +1,3 @@
1
+ module Vimamsa
2
+ VERSION = "0.1.0"
3
+ end
data/vimamsa.gemspec ADDED
@@ -0,0 +1,40 @@
1
+
2
+ lib = File.expand_path("../lib", __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require "vimamsa/version"
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "vimamsa"
8
+ spec.version = Vimamsa::VERSION
9
+ spec.authors = ["Sami Sieranoja"]
10
+ spec.email = ["sami.sieranoja@gmail.com"]
11
+
12
+ spec.summary = %q{Vimamsa}
13
+ spec.description = %q{Vimamsa.}
14
+ spec.homepage = "https://github.com/SamiSieranoja/vimamsa"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
17
+ f.match(%r{^(refcode|spec|features)/})
18
+ end
19
+ spec.bindir = "exe"
20
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
21
+ spec.require_paths = ["lib","ext"]
22
+
23
+ spec.add_development_dependency "bundler", "~> 1.16"
24
+ spec.add_development_dependency "rake", "~> 10.0"
25
+
26
+ spec.add_runtime_dependency 'rufo', '~> 0.5'
27
+
28
+ spec.add_runtime_dependency 'ripl', '~> 0.7'
29
+ spec.add_runtime_dependency 'ripl-multi_line', '~> 0.3.1'
30
+ spec.add_runtime_dependency 'gdk3', '~> 3.4'
31
+ spec.add_runtime_dependency 'gtk3', '~> 3.4'
32
+ spec.add_runtime_dependency 'gtksourceview3', '~> 3.4'
33
+ # spec.add_runtime_dependency 'gtksourceview4'
34
+ spec.add_runtime_dependency 'parallel', '~> 1.14'
35
+
36
+ spec.extensions = ["ext/vmaext/extconf.rb"]
37
+ spec.licenses = ['GPL-3.0+']
38
+ # FileList["ext/**/extconf.rb"]
39
+
40
+ end
metadata ADDED
@@ -0,0 +1,185 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: vimamsa
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Sami Sieranoja
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2021-03-14 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.16'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.16'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rufo
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '0.5'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '0.5'
55
+ - !ruby/object:Gem::Dependency
56
+ name: ripl
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0.7'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '0.7'
69
+ - !ruby/object:Gem::Dependency
70
+ name: ripl-multi_line
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 0.3.1
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 0.3.1
83
+ - !ruby/object:Gem::Dependency
84
+ name: gdk3
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '3.4'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '3.4'
97
+ - !ruby/object:Gem::Dependency
98
+ name: gtk3
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '3.4'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '3.4'
111
+ - !ruby/object:Gem::Dependency
112
+ name: gtksourceview3
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '3.4'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '3.4'
125
+ - !ruby/object:Gem::Dependency
126
+ name: parallel
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '1.14'
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '1.14'
139
+ description: Vimamsa.
140
+ email:
141
+ - sami.sieranoja@gmail.com
142
+ executables: []
143
+ extensions:
144
+ - ext/vmaext/extconf.rb
145
+ extra_rdoc_files: []
146
+ files:
147
+ - ".gitignore"
148
+ - Gemfile
149
+ - README.md
150
+ - Rakefile
151
+ - bin/console
152
+ - bin/setup
153
+ - ext/vimamsa/extconf.rb
154
+ - ext/vimamsa/vimamsa.c
155
+ - ext/vmaext/extconf.rb
156
+ - ext/vmaext/vmaext.c
157
+ - lib/vimamsa.rb
158
+ - lib/vimamsa/version.rb
159
+ - vimamsa.gemspec
160
+ homepage: https://github.com/SamiSieranoja/vimamsa
161
+ licenses:
162
+ - GPL-3.0+
163
+ metadata: {}
164
+ post_install_message:
165
+ rdoc_options: []
166
+ require_paths:
167
+ - lib
168
+ - ext
169
+ required_ruby_version: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ required_rubygems_version: !ruby/object:Gem::Requirement
175
+ requirements:
176
+ - - ">="
177
+ - !ruby/object:Gem::Version
178
+ version: '0'
179
+ requirements: []
180
+ rubyforge_project:
181
+ rubygems_version: 2.7.6
182
+ signing_key:
183
+ specification_version: 4
184
+ summary: Vimamsa
185
+ test_files: []