rubyfca 0.2.2 → 0.2.4

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -1,21 +1,5 @@
1
- *.gem
2
- *.rbc
3
- .bundle
4
- .config
5
- .yardoc
6
- Gemfile.lock
7
- InstalledFiles
8
- _yardoc
1
+ *.sw?
2
+ .DS_Store
9
3
  coverage
10
- doc/
11
- lib/bundler/man
12
- pkg
13
4
  rdoc
14
- spec/reports
15
- test/tmp
16
- test/version_tmp
17
- tmp
18
- .DS_Store
19
- *.bak
20
- *.~
21
- *.log
5
+ pkg
data/README.rdoc CHANGED
@@ -4,7 +4,7 @@ Command line tool for Formal Concept Analysis (FCA) written in Ruby.
4
4
 
5
5
  == Features
6
6
 
7
- * Convert a Conexp's CXT or CSV file and generate a Graphviz DOT file, or a PNG/JPG/EPS image file.
7
+ * Convert a Conexp's CXT file and generate a Graphviz DOT file, or a PNG/JPG/EPS image file.
8
8
  * Adopt the Ganter algorithm (through its Perl implementation of Fcastone by Uta Priss).
9
9
 
10
10
  == Installation
@@ -19,7 +19,7 @@ Install the gem:
19
19
 
20
20
  where:
21
21
  <source file>
22
- "foo.cxt", "foo.csv"
22
+ "foo.cxt"
23
23
  <output file>
24
24
  "bar.dot", "bar.png", "bar.jpg", or "bar.eps"
25
25
  [options]:
@@ -33,6 +33,7 @@ Install the gem:
33
33
 
34
34
  == ToDo
35
35
 
36
+ * Multiple input formats (such as CSV)
36
37
  * Database connection capability
37
38
 
38
39
  == Links
@@ -41,4 +42,4 @@ under construction
41
42
 
42
43
  == Copyright
43
44
 
44
- Copyright (c) 2009-2012 Yoichiro Hasebe and Kow Kuroda. See LICENSE for details.
45
+ Copyright (c) 2009 Yoichiro Hasebe and Kow Kuroda. See LICENSE for details.
data/Rakefile CHANGED
@@ -1,2 +1,56 @@
1
- #!/usr/bin/env rake
2
- require "bundler/gem_tasks"
1
+ require 'rubygems'
2
+ require 'rake'
3
+
4
+ begin
5
+ require 'jeweler'
6
+ Jeweler::Tasks.new do |gem|
7
+ gem.name = "rubyfca"
8
+ gem.summary = %Q{TODO: one-line summary of your gem}
9
+ gem.description = %Q{TODO: longer description of your gem}
10
+ gem.email = "yohasebe@gmail.com"
11
+ gem.homepage = "http://github.com/yohasebe/rubyfca"
12
+ gem.authors = ["Yoichiro Hasebe"]
13
+ gem.add_development_dependency "thoughtbot-shoulda"
14
+ # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
15
+ end
16
+ rescue LoadError
17
+ puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
18
+ end
19
+
20
+ require 'rake/testtask'
21
+ Rake::TestTask.new(:test) do |test|
22
+ test.libs << 'lib' << 'test'
23
+ test.pattern = 'test/**/*_test.rb'
24
+ test.verbose = true
25
+ end
26
+
27
+ begin
28
+ require 'rcov/rcovtask'
29
+ Rcov::RcovTask.new do |test|
30
+ test.libs << 'test'
31
+ test.pattern = 'test/**/*_test.rb'
32
+ test.verbose = true
33
+ end
34
+ rescue LoadError
35
+ task :rcov do
36
+ abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
37
+ end
38
+ end
39
+
40
+ task :test => :check_dependencies
41
+
42
+ task :default => :test
43
+
44
+ require 'rake/rdoctask'
45
+ Rake::RDocTask.new do |rdoc|
46
+ if File.exist?('VERSION')
47
+ version = File.read('VERSION')
48
+ else
49
+ version = ""
50
+ end
51
+
52
+ rdoc.rdoc_dir = 'rdoc'
53
+ rdoc.title = "rubyfca #{version}"
54
+ rdoc.rdoc_files.include('README*')
55
+ rdoc.rdoc_files.include('lib/**/*.rb')
56
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.2.4
data/bin/rubyfca CHANGED
@@ -1,15 +1,14 @@
1
1
  #!/usr/bin/env ruby
