dictionaries 0.3.81

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.
Files changed (51) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +354 -0
  3. data/bin/dictionaries +7 -0
  4. data/bin/unique_words_in_this_file +7 -0
  5. data/dictionaries.gemspec +84 -0
  6. data/doc/README.gen +292 -0
  7. data/doc/todo/todo.md +8 -0
  8. data/lib/dictionaries/ask_english_word.rb +141 -0
  9. data/lib/dictionaries/ask_italian_word.rb +84 -0
  10. data/lib/dictionaries/base/base.rb +78 -0
  11. data/lib/dictionaries/class/class.rb +903 -0
  12. data/lib/dictionaries/commandline/parse_commandline.rb +85 -0
  13. data/lib/dictionaries/constants/constants.rb +134 -0
  14. data/lib/dictionaries/gui/tk/README.md +2 -0
  15. data/lib/dictionaries/gui/tk/dictionary.rb +85 -0
  16. data/lib/dictionaries/gui/universal_widgets/dictionary/dictionary.rb +516 -0
  17. data/lib/dictionaries/helper_module/helper_module.rb +60 -0
  18. data/lib/dictionaries/project/project.rb +36 -0
  19. data/lib/dictionaries/require_project/require_project.rb +14 -0
  20. data/lib/dictionaries/sinatra/app.rb +123 -0
  21. data/lib/dictionaries/sinatra/english_to_german.rb +84 -0
  22. data/lib/dictionaries/spell_checker/README.md +5 -0
  23. data/lib/dictionaries/spell_checker/spell_checker.rb +133 -0
  24. data/lib/dictionaries/statistics/statistics.rb +59 -0
  25. data/lib/dictionaries/toplevel_methods/e.rb +16 -0
  26. data/lib/dictionaries/toplevel_methods/english_to_german.rb +31 -0
  27. data/lib/dictionaries/toplevel_methods/has_key.rb +32 -0
  28. data/lib/dictionaries/toplevel_methods/is_on_roebe.rb +16 -0
  29. data/lib/dictionaries/toplevel_methods/main_file.rb +88 -0
  30. data/lib/dictionaries/toplevel_methods/misc.rb +231 -0
  31. data/lib/dictionaries/toplevel_methods/module_methods.rb +9 -0
  32. data/lib/dictionaries/toplevel_methods/show_help.rb +31 -0
  33. data/lib/dictionaries/version/version.rb +19 -0
  34. data/lib/dictionaries/yaml/chinese.yml +25 -0
  35. data/lib/dictionaries/yaml/danish.yml +4 -0
  36. data/lib/dictionaries/yaml/deutsche_fremdw/303/266rter.yml +1 -0
  37. data/lib/dictionaries/yaml/dutch.yml +3 -0
  38. data/lib/dictionaries/yaml/english.yml +3263 -0
  39. data/lib/dictionaries/yaml/farsi.yml +8 -0
  40. data/lib/dictionaries/yaml/finnish.yml +2 -0
  41. data/lib/dictionaries/yaml/italian.yml +532 -0
  42. data/lib/dictionaries/yaml/japanese.yml +15 -0
  43. data/lib/dictionaries/yaml/norwegian.yml +26 -0
  44. data/lib/dictionaries/yaml/polish.yml +2 -0
  45. data/lib/dictionaries/yaml/portugese.yml +41 -0
  46. data/lib/dictionaries/yaml/russian.yml +10 -0
  47. data/lib/dictionaries/yaml/spanish.yml +147 -0
  48. data/lib/dictionaries/yaml/swedish.yml +104 -0
  49. data/lib/dictionaries.rb +1 -0
  50. data/test/translation_example.html +2758 -0
  51. metadata +211 -0
