rbstardict 0.1 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/lib/stardict.rb +20 -27
  2. metadata +1 -1
@@ -1,4 +1,4 @@
1
- #!/usr/bin/env ruby
1
+ #!/bin/ruby
2
2
  # Stardict library for ruby.
3
3
  #
4
4
  # Manipulates stardict dictionaries.
@@ -27,15 +27,19 @@ require 'rubygems'
27
27
  require 'zlib'
28
28
  require 'stringio'
29
29
  include Zlib
30
- $VERSION=0.1
30
+ $VERSION='0.1.1'
31
31
 
32
32
  class StarDict
33
- #Initialize a new stardict object, preifx
33
+ #Initialize a new stardict object, prefix
34
34
  #is the name of stardict files without extensions.
35
35
  #
36
36
  #example:
37
+ #
37
38
  # Dir.chdir(dict_dir)
38
- # stardict=StarDict.new('lang_to_lang_dict') #without '.idx','.ifo' or any extension .
39
+ # stardict=StarDict.new('lang_to_lang_dict') #without any extension.
40
+ # #you can also access dictionary options (.ifo file data) by:
41
+ #
42
+ # puts stardict.bookname #prints the book/dict name
39
43
  def initialize(prefix)
40
44
  @prefix=prefix
41
45
  @info=info_data
@@ -65,23 +69,20 @@ class StarDict
65
69
  def find_by_trans(trans)
66
70
  @wordlist.invert[trans] if trans_exists?(trans)
67
71
  end
68
- #Perform a fuzzy search in words, returns an array of results.
69
- def fuzzy_find_by_word(word)
70
- @wordlist.keys.map do |w|
71
- w if w.include?(word)
72
- end.compact!
73
- end
74
- #Perform a fuzzy search in translations, returns an array of results.
75
- def fuzzy_find_by_trans(trans)
76
- @wordlist.values.map do |w|
77
- w if w.include?(trans)
78
- end.compact!
72
+ #Performs a search in the whole dictionary, returns a hash of results.
73
+ def search(keyword)
74
+ re=@wordlist.
75
+ select do |k,v|
76
+ k.include?(keyword)|
77
+ v.include?(keyword)
78
+ end
79
+ Hash[*re.flatten!]
79
80
  end
80
81
  #Wordlist count.
81
82
  def wordlist_count
82
83
  @wordlist.length
83
84
  end
84
-
85
+
85
86
  private
86
87
 
87
88
  def info_data
@@ -117,24 +118,16 @@ class StarDict
117
118
  re=entry.unpack("A#{t_pos}NN")
118
119
  @dict.seek(re[1])
119
120
  word,trans=re[0],@dict.read(re[2])
120
- norm(word,trans)
121
121
  #for duplicated key:
122
122
  #append for exiting one
123
- #unless exists?(word)
124
- unless @wordlist[word].nil?
125
- @wordlist[word]+="::#{trans}"
123
+ #if it exisis
124
+ if @wordlist.key?(word)
125
+ @wordlist[word]+="\n#{trans}"
126
126
  else
127
127
  @wordlist[word]=trans
128
128
  end
129
129
  end;@wordlist
130
130
  end
131
-
132
- def norm(*args)
133
- #avoid single quotes
134
- #and replace \n with ::
135
- args.each{|a|a.gsub!("'","''")
136
- a.gsub!(/[\n\t]/,"::")}
137
- end
138
131
 
139
132
  def get_data(file,gz)
140
133
  begin
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rbstardict
3
3
  version: !ruby/object:Gem::Version
4
- version: "0.1"
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Abdelrahmn Ghanem