2
- # -*- coding: utf-8 -*-
3
- Encoding.default_external = "UTF-8"
4
-
5
2
 
6
3
  $:.unshift File.join(File.dirname(__FILE__), '..', 'lib')
4
+ require 'trollop'
7
5
  require 'rubyfca'
6
+ require 'ruby_graphviz'
8
7
 
9
8
  ################ parse options ##########
10
9
 
11
10
  opts = Trollop::options do
12
- version RubyFCA::VERSION
11
+ version = File.read(File.dirname(__FILE__) + "/../VERSION")
13
12
  banner <<-EOS
14
13
 
15
14
  RubuFCA converts Conexp CXT data to Graphviz dot format.
@@ -19,24 +18,19 @@ Usage:
19
18
 
20
19
  where:
21
20
  <source file>
22
- ".cxt", ".csv"
21
+ ".cxt"
23
22
  <output file>
24
23
  ."dot", ".png", ".jpg", or ".eps"
25
24
  [options]:
26
25
  EOS
27
26
 
27
+ opt :circle, "Use circle shaped concept nodes", :default=> false
28
28
  opt :full, "Do not contract concept labels", :default=> false
29
- opt :coloring, "Color concept nodes [0 = none (default), 1 = lightblue/pink, 2 = monochrome]", :default => 0
30
- opt :straight, "Straighten edges (available when output format is either png, jpg, svg, pdf, or eps)", :default => false
31
- opt :nodesep, "Size of separation between sister nodes (from 0.1 to 5.0)", :default => 0.4
32
- opt :ranksep, "Size of separation between ranks (from 0.1 to 5.0)", :default => 0.2
33
29
  opt :legend, "Print the legend of concept nodes (available only when using circle node shape)", :default => false
34
- opt :circle, "Use circle shaped concept nodes", :default=> false
35
-
30
+ opt :coloring, "Color concept nodes", :default => false
31
+ opt :straight, "Straighten edges (available when output format is either png, jpg, or eps)", :default => false
36
32
  end
37
- Trollop::die :coloring, "must be 0, 1, or 2" if (opts[:coloring] > 2 || opts[:coloring] < 0)
38
- Trollop::die :ranksep, "must be within 0.1 - 5.0" if (opts[:ranksep] < 0.1 || opts[:ranksep] > 5.0)
39
- Trollop::die :nodesep, "must be within 0.1 - 5.0" if (opts[:nodesep] < 0.1 || opts[:nodesep] > 5.0)
33
+
40
34
  ############### main program ###############
41
35
 
42
36
  if ARGV.size != 2