@@ -0,0 +1,231 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'dictionaries/toplevel_methods/misc.rb'
6
+ # =========================================================================== #
7
+ module Dictionaries
8
+
9
+ require 'yaml'
10
+
11
+ begin
12
+ require 'save_file/module'
13
+ rescue LoadError; end
14
+
15
+ require 'dictionaries/constants/constants.rb'
16
+ require 'dictionaries/toplevel_methods/main_file.rb'
17
+ require 'dictionaries/toplevel_methods/has_key.rb'
18
+
19
+ # ========================================================================= #
20
+ # === Dictionaries.english_key_values?
21
+ # ========================================================================= #
22
+ def self.english_key_values?(
23
+ this_file = Dictionaries.main_file?
24
+ )
25
+ dataset = YAML.load_file(this_file)
26
+ return dataset
27
+ end
28
+
29
+ # ========================================================================= #
30
+ # === Dictionaries.create_javascript_file
31
+ #
32
+ # This method will create a .js file, into the current working directory.
33
+ #
34
+ # Invocation example:
35
+ #
36
+ # require 'dictionaries'; result = Dictionaries.create_javascript_file
37
+ #
38
+ # ========================================================================= #
39
+ def self.create_javascript_file(
40
+ into = File.absolute_path('dictionary.js'),
41
+ dataset = english_key_values?
42
+ )
43
+ what = <<-EOF
44
+ function return_english_dictionary() {
45
+
46
+ var dictionary = {};
47
+
48
+ EOF
49
+ what = what.dup
50
+ dataset.each {|key, value|
51
+ value = value.gsub(/"/,'\"') if value.include?('"')
52
+ what << " dictionary[\"#{key}\"] = \"#{value}\";\n"
53
+ }
54
+ what << " return dictionary;\n"
55
+ what << "}\n"
56
+ SaveFile.write_what_into(what, into)
57
+ return into
58
+ end
59
+
60
+ # ========================================================================= #
61
+ # === Dictionaries.generate_pdf_file
62
+ #
63
+ # This method can be used to generate a .pdf file.
64
+ # ========================================================================= #
65
+ def self.generate_pdf_file(
66
+ use_this_font = 'Courier', # Helvetica-Bold' # #'Times-Roman'
67
+ use_this_font_size = 12
68
+ )
69
+ require 'prawn'
70
+ ::Prawn::Fonts::AFM.hide_m17n_warning = true
71
+ right_arrow = ' -> '.dup.encode(
72
+ 'Windows-1252', invalid: :replace, undef: :replace, replace: ''
73
+ )
74
+ dataset = YAML.load_file(Dictionaries.file_english)
75
+ into = File.absolute_path('english_to_german_dictionary.pdf')
76
+ Prawn::Document.generate(into) {
77
+ font use_this_font
78
+ font_size use_this_font_size
79
+ text(
80
+ "English to German dictionary: "\
81
+ "#{dataset.keys.size.to_s} translated words\n\n"
82
+ )
83
+ # ===================================================================== #
84
+ # Iterate over our exam dataset next.
85
+ # ===================================================================== #
86
+ dataset.each_pair {|key, value|
87
+ indent(8) {
88
+ key = key.dup if key.frozen?
89
+ value = value.dup if value.frozen?
90
+ result = key.encode(
91
+ 'Windows-1252', invalid: :replace, undef: :replace, replace: ''
92
+ )+
93
+ right_arrow+
94
+ value.encode(
95
+ 'Windows-1252', invalid: :replace, undef: :replace, replace: ''
96
+ )
97
+ text(result, {size: 10})
98
+ }
99
+ }
100
+ }
101
+ e 'Stored into `'+into+'`.'
102
+ end
103
+
104
+ # ========================================================================= #
105
+ # === Dictionaries.return_array_of_translated_words_from_online_leo
106
+ #
107
+ # This method can be used to query the online dictionary from leo.
108
+ #
109
+ # It will then return an Array of translations.
110
+ #
111
+ # Note that this currently only works for the translation from english
112
+ # to german, not the other way around, even though that is not too
113
+ # hard to implement either.
114
+ # ========================================================================= #
115
+ def self.return_array_of_translated_words_from_online_leo(this_word)
116
+ if this_word.is_a? Array
117
+ this_word = this_word.join(' ').strip
118
+ end
119
+ require 'open-uri'
120
+ remote_url = "https://dict.leo.org/german-english/#{this_word}"
121
+ remote_dataset = URI.open(remote_url).read
122
+ # ======================================================================= #
123
+ # See: https://rubular.com/r/OOXwAc6PVqjU5Q
124
+ # ======================================================================= #
125
+ use_this_regex =
126
+ /<words><word>([a-zA-Z\s]+)\<\/word><\/words>/
127
+ scanned_results = remote_dataset.scan(use_this_regex).flatten
128
+ # ======================================================================= #
129
+ # This result may look like so:
130
+ # [["cat"], ["die Katze"]
131
+ # We have to sanitize it still.
132
+ # ======================================================================= #
133
+ scanned_results.reject! {|entry| entry.start_with?(this_word) }
134
+ return scanned_results # Note that the full Array is returned.
135
+ end
136
+
137
+ # ========================================================================= #
138
+ # === Dictionaries.return_unique_words_from_this_file
139
+ #
140
+ # This method will read in the words from an existing local file.
141
+ #
142
+ # Some files may be huge, though, and then this method becomes
143
+ # quite useless, so we really should discard a lot of data after a
144
+ # certain threshold, to keep memory usage low.
145
+ # ========================================================================= #
146
+ def self.return_unique_words_from_this_file(
147
+ this_file,
148
+ optional_arguments = :english,
149
+ remove_html_tags = false
150
+ )
151
+ case remove_html_tags
152
+ # ======================================================================= #
153
+ # === :remove_HTML_tags
154
+ # ======================================================================= #
155
+ when :remove_HTML_tags
156
+ remove_html_tags = true
157
+ end
158
+ dataset = nil
159
+ if this_file.is_a? Array
160
+ this_file = this_file.join(' ').strip
161
+ end
162
+ if this_file and File.file?(this_file)
163
+ dataset = File.read(this_file)
164
+ if remove_html_tags
165
+ require 'cyberweb/toplevel_methods/toplevel_methods.rb'
166
+ dataset = ::Cyberweb.remove_html(dataset)
167
+ end
168
+ end
169
+ result = [] # ← This variable will store the unique words found in the file.
170
+ case optional_arguments
171
+ # ======================================================================= #
172
+ # === :english
173
+ # ======================================================================= #
174
+ when :english,
175
+ :default
176
+ # ===================================================================== #
177
+ # Query unknown words in english. We will compare the words to the
178
+ # available variants.
179
+ # ===================================================================== #
180
+ result = dataset.scan(/\w+/).map {|entry| entry.downcase } # ← Obtain all words here.
181
+ # ===================================================================== #
182
+ # Next, reject those that are registered:
183
+ # ===================================================================== #
184
+ result.reject! {|this_word|
185
+ ::Dictionaries.has_key?(this_word)
186
+ }
187
+ end if dataset
188
+ return result.uniq.sort
189
+ end
190
+
191
+ # ========================================================================= #
192
+ # === Dictionaries[]
193
+ #
194
+ # Currently this method will always reload the main file. In the future
195
+ # we may change this approach, but for now this has to suffice (May 2019).
196
+ #
197
+ # The method will return either the translated string - or nil. Nil
198
+ # indicates that the main Hash does not include that key; in other words,
199
+ # that the word is not registered.
200
+ # ========================================================================= #
201
+ def self.[](i = ARGV)
202
+ i = i.join.strip if i.is_a? Array
203
+ this_file = Dictionaries.main_file?
204
+ if this_file.nil?
205
+ Dictionaries.set_main_file(:default) # Must initialize it in this case.
206
+ this_file = Dictionaries.main_file?
207
+ end
208
+ if this_file
209
+ dataset = YAML.load_file(this_file)
210
+ dataset[i] # Return the result here.
211
+ else
212
+ nil
213
+ end
214
+ end
215
+
216
+ end
217
+
218
+ if __FILE__ == $PROGRAM_NAME
219
+ alias e puts
220
+ #puts Dictionaries[ARGV]
221
+ e 'Possible words for cat:'
222
+ pp Dictionaries.return_array_of_translated_words_from_online_leo('cat')
223
+ # ========================================================================= #
224
+ # The next chunk of code is to test reading unique words from a given
225
+ # local file.
226
+ # ========================================================================= #
227
+ puts '-'*80
228
+ _ = Dictionaries.return_unique_words_from_this_file('/Depot/j/foobar.md')
229
+ pp _
230
+ pp _.size
231
+ end # rb misc.rb cat
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # Just bundle together some requires through this file here.
6
+ # =========================================================================== #
7
+ require 'dictionaries/commandline/parse_commandline.rb'
8
+ require 'dictionaries/toplevel_methods/e.rb'
9
+ require 'dictionaries/toplevel_methods/show_help.rb'
@@ -0,0 +1,31 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'dictionaries/toplevel_methods/show_help.rb'
6
+ # =========================================================================== #
7
+ require 'dictionaries/toplevel_methods/e.rb'
8
+
9
+ module Dictionaries
10
+
11
+ # ========================================================================= #
12
+ # === Dictionaries.show_help
13
+ #
14
+ # To invoke this, try:
15
+ #
16
+ # dictionaries --help
17
+ #
18
+ # ========================================================================= #
19
+ def self.show_help
20
+ help_string = <<EOF
21
+ These options are currently available:
22
+
23
+ --n_words? # Show how many words are available
24
+ --gui # Start the GTK GUI; aliases exist to this, such as --gtk
25
+ --read=www.nytimes.com.html # Read from a specific file, to find unique words
26
+
27
+ EOF
28
+ e help_string
29
+ end
30
+
31
+ end
@@ -0,0 +1,19 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'dictionaries/version/version.rb'
6
+ # =========================================================================== #
7
+ module Dictionaries
8
+
9
+ # ========================================================================= #
10
+ # === VERSION
11
+ # ========================================================================= #
12
+ VERSION = '0.3.81'
13
+
14
+ # ========================================================================= #
15
+ # === LAST_UPDATE
16
+ # ========================================================================= #
17
+ LAST_UPDATE = '31.01.2024'
18
+
19
+ end
@@ -0,0 +1,25 @@
1
+ # =========================================================================== #
2
+ # === chinese.yml
3
+ #
4
+ # CHINESE or MANDARIN - Singlish,Singaporean Slang TAG
5
+ # rf dict chinese
6
+ # =========================================================================== #
7
+
8
+ 'nie hau': hallo
9
+ 'hao': 'ja/gut'
10
+ ganbao: gewonnen
11
+ shije: schwester
12
+ wobazaju: I dont care
13
+ budumo: dont touch it
14
+ buyaotawo: |
15
+ "Dont hit me." bu yao ta wo
16
+ sian: boring
17
+ dao: Weg
18
+ chai: Tee
19
+ wei: "hallo"
20
+ shue: ja
21
+
22
+ 'shü-she': '~ja, in ordnung. Danke'
23
+ yang: Sonne
24
+ sei tschien: auf wiedersehen
25
+
@@ -0,0 +1,4 @@
1
+ # List danish resources.
2
+
3
+ # s tig
4
+ smil: lächeln
@@ -0,0 +1 @@
1
+ elegisch: klagend # added 19.10.2003
@@ -0,0 +1,3 @@
1
+
2
+ # k tig
3
+ kopen: kaufen (to buy)