@@ -52,17 +46,15 @@ filename2 = ARGV[1] #output filename
52
46
  input_type = filename1.slice(/\.[^\.]+\z/).split(//)[1..-1].join("")
53
47
  output_type = filename2.slice(/\.[^\.]+\z/).split(//)[1..-1].join("")
54
48
 
55
- if (input_type !~ /\A(cxt|csv)\z/ || output_type !~ /\A(dot|png|jpg|svg|pdf|eps)\z/)
49
+ if (input_type !~ /\A(cxt|csv)\z/ || output_type !~ /\A(dot|png|jpg|eps)\z/)
56
50
  showerror("These file extensions are not (yet) supported.", 1)
57
51
  end
58
52
 
59
53
  #
60
- # input data is kept as plain text
54
+ # input cxt data is kept as plain text
61
55
  #
62
- f = File.open(filename1, "r:UTF-8:UTF-8")
63
-
56
+ f = File.open(filename1, "r")
64
57
  inputdata = f.read
65
- inputdata.gsub!(/\r\n?/){"\n"}
66
58
  f.close
67
59
 
68
60
  #
@@ -80,7 +72,7 @@ end
80
72
  # context data is converted to a hash table
81
73
  #
82
74
  begin
83
- ctxt = FormalContext.new(inputdata, input_type, !opts[:full])
75
+ ctxt = FormalContext.new(inputdata, opts[:full])
84
76
  ctxt.calcurate
85
77
  # rescue => e
86
78
  # puts e
@@ -99,10 +91,6 @@ when "png"
99
91
  ctxt.generate_img(filename2, "png", opts)
100
92
  when "jpg"
101
93
  ctxt.generate_img(filename2, "jpg", opts)
102
- when "svg"
103
- ctxt.generate_img(filename2, "svg", opts)
104
- when "pdf"
105
- ctxt.generate_img(filename2, "pdf", opts)
106
94
  when "eps"
107
95
  ctxt.generate_img(filename2, "eps", opts)
108
96
  end
@@ -1,6 +1,3 @@
1
- #!/usr/bin/env ruby
2
- # -*- coding: utf-8 -*-
3
-
4
1
  ## lib/ruby_graphviz.rb -- graphviz dot generator library
5
2
  ## Author:: Yoichiro Hasebe (mailto: yohasebe@gmail.com)
6
3
  ## Copyright:: Copyright 2009 Yoichiro Hasebe
data/lib/rubyfca.rb CHANGED
@@ -1,18 +1,11 @@
1
- #!/usr/bin/env ruby
2
- # -*- coding: utf-8 -*-
3
-
4
1
  ## lib/rubyfca.rb -- Formal Concept Analysis tool in Ruby
5
2
  ## Author:: Yoichiro Hasebe (mailto: yohasebe@gmail.com)
6
3
  ## Kow Kuroda (mailto: kuroda@nict.go.jp)
7
4
  ## Copyright:: Copyright 2009 Yoichiro Hasebe and Kow Kuroda
8
5
  ## License:: GNU GPL version 3
9
6
 
10
- $: << File.dirname(__FILE__) + "/rubyfca"
11
-
12
- require 'csv'
7
+ $KCODE ='utf-8'
13
8
  require 'ruby_graphviz'
14
- require 'version'
15
- require 'trollop'
16
9
 
17
10
  private
18
11
 
@@ -46,65 +39,22 @@ end
46
39
  class FormalContext
47
40
 
48
41
  ## Converte cxt data to three basic structures of objects, attributes, and matrix
49
- def initialize(input, mode, label_contraction = false)
42
+ def initialize(input, label_contraction = true)
50
43
  if input.size == 0
51
44
  showerror("File is empty", 1)
52
45
  end
53
- input.gsub!(" ", "&nbsp;")
54
- # begin
55
- case mode
56
- when /cxt\z/
57
- read_cxt(input)
58
- when /csv\z/
59
- read_csv(input)
60
- end
61
- # rescue => e
62
- # showerror("Input data contains a syntax problem.", 1)
63
- # end
64
- @label_contraction = label_contraction
65
- end
66
-
67
- ## process cxt data
68
- def read_cxt(input)
69
46
  lines = input.split
70
47
  t1 = 3
71
48
  if (lines[0] !~ /B/i || (2 * lines[1].to_i + lines[2].to_i + t1) != lines.size)
72
49
  showerror("Wrong cxt format!", 1)
73
50
  end
51
+
52
+ @label_contraction = label_contraction
53
+
74
54
  @objects = lines[t1..(lines[1].to_i + t1 - 1)]
75
55
  @attributes = lines[(lines[1].to_i + t1) .. (lines[1].to_i + lines[2].to_i + t1 - 1)]
76
56
  lines = lines[(lines[1].to_i + lines[2].to_i + t1) .. lines.size]
77
- @matrix = changecrosssymbol("X", "\\.", lines)
78
- end
79
-
80
- # process csv data using the standard csv library
81
- def read_csv(input)
82
- input = remove_blank(input)
83
- data = CSV.parse(input)
84
- @objects = trim_ary(data.transpose.first[1..-1])
85
- @attributes = trim_ary(data.first[1..-1])
86
- @matrix = []
87
- data[1..-1].each do |line|
88
- @matrix << line[1..-1].collect { |cell| /x/i =~ cell ? 1 : 0 }
89
- end
90
- end
91
-
92
- def remove_blank(input)
93
- blank_removed = ""
94
- input.split("\n").each do |line|
95
- line = line.strip
96
- unless /\A\s*\z/ =~ line
97
- blank_removed << line + "\n"
98
- end
99
- end
100
- blank_removed
101
- end
102
-
103
- def trim_ary(ary)
104
- newary = ary.collect do |cell|
105
- cell.strip
106
- end
107
- newary
57
+ @matrix = changecrosssymbol("X", "\\.", lines)
108
58
  end
109
59
 
110
60
  ## Apply a formal concept analysis on the matrix
@@ -201,8 +151,8 @@ class FormalContext
201
151
  a1 = extension[0].join("")
202
152
  a2 = extension[1].join("")
203
153
  if a1 == a2
204
- extension.shift
205
- intension.shift
154
+ shift extension
155
+ shift intension
206
156
  anzCpt -= 1
207
157
  end
208
158
 
@@ -334,9 +284,8 @@ class FormalContext
334
284
  ## For options, see 'rubyfca'
335
285
  def generate_dot(opts)
336
286
  index_max_width = @concepts.size.to_s.split(//).size
337
- nodesep = opts[:nodesep] ? opts[:nodesep].to_s : "0.4"
338
- ranksep = opts[:ranksep] ? opts[:ranksep].to_s : "0.2"
339
- clattice = RubyGraphviz.new("clattice", :rankdir => "", :nodesep => nodesep, :ranksep => ranksep)
287
+
288
+ clattice = RubyGraphviz.new("clattice", :rankdir => "", :nodesep => "0.4", :ranksep => "0.2")
340
289
 
341
290
  if opts[:circle] and opts[:legend]
342
291
  legend = RubyGraphviz.new("legend", :rankdir => "TB", :lebelloc => "t", :centered => "false")
@@ -360,9 +309,7 @@ class FormalContext
360
309
  attrfull = []
361
310
  0.upto(@gammaM.size - 1) do |j|
362
311
  if @gammaM[j][i] == 2
363
- # pointing finger does not appear correctly in eps...
364
- # obj = opts[:full] ? @objects[j] + " " + [0x261C].pack("U") : @objects[j]
365
- obj = opts[:full] ? @objects[j] + "*" : @objects[j]
312
+ obj = opts[:full] ? @objects[j] + " " + [0x261C].pack("U") : @objects[j]
366
313
  objfull << obj
367
314
  elsif @gammaM[j][i] == 1
368
315
  objfull << @objects[j]
@@ -370,9 +317,7 @@ class FormalContext
370
317
  end
371
318
  0.upto(@muM.size - 1) do |k|
372
319
  if @muM[k][i] == 2
373
- # pointing finger does not appear correctly in eps...
374
- # att = opts[:full] ? @attributes[k] + " " + [0x261C].pack("U") : @attributes[k]
375
- att = opts[:full] ? @attributes[k] + "*" : @attributes[k]
320
+ att = opts[:full] ? @attributes[k] + " " + [0x261C].pack("U") : @attributes[k]
376
321
  attrfull << att
377
322
  elsif @muM[k][i] == 1
378
323
  attrfull << @attributes[k]
@@ -383,25 +328,10 @@ class FormalContext
383
328
 
384
329
  attr_str = attrfull.join('<br />')
385
330
  attr_str = attr_str == "" ? " " : attr_str
386
-
387
- if opts[:coloring] == 0 or /\A\s+\z/ =~ attr_str
388
- attr_color = "white"
389
- elsif opts[:coloring] == 1
390
- attr_color = "lightblue"
391
- elsif opts[:coloring] == 2
392
- attr_color = "gray87"
393
- end
394
-
331
+ attr_color = (!opts[:coloring] || /\A\s+\z/ =~ attr_str) ? "white" : "lightblue"
395
332
  obj_str = objfull.join('<br />')
396
333
  obj_str = obj_str == "" ? " " : obj_str
397
-
398
- if opts[:coloring] == 0 or /\A\s+\z/ =~ obj_str
399
- obj_color = "white"
400
- elsif opts[:coloring] == 1
401
- obj_color = "pink"
402
- elsif opts[:coloring] == 2
403
- obj_color = "gray92"
404
- end
334
+ obj_color = (!opts[:coloring] || /\A\s+\z/ =~ obj_str) ? "white" : "pink"
405
335
 
406
336
  label = "<<table border=\"0\" cellborder=\"1\" cellspacing=\"0\">" +
407
337
  "<tr><td balign=\"left\" align=\"left\" bgcolor=\"#{attr_color}\">#{attr_str}</td></tr>" +
@@ -415,7 +345,7 @@ class FormalContext
415
345
  "<tr><td balign=\"left\" align=\"left\" bgcolor=\"#{obj_color}\">#{obj_str}</td></tr>" +
416
346
  "</table>>"
417
347
 
418
- if !attrfull.empty? or !objfull.empty?
348
+ if !attrfull.empty? and !objfull.empty?
419
349
  legend.node("cl#{concept_id}k", :label => concept_id, :style => "invis")
420
350
  legend.node("cl#{concept_id}v", :label => leg, :fillcolor => "white")
421
351
  legend.rank("cl#{concept_id}k", "cl#{concept_id}v", :style => "invis", :length => "0.0")
@@ -413,7 +413,7 @@ class Parser
413
413
 
414
414
  ## Print the help message to +stream+.
415
415
  def educate stream=$stdout
416
- width # just calcurate it now; otherwise we have to be careful not to
416
+ width # just calculate it now; otherwise we have to be careful not to
417
417
  # call this unless the cursor's at the beginning of a line.
418
418
 
419
419
  left = {}
data/rubyfca.gemspec CHANGED
@@ -1,17 +1,59 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run `rake gemspec`
1
4
  # -*- encoding: utf-8 -*-
2
- require File.expand_path('../lib/rubyfca/version', __FILE__)
3
5
 
4
- Gem::Specification.new do |gem|
5
- gem.authors = ["Yoichiro Hasebe", "Kow Kuroda"]
6
- gem.email = ["yohasebe@gmail.com"]
7
- gem.summary = %q{Command line FCA tool written in Ruby}
8
- gem.description = %q{Command line Formal Concept Analysis (FCA) tool written in Ruby}
9
- gem.homepage = "http://github.com/yohasebe/rubyfca"
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{rubyfca}
8
+ s.version = "0.2.4"
10
9
 
11
- gem.files = `git ls-files`.split($\)
12
- gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
13
- gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
14
- gem.name = "rubyfca"
15
- gem.require_paths = ["lib"]
16
- gem.version = RubyFCA::VERSION
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Yoichiro Hasebe", "Kow Kuroda"]
12
+ s.date = %q{2009-09-04}
13
+ s.default_executable = %q{rubyfca}
14
+ s.description = %q{Command line Formal Concept Ananlysis (FCA) tool written in Ruby}
15
+ s.email = %q{yohasebe@gmail.com}
16
+ s.executables = ["rubyfca"]
17
+ s.extra_rdoc_files = [
18
+ "LICENSE",
19
+ "README.rdoc"
20
+ ]
21
+ s.files = [
22
+ ".document",
23
+ ".gitignore",
24
+ "LICENSE",
25
+ "README.rdoc",
26
+ "Rakefile",
27
+ "VERSION",
28
+ "bin/rubyfca",
29
+ "lib/ruby_graphviz.rb",
30
+ "lib/rubyfca.rb",
31
+ "lib/trollop.rb",
32
+ "rubyfca.gemspec",
33
+ "test/rubyfca_test.rb",
34
+ "test/test_data.cxt",
35
+ "test/test_helper.rb"
36
+ ]
37
+ s.homepage = %q{http://github.com/yohasebe/rubyfca}
38
+ s.rdoc_options = ["--charset=UTF-8"]
39
+ s.require_paths = ["lib"]
40
+ s.rubygems_version = %q{1.3.5}
41
+ s.summary = %q{Command line Formal Concept Analysis (FCA) tool written in Ruby}
42
+ s.test_files = [
43
+ "test/rubyfca_test.rb",
44
+ "test/test_helper.rb"
45
+ ]
46
+
47
+ if s.respond_to? :specification_version then
48
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
49
+ s.specification_version = 3
50
+
51
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
52
+ s.add_development_dependency(%q<thoughtbot-shoulda>, [">= 0"])
53
+ else
54
+ s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
55
+ end
56
+ else
57
+ s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
58
+ end
17
59
  end
data/test/test_data.cxt CHANGED
@@ -8,18 +8,18 @@ Sparrow
8
8
  Eagle
9
9
  Lion
10
10
  Bonobo
11
- Human being
11
+ Human
12
12
  bird
13
13
  mammal
14
14
  ape
15
15
  flying
16
16
  preying
17
17
  talking
18
- XXX...
19
- ...XXX
20
- ....XX
18
+ X.....
19
+ X..X..
20
+ X..XX.
21
+ .X..X.
21
22
  .XX...
22
- ..XX..
23
- .....X
23
+ .XX..X
24
24
 
25
25
 
metadata CHANGED
@@ -1,65 +1,80 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: rubyfca
3
- version: !ruby/object:Gem::Version
4
- version: 0.2.2
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.4
5
5
  platform: ruby
6
- authors:
6
+ authors:
7
7
  - Yoichiro Hasebe
8
8
  - Kow Kuroda
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-05-28 00:00:00.000000000 Z
13
- dependencies: []
14
- description: Command line Formal Concept Analysis (FCA) tool written in Ruby
15
- email:
16
- - yohasebe@gmail.com
17
- executables:
12
+
13
+ date: 2009-09-04 00:00:00 +09:00
14
+ default_executable: rubyfca
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: thoughtbot-shoulda
18
+ type: :development
19
+ version_requirement:
20
+ version_requirements: !ruby/object:Gem::Requirement
21
+ requirements:
22
+ - - ">="
23
+ - !ruby/object:Gem::Version
24
+ version: "0"
25
+ version:
26
+ description: Command line Formal Concept Ananlysis (FCA) tool written in Ruby
27
+ email: yohasebe@gmail.com
28
+ executables:
18
29
  - rubyfca
19
30
  extensions: []
20
- extra_rdoc_files: []
21
- files:
22
- - ".document"
23
- - ".gitignore"
24
- - Gemfile
31
+
32
+ extra_rdoc_files:
33
+ - LICENSE
34
+ - README.rdoc
35
+ files:
36
+ - .document
37
+ - .gitignore
25
38
  - LICENSE
26
39
  - README.rdoc
27
40
  - Rakefile
41
+ - VERSION
28
42
  - bin/rubyfca
43
+ - lib/ruby_graphviz.rb
29
44
  - lib/rubyfca.rb
30
- - lib/rubyfca/ruby_graphviz.rb
31
- - lib/rubyfca/trollop.rb
32
- - lib/rubyfca/version.rb
45
+ - lib/trollop.rb
33
46
  - rubyfca.gemspec
34
47
  - test/rubyfca_test.rb
35
- - test/test_data.csv
36
48
  - test/test_data.cxt
37
49
  - test/test_helper.rb
50
+ has_rdoc: true
38
51
  homepage: http://github.com/yohasebe/rubyfca
39
52
  licenses: []
40
- metadata: {}
53
+
41
54
  post_install_message:
42
- rdoc_options: []
43
- require_paths:
55
+ rdoc_options:
56
+ - --charset=UTF-8
57
+ require_paths:
44
58
  - lib
45
- required_ruby_version: !ruby/object:Gem::Requirement
46
- requirements:
59
+ required_ruby_version: !ruby/object:Gem::Requirement
60
+ requirements:
47
61
  - - ">="
48
- - !ruby/object:Gem::Version
49
- version: '0'
50
- required_rubygems_version: !ruby/object:Gem::Requirement
51
- requirements:
62
+ - !ruby/object:Gem::Version
63
+ version: "0"
64
+ version:
65
+ required_rubygems_version: !ruby/object:Gem::Requirement
66
+ requirements:
52
67
  - - ">="
53
- - !ruby/object:Gem::Version
54
- version: '0'
68
+ - !ruby/object:Gem::Version
69
+ version: "0"
70
+ version:
55
71
  requirements: []
72
+
56
73
  rubyforge_project:
57
- rubygems_version: 2.4.5
74
+ rubygems_version: 1.3.5
58
75
  signing_key:
59
- specification_version: 4
60
- summary: Command line FCA tool written in Ruby
61
- test_files:
76
+ specification_version: 3
77
+ summary: Command line Formal Concept Analysis (FCA) tool written in Ruby
78
+ test_files:
62
79
  - test/rubyfca_test.rb
63
- - test/test_data.csv
64
- - test/test_data.cxt
65
80
  - test/test_helper.rb
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: 1a7c7bc3a45c296b6a2a7447106284ff7cef7871
4
- data.tar.gz: d5da0d7b0dffe7d8b33dd662133222bbe0720c10
5
- SHA512:
6
- metadata.gz: 99a30f945baf45ec345c9ed614b9de725a743784f09136434117db65d6e2a7bef10ccf3cd9131eb28d1d5364efa9bf8d464e9ff939bbe789ef81a0ea2b2b109f
7
- data.tar.gz: 4642dbe52edc0c57d17f3d8401f8531a29b2019327180114d9d7e38a375d76f858d6801e359036151bc88cdffe7186a17ea55a84754d64b41919afa747c1adeb
data/Gemfile DELETED
@@ -1,4 +0,0 @@
1
- source 'https://rubygems.org'
2
- # gem "trollop"
3
- # Specify your gem's dependencies in ..gemspec
4
- gemspec
@@ -1,3 +0,0 @@
1
- module RubyFCA
2
- VERSION = "0.2.2"
3
- end
data/test/test_data.csv DELETED
@@ -1,7 +0,0 @@
1
- ,Ostrich, Sparrow, Eagle, Lion, Bonobo, Human being
2
- bird ,X,X,X,.,.,.
3
- mammal ,.,.,.,X,X,X
4
- ape ,.,.,.,.,X,X
5
- flying ,.,X,X,.,.,.
6
- preying,.,.,X,X,.,.
7
- talking,.,.,.,.,.,X